| module( |
| name = "rules_python", |
| version = "0.0.0", |
| compatibility_level = 1, |
| ) |
| |
| bazel_dep(name = "bazel_features", version = "1.21.0") |
| bazel_dep(name = "bazel_skylib", version = "1.7.1") |
| bazel_dep(name = "rules_cc", version = "0.0.16") |
| bazel_dep(name = "platforms", version = "0.0.11") |
| |
| # Those are loaded only when using py_proto_library |
| # Use py_proto_library directly from protobuf repository |
| bazel_dep(name = "protobuf", version = "29.0-rc2", repo_name = "com_google_protobuf") |
| |
| internal_deps = use_extension("//python/private:internal_deps.bzl", "internal_deps") |
| use_repo( |
| internal_deps, |
| "pypi__build", |
| "pypi__click", |
| "pypi__colorama", |
| "pypi__importlib_metadata", |
| "pypi__installer", |
| "pypi__more_itertools", |
| "pypi__packaging", |
| "pypi__pep517", |
| "pypi__pip", |
| "pypi__pip_tools", |
| "pypi__pyproject_hooks", |
| "pypi__setuptools", |
| "pypi__tomli", |
| "pypi__wheel", |
| "pypi__zipp", |
| "rules_python_internal", |
| ) |
| |
| # We need to do another use_extension call to expose the "pythons_hub" |
| # repo. |
| python = use_extension("//python/extensions:python.bzl", "python") |
| |
| # The default toolchain to use if nobody configures a toolchain. |
| # NOTE: This is not a stable version. It is provided for convenience, but will |
| # change frequently to track the most recent Python version. |
| # NOTE: The root module can override this. |
| python.toolchain( |
| is_default = True, |
| python_version = "3.11", |
| ) |
| use_repo( |
| python, |
| "python_3_11", |
| "pythons_hub", |
| python = "python_versions", |
| ) |
| |
| # This call registers the Python toolchains. |
| register_toolchains("@pythons_hub//:all") |
| |
| ##################### |
| # Install twine for our own runfiles wheel publishing and allow bzlmod users to use it. |
| |
| pip = use_extension("//python/extensions:pip.bzl", "pip") |
| pip.parse( |
| # NOTE @aignas 2024-10-26: We have an integration test that depends on us |
| # being able to build sdists for this hub, so explicitly set this to False. |
| download_only = False, |
| experimental_index_url = "https://pypi.org/simple", |
| hub_name = "rules_python_publish_deps", |
| python_version = "3.11", |
| requirements_by_platform = { |
| "//tools/publish:requirements_darwin.txt": "osx_*", |
| "//tools/publish:requirements_linux.txt": "linux_*", |
| "//tools/publish:requirements_windows.txt": "windows_*", |
| }, |
| ) |
| use_repo(pip, "rules_python_publish_deps") |
| |
| # Not a dev dependency to allow usage of //sphinxdocs code, which refers to stardoc repos. |
| bazel_dep(name = "stardoc", version = "0.7.2", repo_name = "io_bazel_stardoc") |
| |
| # ===== DEV ONLY DEPS AND SETUP BELOW HERE ===== |
| bazel_dep(name = "rules_bazel_integration_test", version = "0.27.0", dev_dependency = True) |
| bazel_dep(name = "rules_testing", version = "0.6.0", dev_dependency = True) |
| bazel_dep(name = "rules_shell", version = "0.3.0", dev_dependency = True) |
| bazel_dep(name = "rules_multirun", version = "0.9.0", dev_dependency = True) |
| bazel_dep(name = "bazel_ci_rules", version = "1.0.0", dev_dependency = True) |
| bazel_dep(name = "rules_pkg", version = "1.0.1", dev_dependency = True) |
| |
| # Extra gazelle plugin deps so that WORKSPACE.bzlmod can continue including it for e2e tests. |
| # We use `WORKSPACE.bzlmod` because it is impossible to have dev-only local overrides. |
| bazel_dep(name = "rules_go", version = "0.41.0", dev_dependency = True, repo_name = "io_bazel_rules_go") |
| bazel_dep(name = "rules_python_gazelle_plugin", version = "0", dev_dependency = True) |
| bazel_dep(name = "gazelle", version = "0.40.0", dev_dependency = True, repo_name = "bazel_gazelle") |
| |
| internal_dev_deps = use_extension( |
| "//python/private:internal_dev_deps.bzl", |
| "internal_dev_deps", |
| dev_dependency = True, |
| ) |
| use_repo(internal_dev_deps, "buildkite_config", "wheel_for_testing") |
| |
| # Add gazelle plugin so that we can run the gazelle example as an e2e integration |
| # test and include the distribution files. |
| local_path_override( |
| module_name = "rules_python_gazelle_plugin", |
| path = "gazelle", |
| ) |
| |
| dev_python = use_extension( |
| "//python/extensions:python.bzl", |
| "python", |
| dev_dependency = True, |
| ) |
| dev_python.override( |
| register_all_versions = True, |
| ) |
| |
| dev_pip = use_extension( |
| "//python/extensions:pip.bzl", |
| "pip", |
| dev_dependency = True, |
| ) |
| dev_pip.parse( |
| download_only = True, |
| experimental_index_url = "https://pypi.org/simple", |
| hub_name = "dev_pip", |
| python_version = "3.11", |
| requirements_lock = "//docs:requirements.txt", |
| ) |
| dev_pip.parse( |
| download_only = True, |
| experimental_index_url = "https://pypi.org/simple", |
| hub_name = "dev_pip", |
| python_version = "3.13.0", |
| requirements_lock = "//docs:requirements.txt", |
| ) |
| dev_pip.parse( |
| download_only = True, |
| experimental_index_url = "https://pypi.org/simple", |
| hub_name = "pypiserver", |
| python_version = "3.11", |
| requirements_lock = "//examples/wheel:requirements_server.txt", |
| ) |
| use_repo(dev_pip, "dev_pip", "pypiserver") |
| |
| # Bazel integration test setup below |
| |
| bazel_binaries = use_extension( |
| "@rules_bazel_integration_test//:extensions.bzl", |
| "bazel_binaries", |
| dev_dependency = True, |
| ) |
| |
| # Keep in sync with //:version.bzl |
| bazel_binaries.local( |
| name = "self", |
| path = "tests/integration/bazel_from_env", |
| ) |
| bazel_binaries.download(version = "7.4.1") |
| bazel_binaries.download(version = "8.0.0") |
| |
| # For now, don't test with rolling, because that's Bazel 9, which is a ways |
| # away. |
| # bazel_binaries.download(version = "rolling") |
| use_repo( |
| bazel_binaries, |
| "bazel_binaries", |
| # These don't appear necessary, but are reported as direct dependencies |
| # that should be use_repo()'d, so we add them as requested |
| "bazel_binaries_bazelisk", |
| "build_bazel_bazel_7_4_1", |
| "build_bazel_bazel_8_0_0", |
| # "build_bazel_bazel_rolling", |
| "build_bazel_bazel_self", |
| ) |
| |
| # TODO @aignas 2025-01-27: should this be moved to `//python/extensions:uv.bzl` or should |
| # it stay as it is? I think I may prefer to move it. |
| uv = use_extension("//python/uv:uv.bzl", "uv") |
| |
| # Here is how we can define platforms for the `uv` binaries - this will affect |
| # all of the downstream callers because we are using the extension without |
| # `dev_dependency = True`. |
| uv.default( |
| base_url = "https://github.com/astral-sh/uv/releases/download", |
| manifest_filename = "dist-manifest.json", |
| version = "0.6.3", |
| ) |
| uv.default( |
| compatible_with = [ |
| "@platforms//os:macos", |
| "@platforms//cpu:aarch64", |
| ], |
| platform = "aarch64-apple-darwin", |
| ) |
| uv.default( |
| compatible_with = [ |
| "@platforms//os:linux", |
| "@platforms//cpu:aarch64", |
| ], |
| platform = "aarch64-unknown-linux-gnu", |
| ) |
| uv.default( |
| compatible_with = [ |
| "@platforms//os:linux", |
| "@platforms//cpu:ppc", |
| ], |
| platform = "powerpc64-unknown-linux-gnu", |
| ) |
| uv.default( |
| compatible_with = [ |
| "@platforms//os:linux", |
| "@platforms//cpu:ppc64le", |
| ], |
| platform = "powerpc64le-unknown-linux-gnu", |
| ) |
| uv.default( |
| compatible_with = [ |
| "@platforms//os:linux", |
| "@platforms//cpu:s390x", |
| ], |
| platform = "s390x-unknown-linux-gnu", |
| ) |
| uv.default( |
| compatible_with = [ |
| "@platforms//os:macos", |
| "@platforms//cpu:x86_64", |
| ], |
| platform = "x86_64-apple-darwin", |
| ) |
| uv.default( |
| compatible_with = [ |
| "@platforms//os:windows", |
| "@platforms//cpu:x86_64", |
| ], |
| platform = "x86_64-pc-windows-msvc", |
| ) |
| uv.default( |
| compatible_with = [ |
| "@platforms//os:linux", |
| "@platforms//cpu:x86_64", |
| ], |
| platform = "x86_64-unknown-linux-gnu", |
| ) |
| use_repo(uv, "uv") |
| |
| register_toolchains("@uv//:all") |
| |
| uv_dev = use_extension( |
| "//python/uv:uv.bzl", |
| "uv", |
| dev_dependency = True, |
| ) |
| uv_dev.configure( |
| version = "0.6.2", |
| ) |