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

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

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

licenses(["notice"])

filegroup(
    name = "distribution",
    srcs = glob(["**"]),
    visibility = ["//python:__pkg__"],
)

bzl_library(
    name = "config",
    srcs = ["config.bzl"],
    visibility = ["//:__subpackages__"],
    deps = [
        "//python/private:internal_config_repo",
        "//python/private/pypi:deps",
        "@bazel_features//:features",
    ],
)

bzl_library(
    name = "pip",
    srcs = ["pip.bzl"],
    visibility = ["//:__subpackages__"],
    deps = ["//python/private/pypi:pip"],
)

bzl_library(
    name = "python",
    srcs = ["python.bzl"],
    visibility = ["//:__subpackages__"],
    deps = ["//python/private:python"],
)

alias(
    name = "config_bzl",
    actual = ":config",
    deprecation = "Use //python/extensions:config instead",
    visibility = ["//:__subpackages__"],
)

alias(
    name = "pip_bzl",
    actual = ":pip",
    deprecation = "Use //python/extensions:pip instead",
    visibility = ["//:__subpackages__"],
)

alias(
    name = "python_bzl",
    actual = ":python",
    deprecation = "Use //python/extensions:python instead",
    visibility = ["//:__subpackages__"],
)
