Skip to content

Releases: bazel-contrib/rules_python

2.5.0-rc0

2.5.0-rc0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Oct 06:16
6fee02b

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 = "2.5.0-rc0")

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

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
    hub_name = "pypi",
    python_version = "3.14",
    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 = "2bf5f5ff0be99bf9f6e02ab4086848a181c9093a09e04719ab80bc27a59d7645",
    strip_prefix = "rules_python-2.5.0-rc0",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.5.0-rc0/rules_python-2.5.0-rc0.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 = "2bf5f5ff0be99bf9f6e02ab4086848a181c9093a09e04719ab80bc27a59d7645",
    strip_prefix = "rules_python-2.5.0-rc0/gazelle",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.5.0-rc0/rules_python-2.5.0-rc0.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()

What's Changed

  • chore(release): add release-prepared label to prepare PRs by @rickeylev in #4015
  • refactor(tests): convert legacy py_extension in local_toolchains to official rule by @rickeylev in #3988
  • chore(release): support manual dispatch and /prepare-complete for complete prepare workflow by @rickeylev in #4016
  • chore(release): invoke create release branch from prepare complete and support /create-release-branch by @rickeylev in #4017
  • agents: optimize rules and clarify create-pr subagent requirements by @rickeylev in #4018
  • agents: document Windows machine normalization and SOABI support by @rickeylev in #4019
  • build(deps): bump cryptography from 49.0.0 to 50.0.0 in /tools/publish by @dependabot[bot] in #3995
  • agents: add merge queue CI monitoring and lockfile sync rules by @rickeylev in #4021
  • agents(rules): document linking external objects in TypedDict docstrings by @rickeylev in #4022
  • agents: rename pre-review-audit to review-code and add news file checks by @rickeylev in #4027
  • feat(runfiles): add CreateOrRaise API by @rickeylev in #4028
  • build(dev): bump dev requirements python version to 3.10 by @rickeylev in #4024
  • agents(rules): document git push -u guardrail and delegating function docstrings by @rickeylev in #4030
  • agents: document dev python version bump and merge queue fields by @rickeylev in #4031
  • build(deps): bump packaging from 26.2 to 26.3 in /tools/publish by @dependabot[bot] in #4032
  • build(deps): bump cffi from 2.1.0 to 2.1.1 in /tools/publish by @dependabot[bot] in #4033
  • build(pyrefly): enable Pyrefly static type checking across Python targets by @rickeylev in #4020
  • fix: preserve arguments with spaces by @stanbot8 in #4026
  • agents(rules): update python rules with typing and runfiles conventions by @rickeylev in #4035
  • feat(bzlmod): make init.py generation configurable module-wide by @armandomontanez in #3997
  • build(ci): remove legacy mypy type checking workflow and comments by @rickeylev in #4036
  • agents(analyze-ci-failure): enhance network reset and macOS sandbox flake detection by @rickeylev in #4037
  • fix(pypi): rewrite RECORD file entries for extracted .data contents by @rickeylev in #4025
  • fix(pypi): resolve self-referencing extras to a real fixed point by @muravev-vasilii in #4039
  • agents(rules): add Starlark dict union and Pyrefly PackagePath conventions by @rickeylev in #4038
  • fix(pypi): do not return rctx.metadata for pip_archive by @aignas in #4043
  • refactor(release): move on_comment workflow logic into Python script by @rickeylev in #4045
  • workflows: auto-create patch release tracking issue on /backport by @rickeylev in #4046
  • agents(rules): update github_actions_workflows rule with python script and testing conventions by @rickeylev in #4047
  • agents(review-code): export review results artifact and factor report format by @rickeylev in #4048
  • workflows(release): support /backport comment on release tracking issue and pr by @rickeylev in #4050
  • workflows(release): remove non-patch release tasks from patch release issues by @rickeylev in #4051
  • tests: use runfiles.CreateOrRaise in release_test_helper by @rickeylev in #4052
  • agents: clarify commit and PR type conventions in pr.md by @rickeylev in #4055
  • workflow(release): surface subprocess output and improve error handling in backport operations by @rickeylev in #4056
  • agents: add workflow type convention and python exception rules by @rickeylev in #4057
  • refactor: split code into multiple files by @aignas in #4044
  • chore(release): sync changelog and version markers for 2.3 backports by @rickeylev in #4058
  • feat(sphinxdocs): make SphinxDocsLibraryInfo provider public by @JoHoenk in #4041
  • agents(starlark): document depset element immutability and provider conventions by @rickeylev in #4060
  • build(release): add process-news command with PR and version marker support by @rickeylev in #4062
  • agents: refine commit type definitions and interface docstring rules by @rickeylev in #4063
  • agents: update review-code skill to initialize and update artifact on responses by @rickeylev in #4066
  • test(pytest): support python_versions in pytest_test macro by @rickeylev in #4064
  • agents: add native.test_suite API tag invariant rule by @rickeylev in #4068
  • build(release): separate sync changelog into standalone workflow and CLI tool by @rickeylev in #4067
  • agents: update CI soft-fail handling and GHA event parsing rules by @rickeylev in #4069
  • tests(runfiles): migrate runfiles tests to pytest_test by @rickeylev in #4061
  • workflows: make on_pr_closed.py executable and add permissions test by @rickeylev in #4076
  • build(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.1 by @dependabot[bot] in #4072
  • build(deps): bump actions/setup-python from 5 to 7 by @dependabot[bot] in #4074
  • build(deps): bump charset-normalizer from 3.4.9 to 3.5.0 in /tools/publish by @dependabot[bot] in #4073
  • build(deps): bump bazel-contrib/publish-to-bcr/.github/workflows/publish.yaml from 1.4.2 to 1.5.0 by @dependabot[bot] in #4075
  • agents: document rf.root() path navigation and Runfiles.CreateOrRaise() in python rules by @rickeylev in #4078
  • fix(py_test): fix Windows crash in py_test main validation by @rdesgroppes in #4079
  • agents: document direct integration test execution in testing rules by @rickeylev in https://github.com...
Read more

2.4.6

Choose a tag to compare

@github-actions github-actions released this 30 Oct 01:32

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 = "2.4.6")

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

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
    hub_name = "pypi",
    python_version = "3.14",
    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 = "4765b9a4a9c6e0fb89f465aac5b5b0ac06589c9477144340859310777ad801a7",
    strip_prefix = "rules_python-2.4.6",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.6/rules_python-2.4.6.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 = "4765b9a4a9c6e0fb89f465aac5b5b0ac06589c9477144340859310777ad801a7",
    strip_prefix = "rules_python-2.4.6/gazelle",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.6/rules_python-2.4.6.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: 2.4.5...2.4.6

