Skip to content

Conversation

@cq-bot
Copy link

@cq-bot cq-bot commented Feb 1, 2026

This PR contains the following updates:

Package Type Update Change
rules_python bazel_dep major 0.35.0 -> 1.8.3

Release Notes

bazel-contrib/rules_python (rules_python)

v1.8.3

Compare Source

{#v1-8-3-fixed}

Fixed
  • (pipstar) Fix whl extraction on Windows when bazelrc has XX flags.
    Fixes #​3543.

{#v1-8-2}

v1.8.2

Compare Source

{#v1-8-2-fixed}

Fixed
  • (venvs) relax the C library filename check to make tensorflow work
    Fixes #​3524.

{#v1-8-1}

v1.8.1

Compare Source

{#v1-8-1-fixed}

Fixed
  • (pipstar) Extra resolution that refers back to the package being resolved works again.
    Fixes #​3524.

{#v1-8-0}

v1.8.0

Compare Source

{#v1-8-0-known-issues}

Known Issues
  • (gazelle) Windows support for the Gazelle plugin may be broken. See
    #​3416 for
    details and possible workarounds.

{#v1-8-0-removed}

Removed
  • (toolchain) Remove all of the python 3.8 toolchain support out of the box. Users need
    to pass the TOOL_VERSIONS that include 3.8 toolchains or use the bzlmod APIs to add
    them back. This means any hub pip.parse calls that target 3.8 will be ignored from
    now on. (#​2704)
    {object}python.single_version_override, like:

    python = use_extension("@​rules_python//python/extensions:python.bzl", "python")
    
    python.single_version_override(
        python_version = "3.8.20",
        sha256 = {
            "aarch64-apple-darwin": "2ddfc04bdb3e240f30fb782fa1deec6323799d0e857e0b63fa299218658fd3d4",
            "aarch64-unknown-linux-gnu": "9d8798f9e79e0fc0f36fcb95bfa28a1023407d51a8ea5944b4da711f1f75f1ed",
            "x86_64-apple-darwin": "68d060cd373255d2ca5b8b3441363d5aa7cc45b0c11bbccf52b1717c2b5aa8bb",
            "x86_64-pc-windows-msvc": "41b6709fec9c56419b7de1940d1f87fa62045aff81734480672dcb807eedc47e",
            "x86_64-unknown-linux-gnu": "285e141c36f88b2e9357654c5f77d1f8fb29cc25132698fe35bb30d787f38e87",
        },
        urls = ["https://github.com/astral-sh/python-build-standalone/releases/download/20241002/cpython-{python_version}+20241002-{platform}-{build}.tar.gz"],
    )
  • (toolchain) Remove all of the python 3.9 toolchain versions except for the 3.9.25.
    This version has reached EOL and will no longer receive any security fixes, please update to
    3.10 or above. (#​2704)

  • (toolchain) ignore_root_user_error has now been flipped to be always enabled and
    the chmod of the python toolchain directories have been removed. From now on rules_python
    always adds the pyc files to the glob excludes and in order to avoid any problems when using
    the toolchains in the repository phase, ensure that you pass -B to the python interpreter.
    (#​2016)

{#v1-8-0-changed}

Changed
  • (toolchains) Use toolchains from the 20251031 release.
  • (gazelle) Internally split modules mapping generation to be per-wheel for concurrency and caching.
  • (pip) pipstar has been enabled for all whl_library instances where the whl
    is passed through a label or downloaded using the bazel downloader
    (#​2949).
  • (pypi) pipstar flag default has been flipped to be on by default.
    It can be disabled through RULES_PYTHON_ENABLE_PIPSTAR=0 environment variable.
    If you do need to disable it, please add a comment to
    #​2949.
  • (gazelle deps) rules_go bumped from 0.55.1 to 0.59.0
  • (gazelle deps) gazelle bumped from 0.36.0 to 0.47.0

{#v1-8-0-fixed}

Fixed
  • (gazelle) Remove {obj}py_binary targets with invalid srcs. This includes files
    that are not generated or regular files.
    #​3046
  • (runfiles) Fix incorrect Python runfiles path assumption - the existing
    implementation assumes that it is always four levels below the runfiles
    directory, leading to incorrect path checks
    (#​3085).
  • (toolchains) local toolchains now tell the sys.abiflags value of the
    underlying runtime.
  • (toolchains) various local toolchain fixes: add abi3 header targets,
    fixes to linking, Windows DLL detection, and defines for free threaded
    runtimes.
  • (toolchains) The python_headers target is now compatible with
    layering_check.
  • (performance) 90% reduction in py_binary/py_test analysis phase cost.
    (#​3381).
  • (gazelle) Fix gazelle_python_manifest.test so that it accesses manifest files via runfile path handling rather than directly (#​3397).
  • (core rules) For the system_python bootstrap, the runfiles root is added to
    sys.path.
  • (sphinxdocs) The sphinxdocs .serve target is now compatible with Bazel's --symlink_prefix
    flag (#​3410).

{#v1-8-0-added}

Added
  • (toolchains) 3.9.25 Python toolchain from 20251031 release.
  • (toolchains) 3.13.10, 3.14.1 Python toolchain from 20251202 release.
  • (toolchains) 3.13.11, 3.14.2, 3.15.0a2 Python toolchains from 20251209 release.
  • (pypi) API to tell pip.parse which platforms users care about. This is very useful to ensure
    that when users do bazel query for their deps, they don't have to download all of the
    dependencies for all of the available wheels. Torch wheels can be up of 1GB and it takes a lot
    of time to download those, which is unnecessary if only the host platform builds are necessary
    to be performed. This is mainly for backwards/forwards compatibility whilst rolling out
    RULES_PYTHON_ENABLE_PIPSTAR=1 by default. Users of experimental_index_url that perform
    cross-builds should add {obj}target_platforms to their pip.parse invocations, which will
    become mandatory if any cross-builds are required from the next release.
  • (py_library) Attribute {obj}namespace_package_files added. It is a hint for
    optimizing venv creation.

{#v1-7-0}

v1.7.0

Compare Source

{#v1-7-0-removed}

Removed
  • (core rules) Support for Bazel's long deprecated "extra actions" has been
    removed
    (#​3215).

{#v1-7-0-changed}

Changed
  • (deps) bumped rules_cc dependency to 0.1.5.
  • (bootstrap) For {obj}--bootstrap_impl=system_python, PYTHONPATH is no
    longer used to add import paths. The sys.path order has changed from
    [app paths, stdlib, runtime site-packages] to [stdlib, app paths, runtime site-packages].
  • (bootstrap) For {obj}--bootstrap_impl=system_python, the sys.path order has
    changed from [app paths, stdlib, runtime site-packages] to [stdlib, app paths, runtime site-packages].
  • (pip) Publishing deps are no longer pulled via experimental_index_url.
    (#​2937).
  • (toolchains) py_runtime and PyRuntimeInfo reject Python 2 settings.
    Setting py_runtime.python_version = "PY2" or non-None
    PyRuntimeInfo.py2_runtime is an error.
  • (pypi) pipstar flag has been implemented for WORKSPACE and can be flipped to be enabled using RULES_PYTHON_ENABLE_PIPSTAR=1 environment variable. If you do, please
    add a comment to
    #​2949 if you run into any
    problems.
    With this release we are deprecating {obj}pip.parse.experimental_target_platforms and
    {obj}pip_repository.experimental_target_platforms. For users using WORKSPACE and
    vendoring the requirements.bzl file, please re-vendor so that downstream is unaffected
    when the APIs get removed. If you need to customize the way the dependencies get
    evaluated, see our docs on customizing Requires-Dist resolution.
  • (toolchains) Added Python versions 3.15.0a1, 3.14.0, 3.13.9, 3.12.12, 3.11.14, 3.10.19, and 3.9.24
    from the 20251014 release.
  • (deps) (bzlmod) Upgraded to bazel-skylib version
    1.8.2

{#v1-7-0-fixed}

Fixed
  • (rules) The PyInfo constructor was setting the wrong value for
    has_py3_only_sources - this is now fixed.
  • (bootstrap) The stage1 bootstrap script now correctly handles nested RUNFILES_DIR
    environments, fixing issues where a py_binary calls another py_binary
    (#​3187).
  • (bootstrap) For Windows, having many dependencies no longer results in max
    length errors due to too long environment variables.
  • (bootstrap) {obj}--bootstrap_impl=script now supports the -S interpreter
    setting.
  • (venvs) {obj}--venvs_site_packages=yes no longer errors when packages with
    overlapping files or directories are used together.
    (#​3204).
  • (venvs) {obj}--venvs_site_packages=yes works for packages that dynamically
    link to shared libraries
    (#​3228).
  • (venvs) {obj}--venvs_site_packages=yes includes pth files at the root of the
    site-packages folder
    (#​3339).
  • (uv) {obj}//python/uv:lock.bzl%lock now works with a local platform
    runtime.
  • (pypi) linux_riscv64 is added to the platforms list in _pip_repository_impl,
    which fixes a build issue for tensorflow on riscv64.
  • (toolchains) WORKSPACE builds now correctly register musl and freethreaded
    variants. Setting {obj}--py_linux_libc=musl and --py_freethreaded=yes now
    activate them, respectively.
    (#​3262).
  • (rules) {obj}py_console_script_binary is now compatible with symbolic macros
    (#​3195).

{#v1-7-0-added}

Added
  • (runfiles) The Python runfiles library now supports Bazel's
    --incompatible_compact_repo_mapping_manifest flag.
  • (bootstrap) {obj}--bootstrap_impl=system_python now supports the
    {obj}main_module attribute.
  • (bootstrap) {obj}--bootstrap_impl=system_python now supports the
    {any}RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS environment variable.
  • (rules) The py_binary, py_test, and py_wheel rules now have a
    {obj}config_settings attribute to control build flags within the build graph.
    Custom settings can be added using {obj}config.add_transition_setting in
    MODULE.bazel files, or {obj}py_repositories(transition_settings=...) in
    WORKSPACE files. See the
    {ref}common-deps-with-multiple-pypi-versions guide on using common
    dependencies with multiple PyPI versions` for an example.
  • (toolchains) Stable ABI headers support added. To use, depend on
    {obj}//python/cc:current_py_cc_headers_abi3. This allows Windows builds
    a way to depend on headers without the potentially Python unstable ABI
    objects from the regular {obj}//python/cc:current_py_cc_headers target
    being included.
    • Adds {obj}//python/cc:current_py_cc_headers_abi3,
      {obj}py_cc_toolchain.headers_abi3, and {obj}PyCcToolchainInfo.headers_abi3.
    • {obj}//python:features.bzl%features.headers_abi3 can be used to
      feature-detect the presense of the above.
  • (toolchains) Local toolchains can use a label for the interpreter to use.
  • (pypi) Support for environment marker handling and experimental_index_url handling for
    Windows ARM64 for Python 3.11 and later
    (#​2276).

{#v1-6-3}

v1.6.3

Compare Source

{#v1-6-3-fixed}

Fixed
  • (pypi) We now use the Minimal Version Selection (MVS) algorithm to select
    the right wheel when there are multiple wheels for the target platform
    (e.g. musllinux_1_1_x86_64 and musllinux_1_2_x86_64). If the user
    wants to set the minimum version for the selection algorithm, use the
    {attr}pip.defaults.whl_platform_tags attribute to configure that. If
    musllinux_*_x86_64 is specified, we will choose the lowest available
    wheel version. Fixes #​3250.

{#v1-6-0}

v1.6.1

Compare Source

For more detailed setup instructions, see https://rules-python.readthedocs.io/en/latest/getting-started.html

For the user-facing changelog see here

Using Bzlmod

Add to your MODULE.bazel file:

bazel_dep(name = "rules_python", version = "1.6.1")

python = use_extension("@​rules_python//python/extensions:python.bzl", "python")
python.toolchain(
    python_version = "3.13",
)

pip = use_extension("@​rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
    hub_name = "pypi",
    python_version = "3.13",
    requirements_lock = "//:requirements_lock.txt",
)

use_repo(pip, "pypi")

Using WORKSPACE

Paste this snippet into your WORKSPACE file:

load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "rules_python",
    sha256 = "f2e80f97f9c0b82e2489e61e725df1e6bdaf16c4dacf5e26b95668787164baff",
    strip_prefix = "rules_python-1.6.1",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/1.6.1/rules_python-1.6.1.tar.gz",
)

load("@​rules_python//python:repositories.bzl", "py_repositories")

py_repositories()
Gazelle plugin

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 = "f2e80f97f9c0b82e2489e61e725df1e6bdaf16c4dacf5e26b95668787164baff",
    strip_prefix = "rules_python-1.6.1/gazelle",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/1.6.1/rules_python-1.6.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: bazel-contrib/rules_python@1.6.0...1.6.1

v1.6.0

Compare Source

{#v1-6-0-changed}

Changed
  • (gazelle) update minimum gazelle version to 0.36.0 - may cause BUILD file changes
  • (gazelle) update minimum rules_go version to 0.55.1
  • (gazelle) remove custom go-tree-sitter module BUILD file
  • (gazelle) For package mode, resolve dependencies when imports are relative
    to the package path. This is enabled via the
    # gazelle:python_experimental_allow_relative_imports true directive ({gh-issue}2203).
  • (gazelle) Types for exposed members of python.ParserOutput are now all public.
  • (gazelle) Removed the requirement for __init__.py, __main__.py, or __test__.py files to be
    present in a directory to generate a BUILD.bazel file.
  • (toolchain) Updated the following toolchains to build 20250808 to patch CVE-2025-47273:
    • 3.9.23
    • 3.10.18
    • 3.11.13
    • 3.12.11
    • 3.14.0rc1
  • (toolchain) Python 3.13 now references 3.13.6
  • (gazelle) Switched back to smacker/go-tree-sitter, fixing
    #​2630
  • (pypi) From now on the list of default platforms only includes linux_x86_64, linux_aarch64,
    osx_x86_64, osx_aarch64 and windows_x86_64. If you are on other platforms, you need to
    use the pip.default to configure it yourself. If you are interested in graduating the
    platform, consider helping set us up CI for them and update the documentation.
  • (ci) We are now testing on Ubuntu 22.04 for RBE and non-RBE configurations.
  • (core) #!/usr/bin/env bash is now used as a shebang in the stage1 bootstrap template.
  • (gazelle:docs) The Gazelle docs have been migrated from {gh-path}gazelle/README.md to
    {gh-path}gazelle/docs and are now available on the primary documentation site
    at https://rules-python.readthedocs.io/en/latest/gazelle/docs/index.html

{#v1-6-0-fixed}

Fixed
  • (toolchains) local_runtime_repo now respects changes to the DEVELOPER_DIR and XCODE_VERSION
    repo env vars, fixing stale cache issues on macOS with system (i.e. Xcode-supplied) Python
    (#​3123).
  • (pypi) Fixes an issue where builds using a bazel vendor vendor directory
    would fail if the constraints file contained environment markers. Fixes
    #​2996.
  • (pypi) Wheels with BUILD.bazel (or other special Bazel files) no longer
    result in missing files at runtime
    (#​2782).
  • (runfiles) The pypi runfiles package now includes py.typed to indicate it
    supports type checking
    (#​2503).
  • (pypi) The pipstar defaults configuration now supports any custom platform
    name.
  • (pypi) The selection of the whls has been changed and should no longer result
    in ambiguous select matches ({gh-issue}2759) and should be much more efficient
    when running bazel query due to fewer repositories being included
    ({gh-issue}2849).
  • Multi-line python imports (e.g. with escaped newlines) are now correctly processed by Gazelle.
  • (toolchains) local_runtime_repo works with multiarch Debian with Python 3.8
    (#​3099).
  • (pypi) Expose pypi packages only common to all Python versions in all_requirements
    (#​2921).
  • (repl) Normalize the path for the REPL stub to make it possible to use the
    default stub template from outside rules_python ({gh-issue}3101).
  • (gazelle) Fixes gazelle adding sibling module dependencies to resolve
    absolute imports (Python 2's behavior without absolute_import). Previous
    behavior can be restored using the directive
    # gazelle:python_resolve_sibling_imports true
  • (pypi) Show overridden index URL of packages when downloading metadata have failed.
    (#​2985).
  • (toolchains) use "command -v" to find interpreter in $PATH
    (#​3150).
  • (pypi) bazel vendor now works in bzlmod ({gh-issue}3079).
  • (toolchains) local_runtime_repo now works on Windows
    (#​3055).
  • (toolchains) local_runtime_repo supports more types of Python
    installations (Mac frameworks, missing dynamic libraries, and other
    esoteric cases, see
    #​3148 for details).
  • (pypi) Support requirements.txt files that use different versions of the same
    package targeting different target platforms.
    (#​2797).
  • (py_wheel) Add directories in deterministic order.

{#v1-6-0-added}

Added
  • (repl) Default stub now has tab completion, where readline support is available,
    see (#​3114).
    (#​3114).
  • (pypi) To configure the environment for requirements.txt evaluation, use the newly added
    developer preview of the pip.default tag class. Only rules_python and root modules can use
    this feature. You can also configure custom config_settings using pip.default. It
    can also be used to set the global netrc or auth_patterns variables.
  • (pypi) PyPI dependencies now expose an :extracted_whl_files filegroup target
    of all the files extracted from the wheel. This can be used in lieu of
    {obj}whl_filegroup to avoid copying/extracting wheel multiple times to
    get a subset of their files.
  • (gazelle) New directive gazelle:python_generate_pyi_deps; when true,
    dependencies added to satisfy type-only imports (if TYPE_CHECKING) and type
    stub packages are added to pyi_deps instead of deps.
  • (toolchain) Add toolchains for aarch64 windows for
    • 3.11.13
    • 3.12.11
    • 3.13.6
    • 3.14.0rc1
  • (gazelle): New annotation gazelle:include_pytest_conftest. When not set (the
    default) or true, gazelle will inject any conftest.py file found in the same
    directory as a {obj}py_test target to that {obj}py_test target's deps.
    This behavior is unchanged from previous versions. When false, the :conftest
    dep is not added to the {obj}py_test target.
  • (gazelle) New directive gazelle:python_generate_proto; when true,
    Gazelle generates py_proto_library rules for proto_library. false by default.
    • Note: Users must manually configure their Gazelle target to support the
      proto language.
  • (gazelle) New directive gazelle:python_proto_naming_convention; controls
    naming of py_proto_library rules.

{#v1-6-0-removed}

Removed
  • Nothing removed.

{#v1-5-4}

v1.5.4

Compare Source

{#v1-5-4-fixed}

Fixed
  • (toolchains) local_runtime_repo now checks if the include directory exists
    before attempting to watch it, fixing issues on macOS with system Python
    (#​3043).

{#v1-5-3}

v1.5.3

Compare Source

Fixed
  • (toolchains) local_runtime_repo now checks if the include directory exists
    before attempting to watch it, fixing issues on macOS with system Python
    (#​3043).

{#v1-5-2}

v1.5.2

Compare Source

{#v1-5-2-changed}

Changed
  • (deps) (bzlmod) Upgraded to bazel-skylib version
    1.8.1
    to remove deprecation warnings.

{#v1-5-2-fixed}

Fixed
  • (pypi) Correctly pull sdist distributions using pip
    (#​3131).
  • (core) builds work again on 7.x WORKSPACE configurations
    (#​3119).

{#v1-5-1}

v1.5.1

Compare Source

{#v1-5-1-fixed}

Fixed
  • (pypi) Namespace packages work by default (pkgutil shims are generated
    by default again)
    (#​3038).

{#v1-5-0}

v1.5.0

Compare Source

{#v1-5-0-changed}

Changed
  • (toolchain) Bundled toolchain version updates:
    • 3.9 now references 3.9.23
    • 3.10 now references 3.10.18
    • 3.11 now references 3.11.13
    • 3.12 now references 3.12.11
    • 3.13 now references 3.13.4
  • (rules) On Windows, {obj}--bootstrap_impl=system_python is forced. This
    allows setting --bootstrap_impl=script in bazelrc for mixed-platform
    environments.
  • (rules) {obj}compile_pip_requirements now generates a .test target. The
    _test target is deprecated and will be removed in the next major release.
    (#​2794
  • (py_wheel) py_wheel always creates zip64-capable wheel zips
  • (providers) (experimental) {obj}PyInfo.venv_symlinks replaces
    PyInfo.site_packages_symlinks
  • (deps) Updated setuptools to 78.1.1 to patch CVE-2025-47273. This effectively makes
    Python 3.9 the minimum supported version for using pip_parse.

{#v1-5-0-fixed}

Fixed
  • (rules) PyInfo provider is now advertised by py_test, py_binary, and py_library;
    this allows aspects using required_providers to function correctly.
    (#​2506).
  • Fixes when using {obj}--bootstrap_impl=script:
    • compile_pip_requirements now works with it
    • The sys._base_executable value will reflect the underlying interpreter,
      not venv interpreter.
    • The {obj}//python/runtime_env_toolchains:all toolchain now works with it.
  • (rules) Better handle flakey platform.win32_ver() calls by calling them
    multiple times.
  • (tools/wheelmaker.py) Extras are now preserved in Requires-Dist metadata when using requires_file
    to specify the requirements.
  • (pypi) Use bazel downloader for direct URL references and correctly detect the filenames from
    various URL formats - URL encoded version strings get correctly resolved, sha256 value can be
    also retrieved from the URL as opposed to only the --hash parameter. Fixes
    #​2363.
  • (pypi) whl_library now infers file names from its urls attribute correctly.
  • (pypi) When running under bazel test, be sure that temporary requirements file
    remains writable.
  • (py_test, py_binary) Allow external files to be used for main
  • (pypi) Correctly aggregate the sources when the hashes specified in the lockfile differ
    by platform even though the same version is used. Fixes #​2648.
  • (pypi) compile_pip_requirements test rule works behind the proxy
  • (toolchains) The hermetic toolchains now correctly statically advertise the
    releaselevel and serial for pre-release hermetic toolchains ({gh-issue}2837).

{#v1-5-0-added}

Added
  • Repo utilities execute_unchecked, execute_checked, and execute_checked_stdout now
    support log_stdout and log_stderr keyword arg booleans. When these are True
    (the default), the subprocess's stdout/stderr will be logged.
  • (toolchains) Local toolchains can be activated with custom flags. See
    [Conditionally using local toolchains] docs for how to configure.
  • (pypi) Starlark-based evaluation of environment markers (requirements.txt conditionals)
    available (not enabled by default) for improved multi-platform build support.
    Set the RULES_PYTHON_ENABLE_PIPSTAR=1 environment variable to enable it.
  • (utils) Add a way to run a REPL for any rules_python target that returns
    a PyInfo provider.
  • (uv) Handle .netrc and auth_patterns auth when downloading uv. Work towards
    #​1975.
  • (toolchains) Arbitrary python-build-standalone runtimes can be registered
    and activated with custom flags. See the [Registering custom runtimes]
    docs and {obj}single_version_platform_override() API docs for more
    information.
  • (rules) Added support for a using constraints files with compile_pip_requirements.
    Useful when an intermediate dependency needs to be upgraded to pull in
    security patches.
  • (toolchains): 3.14.0b2 has been added as a preview.

{#v1-5-0-removed}

Removed
  • Nothing removed.

{#v1-4-2}

v1.4.2

Compare Source

Fixed
  • (toolchains) local_runtime_repo now checks if the include directory exists
    before attempting to watch it, fixing issues on macOS with system Python
    (#​3043).

{#v1-4-1}

v1.4.1

Compare Source

{#v1-4-1-fixed}

Fixed
  • (pypi) Fix a typo not allowing users to benefit from using the downloader when the hashes in the
    requirements file are not present. Fixes
    #​2863.

{#v1-4-0}

v1.4.0

Compare Source

{#v1-4-0-changed}

Changed
  • (toolchain) The exec configuration toolchain now has the forwarded
    exec_interpreter now also forwards the ToolchainInfo provider. This is
    for increased compatibility with the RBE setups where access to the exec
    configuration interpreter is needed.
  • (toolchains) Use the latest astral-sh toolchain release 20250317 for Python versions:
    • 3.9.21
    • 3.10.16
    • 3.11.11
    • 3.12.9
    • 3.13.2
  • (pypi) Use xcrun xcodebuild --showsdks to find XCode root.
  • (toolchains) Remove all but 3.8.20 versions of the Python 3.8 interpreter who has
    reached EOL. If users still need other versions of the 3.8 interpreter, please supply
    the URLs manually {bzl:obj}python.toolchain or {bzl:obj}python_register_toolchains calls.
  • (toolchains) Previously #​2636
    changed the semantics of ignore_root_user_error from "ignore" to "warning". This is now
    flipped back to ignoring the issue, and will only emit a warning when the attribute is set
    False.
  • (pypi) The PyPI extension will no longer write the lock file entries as the
    extension has been marked reproducible.
    Fixes #​2434.
  • (gazelle) Lazily load and parse manifest files when running Gazelle. This ensures no
    manifest files are loaded when Gazelle is run over a set of non-python directories
    PR #​2746.
  • (rules) {attr}py_binary.srcs and {attr}py_test.srcs is no longer mandatory when
    main_module is specified (for --bootstrap_impl=script)

{#v1-4-0-fixed}

Fixed
  • (pypi) Platform specific extras are now correctly handled when using
    universal lock files with environment markers. Fixes #​2690.
  • (runfiles) ({obj}--bootstrap_impl=script) Follow symlinks when searching for runfiles.
  • (toolchains) Do not try to run chmod when downloading non-windows hermetic toolchain
    repositories on Windows. Fixes
    #​2660.
  • (logging) Allow repo rule logging level to be set to FAIL via the RULES_PYTHON_REPO_DEBUG_VERBOSITY environment variable.
  • (toolchains) The toolchain matching is has been fixed when writing
    transitions transitioning on the python_version flag.
    Fixes #​2685.
  • (toolchains) Run the check on the Python interpreter in isolated mode, to ensure it's not affected by userland environment variables, such as PYTHONPATH.
  • (toolchains) Ensure temporary .pyc and .pyo files are also excluded from the interpreters repository files.
  • (pypi) Run interpreter version call in isolated mode, to ensure it's not affected by userland environment variables, such as PYTHONPATH.
  • (packaging) An empty requires_file is treated as if it were omitted, resulting in a valid METADATA file.
  • (rules) py_wheel and sphinxdocs rules now propagate target_compatible_with to all targets they create.
    PR #​2788.
  • (pypi) Correctly handle METADATA entries when python_full_version is used in
    the environment marker.
    Fixes #​2319.
  • (pypi) Correctly handle python_version parameter and transition the requirement
    locking to the right interpreter version when using
    {obj}compile_pip_requirements rule.
    See #​2819.

{#v1-4-0-added}

Added
  • (pypi) From now on sha256 values in the requirements.txt is no longer
    mandatory when enabling {attr}pip.parse.experimental_index_url feature.
    This means that rules_python will attempt to fetch metadata for all
    packages through SimpleAPI unless they are pulled through direct URL
    references. Fixes #​2023.
    In case you see issues with rules_python being too eager to fetch the SimpleAPI
    metadata, you can use the newly added {attr}pip.parse.simpleapi_skip
    to skip metadata fetching for those packages.
  • (uv) A {obj}lock rule that is the replacement for the
    {obj}compile_pip_requirements. This may still have rough corners
    so please report issues with it in the
    #​1975.
    Main highlights - the locking can be done within a build action or outside
    it, there is no more automatic test target (but it can be added on the user
    side by using native_test). For customizing the uv version that is used,
    please check the {obj}uv.configure tag class.
  • Add support for riscv64 linux platform.
  • (toolchains) Add python 3.13.2 and 3.12.9 toolchains
  • (providers) (experimental) PyInfo.site_packages_symlinks field added to
    allow specifying links to create within the venv site packages (only
    applicable with {obj}--bootstrap_impl=script)
    (#​2156).
  • (toolchains) Local Python installs can be used to create a toolchain
    equivalent to the standard toolchains. See [Local toolchains] docs for how to
    configure them.
  • (toolchains) Expose $(PYTHON2_ROOTPATH) and $(PYTHON3_ROOTPATH) which are runfiles
    locations equivalents of $(PYTHON2) and `$(PYTHON3) respectively.

{#v1-4-0-removed}

Removed
  • Nothing removed.

{#v1-3-0}

v1.3.0

Compare Source

{#v1-3-0-changed}

Changed
  • (deps) platforms 0.0.4 -> 0.0.11
  • (py_wheel) Package py_library.pyi_srcs (.pyi files) in the wheel.
  • (py_package) Package py_library.pyi_srcs (.pyi files) in py_package.
  • (gazelle) The generated manifest file (default: gazelle_python.yaml) will now include the
    YAML document start --- line. Implemented in
    #​2656.

{#v1-3-0-fixed}

Fixed
  • (pypi) The ppc64le is now pointing to the right target in the platforms package.
  • (gazelle) No longer incorrectly merge py_binary targets during partial updates in
    file generation mode. Fixed in #​2619.
  • (bzlmod) Running as root is no longer an error. ignore_root_user_error=True
    is now the default. Note that running as root may still cause spurious
    Bazel cache invalidation
    (#​1169).
  • (gazelle) Don't collapse depsets to a list or into args when generating the modules mapping file.
    Support spilling modules mapping args into a params file.
  • (coverage) Fix missing files in the coverage report if they have no tests.
  • (pypi) From now on python invocations in repository and module extension
    evaluation contexts will invoke Python interpreter with -B to avoid
    creating .pyc files.
  • (deps) doublestar 4.7.1 (required for recent Gazelle versions)

{#v1-3-0-added}

Added
  • (python) {obj}python.defaults has been added to allow users to
    set the default python version in the root module by reading the
    default version number from a file or an environment variable.
  • {obj}//python/bin:python: convenience target for directly running an
    interpreter. {obj}--//python/bin:python_src can be used to specify a
    binary whose interpreter to use.
  • (uv) Now the extension can be fully configured via bzlmod APIs without the
    need to patch rules_python. The documentation has been added to rules_python
    docs but usage of the extension may result in your setup breaking without any
    notice. What is more, the URLs and SHA256 values will be retrieved from the
    GitHub releases page metadata published by the uv project.
  • (pypi) An extra argument to add the interpreter lib dir to LDFLAGS when
    building wheels from sdist.
  • (pypi) Direct HTTP urls for wheels and sdists are now supported when using
    {obj}experimental_index_url (bazel downloader).
    Partially fixes #​2363.
  • (rules) APIs for creating custom rules based on the core py_binary, py_test,
    and py_library rules
    (#​1647)
  • (rules) Added env-var to allow additional interpreter args for stage1 bootstrap.
    See {any}RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS environment variable.
    Only applicable for {obj}--bootstrap_impl=script.
  • (rules) Added {obj}interpreter_args attribute to py_binary and py_test,
    which allows pass arguments to the interpreter before the regular args.
  • (rules) Added {obj}main_module attribute to py_binary and py_test,
    which allows specifying a module name to run (i.e. python -m <module>).

{#v1-3-0-removed}

Removed
  • Nothing removed.

{#v1-2-0}

v1.2.0

Compare Source

{#v1-2-0-changed}

Changed
  • (rules) py_proto_library is deprecated in favour of the
    implementation in https://github.com/protocolbuffers/protobuf. It will be
    removed in the future release.
  • (pypi) {obj}pip.override will now be ignored instead of raising an error,
    fixes #​2550.
  • (rules) deprecation warnings for deprecated symbols have been turned off by
    default for now and can be enabled with RULES_PYTHON_DEPRECATION_WARNINGS
    env var.
  • (pypi) Downgraded versions of packages: pip from 24.3.2 to 24.0.0 and
    packaging from 24.2 to 24.0.

{#v1-2-0-fixed}

Fixed
  • (rules) python_zip_file output with --bootstrap_impl=script works again
    (#​2596).
  • (docs) Using python_version attribute for specifying python versions introduced in v1.1.0
  • (gazelle) Providing multiple input requirements files to gazelle_python_manifest now works correctly.
  • (pypi) Handle trailing slashes in pip index URLs in environment variables,
    fixes #​2554.
  • (runfiles) Runfile manifest and repository mapping files are now interpreted
    as UTF-8 on all platforms.
  • (coverage) Coverage with --bootstrap_impl=script is fixed
    (#​2572).
  • (pypi) Non deterministic behaviour in requirement file usage has been fixed
    by reverting #​2514.
    The related issue is #​908.
  • (sphinxdocs) Do not crash when tag_class does not have a populated doc value.
    Fixes (#​2579).
  • (binaries/tests) Fix packaging when using --bootstrap_impl=script: set
    {obj}--venvs_use_declare_symlink=no to have it not create symlinks at
    build time (they will be created at runtime instead).
    (Fixes #​2489)

{#v1-2-0-added}

Added
  • Nothing added.

{#v1-2-0-removed}

Removed
  • Nothing removed.

{#v1-1-0}

v1.1.0

Compare Source

{#v1-1-0-changed}

Changed
  • (toolchains) 3.13 means 3.13.1 (previously 3.13.0)
  • Bazel 6 support is dropped and Bazel 7.4.1 is the minimum supported
    version, per our Bazel support matrix. Earlier versions are not
    tested by CI, so functionality cannot be guaranteed.
  • ({bzl:obj}pip.parse) From now we will make fewer calls to indexes when
    fetching the metadata from SimpleAPI. The calls will be done in parallel to
    each index separately, so the extension evaluation time might slow down if
    not using {bzl:obj}pip.parse.experimental_index_url_overrides.
  • ({bzl:obj}pip.parse) Only query SimpleAPI for packages that have
    sha values in the requirements.txt file.
  • (rules) The version-aware rules have been folded into the base rules and
    the version-aware rules are now simply aliases for the base rules. The
    python_version attribute is still used to specify the Python version.
  • (pypi) Updated versions of packages: pip to 24.3.1 and
    packaging to 24.2.

{#v1-1-0-deprecations}

Deprecations
  • //python/config_settings:transitions.bzl and its py_binary and py_test
    wrappers are deprecated. Use the regular rules instead.

{#v1-1-0-fixed}

Fixed
  • (py_wheel) Use the default shell environment when building wheels to allow
    toolchains that search PATH to be used for the wheel builder tool.
  • (pypi) The requirement argument parsed to whl_library will now not have env
    marker information allowing bazel query to work in cases where the whl is
    available for all of the platforms and the sdist can be built. This fix is
    for both WORKSPACE and bzlmod setups.
    Fixes #​2450.
  • (gazelle) Gazelle will now correctly parse Python3.12 files that use PEP 695 Type
    Parameter Syntax
    . (#​2396)
  • (pypi) Using {bzl:obj}pip_parse.experimental_requirement_cycles and
    {bzl:obj}pip_parse.use_hub_alias_dependencies together now works when
    using WORKSPACE files.
  • (pypi) The error messages when the wheel distributions do not match anything
    are now printing more details and include the currently active flag
    values. Fixes #​2466.
  • (py_proto_library) Fix import paths in Bazel 8.
  • (whl_library) Now the changes to the dependencies are correctly tracked when
    PyPI packages used in whl_library during the repository rule phase
    change. Fixes #​2468.
  • (gazelle) Gazelle no longer ignores setup.py files by default. To restore
    this behavior, apply the # gazelle:python_ignore_files setup.py directive.
  • Don't re-fetch whl_library, python_repository, etc. repository rules
    whenever PATH changes. Fixes
    #​2551.

{#v1-1-0-added}

Added
  • (gazelle) Added include_stub_packages flag to modules_mapping. When set to True, this
    automatically includes corresponding stub packages for third-party libraries
    that are present and used (e.g., boto3boto3-stubs), improving
    type-checking support.
  • (pypi) Freethreaded packages are now fully supported in the
    {obj}experimental_index_url usage or the regular pip.parse usage.
    To select the free-threaded interpreter in the repo phase, please use
    the documented env variables.
    Fixes #​2386.
  • (toolchains) Use the latest astral-sh toolchain release 20241206 for Python versions:
    • 3.9.21
    • 3.10.16
    • 3.11.11
    • 3.12.8
    • 3.13.1
  • (rules) Attributes for type definition files (.pyi files) and type-checking
    only dependencies added. See {obj}py_library.pyi_srcs and
    py_library.pyi_deps (and the same named attributes for py_binary and
    py_test).
  • (pypi) pypi-generated targets set pyi_srcs to include *.pyi files.
  • (providers) {obj}PyInfo has new fields to aid static analysis tools:
    {obj}direct_original_sources, {obj}direct_pyi_files,
    {obj}transitive_original_sources, {obj}transitive_pyi_files.

{#v1-1-0-removed}

Removed
  • find_requirements in //python:defs.bzl has been removed.

{#v1-0-0}

v1.0.0

Compare Source

{#v1-0-0-changed}

Changed

Breaking:

  • (toolchains) stop exposing config settings in python toolchain alias repos.
    Please consider depending on the flags defined in
    //python/config_setting/... and the @platforms package instead.
  • (toolchains) consumers who were depending on the MACOS_NAME and the arch
    attribute in the PLATFORMS list, please update your code to respect the new
    values. The values now correspond to the values available in the
    @platforms// package constraint values.
  • (toolchains) host_platform and interpreter constants are no longer created
    in the toolchain generated alias .bzl files. If you need to access the
    host interpreter during the repository_rule evaluation, please use the
    @python_{version}_host//:python targets created by
    {bzl:obj}python_register_toolchains and
    {bzl:obj}python_register_multi_toolchains macros or the {bzl:obj}python
    bzlmod extension.
  • (bzlmod) pip.parse.parse_all_requirements_files attribute has been removed.
    See notes in the previous versions about what to do.
  • (deps) rules_cc 0.1.0 (workspace) and 0.0.16 (bzlmod).
  • (deps) protobuf 29.0-rc2 (workspace; bzlmod already specifying that version).

Other changes:

  • (python_repository) Start honoring the strip_prefix field for zstd archives.
  • (pypi) {bzl:obj}pip_parse.extra_hub_aliases now works in WORKSPACE files.
  • (binaries/tests) For {obj}--bootstrap_impl=script, a binary-specific (but
    otherwise empty) virtual env is used to customize sys.path initialization.
  • (deps) bazel_skylib 1.7.0 (workspace; bzlmod already specifying that version)
  • (deps) bazel_features 1.21.0; necessary for compatibility with Bazel 8 rc3
  • (deps) stardoc 0.7.2 to support Bazel 8.

{#v1-0-0-fixed}

Fixed
  • (toolchains) stop depending on uname to get the value of the host platform.
  • (pypi): Correctly handle multiple versions of the same package in the requirements
    files which is useful when including different PyTorch builds (e.g. <pytorch+cpu> vs <pytorch+cu118> ) for different target platforms.
    Fixes (2337).
  • (uv): Correct the sha256sum for the uv binary for aarch64-apple-darwin.
    Fixes (2411).
  • (binaries/tests) ({obj}--bootstrap_impl=scipt) Using sys.executable will
    use the same sys.path setup as the calling binary.
    (2169).
  • (workspace) Corrected protobuf's name to com_google_protobuf, the name is
    hardcoded in Bazel, WORKSPACE mode.
  • (pypi): {bzl:obj}compile_pip_requirements no longer fails on Windows when --enable_runfiles is not enabled.
  • (pypi): {bzl:obj}compile_pip_requirements now correctly updates files in the source tree on Windows when --windows_enable_symlinks is not enabled.
  • (repositories): Add libs/python3.lib and pythonXY.dll to the libpython target
    defined by a repository template. This enables stable ABI builds of Python extensions
    on Windows (by defining Py_LIMITED_API).
  • (rules) py_test and py_binary targets no longer incorrectly remove the
    first sys.path entry when using {obj}--bootstrap_impl=script

{#v1-0-0-added}

Added
  • (gazelle): Parser failures will now be logged to the terminal. Additional
    details can be logged by setting RULES_PYTHON_GAZELLE_VERBOSE=1.
  • (toolchains) allow users to select which variant of the support host toolchain
    they would like to use through
    RULES_PYTHON_REPO_TOOLCHAIN_{VERSION}_{OS}_{ARCH} env variable setting. For
    example, this allows one to use freethreaded python interpreter in the
    repository_rule to build a wheel from sdist.
  • (toolchain) The python interpreters targeting muslc libc have been added
    for the latest toolchain versions for each minor Python version. You can control
    the toolchain selection by using the
    {bzl:obj}//python/config_settings:py_linux_libc build flag.
  • (providers) Added {obj}PyRuntimeInfo.site_init_template and
    {obj}PyRuntimeInfo.site_init_template for specifying the template to use to
    initialize the interpreter via venv startup hooks.
  • (runfiles) (Bazel 7.4+) Added support for spaces and newlines in runfiles paths

{#v1-0-0-removed}

Removed
  • (pypi): Remove pypi_install_dependencies macro that has been included in
    {bzl:obj}py_repositories for a long time.
  • (bzlmod): Remove DEFAULT_PYTHON_VERSION from interpreters.bzl file. If
    you need the version, please use it from the versions.bzl file instead.

{#v0-40-0}

v0.40.0

Compare Source

{#v0-40-changed}

Changed
  • Nothing changed.

{#v0-40-fixed}

Fixed
  • (rules) Don't drop custom import paths if Bazel-builtin PyInfo is removed.
    (2414).

{#v0-40-added}

Added
  • Nothing added.

{#v0-40-removed}

Removed
  • (publish) Remove deprecated requirements.txt for the twine dependencies.
    Please use requirements_linux.txt instead.
  • (python_repository) Use bazel's built in zstd support and remove attributes
    for customizing the zstd binary to be used for zstd archives in the
    {bzl:obj}python_repository repository_rule. This affects the
    {bzl:obj}python_register_toolchains and
    {bzl:obj}python_register_multi_toolchains callers in the WORKSPACE.

{#v0-39-0}

v0.39.0

Compare Source

{#v0-39-0-changed}

Changed
  • (deps) bazel_skylib 1.6.1 -> 1.7.1
  • (deps) rules_cc 0.0.9 -> 0.0.14
  • (deps) protobuf 24.4 -> 29.0-rc2
  • (deps) rules_proto 6.0.0-rc1 -> 6.0.2
  • (deps) stardoc 0.6.2 -> 0.7.1
  • For bzlmod, Bazel 7.4 is now the minimum Bazel version.
  • (toolchains) Use the latest indygreg toolchain release 20241016 for Python versions:
    • 3.9.20
    • 3.10.15
    • 3.11.10
    • 3.12.7
    • 3.13.0
  • (pypi) The naming scheme for the 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}

Fixed
  • (precompiling) Skip precompiling (instead of erroring) if the legacy
    @bazel_tools//tools/python:autodetecting_toolchain is being used
    (#​2364).

{#v0-39-0-added}

Added
  • Bazel 8 is now supported.
  • (toolchain) Support for freethreaded Python toolchains is now available. Use
    the config flag //python/config_settings:py_freethreaded to toggle the
    selection of the free-threaded to

Configuration

📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants