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