2.4.5

Choose a tag to compare

@github-actions github-actions released this 23 Oct 06:47

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 = "2.4.5")

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

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
    hub_name = "pypi",
    python_version = "3.14",
    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 = "05088402fa356af097064dbccd7082a061171ef39fbd748fab946e9775f46a16",
    strip_prefix = "rules_python-2.4.5",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.5/rules_python-2.4.5.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 = "05088402fa356af097064dbccd7082a061171ef39fbd748fab946e9775f46a16",
    strip_prefix = "rules_python-2.4.5/gazelle",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.5/rules_python-2.4.5.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: 2.4.4...2.4.5

2.4.4

Choose a tag to compare

@github-actions github-actions released this 23 Oct 01:23

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 = "2.4.4")

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

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
    hub_name = "pypi",
    python_version = "3.14",
    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 = "ce2b9317d21f3af1283aaa8f502b34f980407fcc8eb10beaa6bf9dbf39ea27ed",
    strip_prefix = "rules_python-2.4.4",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.4/rules_python-2.4.4.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 = "ce2b9317d21f3af1283aaa8f502b34f980407fcc8eb10beaa6bf9dbf39ea27ed",
    strip_prefix = "rules_python-2.4.4/gazelle",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.4/rules_python-2.4.4.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: 2.4.3...2.4.4

2.4.3

Choose a tag to compare

@github-actions github-actions released this 22 Oct 02:52

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 = "2.4.3")

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

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
    hub_name = "pypi",
    python_version = "3.14",
    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 = "4d8b6d82a51fba064431257a2941a6bc6b45e2365a40b9d6ecaef3e297bcf97e",
    strip_prefix = "rules_python-2.4.3",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.3/rules_python-2.4.3.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 = "4d8b6d82a51fba064431257a2941a6bc6b45e2365a40b9d6ecaef3e297bcf97e",
    strip_prefix = "rules_python-2.4.3/gazelle",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.3/rules_python-2.4.3.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: 2.4.2...2.4.3

