NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1384 most downloaded on PyPI
Last release 3 days ago
01 Oct 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
117 releases · first in 2023
One column per quarter.
For more detailed setup instructions, see https://rules-python.readthedocs.io/en/latest/getting-started.html
For more detailed setup instructions, see https://rules-python.readthedocs.io/en/latest/getting-started.html
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.39.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "62ddebb766b4d6ddf1712f753dac5740bea072646f630eb9982caa09ad8a7687",
strip_prefix = "rules_python-0.39.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.39.0/rules_python-0.39.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "62ddebb766b4d6ddf1712f753dac5740bea072646f630eb9982caa09ad8a7687",
strip_prefix = "rules_python-0.39.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.39.0/rules_python-0.39.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.38.0...0.39.0
{#v0-39-0-changed}
bzlmod spoke repositories have changed as
all of the given requirements.txt files are now parsed by default, to
temporarily restore the behavior, you can use
{bzl:obj}pip.parse.extra_hub_aliases, which will be removed or made noop in
the future.{#v0-39-0-fixed}
@bazel_tools//tools/python:autodetecting_toolchain is being used
(#2364).{#v0-39-0-added}
//python/config_settings:py_freethreaded to toggle the
selection of the free-threaded toolchains.py_runtime.abi_flags attribute and
{obj}PyRuntimeInfo.abi_flags field added.{#v0-39-0-removed}
{#v0-38-0}
For more detailed setup instructions, see https://rules-python.readthedocs.io/en/latest/getting-started.html
For more detailed setup instructions, see https://rules-python.readthedocs.io/en/latest/getting-started.html
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.38.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "ca2671529884e3ecb5b79d6a5608c7373a82078c3553b1fa53206e6b9dddab34",
strip_prefix = "rules_python-0.38.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.38.0/rules_python-0.38.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "ca2671529884e3ecb5b79d6a5608c7373a82078c3553b1fa53206e6b9dddab34",
strip_prefix = "rules_python-0.38.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.38.0/rules_python-0.38.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
extra_pip_args when building sdists by @aignas in https://github.com/bazelbuild/rules_python/pull/2368Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.37.0...0.38.0
{#v0-38-0-changed}
twine publishing rule.--no-build-isolation to allow non-hermetic sdist builds
by default. Users wishing to keep this argument and to enforce more hermetic
builds can do so by passing the argument in
pip.parse#extra_pip_argspip.parse.whl_modifications now normalizes the given whl names
and now pyyaml and PyYAML will both work.pip.parse spoke repository naming will be changed in an upcoming
release in places where the users specify different package versions per
platform in the same hub repository. The naming of the spoke repos is
considered an implementation detail and we advise the users to use the hub
repository directly and make use of {bzl:obj}pip.parse.extra_hub_aliases
feature added in this release.{#v0-38-0-fixed}
whl_librarys
(617).pip.parse.experimental_index_url is set, we need to still
pass the extra_pip_args value when building an sdist.experimental_index_url is set by any module
or not. To opt into this behavior, set
pip.parse.parse_all_requirements_files, which will become the
default in future releases leading up to 1.0.0. Fixes
#2268. A known
issue is that it may break bazel query and in these use cases it is
advisable to use cquery or switch to download_only = True{#v0-38-0-added}
twine publishing rules have been
updated to have a new convention: requirements_darwin.txt,
requirements_linux.txt, requirements_windows.txt for each respective OS
and one extra file requirements_universal.txt if you prefer a single file.
The requirements.txt file may be removed in the future.//python/features.bzl#features.versionpip.parse.extra_hub_aliases can now be used to expose extra
targets created by annotations in whl repositories.
Fixes #2187.pip.parse now supports whl-only setup using
download_only = True where users can specify multiple requirements files
and use the pip backend to do the downloading. This was only available for
users setting {bzl:obj}pip.parse.experimental_index_url, but now users have
more options whilst we continue to work on stabilizing the experimental feature.{#v0-37-2}
```starlark bazel_dep(name = "rules_python", version = "0.37.2")
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.37.2")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "c6fb25d0ba0246f6d5bd820dd0b2e66b339ccc510242fd4956b9a639b548d113",
strip_prefix = "rules_python-0.37.2",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.37.2/rules_python-0.37.2.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "c6fb25d0ba0246f6d5bd820dd0b2e66b339ccc510242fd4956b9a639b548d113",
strip_prefix = "rules_python-0.37.2/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.37.2/rules_python-0.37.2.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.37.1...0.37.2
{#v0-37-2-fixed}
config_setting values for all available toolchains instead
of only the registered toolchains, which restores the previous behaviour that
bzlmod users would have observed.{#v0-37-1}
NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.37.1")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "bd4797821b72b80b69e3c5ab4ad037e7fd1e6a0a27aebf42424c7ab0ce32e254",
strip_prefix = "rules_python-0.37.1",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.37.1/rules_python-0.37.1.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "bd4797821b72b80b69e3c5ab4ad037e7fd1e6a0a27aebf42424c7ab0ce32e254",
strip_prefix = "rules_python-0.37.1/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.37.1/rules_python-0.37.1.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.37.0...0.37.1
{#v0-37-1-fixed}
--incompatible_python_disallow_native_rules no longer
causes rules_python rules to fail
(#2326).{#v0-37-0}
NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.37.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "0cc05ddb27614baecace068986931e2a6e9f69114e6115fc5dc58250faf56e0f",
strip_prefix = "rules_python-0.37.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.37.0/rules_python-0.37.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "0cc05ddb27614baecace068986931e2a6e9f69114e6115fc5dc58250faf56e0f",
strip_prefix = "rules_python-0.37.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.37.0/rules_python-0.37.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
env to both update and test targets by @lpulley in https://github.com/bazelbuild/rules_python/pull/2277Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.36.0...0.37.0
{#v0-37-0-changed}
py_library no longer puts its source files or generated pyc
files in runfiles; it's the responsibility of consumers (e.g. binaries) to
populate runfiles with the necessary files. Adding source files to runfiles
can be temporarily restored by setting {obj}--add_srcs_to_runfiles=enabled,
but this flag will be removed in a subsequent releases.PyInfo.transitive_sources is now added to runfiles. These files are
.py files that are required to be added to runfiles by downstream binaries
(or equivalent).py_runtime.implementation_name now defaults to cpython
(previously it defaulted to None).--@rules_python//python/config_settings:exec_tools_toolchain=disabled.{#v0-37-0-fixed}
python.override(minor_mapping) now merges the default and the
overridden versions ensuring that the resultant minor_mapping will always
have all of the python versions.--python_version flag will now be
always set to the default python toolchain version value.pip.parse.extra_pip_args all the
way to whl_library. What is more we will pass the extra_pip_args to
whl_library for sdist distributions when using
{attr}pip.parse.experimental_index_url. See
#2239.RECORD fileRECORD file entry elements are now quoted if necessary when a
wheel is created--hash=sha256:... flagscompile_pip_requirements passes env to the X.update target (and
not only to the X_test target, a bug introduced in
#1067).python_register_toolchains(register_toolchains=True) is respected
(#1675).pyc_collection attribute now correctly
enables (or disables) using pyc files from targets transitivelypip.override's file
(#2294).rules_shell dev dependency and moved a sh_test target
outside of the //:BUILD.bazel file.
Fixes #2299.{#v0-37-0-added}
compress = (True|False) to allow disabling
compression to speed up development.//python/config_settings:python_version_major_minor has
been exposed for users to be able to match on the X.Y version of a Python
interpreter.merge_py_infos() so user rules can merge and propagate
PyInfo without losing information.3.8 -> 3.8.203.9 -> 3.9.203.10 -> 3.10.153.11 -> 3.11.103.12 -> 3.12.7coverage.py to 7.6.1.download_only flag to disable usage of sdists
when {bzl:attr}pip.parse.experimental_index_url is set.PyInfo.transitive_implicit_pyc_files,
{obj}PyInfo.transitive_implicit_pyc_source_files.{#v0-37-0-removed}
--precompile_add_to_runfiles has been removed.--pyc_collection has been removed. The pyc_collection
attribute now bases its default on {obj}--precompile.precompile=if_generated_source value has been removed.precompile_source_retention=omit_if_generated_source value has been removed.{#v0-36-0}
NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.36.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "ca77768989a7f311186a29747e3e95c936a41dffac779aff6b443db22290d913",
strip_prefix = "rules_python-0.36.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.36.0/rules_python-0.36.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "ca77768989a7f311186a29747e3e95c936a41dffac779aff6b443db22290d913",
strip_prefix = "rules_python-0.36.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.36.0/rules_python-0.36.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
--no-index and add --no-build-isolation when build sdist by @ewianda in https://github.com/bazelbuild/rules_python/pull/2126py_wheel macro. by @UebelAndre in https://github.com/bazelbuild/rules_python/pull/2171testing.* Bazel objects to Sphinx inventory and xref in docs by @rickeylev in https://github.com/bazelbuild/rules_python/pull/2185--precompile_source_retention was specified on the command line by @rickeylev in https://github.com/bazelbuild/rules_python/pull/2192{package} instead of hard-coded path in precompile_tests by @rickeylev in https://github.com/bazelbuild/rules_python/pull/2193Required-Dist when specifying requirements with markers in extra_requires in py_wheel rule by @sfc-gh-wzhao in https://github.com/bazelbuild/rules_python/pull/2200py_runtime version info to --python_version by @rickeylev in https://github.com/bazelbuild/rules_python/pull/2198Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.35.0...0.36.0
{#v0-36-0-changed}
--python_version flag now also returns
{obj}config_common.FeatureFlagInfo.patch_strip attribute
that one should use when patching toolchains. Please set it if you are
patching python interpreter. In the next release the default will be set to
0 which better reflects the defaults used in public bazel APIs.py_runtime.interpreter_version_info isn't specified,
the {obj}--python_version flag will determine the value. This allows
specifying the build-time Python version for the
{obj}runtime_env_toolchains.py_cc_toolchain.libs and {obj}PyCcToolchainInfo.libs is
optional. This is to support situations where only the Python headers are
available.7.1.{#v0-36-0-fixed}
--no-index and add --no-build-isolation to the
pip install command when installing a wheel from a local file, which happens
when experimental_index_url flag is used.t.Fatal/t.Fatalf in tests.RUNFILES_MANIFEST_FILE-based invocations work when used with
{obj}--bootstrap_impl=script. This fixes invocations using non-sandboxed
test execution with --enable_runfiles=false --build_runfile_manifests=true.
(#2186).Required-Dist when specifying requirements with markers
in extra_requires in py_wheel rule.--bootstrap_impl=scriptgen_python_config_settings has been fixed to include
the flag_values from the platform definitions.{#v0-36-0-added}
python.override, {bzl:obj}python.single_version_override and
{bzl:obj}python.single_version_platform_override tag classes.
See #2081.PyExecutableInfo, which contains
executable-specific information useful for packaging an executable or
or deriving a new one from the original.python_register_toolchains
and related symbols.python_repository.patch_strip attribute for
allowing values that are other than 1, which has been hard-coded up until
now. If you are relying on the undocumented patches support in
TOOL_VERSIONS for registering patched toolchains please consider setting
the patch_strip explicitly to 1 if you depend on this value - in the
future the value may change to default to 0.//python:none, a special target for use with
{obj}py_exec_tools_toolchain.exec_interpreter to treat the value as None.{#v0-36-0-removed}
http_archive symbol from
python/repositories.bzl.{#v0-35-0}
NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.35.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "be04b635c7be4604be1ef20542e9870af3c49778ce841ee2d92fcb42f9d9516a",
strip_prefix = "rules_python-0.35.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.35.0/rules_python-0.35.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "be04b635c7be4604be1ef20542e9870af3c49778ce841ee2d92fcb42f9d9516a",
strip_prefix = "rules_python-0.35.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.35.0/rules_python-0.35.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
download_only feature to aid debugging.3.8.19, 3.9.19, 3.10.14, 3.11.93.12 -> 3.12.4PYTHONSAFEPATH is inherited from the calling environment to allow
disabling it (Requires {obj}--bootstrap_impl=script)
(#2060).compile_pip_requirements now sets the USERPROFILE env variable on
Windows to work around an issue where setuptools fails to locate the user's
home directory.parse_simpleapi_html.bzl.@rules_python//python/cc:current_py_cc_libs
in host platform builds on macOS, by editing the LC_ID_DYLIB field of the hermetic interpreter's
libpython3.x.dylib using install_name_tool, setting it to its absolute path under Bazel's
execroot.--bootstrap_impl=script
(for non-zip builds).
(#2043)--build_python_zip is set to false on
Windows. See #1840.--build_python_zip + {obj}--bootstrap_impl=script
(#2030).--bootstrap_impl=script.
(#2064).@_builtins and @rules_python
providers instead of only one.
(#2114).//python/runtime_env_toolchains interpreter script so that it is runnable.
(#2085).sdist downloaded by the bazel downloader when using
experimental_index_url feature. Fixes
#2091.gazelle_python_manifest.update manual to avoid unnecessary
network behavior.python extension will no longer
cause warnings by default. In order to see the warnings for diagnostic purposes
set the env var RULES_PYTHON_REPO_DEBUG_VERBOSITY to one of INFO, DEBUG or TRACE.
Fixes #1818.compile_pip_requirements supports multiple requirements input files as srcs.PYTHONSAFEPATH is inherited from the calling environment to allow
disabling it (Requires {obj}--bootstrap_impl=script)
(#2060).python_generation_mode_per_package_require_test_entry_point
in order to better accommodate users who use a custom macro,
pytest-bazel, rules_python_pytest or rules_py
py_test_main in order to integrate with pytest. Currently the default
flag value is set to true for backwards compatible behaviour, but in the
future the flag will be flipped be false by default.3.12.4 using the 20240726 release.exec to invoke the stage-2 bootstrap for non-zip case by @chowder in https://github.com/bazelbuild/rules_python/pull/2047uv toolchain by @groodt in https://github.com/bazelbuild/rules_python/pull/1989uv toolchain by @groodt in https://github.com/bazelbuild/rules_python/pull/2062annotations attr of pip_parse by @bruno-digitbio in https://github.com/bazelbuild/rules_python/pull/1667runfiles.CurrentRepository with non-hermetic sys.path by @fmeum in https://github.com/bazelbuild/rules_python/pull/1634compile_pip_requirements to support multiple input files by @cj81499 in https://github.com/bazelbuild/rules_python/pull/1067Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.34.0...0.35.0
NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.34.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "778aaeab3e6cfd56d681c89f5c10d7ad6bf8d2f1a72de9de55b23081b2d31618",
strip_prefix = "rules_python-0.34.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.34.0/rules_python-0.34.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "778aaeab3e6cfd56d681c89f5c10d7ad6bf8d2f1a72de9de55b23081b2d31618",
strip_prefix = "rules_python-0.34.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.34.0/rules_python-0.34.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
** globs instead of explcit BUILD.bazel reference in distribution filegroups by @rickeylev in https://github.com/bazelbuild/rules_python/pull/1991configure=True for internal_config_repo by @meteorcloudy in https://github.com/bazelbuild/rules_python/pull/1998bzlmod folder by @groodt in https://github.com/bazelbuild/rules_python/pull/2022Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.33.1...0.34.0
{#v0-34-0-changed}
protobuf/com_google_protobuf dependency bumped to v24.4//python:autodetecting_toolchain) is deprecated. It is
replaced by {obj}//python/runtime_env_toolchains:all. The old target will be
removed in a future release.{#v0-34-0-fixed}
experimental_index_url the all_requirements,
all_whl_requirements and all_data_requirements will now only include
common packages that are available on all target platforms. This is to ensure
that packages that are only present for some platforms are pulled only via
the deps of the materialized py_library. If you would like to include
platform specific packages, using a select statement with references to the
specific package will still work (e.g.my_attr = all_requirements + select(
{
"@platforms//os:linux": ["@pypi//foo_available_only_on_linux"],
"//conditions:default": [],
}
)
all_requirements now use the same form as targets returned by the requirement macro.PyRuntimeInfo doesn't require passing the
interpreter_version_info arg.isolated, quiet and timeout values to whl_library
and drop the defaults from the lock file.experimental_target_platforms.
Fixes #1996.{#v0-34-0-added}
//python/runtime_env_toolchains:all, which is a drop-in
replacement for the "autodetecting" toolchain.python_label_convention and python_label_normalization directives. These directive
allows altering default Gazelle label format to third-party dependencies useful for re-using Gazelle plugin
with other rules, including rules_pycross. See #1939.{#v0-34-0-removed}
entrypoint macro that was replaced by py_console_script_binary in 0.26.0.{#v0-33-2}
NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.33.2")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "e3f1cc7a04d9b09635afb3130731ed82b5f58eadc8233d4efb59944d92ffc06f",
strip_prefix = "rules_python-0.33.2",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.33.2/rules_python-0.33.2.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "e3f1cc7a04d9b09635afb3130731ed82b5f58eadc8233d4efb59944d92ffc06f",
strip_prefix = "rules_python-0.33.2/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.33.2/rules_python-0.33.2.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.33.1...0.33.2
{#v0-33-2-fixed}
exec_tools_toolchain_type is disabled by default.
To enable it, set {obj}--//python/config_settings:exec_tools_toolchain=enabled.
This toolchain must be enabled for precompilation to work. This toolchain will
be enabled by default in a future release.
Fixes #1967.{#v0-33-1}
NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.33.1")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "5bcfa3852444d084b1d3262714cec151b797648d4d444ea9895c7c7ed79cd715",
strip_prefix = "rules_python-0.33.1",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.33.1/rules_python-0.33.1.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "5bcfa3852444d084b1d3262714cec151b797648d4d444ea9895c7c7ed79cd715",
strip_prefix = "rules_python-0.33.1/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.33.1/rules_python-0.33.1.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.33.0...0.33.1
{#v0-33-1-fixed}
--build_python_zip
argument. Fixes #1954.{#v0-33-0}
NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.33.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "dc6e2756130fafb90273587003659cadd1a2dfef3f6464c227794cdc01ebf70e",
strip_prefix = "rules_python-0.33.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.33.0/rules_python-0.33.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "dc6e2756130fafb90273587003659cadd1a2dfef3f6464c227794cdc01ebf70e",
strip_prefix = "rules_python-0.33.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.33.0/rules_python-0.33.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
:tada: 0.33.0 of rules_python and the gazelle plugin has just been tagged, notable changes/fixes/additions:
gazelle plugin is now using tree-sitter instead of Python to parse python files, which makes it 3 times faster on larger monorepos and it does not require a python interpreter anymore. There is a known issue of the plugin being tricky to cross-compile, so please leave comments there if you are seeing issues.MODULE.bazel.lock file is now the same irrespective of the host platform that rules_python is being used on. This required to remove host-platform specific references in @pythons_hub//:interpreters.bzl, so if you want to use a host python in a repository rule context, use @python_{version}_host//:python..pyc during the bazel build phase, enable this with @rules_python//python/config_settings:precompile=enabled config setting, more info in the docs.whl_filegroup can now be used to extract files from a whl target. This is useful in cases where one wants to use e.g. numpy headers or similar. The benefit of this is that users don’t need to modify the pip.parse whl distributions and can have better performance (no need to refetch the pip packages when the desired file list changes) and ergonomics through build-time rules.experimental_index_url flag in pip.parse now enables using the whl filenames to derive the target platform config settings, so you can finally get the right wheel for the right target platform. It is best to use this feature together with requirements_by_platform (also added in 0.33.0) to specify requirements files per (os, arch) explicitly. We now also do not ignore yanked packages which mirrors the behaviour of uv more closely. The users have a few config settings that they can use to change the behaviour (preference of universal2 wheels on osx, preference of musllinux and the libc version on linux, disabling sdist). The config settings are documented here.See the full changelog here.
python extension as reproducible by @fmeum in https://github.com/bazelbuild/rules_python/pull/1892PyCompile as mnemonic to match Google mnemonic by @rickeylev in https://github.com/bazelbuild/rules_python/pull/1911toolchains.md mistake by @xinnjie in https://github.com/bazelbuild/rules_python/pull/1928Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.32.2...0.33.0
{#v0-33-0-changed}
pip_install dependencies to pick up a new version of pip.py_binary, py_test, and
py_library now depend on the //python:exec_tools_toolchain_type for build
tools.bazel_skylib to 1.6.1.python and internal rules_python extensions have been
marked as reproducible and will not include any lock file entries from now
on.pypi/stdlib-list for standard library module verification.experimental_index_url.
This is to mimic what uv is doing. We will print a warning instead.experimental_index_url
to allowing to correctly fetch the wheels for the right platform. See the
updated docs on how to use the feature. This is work towards addressing
#735 and
#260. The spoke
repository names when using this flag will have a structure of
{pip_hub_prefix}_{wheel_name}_{py_tag}_{abi_tag}_{platform_tag}_{sha256},
which is an implementation detail which should not be relied on and is there
purely for better debugging experience.pythons_hub//:interpreters.bzl no longer has platform-specific
labels which where left there for compatibility reasons. Move to
python_{version}_host keys if you would like to have access to a Python
interpreter that can be used in a repository rule context.{#v0-33-0-fixed}
visibility from NonEmptyAttr.
Now empty(have no deps/main/srcs/imports attr) py_library/test/binary rules will
be automatically deleted correctly. For example, if python_generation_mode
is set to package, when __init__.py is deleted, the py_library generated
for this package before will be deleted automatically.experimental_target_platforms
includes the Python ABI. The default python version case within the select is
also now handled correctly, stabilizing the implementation.pip.parse(annotations) attribute as it is unused and has been
replaced by whl_modifications.experimental_index_url is not used by any of the modules in the dependency
chain. To make the lock file identical on each os and arch, please use
the experimental_index_url feature which will fetch metadata from PyPI or a
different private index and write the contents to the lock file. Fixes
#1643.yanked packages and print a warning instead of
ignoring them. This better matches the behaviour of uv pip install.//python/config_settings:python_version flag setting.WORKSPACE requirement vendoring example. Fixes
#1918.{#v0-33-0-added}
@rules_python//python/config_settings:precompile=enabled to enable it
by default. A subsequent release will enable it by default. See the
Precompiling docs and API reference docs for more
information on precompiling. Note this requires Bazel 7+ and the Pystar rule
implementation enabled.
(#1761)precompile,
precompile_optimize_level, precompile_source_retention,
precompile_invalidation_mode, and pyc_collection//python:toolchain_type) has
two new optional attributes: pyc_tag (tells the pyc filename infix to use) and
implementation_name (tells the Python implementation name).//python:exec_tools_toolchain_type.PyInfo has two new attributes: direct_pyc_files and
transitive_pyc_files, which tell the pyc files a target makes available
directly and transitively, respectively.//python:features.bzl added to allow easy feature-detection in the future.requirements_* files together
with extra_pip_args = ["--platform=manylinux_2_4_x86_64"], that was an
invalid usage previously but we were not failing the build. From now on this
is explicitly disallowed.python_visibility directive now supports the $python_root$
placeholder, just like the python_default_visibility directive does.--@rules_python//python/config_settings:bootstrap_impl=script. It
will become the default in a subsequent release.
(#691)PyRuntimeInfo has two new attributes:
{obj}PyRuntimeInfo.stage2_bootstrap_template and
{obj}PyRuntimeInfo.zip_main_template.//python:autodetecting_toolchain alias now uses it.musl or
glibc, whether universal2 or arch-specific MacOS wheels are preferred and
it also allows to select a particular libc version. All of this is done via
the string_flags in @rules_python//python/config_settings. If there are
no wheels that are supported for the target platform, rules_python will
fallback onto building the sdist from source. This behaviour can be
disabled if desired using one of the available string flags as well.whl_filegroup rule to extract files from a wheel file.
This is useful to extract headers for use in a cc_library.{#v0-32-2}
NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.32.2")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "4912ced70dc1a2a8e4b86cec233b192ca053e82bc72d877b98e126156e8f228d",
strip_prefix = "rules_python-0.32.2",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.32.2/rules_python-0.32.2.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "4912ced70dc1a2a8e4b86cec233b192ca053e82bc72d877b98e126156e8f228d",
strip_prefix = "rules_python-0.32.2/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.32.2/rules_python-0.32.2.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.32.1...0.32.2
{#v0-32-2-fixed}
{#v0-32-0}
(toolchains): Change some old toolchain versions to use [20240224] release to include security fixes 3.8.18, 3.9.18 and 3.10.13
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.32.1")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "b289b0b023c71b80f26d39476e5e2c3cf72d21cb2759bcf02638ba3cc480e9df",
strip_prefix = "rules_python-0.32.1",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.32.1/rules_python-0.32.1.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "b289b0b023c71b80f26d39476e5e2c3cf72d21cb2759bcf02638ba3cc480e9df",
strip_prefix = "rules_python-0.32.1/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.32.1/rules_python-0.32.1.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
MODULE.bazel.lock whl_library rule attributes are now
sorted in the attributes section. We are also removing values that are not
default in order to reduce the size of the lock file.coverage.py to 7.4.3.pip_tools to >= 7.4.03.8.18, 3.9.18 and 3.10.133.8 -> 3.8.193.9 -> 3.9.193.10 -> 3.10.143.11 -> 3.11.93.12 -> 3.12.3project or package generation modes, do not generate py_test
rules when there are no test files and do not set main = "__test__.py" when
that file doesn't exist.py_library graph.
Fixes #1760.pip.parse extension is now possible, see the
examples/pip_parse/MODULE.bazel for how to do it.
See #1371.isort and black
checks (see #1674).3.11.8, 3.12.2 using the 20240224 release.3.8.19, 3.9.19, 3.10.14, 3.11.9, 3.12.3 using
the 20240415 release.python_visibility directive to control visibility
of generated targets by appending additional visibility labels.python_default_visibility directive to control the
default visibility of generated targets. See the docs
for details.python_test_file_pattern directive. This directive tells
gazelle which python files should be mapped to the py_test rule. See the
original issue and the docs
for details.data_files attributes in py_wheel rule
(#1777)bzlmod installations now provide a twine setup for the default
Python toolchain in rules_python for version 3.11.experimental_index_url, experimental_extra_index_urls and
experimental_index_url_overrides to pip.parse for using the bazel
downloader. If you see any issues, report in
#1357. The URLs for
the whl and sdist files will be written to the lock file. Controlling whether
the downloading of metadata is done in parallel can be done using
parallel_download attribute.include_dep. Also add documentation for
annotations to gazelle/README.md.rules_python depends now on rules_cc 0.0.9use_hub_alias_dependencies has been added that is going
to become default in the next release. This makes use of dep_template flag
in the whl_library rule. This also affects the
experimental_requirement_cycles feature where the dependencies that are in
a group would be only accessible via the hub repo aliases. If you still
depend on legacy labels instead of the hub repo aliases and you use the
experimental_requirement_cycles, now is a good time to migrate.Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.32.0...0.32.1
(toolchains): Change some old toolchain versions to use [20240224] release to include security fixes 3.8.18, 3.9.18 and 3.10.13
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.32.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "f4770504f74b9ef87984224a06df35b931d35a2e695ea898102bd9df30ce4fe6",
strip_prefix = "rules_python-0.32.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.32.0/rules_python-0.32.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "f4770504f74b9ef87984224a06df35b931d35a2e695ea898102bd9df30ce4fe6",
strip_prefix = "rules_python-0.32.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.32.0/rules_python-0.32.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
MODULE.bazel.lock whl_library rule attributes are now
sorted in the attributes section. We are also removing values that are not
default in order to reduce the size of the lock file.coverage.py to 7.4.3.pip_tools to >= 7.4.03.8.18, 3.9.18 and 3.10.133.8 -> 3.8.193.9 -> 3.9.193.10 -> 3.10.143.11 -> 3.11.93.12 -> 3.12.3project or package generation modes, do not generate py_test
rules when there are no test files and do not set main = "__test__.py" when
that file doesn't exist.py_library graph.
Fixes #1760.pip.parse extension is now possible, see the
examples/pip_parse/MODULE.bazel for how to do it.
See #1371.isort and black
checks (see #1674).3.11.8, 3.12.2 using the 20240224 release.3.8.19, 3.9.19, 3.10.14, 3.11.9, 3.12.3 using
the 20240415 release.python_visibility directive to control visibility
of generated targets by appending additional visibility labels.python_default_visibility directive to control the
default visibility of generated targets. See the docs
for details.python_test_file_pattern directive. This directive tells
gazelle which python files should be mapped to the py_test rule. See the
original issue and the docs
for details.data_files attributes in py_wheel rule
(#1777)bzlmod installations now provide a twine setup for the default
Python toolchain in rules_python for version 3.11.experimental_index_url, experimental_extra_index_urls and
experimental_index_url_overrides to pip.parse for using the bazel
downloader. If you see any issues, report in
#1357. The URLs for
the whl and sdist files will be written to the lock file. Controlling whether
the downloading of metadata is done in parallel can be done using
parallel_download attribute.include_dep. Also add documentation for
annotations to gazelle/README.md.rules_python depends now on rules_cc 0.0.9use_hub_alias_dependencies has been added that is going
to become default in the next release. This makes use of dep_template flag
in the whl_library rule. This also affects the
experimental_requirement_cycles feature where the dependencies that are in
a group would be only accessible via the hub repo aliases. If you still
depend on legacy labels instead of the hub repo aliases and you use the
experimental_requirement_cycles, now is a good time to migrate.project generation mode by @amartani in https://github.com/bazelbuild/rules_python/pull/1809isort and black on all python files by @dougthor42 in https://github.com/bazelbuild/rules_python/pull/1859Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.31.0...0.32.0
NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.31.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "c68bdc4fbec25de5b5493b8819cfc877c4ea299c0dcb15c244c5a00208cde311",
strip_prefix = "rules_python-0.31.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.31.0/rules_python-0.31.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "c68bdc4fbec25de5b5493b8819cfc877c4ea299c0dcb15c244c5a00208cde311",
strip_prefix = "rules_python-0.31.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.31.0/rules_python-0.31.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
This release is the same as 0.30.0, except the rules_python implementation of the rules is enabled for Bazel 7. Earlier Bazel versions are unaffected. If you encounter issues, please report them! The rules_python implementation can be disabled by any of the following:
RULES_PYTHON_ENABLE_PYSTAR=0 in your environment or using --action_envBelow is a list of commits:
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.30.0...0.31.0
PyInfo is not the same as what
is loaded from rules_python. The same is true of PyRuntimeInfo.NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.30.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "3b8b4cdc991bc9def8833d118e4c850f1b7498b3d65d5698eea92c3528b8cf2c",
strip_prefix = "rules_python-0.30.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.30.0/rules_python-0.30.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "3b8b4cdc991bc9def8833d118e4c850f1b7498b3d65d5698eea92c3528b8cf2c",
strip_prefix = "rules_python-0.30.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.30.0/rules_python-0.30.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
requires_file and extra_requires_files attrs by @UebelAndre in https://github.com/bazelbuild/rules_python/pull/1710requires_file attribute. by @UebelAndre in https://github.com/bazelbuild/rules_python/pull/1719current_py_cc_libs target works by @rickeylev in https://github.com/bazelbuild/rules_python/pull/1749Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.29.0...0.30.0
(toolchains) Windows hosts always ignore pyc files in the downloaded runtimes. This fixes issues due to pyc files being created at runtime and affecting the definition of what files were considered part of the runtime.
(pip_parse) Added the envsubst parameter, which enables environment variable
substitutions in the extra_pip_args attribute.
(pip_repository) Added the envsubst parameter, which enables environment
variable substitutions in the extra_pip_args attribute.
(bzlmod) pip.parse now does not fail with an empty requirements.txt.
(py_wheel) Wheels generated by py_wheel now preserve executable bits when
being extracted by installer and/or pip.
(coverage) During the running of lcov, the stdout/stderr was causing test failures. By default, suppress output when generating lcov. This can be overridden by setting 'VERBOSE_COVERAGE'. This change only affect bazel 7.x.x and above.
(toolchain) Changed the host_toolchain to symlink all files to support
Windows host environments without symlink support.
(PyRuntimeInfo) Switch back to builtin PyRuntimeInfo for Bazel 6.4 and when
pystar is disabled. This fixes an error about target ... does not have ... PyRuntimeInfo.
(#1732)
(py_wheel) Added requires_file and extra_requires_files attributes.
(whl_library) experimental_target_platforms now supports specifying the
Python version explicitly and the output BUILD.bazel file will be correct
irrespective of the python interpreter that is generating the file and
extracting the whl distribution. Multiple python target version can be
specified and the code generation will generate version specific dependency
closures but that is not yet ready to be used and may break the build if
the default python version is not selected using
common --@rules_python//python/config_settings:python_version=X.Y.Z.
New Python versions available: 3.11.7, 3.12.1 using
https://github.com/indygreg/python-build-standalone/releases/tag/20240107.
(toolchain) Allow setting x.y as the python_version parameter in
the version-aware py_binary and py_test rules. This allows users to
use the same rule import for testing with specific Python versions and
rely on toolchain configuration and how the latest version takes precedence
if e.g. 3.8 is selected. That also simplifies .bazelrc for any users
that set the default python_version string flag in that way.
(toolchain) The runtime's shared libraries (libpython.so et al) can be
accessed using @rules_python//python/cc:current_py_cc_libs. This uses
toolchain resolution, so the files are from the same runtime used to run a
target. If you were previously using e.g. @python_3_11//:libpython, then
switch to :current_py_cc_libs for looser coupling to the underlying runtime
repo implementation.
(repo rules) The environment variable RULES_PYTHON_REPO_DEBUG=1 can be
set to make repository rules log detailed information about what they're
up to.
(coverage) Add support for python 3.12 and bump coverage.py to
7.4.1.
NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.29.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "d71d2c67e0bce986e1c5a7731b4693226867c45bfe0b7c5e0067228a536fc580",
strip_prefix = "rules_python-0.29.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.29.0/rules_python-0.29.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "d71d2c67e0bce986e1c5a7731b4693226867c45bfe0b7c5e0067228a536fc580",
strip_prefix = "rules_python-0.29.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.29.0/rules_python-0.29.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
For a human friendly description, see the changelog at: https://github.com/bazelbuild/rules_python/blob/main/CHANGELOG.md
Below is a list of commits
Runfiles class to simplify interface by @UebelAndre in https://github.com/bazelbuild/rules_python/pull/1656package_name formatting by @michael-christen in https://github.com/bazelbuild/rules_python/pull/1712Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.28.0...0.29.0
incompatible_generate_aliases feature flags
from pip_parse and gazelle got removed. They had been flipped to True
in 0.27.0 release.incompatible_normalize_name and
incompatible_normalize_version flags have been removed. They had been
flipped to True in 0.27.0 release.X.Y python version notation. This improves cross module
interoperability and allows to share wheels built by interpreters using
different patch versions.(bzlmod pip.parse) Use a platform-independent reference to the interpreter
pip uses. This reduces (but doesn't eliminate) the amount of
platform-specific content in MODULE.bazel.lock files; Follow
#1643 for removing
platform-specific content in MODULE.bazel.lock files.
(wheel) The stamp variables inside the distribution name are no longer lower-cased when normalizing under PEP440 conventions.
(toolchains) python_register_toolchains now also generates a repository
that is suffixed with _host, that has a single label :python that is a
symlink to the python interpreter for the host platform. The intended use is
mainly in repository_rule, which are always run using host platform
Python. This means that WORKSPACE users can now copy the requirements.bzl
file for vendoring as seen in the updated pip_parse_vendored example.
(runfiles) rules_python.python.runfiles.Runfiles now has a static Create
method to make imports more ergonomic. Users should only need to import the
Runfiles object to locate runfiles.
(toolchains) PyRuntimeInfo now includes a interpreter_version_info field
that contains the static version information for the given interpreter.
This can be set via py_runtime when registering an interpreter toolchain,
and will done automatically for the builtin interpreter versions registered via
python_register_toolchains.
Note that this only available on the Starlark implementation of the provider.
(config_settings) Added //python/config_settings:is_python_X.Y config
settings to match on minor Python version. These settings match any X.Y
version instead of just an exact X.Y.Z version.
NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.28.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "pip",
python_version = "3.11",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8",
strip_prefix = "rules_python-0.28.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8",
strip_prefix = "rules_python-0.28.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
For a human friendly overview of changes, see https://rules-python.readthedocs.io/en/latest/changelog.html
Below is a list of commits.
experimental_requirement_cycles by @mishazharov in https://github.com/bazelbuild/rules_python/pull/1588@rules_python//python/runfiles by @UebelAndre in https://github.com/bazelbuild/rules_python/pull/1654py_runtime to take an executable target as the interpreter by @mishazharov in https://github.com/bazelbuild/rules_python/pull/1621Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.27.0...0.28.0
BREAKING (pip_install) the deprecated pip_install macro and related
items have been removed.
BREAKING Support for Bazel 5 has been officially dropped. This release was only partially tested with Bazel 5 and may or may not work with Bazel 5. Subsequent versions will no longer be tested under Bazel 5.
(runfiles) rules_python.python.runfiles now directly implements type hints
and drops support for python2 as a result.
(toolchains) py_runtime, py_runtime_pair, and PyRuntimeInfo now use the
rules_python Starlark implementation, not the one built into Bazel. NOTE: This
only applies to Bazel 6+; Bazel 5 still uses the builtin implementation.
(pip_parse) The parameter experimental_requirement_cycles may be provided a
map of names to lists of requirements which form a dependency
cycle. pip_parse will break the cycle for you transparently. This behavior
is also available under bzlmod as
pip.parse(experimental_requirement_cycles={}).
(toolchains) py_runtime can now take an executable target. Note: runfiles
from the target are not supported yet.
(#1612)
(gazelle) When python_generation_mode is set to file, create one py_binary
target for each file with if __name__ == "__main__" instead of just one
py_binary for the whole module.
(gazelle) the Gazelle manifest integrity field is now optional. If the
requirements argument to gazelle_python_manifest is unset, no integrity
field will be generated.
(gazelle) The gazelle plugin helper was not working with Python toolchains 3.11 and above due to a bug in the helper components not being on PYTHONPATH.
(pip_parse) The repositories created by whl_library can now parse the whl
METADATA and generate dependency closures irrespective of the host platform
the generation is executed on. This can be turned on by supplying
experimental_target_platforms = ["all"] to the pip_parse or the bzlmod
equivalent. This may help in cases where fetching wheels for a different
platform using download_only = True feature.
(bzlmod pip.parse) The pip.parse(python_interpreter) arg now works for
specifying a local system interpreter.
(bzlmod pip.parse) Requirements files with duplicate entries for the same package (e.g. one for the package, one for an extra) now work.
(bzlmod python.toolchain) Submodules can now (re)register the Python version that rules_python has set as the default. (#1638)
(whl_library) Actually use the provided patches to patch the whl_library. On Windows the patching may result in files with CRLF line endings, as a result the RECORD file consistency requirement is lifted and now a warning is emitted instead with a location to the patch that could be used to silence the warning. Copy the patch to your workspace and add it to the list if patches for the wheel file if you decide to do so.
(coverage): coverage reports are now created when the version-aware rules are used. (#1600)
(toolchains) Workspace builds register the py cc toolchain (bzlmod already
was). This makes e.g. //python/cc:current_py_cc_headers Just Work.
(#1669)
(bzlmod python.toolchain) The value of ignore_root_user_error is now decided
by the root module only.
(#1658)
file generation mode can now also add __init__.py to the srcs
attribute for every target in the package. This is enabled through a separate
directive python_generation_mode_per_file_include_init.NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.27.1")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "e85ae30de33625a63eca7fc40a94fea845e641888e52f32b6beea91e8b1b2793",
strip_prefix = "rules_python-0.27.1",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.27.1/rules_python-0.27.1.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "e85ae30de33625a63eca7fc40a94fea845e641888e52f32b6beea91e8b1b2793",
strip_prefix = "rules_python-0.27.1/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.27.1/rules_python-0.27.1.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.27.0...0.27.1
docs: document a breaking changes policy by @rickeylev in https://github.com/bazelbuild/rules_python/pull/1460
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.27.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "9acc0944c94adb23fba1c9988b48768b1bacc6583b52a2586895c5b7491e2e31",
strip_prefix = "rules_python-0.27.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.27.0/rules_python-0.27.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "9acc0944c94adb23fba1c9988b48768b1bacc6583b52a2586895c5b7491e2e31",
strip_prefix = "rules_python-0.27.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.27.0/rules_python-0.27.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
See CHANGELOG 0.27.0 for a human friendly description of what has changed. Below are an overview of commits.
TestCase.assertEquals by @dizzy57 in https://github.com/bazelbuild/rules_python/pull/1494py_test for coarse_grained setups by @aignas in https://github.com/bazelbuild/rules_python/pull/1538.pyc.NNNN files from the hermetic runtime tree by @rickeylev in https://github.com/bazelbuild/rules_python/pull/1541Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.26.0...0.27.0
Make //python/pip_install:pip_repository_bzl bzl_library target internal
as all of the publicly available symbols (etc. package_annotation) are
re-exported via //python:pip_bzl bzl_library.
(gazelle) Gazelle Python extension no longer has runtime dependencies. Using
GAZELLE_PYTHON_RUNTIME_DEPS from @rules_python_gazelle_plugin//:def.bzl is
no longer necessary.
(pip_parse) The installation of pip_parse repository rule toolchain
dependencies is now done as part of py_repositories call.
(pip_parse) The generated requirements.bzl file now has an additional symbol
all_whl_requirements_by_package which provides a map from the normalized
PyPI package name to the target that provides the built wheel file. Use
pip_utils.normalize_name function from @rules_python//python:pip.bzl to
convert a PyPI package name to a key in the all_whl_requirements_by_package
map.
(pip_parse) The flag incompatible_generate_aliases has been flipped to
True by default on non-bzlmod setups allowing users to use the same label
strings during the transition period. For example, instead of
@pypi_foo//:pkg, you can now use @pypi//foo or @pypi//foo:pkg. Other
labels that are present in the foo package are dist_info, whl and
data. Note, that the @pypi_foo//:pkg labels are still present for
backwards compatibility.
(gazelle) The flag use_pip_repository_aliases is now set to True by
default, which will cause gazelle to change third-party dependency labels
from @pip_foo//:pkg to @pip//foo by default.
The compile_pip_requirements now defaults to pyproject.toml if the src
or requirements_in attributes are unspecified, matching the upstream
pip-compile behaviour more closely.
(gazelle) Use relative paths if possible for dependencies added through
the use of the resolve directive.
(gazelle) When using python_generation_mode file, one py_test target is
made per test file even if a target named __test__ or a file named
__test__.py exists in the same package. Previously in these cases there
would only be one test target made.
Breaking changes:
(pip) pip_install repository rule in this release has been disabled and
will fail by default. The API symbol is going to be removed in the next
version, please migrate to pip_parse as a replacement. The pip_parse
rule no longer supports requirements attribute, please use
requirements_lock instead.
(py_wheel) switch incompatible_normalize_name and
incompatible_normalize_version to True by default to enforce PEP440
for wheel names built by rules_python.
(tools/wheelmaker.py) drop support for Python 2 as only Python 3 is tested.
Skip aliases for unloaded toolchains. Some Python versions that don't have full
platform support, and referencing their undefined repositories can break operations
like bazel query rdeps(...).
Python code generated from proto_library with strip_import_prefix can be imported now.
(py_wheel) Produce deterministic wheel files and make RECORD file entries
follow the order of files written to the .whl archive.
(gazelle) Generate a single py_test target when gazelle:python_generation_mode project
is used.
(gazelle) Move waiting for the Python interpreter process to exit to the shutdown hook
to make the usage of the exec.Command more idiomatic.
(toolchains) Keep tcl subdirectory in Windows build of hermetic interpreter.
(bzlmod) sub-modules now don't have the //conditions:default clause in the
hub repos created by pip.parse. This should fix confusing error messages
in case there is a misconfiguration of toolchains or a bug in rules_python.
(bzlmod) Added .whl patching support via patches and patch_strip
arguments to the new pip.override tag class.
(pip) Support for using PEP621 compliant
pyproject.toml for creating a resolved requirements.txt file.
(utils) Added a pip_utils struct with a normalize_name function to allow users
to find out how rules_python would normalize a PyPI distribution name.
(multi-version) The distribs attribute is no longer propagated. This attribute has been long deprecated by Bazel and shouldn't be used.
Python version patch level bumps:
(deps) Upgrade rules_go 0.39.1 -> 0.41.0; this is so gazelle integration works with upcoming Bazel versions
(multi-version) The distribs attribute is no longer propagated. This attribute has been long deprecated by Bazel and shouldn't be used.
Calling //python:repositories.bzl#py_repositories() is required. It has always been documented as necessary, but it was possible to omit it in certain cases. An error about @rules_python_internal means the py_repositories() call is missing in WORKSPACE.
(bzlmod) The pip.parse extension will generate os/arch specific lock file entries on bazel>=6.4.
entry_point macro is no longer supported and has been removed in favor of the py_console_script_binary macro for bzlmod users.pip.parse no longer generates {hub_name}_{py_version} hub repos as the entry_point macro has been superseded by py_console_script_binary.pip.parse no longer generates {hub_name}_{distribution} hub repos.py_console_script_binary, which allows adding custom dependencies to a package's entry points and customizing the py_binary rule used to build it.3.8.17, 3.11.5 using
https://github.com/indygreg/python-build-standalone/releases/tag/20230826.# gazelle:python_generation_mode file directive to support generating one py_library per file.netrc and auth_patterns attributes to enable authentication against private HTTP hosts serving Python toolchain binaries.//python:packaging_bzl added, a bzl_library for the Starlark files //python:packaging.bzl requires.incompatible_normalize_name feature flag to normalize the package distribution name according to latest Python packaging standards. Defaults to False for the time being.incompatible_normalize_version feature flag to normalize the package version according to PEP440 standard. This also adds support for local version specifiers (versions with a + in them), in accordance with PEP440. Defaults to False for the time being.3.8.18, 3.9.18, 3.10.13, 3.11.6, 3.12.0 using https://github.com/indygreg/python-build-standalone/releases/tag/20231002. 3.12.0 support is considered beta and may have issues.NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.26.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "9d04041ac92a0985e344235f5d946f71ac543f1b1565f2cdbc9a2aaee8adf55b",
strip_prefix = "rules_python-0.26.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.26.0/rules_python-0.26.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "9d04041ac92a0985e344235f5d946f71ac543f1b1565f2cdbc9a2aaee8adf55b",
strip_prefix = "rules_python-0.26.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.26.0/rules_python-0.26.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
//python/config_settings/private:distribution target by @philsc in https://github.com/bazelbuild/rules_python/pull/1402pycross_wheel_library and make it work by @philsc in https://github.com/bazelbuild/rules_python/pull/1413@bazel_tools files to bzl_library dependencies. by @rickeylev in https://github.com/bazelbuild/rules_python/pull/1457Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.25.0...0.26.0
NOTE: bzlmod support is still beta. APIs subject to change.
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.25.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "5868e73107a8e85d8f323806e60cad7283f34b32163ea6ff1020cf27abef6036",
strip_prefix = "rules_python-0.25.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.25.0/rules_python-0.25.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "5868e73107a8e85d8f323806e60cad7283f34b32163ea6ff1020cf27abef6036",
strip_prefix = "rules_python-0.25.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.25.0/rules_python-0.25.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.24.0...0.25.0
pip.parse can no longer automatically use the default
Python version; this was an unreliable and unsafe behavior. The
python_version arg must always be explicitly specified.main arg is now correctly computed and usually optional.pip.parse no longer requires a call for whatever the configured
default Python version is.Users of this Gazelle extension must upgrade to Gazelle v0.30.0 or above.
Users of this Gazelle extension must upgrade to Gazelle v0.30.0 or above.
NOTE: bzlmod support is still beta; APIs are settling down but some are still subject to change
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.24.0")
pip = use_extension("@rules_python//python:extensions.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "0a8003b044294d7840ac7d9d73eef05d6ceb682d7516781a4ec62eeb34702578",
strip_prefix = "rules_python-0.24.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.24.0/rules_python-0.24.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "0a8003b044294d7840ac7d9d73eef05d6ceb682d7516781a4ec62eeb34702578",
strip_prefix = "rules_python-0.24.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.24.0/rules_python-0.24.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
format() calls to glob_exclude templates by @lpulley in https://github.com/bazelbuild/rules_python/pull/1285all_data_requirements alias by @kevinpark1217 in https://github.com/bazelbuild/rules_python/pull/1292Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.23.1...0.24.0
@python_aliases renamed to `@python_versionspip.parse arg name renamed to hub_namepip.parse arg incompatible_generate_aliases removed and always
true.pip.parse can be called multiple times with different Python
versionspip.parse to reference the default python toolchain and interpreterwhl_modsDescription-Content-Type and Summary in METADATAProject-URLgenerate_hashes arg (default True) to
control generating hashes```starlark bazel_dep(name = "rules_python", version = "0.23.1")
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.23.1")
pip = use_extension("@rules_python//python:extensions.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "84aec9e21cc56fbc7f1335035a71c850d1b9b5cc6ff497306f84cced9a769841",
strip_prefix = "rules_python-0.23.1",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.23.1/rules_python-0.23.1.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "84aec9e21cc56fbc7f1335035a71c850d1b9b5cc6ff497306f84cced9a769841",
strip_prefix = "rules_python-0.23.1/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.23.1/rules_python-0.23.1.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.23.0...0.23.1
NOTE: bzlmod support is still experimental; apis are still subject to change
NOTE: bzlmod support is still experimental; apis are still subject to change
This release introduces two notable changes to bzlmod support:
register_toolchains() yourself. Depending
on rules_python through bazel_dep is sufficient. Note, however, the Python version used for this default toolchain will change
frequently/unexpectedly to track the a recent Python version.name arg of python.toolchain has been removed. The toolchain repo name format is python_X_Y e.g. python_3_11.Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.23.0")
pip = use_extension("@rules_python//python:extensions.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "8272287b125a23bfc79650ecbbc045ebcaee4d632338b1a50aad34357bcbadce",
strip_prefix = "rules_python-0.23.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.23.0/rules_python-0.23.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "8272287b125a23bfc79650ecbbc045ebcaee4d632338b1a50aad34357bcbadce",
strip_prefix = "rules_python-0.23.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.23.0/rules_python-0.23.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
import python.runfiles work with --experimental_python_import_all_repositories=false by @rickeylev in https://github.com/bazelbuild/rules_python/pull/1243only-binary for download_only pip download by @lpulley in https://github.com/bazelbuild/rules_python/pull/1219Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.22.0...0.23.0
This is a patch release of 0.22.0 that automatically registers the @bazel_tools//tools/python:autodetecting_toolchain toolchain.
This is a patch release of 0.22.0 that automatically registers the @bazel_tools//tools/python:autodetecting_toolchain toolchain.
See https://github.com/bazelbuild/bazel/issues/20458 for more information.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.22.1")
pip = use_extension("@rules_python//python:extensions.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
# (Optional) Register a specific python toolchain instead of using the host version
python = use_extension("@rules_python//python:extensions.bzl", "python")
python.toolchain(
name = "python3_9",
python_version = "3.9",
)
use_repo(python, "python3_9_toolchains")
register_toolchains(
"@python3_9_toolchains//:all",
)
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "a5640fddd4beb03e8c1fde5ed7160c0ba6bd477e7d048661c30c06936a26fd63",
strip_prefix = "rules_python-0.22.1",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.22.1/rules_python-0.22.1.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "a5640fddd4beb03e8c1fde5ed7160c0ba6bd477e7d048661c30c06936a26fd63",
strip_prefix = "rules_python-0.22.1/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.22.1/rules_python-0.22.1.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.22.0...0.22.1
As part of fixing some fundamental issues with the bzlmod support, we had to change the path to our extensions. Instead of all extensions being in a s
As part of fixing some fundamental issues with the bzlmod support, we had to change the path to our extensions. Instead of all extensions being in a single extensions.bzl file, each extension is in its own file. Users must update the file path in their use_repo() statements as follows:
use_extension("@rules_python//python:extensions.bzl", "python") -> use_extension("@rules_python//python/extensions:python.bzl", "python")use_extension("@rules_python//python:extensions.bzl", "pip") -> use_extension("@rules_python//python/extensions:pip.bzl", "pip")The following sed commands should approximate the necessary changes:
sed 'sXuse_extension("@rules_python//python:extensions.bzl", "python")Xuse_extension("@rules_python//python/extensions:python.bzl", "python")X'`
sed 'sXuse_extension("@rules_python//python:extensions.bzl", "pip")Xuse_extension("@rules_python//python/extensions:pip.bzl", "pip")X'`
See examples/bzlmod_build_file_generation/MODULE.bazel for an example of the new paths.
The output of lockfiles has slightly changed. Though functionally the same, their integrity hashes will change.
NOTE: Bzlmod support is still in beta.
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.22.0")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
# (Optional) Register a specific python toolchain instead of using the host version
python = use_extension("@rules_python//python/extensions:python.bzl", "python")
python.toolchain(
name = "python3_9",
python_version = "3.9",
)
use_repo(python, "python3_9_toolchains")
register_toolchains(
"@python3_9_toolchains//:all",
)
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "863ba0fa944319f7e3d695711427d9ad80ba92c6edd0b7c7443b84e904689539",
strip_prefix = "rules_python-0.22.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.22.0/rules_python-0.22.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "863ba0fa944319f7e3d695711427d9ad80ba92c6edd0b7c7443b84e904689539",
strip_prefix = "rules_python-0.22.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.22.0/rules_python-0.22.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
tags attribute. by @rickeylev in https://github.com/bazelbuild/rules_python/pull/1191example/build_file_generation/README.md by @ofey404 in https://github.com/bazelbuild/rules_python/pull/1164Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.21.0...0.22.0
```starlark bazel_dep(name = "rules_python", version = "0.21.0")
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.21.0")
pip = use_extension("@rules_python//python:extensions.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
# (Optional) Register a specific python toolchain instead of using the host version
python = use_extension("@rules_python//python:extensions.bzl", "python")
python.toolchain(
name = "python3_9",
python_version = "3.9",
)
use_repo(python, "python3_9_toolchains")
register_toolchains(
"@python3_9_toolchains//:all",
)
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "94750828b18044533e98a129003b6a68001204038dc4749f40b195b24c38f49f",
strip_prefix = "rules_python-0.21.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.21.0/rules_python-0.21.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "94750828b18044533e98a129003b6a68001204038dc4749f40b195b24c38f49f",
strip_prefix = "rules_python-0.21.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.21.0/rules_python-0.21.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.20.0...0.21.0
```starlark bazel_dep(name = "rules_python", version = "0.20.0")
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.20.0")
pip = use_extension("@rules_python//python:extensions.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
# (Optional) Register a specific python toolchain instead of using the host version
python = use_extension("@rules_python//python:extensions.bzl", "python")
python.toolchain(
name = "python3_9",
python_version = "3.9",
)
use_repo(python, "python3_9_toolchains")
register_toolchains(
"@python3_9_toolchains//:all",
)
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "a644da969b6824cc87f8fe7b18101a8a6c57da5db39caa6566ec6109f37d2141",
strip_prefix = "rules_python-0.20.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.20.0/rules_python-0.20.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "a644da969b6824cc87f8fe7b18101a8a6c57da5db39caa6566ec6109f37d2141",
strip_prefix = "rules_python-0.20.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.20.0/rules_python-0.20.0.tar.gz",
)
# To compile the rules_python gazelle extension from source,
# we must fetch some third-party go dependencies that it uses.
load("@rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")
_py_gazelle_deps()
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.19.0...0.20.0
```starlark bazel_dep(name = "rules_python", version = "0.19.0")
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.19.0")
pip = use_extension("@rules_python//python:extensions.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
# (Optional) Register a specific python toolchain instead of using the host version
python = use_extension("@rules_python//python:extensions.bzl", "python")
python.toolchain(
name = "python3_9",
python_version = "3.9",
)
use_repo(python, "python3_9_toolchains")
register_toolchains(
"@python3_9_toolchains//:all",
)
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "ffc7b877c95413c82bfd5482c017edcf759a6250d8b24e82f41f3c8b8d9e287e",
strip_prefix = "rules_python-0.19.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.19.0/rules_python-0.19.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "ffc7b877c95413c82bfd5482c017edcf759a6250d8b24e82f41f3c8b8d9e287e",
strip_prefix = "rules_python-0.19.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.19.0/rules_python-0.19.0.tar.gz",
)
py_runtime.coverage_tool for Bazel 6 and higher. by @rickeylev in https://github.com/bazelbuild/rules_python/pull/1061.dist targets by @rickeylev in https://github.com/bazelbuild/rules_python/pull/1064Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.18.0...0.19.0
```starlark bazel_dep(name = "rules_python", version = "0.18.1")
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.18.1")
pip = use_extension("@rules_python//python:extensions.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
# (Optional) Register a specific python toolchain instead of using the host version
python = use_extension("@rules_python//python:extensions.bzl", "python")
python.toolchain(
name = "python3_9",
python_version = "3.9",
)
use_repo(python, "python3_9_toolchains")
register_toolchains(
"@python3_9_toolchains//:all",
)
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "29a801171f7ca190c543406f9894abf2d483c206e14d6acbd695623662320097",
strip_prefix = "rules_python-0.18.1",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.18.1/rules_python-0.18.1.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "29a801171f7ca190c543406f9894abf2d483c206e14d6acbd695623662320097",
strip_prefix = "rules_python-0.18.1/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.18.1/rules_python-0.18.1.tar.gz",
)
py_runtime.coverage_tool for Bazel 6 and higher. (#1061)Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.18.0...0.18.1
```starlark bazel_dep(name = "rules_python", version = "0.18.0")
Add to your MODULE.bazel file:
bazel_dep(name = "rules_python", version = "0.18.0")
pip = use_extension("@rules_python//python:extensions.bzl", "pip")
pip.parse(
name = "pip",
requirements_lock = "//:requirements_lock.txt",
)
use_repo(pip, "pip")
# (Optional) Register a specific python toolchain instead of using the host version
python = use_extension("@rules_python//python:extensions.bzl", "python")
python.toolchain(
name = "python3_9",
python_version = "3.9",
)
use_repo(python, "python3_9_toolchains")
register_toolchains(
"@python3_9_toolchains//:all",
)
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "36362b4d54fcb17342f9071e4c38d63ce83e2e57d7d5599ebdde4670b9760664",
strip_prefix = "rules_python-0.18.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.18.0/rules_python-0.18.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "36362b4d54fcb17342f9071e4c38d63ce83e2e57d7d5599ebdde4670b9760664",
strip_prefix = "rules_python-0.18.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.18.0/rules_python-0.18.0.tar.gz",
)
rules_python now includes coverage as part of the toolchain as an opt-in feature. To get started, pass register_coverage_tool = True to python_register_toolchains or python_register_multi_toolchains.
The bazel-runfiles wheel is now published to https://pypi.org/project/bazel-runfiles/.
Full Changelog: https://github.com/bazelbuild/rules_python/compare/0.17.3...0.18.0
Your coding agent can read these notes before it upgrades. Set up the MCP server →