# Copyright 2023 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.

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

package(
    default_visibility = ["//:__subpackages__"],
)

bzl_library(
    name = "attributes_bazel_bzl",
    srcs = ["attributes_bazel.bzl"],
    deps = ["//python/private:rules_cc_srcs_bzl"],
)

bzl_library(
    name = "attributes_bzl",
    srcs = ["attributes.bzl"],
    deps = [
        ":common_bzl",
        ":providers_bzl",
        ":py_internal_bzl",
        ":semantics_bzl",
        "//python/private:enum_bzl",
        "//python/private:flags_bzl",
        "//python/private:reexports_bzl",
        "//python/private:rules_cc_srcs_bzl",
        "@bazel_skylib//rules:common_settings",
    ],
)

bzl_library(
    name = "cc_helper_bzl",
    srcs = ["cc_helper.bzl"],
    deps = [":py_internal_bzl"],
)

bzl_library(
    name = "common_bazel_bzl",
    srcs = ["common_bazel.bzl"],
    deps = [
        ":attributes_bzl",
        ":common_bzl",
        ":providers_bzl",
        ":py_internal_bzl",
        "//python/private:py_interpreter_program_bzl",
        "//python/private:toolchain_types_bzl",
        "@bazel_skylib//lib:paths",
    ],
)

bzl_library(
    name = "common_bzl",
    srcs = ["common.bzl"],
    deps = [
        ":cc_helper_bzl",
        ":providers_bzl",
        ":py_internal_bzl",
        ":semantics_bzl",
        "//python/private:reexports_bzl",
        "//python/private:rules_cc_srcs_bzl",
    ],
)

filegroup(
    name = "distribution",
    srcs = glob(["**"]),
)

bzl_library(
    name = "providers_bzl",
    srcs = ["providers.bzl"],
    deps = [
        ":semantics_bzl",
        "//python/private:rules_cc_srcs_bzl",
        "//python/private:util_bzl",
    ],
)

bzl_library(
    name = "py_binary_macro_bazel_bzl",
    srcs = ["py_binary_macro_bazel.bzl"],
    deps = [
        ":common_bzl",
        ":py_binary_rule_bazel_bzl",
    ],
)

bzl_library(
    name = "py_binary_rule_bazel_bzl",
    srcs = ["py_binary_rule_bazel.bzl"],
    deps = [
        ":attributes_bzl",
        ":py_executable_bazel_bzl",
        ":semantics_bzl",
        "@bazel_skylib//lib:dicts",
    ],
)

bzl_library(
    name = "py_executable_bazel_bzl",
    srcs = ["py_executable_bazel.bzl"],
    deps = [
        ":attributes_bazel_bzl",
        ":common_bazel_bzl",
        ":common_bzl",
        ":providers_bzl",
        ":py_executable_bzl",
        ":py_internal_bzl",
        ":semantics_bzl",
    ],
)

bzl_library(
    name = "py_executable_bzl",
    srcs = ["py_executable.bzl"],
    deps = [
        ":attributes_bzl",
        ":cc_helper_bzl",
        ":common_bzl",
        ":providers_bzl",
        ":py_internal_bzl",
        "//python/private:flags_bzl",
        "//python/private:py_executable_info_bzl",
        "//python/private:rules_cc_srcs_bzl",
        "//python/private:toolchain_types_bzl",
        "@bazel_skylib//lib:dicts",
        "@bazel_skylib//lib:structs",
        "@bazel_skylib//rules:common_settings",
    ],
)

bzl_library(
    name = "py_internal_bzl",
    srcs = ["py_internal.bzl"],
    deps = ["@rules_python_internal//:py_internal_bzl"],
)

bzl_library(
    name = "py_library_bzl",
    srcs = ["py_library.bzl"],
    deps = [
        ":attributes_bzl",
        ":common_bzl",
        ":providers_bzl",
        ":py_internal_bzl",
        "//python/private:flags_bzl",
        "//python/private:toolchain_types_bzl",
        "@bazel_skylib//lib:dicts",
        "@bazel_skylib//rules:common_settings",
    ],
)

bzl_library(
    name = "py_library_macro_bazel_bzl",
    srcs = ["py_library_macro_bazel.bzl"],
    deps = [":py_library_rule_bazel_bzl"],
)

bzl_library(
    name = "py_library_rule_bazel_bzl",
    srcs = ["py_library_rule_bazel.bzl"],
    deps = [
        ":attributes_bazel_bzl",
        ":common_bazel_bzl",
        ":common_bzl",
        ":py_library_bzl",
    ],
)

bzl_library(
    name = "py_runtime_macro_bzl",
    srcs = ["py_runtime_macro.bzl"],
    deps = [":py_runtime_rule_bzl"],
)

bzl_library(
    name = "py_runtime_rule_bzl",
    srcs = ["py_runtime_rule.bzl"],
    deps = [
        ":attributes_bzl",
        ":providers_bzl",
        ":py_internal_bzl",
        "//python/private:reexports_bzl",
        "//python/private:util_bzl",
        "@bazel_skylib//lib:dicts",
        "@bazel_skylib//lib:paths",
    ],
)

bzl_library(
    name = "py_test_macro_bazel_bzl",
    srcs = ["py_test_macro_bazel.bzl"],
    deps = [
        ":common_bazel_bzl",
        ":py_test_rule_bazel_bzl",
    ],
)

bzl_library(
    name = "py_test_rule_bazel_bzl",
    srcs = ["py_test_rule_bazel.bzl"],
    deps = [
        ":attributes_bzl",
        ":common_bzl",
        ":py_executable_bazel_bzl",
        ":semantics_bzl",
        "@bazel_skylib//lib:dicts",
    ],
)

bzl_library(
    name = "semantics_bzl",
    srcs = ["semantics.bzl"],
)
