# Copyright 2017 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# The following is experimental API and currently not intended for use outside this example.
load("@rules_python//python/uv/private:lock.bzl", "lock")  # buildifier: disable=bzl-visibility

licenses(["notice"])  # Apache 2.0

lock(
    name = "bzlmod_requirements_3_12",
    srcs = ["bzlmod/pyproject.toml"],
    out = "bzlmod/requirements_lock_3_12.txt",
    args = [
        "--emit-index-url",
        "--universal",
        "--python-version=3.12",
    ],
    directory = "examples/bzlmod",
    python_version = "3.12",
    visibility = ["//:__subpackages__"],
)

lock(
    name = "bzlmod_requirements_3_12_windows",
    srcs = ["bzlmod/pyproject.toml"],
    out = "bzlmod/requirements_windows_3_12.txt",
    args = [
        "--emit-index-url",
        "--python-platform",
        "windows",
        "--python-version=3.12",
    ],
    directory = "examples/bzlmod",
    python_version = "3.12",
    visibility = ["//:__subpackages__"],
)

lock(
    name = "bzlmod_requirements_3_13",
    srcs = ["bzlmod/pyproject.toml"],
    out = "bzlmod/requirements_lock_3_13.txt",
    args = [
        "--emit-index-url",
        "--universal",
        "--python-version=3.13",
    ],
    directory = "examples/bzlmod",
    python_version = "3.13",
    visibility = ["//:__subpackages__"],
)

lock(
    name = "bzlmod_requirements_3_13_windows",
    srcs = ["bzlmod/pyproject.toml"],
    out = "bzlmod/requirements_windows_3_13.txt",
    args = [
        "--emit-index-url",
        "--python-platform",
        "windows",
        "--python-version=3.13",
    ],
    directory = "examples/bzlmod",
    python_version = "3.13",
    visibility = ["//:__subpackages__"],
)

lock(
    name = "bzlmod_requirements_3_14",
    srcs = ["bzlmod/pyproject.toml"],
    out = "bzlmod/requirements_lock_3_14.txt",
    args = [
        "--emit-index-url",
        "--universal",
        "--python-version=3.14",
    ],
    directory = "examples/bzlmod",
    python_version = "3.14",
    visibility = ["//:__subpackages__"],
)

lock(
    name = "bzlmod_requirements_3_14_windows",
    srcs = ["bzlmod/pyproject.toml"],
    out = "bzlmod/requirements_windows_3_14.txt",
    args = [
        "--emit-index-url",
        "--python-platform",
        "windows",
        "--python-version=3.14",
    ],
    directory = "examples/bzlmod",
    python_version = "3.14",
    visibility = ["//:__subpackages__"],
)