2.4.2

Choose a tag to compare

@github-actions github-actions released this 10 Oct 03:42

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 = "2.4.2")

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

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
    hub_name = "pypi",
    python_version = "3.14",
    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 = "14f8fc9adbf471c7c1258cbf0998de3f63d8d3c81f88e2b96cadff44d71adf71",
    strip_prefix = "rules_python-2.4.2",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.2/rules_python-2.4.2.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 = "14f8fc9adbf471c7c1258cbf0998de3f63d8d3c81f88e2b96cadff44d71adf71",
    strip_prefix = "rules_python-2.4.2/gazelle",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.2/rules_python-2.4.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: 2.4.1...2.4.2

2.4.1

Choose a tag to compare

@github-actions github-actions released this 06 Oct 03:53

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 = "2.4.1")

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

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
    hub_name = "pypi",
    python_version = "3.14",
    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 = "7338fac5da94920b9a2db88add662246e7c41cc5c357ea93670ef23f1f153d4f",
    strip_prefix = "rules_python-2.4.1",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.1/rules_python-2.4.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 = "7338fac5da94920b9a2db88add662246e7c41cc5c357ea93670ef23f1f153d4f",
    strip_prefix = "rules_python-2.4.1/gazelle",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.1/rules_python-2.4.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: 2.4.0...2.4.1

2.4.0

Choose a tag to compare

@github-actions github-actions released this 05 Oct 02:37

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 = "2.4.0")

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

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
    hub_name = "pypi",
    python_version = "3.14",
    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 = "4f4e68bd0e385fb8550b72c77f11ff51c8abd39ea872bfb2f62cc9032c600751",
    strip_prefix = "rules_python-2.4.0",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.0/rules_python-2.4.0.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 = "4f4e68bd0e385fb8550b72c77f11ff51c8abd39ea872bfb2f62cc9032c600751",
    strip_prefix = "rules_python-2.4.0/gazelle",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.0/rules_python-2.4.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()

