xref: /aosp_15_r20/external/bazelbuild-rules_python/MODULE.bazel (revision 60517a1edbc8ecf509223e9af94a7adec7d736b8)
1module(
2    name = "rules_python",
3    version = "0.0.0",
4    compatibility_level = 1,
5)
6
7bazel_dep(name = "bazel_features", version = "1.9.1")
8bazel_dep(name = "bazel_skylib", version = "1.6.1")
9bazel_dep(name = "rules_cc", version = "0.0.9")
10bazel_dep(name = "platforms", version = "0.0.4")
11
12# Those are loaded only when using py_proto_library
13bazel_dep(name = "rules_proto", version = "6.0.0-rc1")
14bazel_dep(name = "protobuf", version = "24.4", repo_name = "com_google_protobuf")
15
16internal_deps = use_extension("//python/private:internal_deps.bzl", "internal_deps")
17use_repo(
18    internal_deps,
19    "pypi__build",
20    "pypi__click",
21    "pypi__colorama",
22    "pypi__importlib_metadata",
23    "pypi__installer",
24    "pypi__more_itertools",
25    "pypi__packaging",
26    "pypi__pep517",
27    "pypi__pip",
28    "pypi__pip_tools",
29    "pypi__pyproject_hooks",
30    "pypi__setuptools",
31    "pypi__tomli",
32    "pypi__wheel",
33    "pypi__zipp",
34    "rules_python_internal",
35)
36
37# We need to do another use_extension call to expose the "pythons_hub"
38# repo.
39python = use_extension("//python/extensions:python.bzl", "python")
40
41# The default toolchain to use if nobody configures a toolchain.
42# NOTE: This is not a stable version. It is provided for convenience, but will
43# change frequently to track the most recent Python version.
44# NOTE: The root module can override this.
45python.toolchain(
46    is_default = True,
47    python_version = "3.11",
48)
49use_repo(python, "python_3_11", "python_versions", "pythons_hub")
50
51# This call registers the Python toolchains.
52register_toolchains("@pythons_hub//:all")
53
54#####################
55# Install twine for our own runfiles wheel publishing and allow bzlmod users to use it.
56
57pip = use_extension("//python/private/pypi:pip.bzl", "pip_internal")
58pip.parse(
59    hub_name = "rules_python_publish_deps",
60    python_version = "3.11",
61    requirements_by_platform = {
62        "//tools/publish:requirements.txt": "linux_*",
63        "//tools/publish:requirements_darwin.txt": "osx_*",
64        "//tools/publish:requirements_windows.txt": "windows_*",
65    },
66)
67use_repo(pip, "rules_python_publish_deps")
68
69# ===== DEV ONLY DEPS AND SETUP BELOW HERE =====
70bazel_dep(name = "stardoc", version = "0.6.2", dev_dependency = True, repo_name = "io_bazel_stardoc")
71bazel_dep(name = "rules_bazel_integration_test", version = "0.20.0", dev_dependency = True)
72bazel_dep(name = "rules_testing", version = "0.6.0", dev_dependency = True)
73
74# Extra gazelle plugin deps so that WORKSPACE.bzlmod can continue including it for e2e tests.
75# We use `WORKSPACE.bzlmod` because it is impossible to have dev-only local overrides.
76bazel_dep(name = "rules_go", version = "0.41.0", dev_dependency = True, repo_name = "io_bazel_rules_go")
77bazel_dep(name = "gazelle", version = "0.33.0", dev_dependency = True, repo_name = "bazel_gazelle")
78
79dev_python = use_extension(
80    "//python/extensions:python.bzl",
81    "python",
82    dev_dependency = True,
83)
84dev_python.override(
85    register_all_versions = True,
86)
87
88dev_pip = use_extension(
89    "//python/private/pypi:pip.bzl",
90    "pip_internal",
91    dev_dependency = True,
92)
93dev_pip.parse(
94    hub_name = "dev_pip",
95    python_version = "3.11",
96    requirements_lock = "//docs:requirements.txt",
97)
98dev_pip.parse(
99    hub_name = "pypiserver",
100    python_version = "3.11",
101    requirements_lock = "//examples/wheel:requirements_server.txt",
102)
103use_repo(dev_pip, "dev_pip", "pypiserver")
104
105# Bazel integration test setup below
106
107bazel_binaries = use_extension(
108    "@rules_bazel_integration_test//:extensions.bzl",
109    "bazel_binaries",
110    dev_dependency = True,
111)
112
113# Keep in sync with //:version.bzl
114bazel_binaries.local(
115    name = "self",
116    path = "tests/integration/bazel_from_env",
117)
118bazel_binaries.download(version = "6.4.0")
119bazel_binaries.download(version = "7.3.1")
120bazel_binaries.download(version = "rolling")
121use_repo(
122    bazel_binaries,
123    "bazel_binaries",
124    # These don't appear necessary, but are reported as direct dependencies
125    # that should be use_repo()'d, so we add them as requested
126    "bazel_binaries_bazelisk",
127    "build_bazel_bazel_6_4_0",
128    "build_bazel_bazel_7_3_1",
129    "build_bazel_bazel_rolling",
130    "build_bazel_bazel_self",
131)
132
133# EXPERIMENTAL: This is experimental and may be removed without notice
134uv = use_extension(
135    "//python/uv:extensions.bzl",
136    "uv",
137    dev_dependency = True,
138)
139uv.toolchain(uv_version = "0.2.23")
140use_repo(uv, "uv_toolchains")
141
142register_toolchains(
143    "@uv_toolchains//:all",
144    dev_dependency = True,
145)
146