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