# 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.
"""This package contains two sets of rules:

    1) the "core" Python rules, which were historically bundled with Bazel and
       are now either re-exported or copied into this repository; and

    2) the packaging rules, which were historically simply known as
       rules_python.

In an ideal renaming, we'd move the packaging rules to a different package so
that @rules_python//python is only concerned with the core rules.
"""

load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load(":current_py_toolchain.bzl", "current_py_toolchain")

package(default_visibility = ["//visibility:public"])

licenses(["notice"])

filegroup(
    name = "distribution",
    srcs = glob(["**"]) + [
        "//python/cc:distribution",
        "//python/config_settings:distribution",
        "//python/constraints:distribution",
        "//python/entry_points:distribution",
        "//python/private:distribution",
        "//python/runfiles:distribution",
    ],
    visibility = ["//:__pkg__"],
)

# ========= bzl_library targets end =========

bzl_library(
    name = "current_py_toolchain_bzl",
    srcs = ["current_py_toolchain.bzl"],
)

bzl_library(
    name = "defs_bzl",
    srcs = [
        "defs.bzl",
    ],
    visibility = ["//visibility:public"],
    deps = [
        ":current_py_toolchain_bzl",
        ":py_binary_bzl",
        ":py_import_bzl",
        ":py_info_bzl",
        ":py_library_bzl",
        ":py_runtime_bzl",
        ":py_runtime_info_bzl",
        ":py_runtime_pair_bzl",
        ":py_test_bzl",
        "//python/private:bazel_tools_bzl",
    ],
)

bzl_library(
    name = "packaging_bzl",
    srcs = ["packaging.bzl"],
    deps = [
        ":py_binary_bzl",
        "//python/private:py_package.bzl",
        "//python/private:py_wheel_bzl",
        "//python/private:py_wheel_normalize_pep440.bzl",
        "//python/private:stamp_bzl",
        "//python/private:util_bzl",
    ],
)

bzl_library(
    name = "pip_bzl",
    srcs = ["pip.bzl"],
    deps = [
        "//python/pip_install:pip_repository_bzl",
        "//python/pip_install:repositories_bzl",
        "//python/pip_install:requirements_bzl",
        "//python/private:bzlmod_enabled_bzl",
        "//python/private:full_version_bzl",
        "//python/private:render_pkg_aliases_bzl",
    ],
)

bzl_library(
    name = "proto_bzl",
    srcs = [
        "proto.bzl",
    ],
    visibility = ["//visibility:public"],
    deps = [
        "//python/private/proto:py_proto_library_bzl",
    ],
)

bzl_library(
    name = "py_binary_bzl",
    srcs = ["py_binary.bzl"],
    deps = [
        "//python/private:register_extension_info_bzl",
        "//python/private:util_bzl",
        "//python/private/common:py_binary_macro_bazel_bzl",
        "@rules_python_internal//:rules_python_config_bzl",
    ],
)

bzl_library(
    name = "py_cc_link_params_info_bzl",
    srcs = ["py_cc_link_params_info.bzl"],
)

bzl_library(
    name = "py_import_bzl",
    srcs = ["py_import.bzl"],
    deps = [":py_info_bzl"],
)

bzl_library(
    name = "py_info_bzl",
    srcs = ["py_info.bzl"],
    deps = [
        "//python/private:reexports_bzl",
        "//python/private/common:providers_bzl",
        "@rules_python_internal//:rules_python_config_bzl",
    ],
)

bzl_library(
    name = "py_library_bzl",
    srcs = ["py_library.bzl"],
    deps = [
        "//python/private:register_extension_info_bzl",
        "//python/private:util_bzl",
        "//python/private/common:py_library_macro_bazel_bzl",
        "@rules_python_internal//:rules_python_config_bzl",
    ],
)

bzl_library(
    name = "py_runtime_bzl",
    srcs = ["py_runtime.bzl"],
    deps = [
        "//python/private:util_bzl",
        "//python/private/common:py_runtime_macro_bzl",
        "@rules_python_internal//:rules_python_config_bzl",
    ],
)

bzl_library(
    name = "py_runtime_pair_bzl",
    srcs = ["py_runtime_pair.bzl"],
    deps = [
        "//python/private:bazel_tools_bzl",
        "//python/private:py_runtime_pair_macro_bzl",
        "@rules_python_internal//:rules_python_config_bzl",
    ],
)