What's Changed

  • chore: generate release changelog from news entries by @rickeylev in #3827
  • fix(coverage): skip lcov report when no data was collected by @maxbirkner in #3832
  • fix(pypi): respect empty envsubst expansion in experimental_index_url by @kriscfoster in #3828
  • refactor(pypi): don't use Python to patch wheels by @aignas in #3808
  • feat(py_info): expose VenvSymlinkEntry and VenvSymlinkKind as public APIs by @rickeylev in #3835
  • doc: merge news into generated changelog by @rickeylev in #3836
  • ci: enable bazel-diff by @rickeylev in #3838
  • fix: run bazel-diff in cquery mode under bazelci by @rickeylev in #3839
  • ci: disable bazel-diff due to platform compatibility conflicts by @rickeylev in #3840
  • chore: warn on implicit init.py creation by @rickeylev in #3841
  • fix(bootstrap): use retry loop for win32 version lookup in site init template by @rickeylev in #3842
  • fix(rules): disambiguate slash target venv outputs by @gleyba in #3845
  • chore: automate releases by @rickeylev in #3833
  • build(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #3843
  • chore: remove accidentally committed release automation plan by @rickeylev in #3846
  • feat: unified pypi hub repository by @rickeylev in #3837
  • feat(pypi): support importing uv.lock file by @aignas in #3785
  • chore: add agent rule to base new branches on upstream/main by @rickeylev in #3849
  • build(ci): consolidate PR guardrails and block draft files by @rickeylev in #3859
  • refactor: use gazelle for bzl_library management by @rickeylev in #3852
  • fix(ci): use --repo flag in gh pr diff to avoid checkout by @rickeylev in #3861
  • feat: stop using chmod on Bazel 8.6+ by @aignas in #3855
  • ci: make pr-metadata-check run on PR body edit by @rickeylev in #3862
  • chore(pypi): cleanup unused code by @aignas in #3864
  • chore(release): correct version tagging and improve promotion flow by @rickeylev in #3866
  • chore(release): add dry-run to release tool prepare command by @rickeylev in #3869
  • chore(release): reuse existing PRs and avoid early exit in prep tool by @rickeylev in #3870
  • chore(release): use force push and clean up git helpers in prep tool by @rickeylev in #3873
  • Prepare release v2.2.0 by @github-actions[bot] in #3874
  • chore(release): fix release label consistency in workflows and templates by @rickeylev in #3876
  • fix: avoid stage1 bootstrap stdlib shadowing by @gleyba in #3854
  • build(deps): bump bazel-contrib/publish-to-bcr/.github/workflows/publish.yaml from 1.1.0 to 1.4.1 by @dependabot[bot] in #3822
  • chore(release): support custom remote in create-release-branch and refactor by @rickeylev in #3877
  • chore(release): refactor create-rc and handle existing remote release branch by @rickeylev in #3879
  • chore(release): various fixes to release tool and workflows by @rickeylev in #3880
  • feat(pypi): add pip.dep to declare abstract pypi dependencies by @rickeylev in #3850
  • chore(release): refactor process-backports and various release tool fixes by @rickeylev in #3881
  • chore(release): factor code, make testable, clarify workflow names by @rickeylev in #3882
  • chore(release): pass missing --remote argument to release workflows by @rickeylev in #3883
  • chore(release): enable execution in process-backports workflow by @rickeylev in #3884
  • chore(release): release automation fixes and refactoring by @rickeylev in #3885
  • fix: use locale-neutral Windows ACL for build data by @alex-the-third in #3887
  • feat(py_test): add opt-in safeguard against accidental no-op tests by @thirtyseven in #3825
  • feat: enable pyproject.toml as single source of truth for Python version by @golithe in #3514
  • Fix release tool links and improve workflow robustness by @rickeylev in #3888
  • build(release): support triggering release workflows via comments by @rickeylev in #3889
  • chore(release): allow comments to trigger actions, update releasing docs by @rickeylev in #3891
  • chore(release): grant write permissions to on_issue_comment workflow by @rickeylev in #3892
  • chore(release): add pull-requests: write permission to on_issue_comment workflow by @rickeylev in #3893
  • chore(release): auto-add RC tasks to checklist in create-rc by @rickeylev in #3894
  • chore(release): secure workflows against shell injection by @rickeylev in #3895
  • fix: run executable zip action with execution Python to better support windows building by @dzbarsky in #3890
  • chore(release): process backports as part of creating RC by @rickeylev in #3896
  • chore(release): automate backport processing on PR merge, and have add-backports accept hashtag and url refs by @rickeylev in #3897
  • chore(release): fix promote_rc arguments and align comments by @rickeylev in #3898
  • chore(release): fix promote-rc command and update workflow args by @rickeylev in #3899
  • chore(release): make promote_rc workflow call publish_release workflow to finish publishing by @rickeylev in #3900
  • docs: sync 2.2 changelog and news to main by @rickeylev in #3901
  • chore(release): sync changelog and version markers to main during backports by @rickeylev in #3903
  • chore: remove stale process-backports-before-rc news file by @rickeylev in https://github.com/bazel-contrib/...
Read more

2.4.0-rc3

2.4.0-rc3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 01 Oct 07:26

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 = "2.4.0-rc3")

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

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
    hub_name = "pypi",
    python_version = "3.14",
    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 = "acf425401f347cec1e2a5efbb97f1fa4930e180996ab00594e19c300dfa45319",
    strip_prefix = "rules_python-2.4.0-rc3",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.0-rc3/rules_python-2.4.0-rc3.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 = "acf425401f347cec1e2a5efbb97f1fa4930e180996ab00594e19c300dfa45319",
    strip_prefix = "rules_python-2.4.0-rc3/gazelle",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.0-rc3/rules_python-2.4.0-rc3.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: 2.4.0-rc2...2.4.0-rc3

2.4.0-rc2

2.4.0-rc2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 01 Oct 05:15

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 = "2.4.0-rc2")

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

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
    hub_name = "pypi",
    python_version = "3.14",
    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 = "a97164eb05b089d421dea53edb77a64ae5b10ab97b49dbb53c6a42b5bcf32903",
    strip_prefix = "rules_python-2.4.0-rc2",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.0-rc2/rules_python-2.4.0-rc2.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 = "a97164eb05b089d421dea53edb77a64ae5b10ab97b49dbb53c6a42b5bcf32903",
    strip_prefix = "rules_python-2.4.0-rc2/gazelle",
    url = "https://github.com/bazel-contrib/rules_python/releases/download/2.4.0-rc2/rules_python-2.4.0-rc2.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: 2.4.0-rc1...2.4.0-rc2