bzl_library(
    name = "py_runtime_info_bzl",
    srcs = ["py_runtime_info.bzl"],
    deps = [
        "//python/private:reexports_bzl",
        "//python/private/common:providers_bzl",
        "@rules_python_internal//:rules_python_config_bzl",
    ],
)

bzl_library(
    name = "py_test_bzl",
    srcs = ["py_test.bzl"],
    deps = [
        "//python/private:register_extension_info_bzl",
        "//python/private:util_bzl",
        "//python/private/common:py_test_macro_bazel_bzl",
        "@rules_python_internal//:rules_python_config_bzl",
    ],
)

bzl_library(
    name = "repositories_bzl",
    srcs = ["repositories.bzl"],
    deps = [
        ":versions_bzl",
        "//python/private:bazel_tools_bzl",
        "//python/private:bzlmod_enabled_bzl",
        "//python/private:coverage_deps_bzl",
        "//python/private:full_version_bzl",
        "//python/private:internal_config_repo_bzl",
        "//python/private:toolchains_repo_bzl",
        "//python/private:which_bzl",
    ],
)

bzl_library(
    name = "versions_bzl",
    srcs = ["versions.bzl"],
    visibility = ["//:__subpackages__"],
)

# NOTE: Remember to add bzl_library targets to //tests:bzl_libraries
# ========= bzl_library targets end =========

# Filegroup of bzl files that can be used by downstream rules for documentation generation
filegroup(
    name = "bzl",
    srcs = [
        "defs.bzl",
        "packaging.bzl",
        "pip.bzl",
        "repositories.bzl",
        "versions.bzl",
        "//python/pip_install:bzl",
        "//python/private:bzl",
    ],
    visibility = ["//visibility:public"],
)

# ========= Core rules =========

exports_files([
    "defs.bzl",
    "python.bzl",  # Deprecated, please use defs.bzl
])

# This target can be used to inspect the current Python major version. To use,
# put it in the `flag_values` attribute of a `config_setting` and test it
# against the values "PY2" or "PY3". It will always match one or the other.
#
# If you do not need to test any other flags in combination with the Python
# version, then as a convenience you may use the predefined `config_setting`s
# `@rules_python//python:PY2` and `@rules_python//python:PY3`.
#
# Example usage:
#
#     config_setting(
#         name = "py3_on_arm",
#         values = {"cpu": "arm"},
#         flag_values = {"@rules_python//python:python_version": "PY3"},
#     )
#
#     my_target(
#         ...
#         some_attr = select({
#             ":py3_on_arm": ...,
#             ...
#         }),
#         ...
#     )
#
# Caution: Do not `select()` on the built-in command-line flags `--force_python`
# or `--python_version`, as they do not always reflect the true Python version
# of the current target. `select()`-ing on them can lead to action conflicts and
# will be disallowed.
alias(
    name = "python_version",
    actual = "@bazel_tools//tools/python:python_version",
)

alias(
    name = "PY2",
    actual = "@bazel_tools//tools/python:PY2",
)

alias(
    name = "PY3",
    actual = "@bazel_tools//tools/python:PY3",
)

# The toolchain type for Python rules. Provides a Python 2 and/or Python 3
# runtime.
alias(
    name = "toolchain_type",
    actual = "@bazel_tools//tools/python:toolchain_type",
)

# Definitions for a Python toolchain that, at execution time, attempts to detect
# a platform runtime having the appropriate major Python version. Consider this
# a toolchain of last resort.
#
# The non-strict version allows using a Python 2 interpreter for PY3 targets,
# and vice versa. The only reason to use this is if you're working around
# spurious failures due to PY2 vs PY3 validation. Even then, using this is only
# safe if you know for a fact that your build is completely compatible with the
# version of the `python` command installed on the target platform.

alias(
    name = "autodetecting_toolchain",
    actual = "@bazel_tools//tools/python:autodetecting_toolchain",
)

alias(
    name = "autodetecting_toolchain_nonstrict",
    actual = "@bazel_tools//tools/python:autodetecting_toolchain_nonstrict",
)

# ========= Packaging rules =========

exports_files([
    "packaging.bzl",
    "pip.bzl",
])

current_py_toolchain(
    name = "current_py_toolchain",
)
