-
Notifications
You must be signed in to change notification settings - Fork 541
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Adding variable support for distribution in py_wheel #1251
feat: Adding variable support for distribution in py_wheel #1251
Conversation
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
@ns-tkonduri can you sign the CLA? |
@chrislovecnm I just signed it. Thank you. |
You need to run the doc update target please. |
bd7e225
to
ed2d65f
Compare
@chrislovecnm @rickeylev I have updated the PR with my changes and the github checks are passing, Can you please review the changes? Thanks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI I'm not too familiar with this code, that said:
First, can you explain a bit more about your use case and goal? What from the make vars or status keys do you want to put in your distribution name and why?
The original intent seems to have been to support make variables, but that looks to have been removed? The Starlark code that did makevars expansion is gone. Instead, it's now supporting workspace status key expansion. Which is more appropriate depends on what you're trying to do. Something worth noting is volatile status keys will be "wrong" on subsequent/incremental builds.
Otherwise, can you add some tests? The original change to just do makevar expansion was simple enough I don't think it necessitated tests, but now the Python tool is modified with if-else statements, so testing is more important.
Please also update the PR description to:
- Better answer the "why" for this feature addition. Note that a reason like "makes the distribution attribute expand variables so that you can use variables in the distribute attribute" doesn't really answer "why"
- Be a more appropriate commit message (the pr description will become the commit message)
ed2d65f
to
ad67f0a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great explanation for the PR and FR, thanks! I've shorted the PR description to make for a better commit message.
Just needs some sort of test to verify the expansion is happening, otherwise LGTM.
2f42e8c
to
1342c00
Compare
@rickeylev I prepared these unit tests wheelmaker_test.py (file is in the PR) which I tested locally and it's working but I found no framework for hooking this into the builds, and also I looked for some sort of end-to-end test that I can piggyback on to enhance this logic, but could not find that either. So this seems like more of an effort than simply adding unit tests, for this, I will require to add a framework that exceeds my expertise as a new contributor like me to the project. |
Ah, sorry -- I should have pointed you more explicitly to what I had in mind. Thanks for creating Instead: Most of py_wheel is tested using For an example, see What I would suggest is either modifying the |
fb3cd8a
to
b8817ee
Compare
@rickeylev Thanks for pointing out the way you test. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just needs the test renamed, otherwise LGTM.
Also: yes, that test is flaky; i retried and it passed. |
b8817ee
to
385c103
Compare
@rickeylev Thank you, I updated the test name, and all the checks are green now. |
385c103
to
d2a4019
Compare
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [rules_python](https://togithub.com/bazelbuild/rules_python) | http_archive | minor | `0.20.0` -> `0.25.0` | --- ### Release Notes <details> <summary>bazelbuild/rules_python (rules_python)</summary> ### [`v0.25.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0250---2023-08-22) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.24.0...0.25.0) ##### Changed - Python version patch level bumps: - 3.9.16 -> 3.9.17 - 3.10.9 -> 3.10.12 - 3.11.1 -> 3.11.4 - (bzlmod) `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. ##### Fixed - (docs) Update docs to use correct bzlmod APIs and clarify how and when to use various APIs. - (multi-version) The `main` arg is now correctly computed and usually optional. - (bzlmod) `pip.parse` no longer requires a call for whatever the configured default Python version is. ##### Added - Created a changelog. - (gazelle) Stop generating unnecessary imports. - (toolchains) s390x supported for Python 3.9.17, 3.10.12, and 3.11.4. [0.25.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.25.0 ### [`v0.24.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0240---2023-07-11) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.23.1...0.24.0) ##### Changed - **BREAKING** (gazelle) Gazelle 0.30.0 or higher is required - (bzlmod) `@python_aliases` renamed to \`@python_versions - (bzlmod) `pip.parse` arg `name` renamed to `hub_name` - (bzlmod) `pip.parse` arg `incompatible_generate_aliases` removed and always true. ##### Fixed - (bzlmod) Fixing Windows Python Interpreter symlink issues - (py_wheel) Allow twine tags and args - (toolchain, bzlmod) Restrict coverage tool visibility under bzlmod - (pip) Ignore temporary pyc.NNN files in wheels - (pip) Add format() calls to glob_exclude templates - plugin_output in py_proto_library rule ##### Added - Using Gazelle's lifecycle manager to manage external processes - (bzlmod) `pip.parse` can be called multiple times with different Python versions - (bzlmod) Allow bzlmod `pip.parse` to reference the default python toolchain and interpreter - (bzlmod) Implementing wheel annotations via `whl_mods` - (gazelle) support multiple requirements files in manifest generation - (py_wheel) Support for specifying `Description-Content-Type` and `Summary` in METADATA - (py_wheel) Support for specifying `Project-URL` - (compile_pip_requirements) Added `generate_hashes` arg (default True) to control generating hashes - (pip) Create all_data_requirements alias - Expose Python C headers through the toolchain. [0.24.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.24.0 ### [`v0.23.1`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.23.1) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.23.0...0.23.1) #### Using Bzlmod with Bazel 6 Add to your `MODULE.bazel` file: ```starlark 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") ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` #### What's Changed - fix(bzlmod+gazelle): update BCR release presubmit to use correct example by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1264](https://togithub.com/bazelbuild/rules_python/pull/1264) **Full Changelog**: bazelbuild/rules_python@0.23.0...0.23.1 ### [`v0.23.0`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.23.0) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.22.0...0.23.0) #### Using Bzlmod with Bazel 6 NOTE: bzlmod support is still experimental; apis are still subject to change This release introduces two notable changes to bzlmod support: - A default toolchain is automatically registered for you. You no longer need to call `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. - The `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: ```starlark 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") ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` #### What's Changed - feat(bzlmod): Allowing multiple python.toolchain extension calls by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1230](https://togithub.com/bazelbuild/rules_python/pull/1230) - build: Upgrade Gazelle to v0.31.0 by [@​linzhp](https://togithub.com/linzhp) in [https://github.com/bazelbuild/rules_python/pull/1240](https://togithub.com/bazelbuild/rules_python/pull/1240) - fix: make `import python.runfiles` work with `--experimental_python_import_all_repositories=false` by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1243](https://togithub.com/bazelbuild/rules_python/pull/1243) - feat(bzlmod): Moving register.toolchains internal by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1238](https://togithub.com/bazelbuild/rules_python/pull/1238) - docs(compile_pip_requirements): Add note on requirements.txt VC by [@​boomanaiden154](https://togithub.com/boomanaiden154) in [https://github.com/bazelbuild/rules_python/pull/1245](https://togithub.com/bazelbuild/rules_python/pull/1245) - cleanup: Set toolchain target_setting directly instead of via inline ternary by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1246](https://togithub.com/bazelbuild/rules_python/pull/1246) - fix(bzlmod): give precedence to the first seen versioned toolchain by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1244](https://togithub.com/bazelbuild/rules_python/pull/1244) - chore: add a pre-commit hook to maintain deleted packages by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1208](https://togithub.com/bazelbuild/rules_python/pull/1208) - chore: auto-publish gazelle module to BCR by [@​kormide](https://togithub.com/kormide) in [https://github.com/bazelbuild/rules_python/pull/1247](https://togithub.com/bazelbuild/rules_python/pull/1247) - fix(coverage): bump to latest coverage.py and fix import shadowing by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1249](https://togithub.com/bazelbuild/rules_python/pull/1249) - feat: add ppc64le releases and update to 3.10.11, 3.11.3 for python-build-standalone by [@​clnperez](https://togithub.com/clnperez) in [https://github.com/bazelbuild/rules_python/pull/1234](https://togithub.com/bazelbuild/rules_python/pull/1234) - fix(bzlmod)!: Remove ability to specify toolchain repo name. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1258](https://togithub.com/bazelbuild/rules_python/pull/1258) - fix: update correct requirements lock file when using os specific lock files by [@​Rasrack](https://togithub.com/Rasrack) in [https://github.com/bazelbuild/rules_python/pull/1123](https://togithub.com/bazelbuild/rules_python/pull/1123) - fix: use `only-binary` for `download_only` `pip download` by [@​lpulley](https://togithub.com/lpulley) in [https://github.com/bazelbuild/rules_python/pull/1219](https://togithub.com/bazelbuild/rules_python/pull/1219) - feat: Adding variable support for distribution in py_wheel by [@​ns-tkonduri](https://togithub.com/ns-tkonduri) in [https://github.com/bazelbuild/rules_python/pull/1251](https://togithub.com/bazelbuild/rules_python/pull/1251) - feat(bzlmod): Register a default toolchain by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1259](https://togithub.com/bazelbuild/rules_python/pull/1259) #### New Contributors - [@​boomanaiden154](https://togithub.com/boomanaiden154) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1245](https://togithub.com/bazelbuild/rules_python/pull/1245) - [@​clnperez](https://togithub.com/clnperez) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1234](https://togithub.com/bazelbuild/rules_python/pull/1234) - [@​lpulley](https://togithub.com/lpulley) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1219](https://togithub.com/bazelbuild/rules_python/pull/1219) - [@​ns-tkonduri](https://togithub.com/ns-tkonduri) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1251](https://togithub.com/bazelbuild/rules_python/pull/1251) **Full Changelog**: bazelbuild/rules_python@0.22.0...0.23.0 ### [`v0.22.0`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.22.0) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.21.0...0.22.0) #### Notable and Breaking Changes ##### Bzlmod extension paths have changed 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. ##### Lockfile output churn The output of lockfiles has slightly changed. Though functionally the same, their integrity hashes will change. *** #### Using Bzlmod with Bazel 6 NOTE: Bzlmod support is still in beta. Add to your `MODULE.bazel` file: ```starlark 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", ) ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` #### What's Changed - fix: remove reference to @​bazel_tools//tools/python/private:defs.bzl by [@​comius](https://togithub.com/comius) in [https://github.com/bazelbuild/rules_python/pull/1173](https://togithub.com/bazelbuild/rules_python/pull/1173) - docs: Tell how to use GitHub to find commits in an upcoming release. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1092](https://togithub.com/bazelbuild/rules_python/pull/1092) - fix: compile_pip_requirements test from external repositories by [@​Rasrack](https://togithub.com/Rasrack) in [https://github.com/bazelbuild/rules_python/pull/1124](https://togithub.com/bazelbuild/rules_python/pull/1124) - feat: add Python 3.8.16 by [@​jml-derek](https://togithub.com/jml-derek) in [https://github.com/bazelbuild/rules_python/pull/1168](https://togithub.com/bazelbuild/rules_python/pull/1168) - test: Set mac platform for test_mac_requires_darwin_for_execution by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1179](https://togithub.com/bazelbuild/rules_python/pull/1179) - fix: Don't reference deleted private bazel_tools bzl file by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1180](https://togithub.com/bazelbuild/rules_python/pull/1180) - docs: Add starlark directive to code snippet by [@​blorente](https://togithub.com/blorente) in [https://github.com/bazelbuild/rules_python/pull/1170](https://togithub.com/bazelbuild/rules_python/pull/1170) - tests: Upgrade rules_testing to 0.0.5 by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1184](https://togithub.com/bazelbuild/rules_python/pull/1184) - tests: Set linux platform for test_non_mac_doesnt_require_darwin_for_execution by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1183](https://togithub.com/bazelbuild/rules_python/pull/1183) - fix(bzlmod): correctly template repository macros for requirements, etc by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1190](https://togithub.com/bazelbuild/rules_python/pull/1190) - type:docs Update README.md by [@​yuanweixin](https://togithub.com/yuanweixin) in [https://github.com/bazelbuild/rules_python/pull/1186](https://togithub.com/bazelbuild/rules_python/pull/1186) - fix: Allow passing a tuple to the `tags` attribute. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1191](https://togithub.com/bazelbuild/rules_python/pull/1191) - tests: Add skylib to various test dependencies to fix CI by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1199](https://togithub.com/bazelbuild/rules_python/pull/1199) - feat: removing bzlmod from example by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1200](https://togithub.com/bazelbuild/rules_python/pull/1200) - feat: propagate visibility attribute for py_wheel publishing by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1203](https://togithub.com/bazelbuild/rules_python/pull/1203) - docs: fix typos in pip_repository docs by [@​martis42](https://togithub.com/martis42) in [https://github.com/bazelbuild/rules_python/pull/1202](https://togithub.com/bazelbuild/rules_python/pull/1202) - tests: Force analysis test labels to resolve within @​rules_python context by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1187](https://togithub.com/bazelbuild/rules_python/pull/1187) - fix(update_deleted_packages.sh): allow to run from anywhere in the repo by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1206](https://togithub.com/bazelbuild/rules_python/pull/1206) - feat(bzlmod): expose platform-agnostic repo target for toolchain interpreter by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1155](https://togithub.com/bazelbuild/rules_python/pull/1155) - fix(update_deleted_packages.sh): wheels example should not be included in .bazelrc by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1207](https://togithub.com/bazelbuild/rules_python/pull/1207) - fix: Strip trailing newline from python output by [@​illicitonion](https://togithub.com/illicitonion) in [https://github.com/bazelbuild/rules_python/pull/1212](https://togithub.com/bazelbuild/rules_python/pull/1212) - fix: manually ignore bazel-\* directories to make using custom Bazel builds easier by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1181](https://togithub.com/bazelbuild/rules_python/pull/1181) - test(bzlmod): explicitly enable bzlmod in the test harness by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1204](https://togithub.com/bazelbuild/rules_python/pull/1204) - feat(bzlmod): Cleaning up interpreter resolution by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1218](https://togithub.com/bazelbuild/rules_python/pull/1218) - feat(bzlmod)!: Move each bzlmod extension into its own file by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1226](https://togithub.com/bazelbuild/rules_python/pull/1226) - Adding bzlmod support document by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1214](https://togithub.com/bazelbuild/rules_python/pull/1214) - test(coverage): add a test to check the sys.path under bzlmod by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1223](https://togithub.com/bazelbuild/rules_python/pull/1223) - fix(toolchain): set correct return attrs to remove non-hermeticity warning by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1231](https://togithub.com/bazelbuild/rules_python/pull/1231) - fix: allow url fragments in requirements file by [@​mattoberle](https://togithub.com/mattoberle) in [https://github.com/bazelbuild/rules_python/pull/1195](https://togithub.com/bazelbuild/rules_python/pull/1195) - fix: `example/build_file_generation/README.md` by [@​ofey404](https://togithub.com/ofey404) in [https://github.com/bazelbuild/rules_python/pull/1164](https://togithub.com/bazelbuild/rules_python/pull/1164) - fix: Using canonical name in requirements.bzl by [@​linzhp](https://togithub.com/linzhp) in [https://github.com/bazelbuild/rules_python/pull/1176](https://togithub.com/bazelbuild/rules_python/pull/1176) - feat(bzlmod): support entry_point macro by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1220](https://togithub.com/bazelbuild/rules_python/pull/1220) #### New Contributors - [@​Rasrack](https://togithub.com/Rasrack) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1124](https://togithub.com/bazelbuild/rules_python/pull/1124) - [@​jml-derek](https://togithub.com/jml-derek) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1168](https://togithub.com/bazelbuild/rules_python/pull/1168) - [@​blorente](https://togithub.com/blorente) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1170](https://togithub.com/bazelbuild/rules_python/pull/1170) - [@​yuanweixin](https://togithub.com/yuanweixin) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1186](https://togithub.com/bazelbuild/rules_python/pull/1186) - [@​ofey404](https://togithub.com/ofey404) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1164](https://togithub.com/bazelbuild/rules_python/pull/1164) **Full Changelog**: bazelbuild/rules_python@0.21.0...0.22.0 ### [`v0.21.0`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.21.0) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.20.0...0.21.0) #### Using Bzlmod with Bazel 6 Add to your `MODULE.bazel` file: ```starlark 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", ) ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` #### What's Changed - cleanup: factor reexports.bzl into the respective implementation files by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1137](https://togithub.com/bazelbuild/rules_python/pull/1137) - fix: bump installer to handle windows better by [@​f0rmiga](https://togithub.com/f0rmiga) in [https://github.com/bazelbuild/rules_python/pull/1138](https://togithub.com/bazelbuild/rules_python/pull/1138) - build: Fixing buildifier by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1148](https://togithub.com/bazelbuild/rules_python/pull/1148) - docs: Updating documentation for bzlmod by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1149](https://togithub.com/bazelbuild/rules_python/pull/1149) - fix: use a consistent buildifier version for CI and pre-commit by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1151](https://togithub.com/bazelbuild/rules_python/pull/1151) - chore: bump buildifier to 6.1.0 by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1152](https://togithub.com/bazelbuild/rules_python/pull/1152) - fix: correct the labels returned by all_requirements lists by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1146](https://togithub.com/bazelbuild/rules_python/pull/1146) - fix: gazelle correctly adds new py_test rules by [@​amartani](https://togithub.com/amartani) in [https://github.com/bazelbuild/rules_python/pull/1143](https://togithub.com/bazelbuild/rules_python/pull/1143) - fix: respect kind mapping by [@​OniOni](https://togithub.com/OniOni) in [https://github.com/bazelbuild/rules_python/pull/1158](https://togithub.com/bazelbuild/rules_python/pull/1158) - test: cleanup gazelle tests and run them in parallel by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1159](https://togithub.com/bazelbuild/rules_python/pull/1159) - \[docs] Fixing rule name in coverage.md docs by [@​anfelbar](https://togithub.com/anfelbar) in [https://github.com/bazelbuild/rules_python/pull/1162](https://togithub.com/bazelbuild/rules_python/pull/1162) - feat: Support specifying multiple download URLs in tool_versions. by [@​quval](https://togithub.com/quval) in [https://github.com/bazelbuild/rules_python/pull/1145](https://togithub.com/bazelbuild/rules_python/pull/1145) #### New Contributors - [@​amartani](https://togithub.com/amartani) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1143](https://togithub.com/bazelbuild/rules_python/pull/1143) - [@​anfelbar](https://togithub.com/anfelbar) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1162](https://togithub.com/bazelbuild/rules_python/pull/1162) - [@​quval](https://togithub.com/quval) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1145](https://togithub.com/bazelbuild/rules_python/pull/1145) **Full Changelog**: bazelbuild/rules_python@0.20.0...0.21.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/bazel-contrib/rules_bazel_integration_test). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS41NC4wIiwidXBkYXRlZEluVmVyIjoiMzYuNzguOCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#153) [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [rules_python](https://togithub.com/bazelbuild/rules_python) | http_archive | minor | `0.20.0` -> `0.25.0` | --- ### Release Notes <details> <summary>bazelbuild/rules_python (rules_python)</summary> ### [`v0.25.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0250---2023-08-22) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.24.0...0.25.0) ##### Changed - Python version patch level bumps: - 3.9.16 -> 3.9.17 - 3.10.9 -> 3.10.12 - 3.11.1 -> 3.11.4 - (bzlmod) `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. ##### Fixed - (docs) Update docs to use correct bzlmod APIs and clarify how and when to use various APIs. - (multi-version) The `main` arg is now correctly computed and usually optional. - (bzlmod) `pip.parse` no longer requires a call for whatever the configured default Python version is. ##### Added - Created a changelog. - (gazelle) Stop generating unnecessary imports. - (toolchains) s390x supported for Python 3.9.17, 3.10.12, and 3.11.4. [0.25.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.25.0 ### [`v0.24.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0240---2023-07-11) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.23.1...0.24.0) ##### Changed - **BREAKING** (gazelle) Gazelle 0.30.0 or higher is required - (bzlmod) `@python_aliases` renamed to \`@python_versions - (bzlmod) `pip.parse` arg `name` renamed to `hub_name` - (bzlmod) `pip.parse` arg `incompatible_generate_aliases` removed and always true. ##### Fixed - (bzlmod) Fixing Windows Python Interpreter symlink issues - (py_wheel) Allow twine tags and args - (toolchain, bzlmod) Restrict coverage tool visibility under bzlmod - (pip) Ignore temporary pyc.NNN files in wheels - (pip) Add format() calls to glob_exclude templates - plugin_output in py_proto_library rule ##### Added - Using Gazelle's lifecycle manager to manage external processes - (bzlmod) `pip.parse` can be called multiple times with different Python versions - (bzlmod) Allow bzlmod `pip.parse` to reference the default python toolchain and interpreter - (bzlmod) Implementing wheel annotations via `whl_mods` - (gazelle) support multiple requirements files in manifest generation - (py_wheel) Support for specifying `Description-Content-Type` and `Summary` in METADATA - (py_wheel) Support for specifying `Project-URL` - (compile_pip_requirements) Added `generate_hashes` arg (default True) to control generating hashes - (pip) Create all_data_requirements alias - Expose Python C headers through the toolchain. [0.24.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.24.0 ### [`v0.23.1`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.23.1) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.23.0...0.23.1) #### Using Bzlmod with Bazel 6 Add to your `MODULE.bazel` file: ```starlark 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") ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` #### What's Changed - fix(bzlmod+gazelle): update BCR release presubmit to use correct example by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1264](https://togithub.com/bazelbuild/rules_python/pull/1264) **Full Changelog**: bazelbuild/rules_python@0.23.0...0.23.1 ### [`v0.23.0`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.23.0) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.22.0...0.23.0) #### Using Bzlmod with Bazel 6 NOTE: bzlmod support is still experimental; apis are still subject to change This release introduces two notable changes to bzlmod support: - A default toolchain is automatically registered for you. You no longer need to call `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. - The `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: ```starlark 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") ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` #### What's Changed - feat(bzlmod): Allowing multiple python.toolchain extension calls by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1230](https://togithub.com/bazelbuild/rules_python/pull/1230) - build: Upgrade Gazelle to v0.31.0 by [@​linzhp](https://togithub.com/linzhp) in [https://github.com/bazelbuild/rules_python/pull/1240](https://togithub.com/bazelbuild/rules_python/pull/1240) - fix: make `import python.runfiles` work with `--experimental_python_import_all_repositories=false` by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1243](https://togithub.com/bazelbuild/rules_python/pull/1243) - feat(bzlmod): Moving register.toolchains internal by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1238](https://togithub.com/bazelbuild/rules_python/pull/1238) - docs(compile_pip_requirements): Add note on requirements.txt VC by [@​boomanaiden154](https://togithub.com/boomanaiden154) in [https://github.com/bazelbuild/rules_python/pull/1245](https://togithub.com/bazelbuild/rules_python/pull/1245) - cleanup: Set toolchain target_setting directly instead of via inline ternary by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1246](https://togithub.com/bazelbuild/rules_python/pull/1246) - fix(bzlmod): give precedence to the first seen versioned toolchain by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1244](https://togithub.com/bazelbuild/rules_python/pull/1244) - chore: add a pre-commit hook to maintain deleted packages by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1208](https://togithub.com/bazelbuild/rules_python/pull/1208) - chore: auto-publish gazelle module to BCR by [@​kormide](https://togithub.com/kormide) in [https://github.com/bazelbuild/rules_python/pull/1247](https://togithub.com/bazelbuild/rules_python/pull/1247) - fix(coverage): bump to latest coverage.py and fix import shadowing by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1249](https://togithub.com/bazelbuild/rules_python/pull/1249) - feat: add ppc64le releases and update to 3.10.11, 3.11.3 for python-build-standalone by [@​clnperez](https://togithub.com/clnperez) in [https://github.com/bazelbuild/rules_python/pull/1234](https://togithub.com/bazelbuild/rules_python/pull/1234) - fix(bzlmod)!: Remove ability to specify toolchain repo name. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1258](https://togithub.com/bazelbuild/rules_python/pull/1258) - fix: update correct requirements lock file when using os specific lock files by [@​Rasrack](https://togithub.com/Rasrack) in [https://github.com/bazelbuild/rules_python/pull/1123](https://togithub.com/bazelbuild/rules_python/pull/1123) - fix: use `only-binary` for `download_only` `pip download` by [@​lpulley](https://togithub.com/lpulley) in [https://github.com/bazelbuild/rules_python/pull/1219](https://togithub.com/bazelbuild/rules_python/pull/1219) - feat: Adding variable support for distribution in py_wheel by [@​ns-tkonduri](https://togithub.com/ns-tkonduri) in [https://github.com/bazelbuild/rules_python/pull/1251](https://togithub.com/bazelbuild/rules_python/pull/1251) - feat(bzlmod): Register a default toolchain by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1259](https://togithub.com/bazelbuild/rules_python/pull/1259) #### New Contributors - [@​boomanaiden154](https://togithub.com/boomanaiden154) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1245](https://togithub.com/bazelbuild/rules_python/pull/1245) - [@​clnperez](https://togithub.com/clnperez) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1234](https://togithub.com/bazelbuild/rules_python/pull/1234) - [@​lpulley](https://togithub.com/lpulley) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1219](https://togithub.com/bazelbuild/rules_python/pull/1219) - [@​ns-tkonduri](https://togithub.com/ns-tkonduri) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1251](https://togithub.com/bazelbuild/rules_python/pull/1251) **Full Changelog**: bazelbuild/rules_python@0.22.0...0.23.0 ### [`v0.22.0`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.22.0) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.21.0...0.22.0) #### Notable and Breaking Changes ##### Bzlmod extension paths have changed 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. ##### Lockfile output churn The output of lockfiles has slightly changed. Though functionally the same, their integrity hashes will change. *** #### Using Bzlmod with Bazel 6 NOTE: Bzlmod support is still in beta. Add to your `MODULE.bazel` file: ```starlark 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", ) ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` #### What's Changed - fix: remove reference to @​bazel_tools//tools/python/private:defs.bzl by [@​comius](https://togithub.com/comius) in [https://github.com/bazelbuild/rules_python/pull/1173](https://togithub.com/bazelbuild/rules_python/pull/1173) - docs: Tell how to use GitHub to find commits in an upcoming release. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1092](https://togithub.com/bazelbuild/rules_python/pull/1092) - fix: compile_pip_requirements test from external repositories by [@​Rasrack](https://togithub.com/Rasrack) in [https://github.com/bazelbuild/rules_python/pull/1124](https://togithub.com/bazelbuild/rules_python/pull/1124) - feat: add Python 3.8.16 by [@​jml-derek](https://togithub.com/jml-derek) in [https://github.com/bazelbuild/rules_python/pull/1168](https://togithub.com/bazelbuild/rules_python/pull/1168) - test: Set mac platform for test_mac_requires_darwin_for_execution by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1179](https://togithub.com/bazelbuild/rules_python/pull/1179) - fix: Don't reference deleted private bazel_tools bzl file by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1180](https://togithub.com/bazelbuild/rules_python/pull/1180) - docs: Add starlark directive to code snippet by [@​blorente](https://togithub.com/blorente) in [https://github.com/bazelbuild/rules_python/pull/1170](https://togithub.com/bazelbuild/rules_python/pull/1170) - tests: Upgrade rules_testing to 0.0.5 by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1184](https://togithub.com/bazelbuild/rules_python/pull/1184) - tests: Set linux platform for test_non_mac_doesnt_require_darwin_for_execution by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1183](https://togithub.com/bazelbuild/rules_python/pull/1183) - fix(bzlmod): correctly template repository macros for requirements, etc by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1190](https://togithub.com/bazelbuild/rules_python/pull/1190) - type:docs Update README.md by [@​yuanweixin](https://togithub.com/yuanweixin) in [https://github.com/bazelbuild/rules_python/pull/1186](https://togithub.com/bazelbuild/rules_python/pull/1186) - fix: Allow passing a tuple to the `tags` attribute. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1191](https://togithub.com/bazelbuild/rules_python/pull/1191) - tests: Add skylib to various test dependencies to fix CI by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1199](https://togithub.com/bazelbuild/rules_python/pull/1199) - feat: removing bzlmod from example by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1200](https://togithub.com/bazelbuild/rules_python/pull/1200) - feat: propagate visibility attribute for py_wheel publishing by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1203](https://togithub.com/bazelbuild/rules_python/pull/1203) - docs: fix typos in pip_repository docs by [@​martis42](https://togithub.com/martis42) in [https://github.com/bazelbuild/rules_python/pull/1202](https://togithub.com/bazelbuild/rules_python/pull/1202) - tests: Force analysis test labels to resolve within @​rules_python context by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1187](https://togithub.com/bazelbuild/rules_python/pull/1187) - fix(update_deleted_packages.sh): allow to run from anywhere in the repo by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1206](https://togithub.com/bazelbuild/rules_python/pull/1206) - feat(bzlmod): expose platform-agnostic repo target for toolchain interpreter by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1155](https://togithub.com/bazelbuild/rules_python/pull/1155) - fix(update_deleted_packages.sh): wheels example should not be included in .bazelrc by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1207](https://togithub.com/bazelbuild/rules_python/pull/1207) - fix: Strip trailing newline from python output by [@​illicitonion](https://togithub.com/illicitonion) in [https://github.com/bazelbuild/rules_python/pull/1212](https://togithub.com/bazelbuild/rules_python/pull/1212) - fix: manually ignore bazel-\* directories to make using custom Bazel builds easier by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1181](https://togithub.com/bazelbuild/rules_python/pull/1181) - test(bzlmod): explicitly enable bzlmod in the test harness by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1204](https://togithub.com/bazelbuild/rules_python/pull/1204) - feat(bzlmod): Cleaning up interpreter resolution by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1218](https://togithub.com/bazelbuild/rules_python/pull/1218) - feat(bzlmod)!: Move each bzlmod extension into its own file by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1226](https://togithub.com/bazelbuild/rules_python/pull/1226) - Adding bzlmod support document by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1214](https://togithub.com/bazelbuild/rules_python/pull/1214) - test(coverage): add a test to check the sys.path under bzlmod by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1223](https://togithub.com/bazelbuild/rules_python/pull/1223) - fix(toolchain): set correct return attrs to remove non-hermeticity warning by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1231](https://togithub.com/bazelbuild/rules_python/pull/1231) - fix: allow url fragments in requirements file by [@​mattoberle](https://togithub.com/mattoberle) in [https://github.com/bazelbuild/rules_python/pull/1195](https://togithub.com/bazelbuild/rules_python/pull/1195) - fix: `example/build_file_generation/README.md` by [@​ofey404](https://togithub.com/ofey404) in [https://github.com/bazelbuild/rules_python/pull/1164](https://togithub.com/bazelbuild/rules_python/pull/1164) - fix: Using canonical name in requirements.bzl by [@​linzhp](https://togithub.com/linzhp) in [https://github.com/bazelbuild/rules_python/pull/1176](https://togithub.com/bazelbuild/rules_python/pull/1176) - feat(bzlmod): support entry_point macro by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1220](https://togithub.com/bazelbuild/rules_python/pull/1220) #### New Contributors - [@​Rasrack](https://togithub.com/Rasrack) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1124](https://togithub.com/bazelbuild/rules_python/pull/1124) - [@​jml-derek](https://togithub.com/jml-derek) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1168](https://togithub.com/bazelbuild/rules_python/pull/1168) - [@​blorente](https://togithub.com/blorente) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1170](https://togithub.com/bazelbuild/rules_python/pull/1170) - [@​yuanweixin](https://togithub.com/yuanweixin) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1186](https://togithub.com/bazelbuild/rules_python/pull/1186) - [@​ofey404](https://togithub.com/ofey404) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1164](https://togithub.com/bazelbuild/rules_python/pull/1164) **Full Changelog**: bazelbuild/rules_python@0.21.0...0.22.0 ### [`v0.21.0`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.21.0) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.20.0...0.21.0) #### Using Bzlmod with Bazel 6 Add to your `MODULE.bazel` file: ```starlark 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", ) ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` #### What's Changed - cleanup: factor reexports.bzl into the respective implementation files by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1137](https://togithub.com/bazelbuild/rules_python/pull/1137) - fix: bump installer to handle windows better by [@​f0rmiga](https://togithub.com/f0rmiga) in [https://github.com/bazelbuild/rules_python/pull/1138](https://togithub.com/bazelbuild/rules_python/pull/1138) - build: Fixing buildifier by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1148](https://togithub.com/bazelbuild/rules_python/pull/1148) - docs: Updating documentation for bzlmod by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1149](https://togithub.com/bazelbuild/rules_python/pull/1149) - fix: use a consistent buildifier version for CI and pre-commit by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1151](https://togithub.com/bazelbuild/rules_python/pull/1151) - chore: bump buildifier to 6.1.0 by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1152](https://togithub.com/bazelbuild/rules_python/pull/1152) - fix: correct the labels returned by all_requirements lists by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1146](https://togithub.com/bazelbuild/rules_python/pull/1146) - fix: gazelle correctly adds new py_test rules by [@​amartani](https://togithub.com/amartani) in [https://github.com/bazelbuild/rules_python/pull/1143](https://togithub.com/bazelbuild/rules_python/pull/1143) - fix: respect kind mapping by [@​OniOni](https://togithub.com/OniOni) in [https://github.com/bazelbuild/rules_python/pull/1158](https://togithub.com/bazelbuild/rules_python/pull/1158) - test: cleanup gazelle tests and run them in parallel by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1159](https://togithub.com/bazelbuild/rules_python/pull/1159) - \[docs] Fixing rule name in coverage.md docs by [@​anfelbar](https://togithub.com/anfelbar) in [https://github.com/bazelbuild/rules_python/pull/1162](https://togithub.com/bazelbuild/rules_python/pull/1162) - feat: Support specifying multiple download URLs in tool_versions. by [@​quval](https://togithub.com/quval) in [https://github.com/bazelbuild/rules_python/pull/1145](https://togithub.com/bazelbuild/rules_python/pull/1145) #### New Contributors - [@​amartani](https://togithub.com/amartani) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1143](https://togithub.com/bazelbuild/rules_python/pull/1143) - [@​anfelbar](https://togithub.com/anfelbar) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1162](https://togithub.com/bazelbuild/rules_python/pull/1162) - [@​quval](https://togithub.com/quval) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1145](https://togithub.com/bazelbuild/rules_python/pull/1145) **Full Changelog**: bazelbuild/rules_python@0.20.0...0.21.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/bazel-contrib/rules_bazel_integration_test). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS41NC4wIiwidXBkYXRlZEluVmVyIjoiMzYuNzguOCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#192) [![Mend Renovate logo banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [rules_python_gazelle_plugin](https://togithub.com/bazelbuild/rules_python) | http_archive | minor | `0.18.0` -> `0.26.0` | --- ### Release Notes <details> <summary>bazelbuild/rules_python (rules_python_gazelle_plugin)</summary> ### [`v0.26.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0260---2023-10-06) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.25.0...0.26.0) ##### Changed - Python version patch level bumps: - 3.8.15 -> 3.8.18 - 3.9.17 -> 3.9.18 - 3.10.12 -> 3.10.13 - 3.11.4 -> 3.11.6 - (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`. ##### Added - (bzlmod, entry_point) Added [`py_console_script_binary`](./docs/py_console_script_binary.md), which allows adding custom dependencies to a package's entry points and customizing the `py_binary` rule used to build it. - New Python versions available: `3.8.17`, `3.11.5` using https://github.com/indygreg/python-build-standalone/releases/tag/20230826. - (gazelle) New `# gazelle:python_generation_mode file` directive to support generating one `py_library` per file. - (python_repository) Support `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. - (py_wheel) Added the `incompatible_normalize_name` feature flag to normalize the package distribution name according to latest Python packaging standards. Defaults to `False` for the time being. - (py_wheel) Added the `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. - New Python versions available: `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. ##### Removed - (bzlmod) The `entry_point` macro is no longer supported and has been removed in favour of the `py_console_script_binary` macro for `bzlmod` users. - (bzlmod) The `pip.parse` no longer generates `{hub_name}_{py_version}` hub repos as the `entry_point` macro has been superseded by `py_console_script_binary`. - (bzlmod) The `pip.parse` no longer generates `{hub_name}_{distribution}` hub repos. ##### Fixed - (whl_library) No longer restarts repository rule when fetching external dependencies improving initial build times involving external dependency fetching. - (gazelle) Improve runfiles lookup hermeticity. ### [`v0.25.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0250---2023-08-22) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.24.0...0.25.0) ##### Changed - Python version patch level bumps: - 3.9.16 -> 3.9.17 - 3.10.9 -> 3.10.12 - 3.11.1 -> 3.11.4 - (bzlmod) `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. ##### Fixed - (docs) Update docs to use correct bzlmod APIs and clarify how and when to use various APIs. - (multi-version) The `main` arg is now correctly computed and usually optional. - (bzlmod) `pip.parse` no longer requires a call for whatever the configured default Python version is. ##### Added - Created a changelog. - (gazelle) Stop generating unnecessary imports. - (toolchains) s390x supported for Python 3.9.17, 3.10.12, and 3.11.4. [0.25.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.25.0 ### [`v0.24.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0240---2023-07-11) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.23.1...0.24.0) ##### Changed - **BREAKING** (gazelle) Gazelle 0.30.0 or higher is required - (bzlmod) `@python_aliases` renamed to \`@python_versions - (bzlmod) `pip.parse` arg `name` renamed to `hub_name` - (bzlmod) `pip.parse` arg `incompatible_generate_aliases` removed and always true. ##### Fixed - (bzlmod) Fixing Windows Python Interpreter symlink issues - (py_wheel) Allow twine tags and args - (toolchain, bzlmod) Restrict coverage tool visibility under bzlmod - (pip) Ignore temporary pyc.NNN files in wheels - (pip) Add format() calls to glob_exclude templates - plugin_output in py_proto_library rule ##### Added - Using Gazelle's lifecycle manager to manage external processes - (bzlmod) `pip.parse` can be called multiple times with different Python versions - (bzlmod) Allow bzlmod `pip.parse` to reference the default python toolchain and interpreter - (bzlmod) Implementing wheel annotations via `whl_mods` - (gazelle) support multiple requirements files in manifest generation - (py_wheel) Support for specifying `Description-Content-Type` and `Summary` in METADATA - (py_wheel) Support for specifying `Project-URL` - (compile_pip_requirements) Added `generate_hashes` arg (default True) to control generating hashes - (pip) Create all_data_requirements alias - Expose Python C headers through the toolchain. [0.24.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.24.0 ### [`v0.23.1`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.23.1) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.23.0...0.23.1) #### Using Bzlmod with Bazel 6 Add to your `MODULE.bazel` file: ```starlark 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") ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` #### What's Changed - fix(bzlmod+gazelle): update BCR release presubmit to use correct example by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1264](https://togithub.com/bazelbuild/rules_python/pull/1264) **Full Changelog**: bazelbuild/rules_python@0.23.0...0.23.1 ### [`v0.23.0`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.23.0) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.22.0...0.23.0) #### Using Bzlmod with Bazel 6 NOTE: bzlmod support is still experimental; apis are still subject to change This release introduces two notable changes to bzlmod support: - A default toolchain is automatically registered for you. You no longer need to call `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. - The `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: ```starlark 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") ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` #### What's Changed - feat(bzlmod): Allowing multiple python.toolchain extension calls by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1230](https://togithub.com/bazelbuild/rules_python/pull/1230) - build: Upgrade Gazelle to v0.31.0 by [@​linzhp](https://togithub.com/linzhp) in [https://github.com/bazelbuild/rules_python/pull/1240](https://togithub.com/bazelbuild/rules_python/pull/1240) - fix: make `import python.runfiles` work with `--experimental_python_import_all_repositories=false` by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1243](https://togithub.com/bazelbuild/rules_python/pull/1243) - feat(bzlmod): Moving register.toolchains internal by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1238](https://togithub.com/bazelbuild/rules_python/pull/1238) - docs(compile_pip_requirements): Add note on requirements.txt VC by [@​boomanaiden154](https://togithub.com/boomanaiden154) in [https://github.com/bazelbuild/rules_python/pull/1245](https://togithub.com/bazelbuild/rules_python/pull/1245) - cleanup: Set toolchain target_setting directly instead of via inline ternary by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1246](https://togithub.com/bazelbuild/rules_python/pull/1246) - fix(bzlmod): give precedence to the first seen versioned toolchain by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1244](https://togithub.com/bazelbuild/rules_python/pull/1244) - chore: add a pre-commit hook to maintain deleted packages by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1208](https://togithub.com/bazelbuild/rules_python/pull/1208) - chore: auto-publish gazelle module to BCR by [@​kormide](https://togithub.com/kormide) in [https://github.com/bazelbuild/rules_python/pull/1247](https://togithub.com/bazelbuild/rules_python/pull/1247) - fix(coverage): bump to latest coverage.py and fix import shadowing by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1249](https://togithub.com/bazelbuild/rules_python/pull/1249) - feat: add ppc64le releases and update to 3.10.11, 3.11.3 for python-build-standalone by [@​clnperez](https://togithub.com/clnperez) in [https://github.com/bazelbuild/rules_python/pull/1234](https://togithub.com/bazelbuild/rules_python/pull/1234) - fix(bzlmod)!: Remove ability to specify toolchain repo name. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1258](https://togithub.com/bazelbuild/rules_python/pull/1258) - fix: update correct requirements lock file when using os specific lock files by [@​Rasrack](https://togithub.com/Rasrack) in [https://github.com/bazelbuild/rules_python/pull/1123](https://togithub.com/bazelbuild/rules_python/pull/1123) - fix: use `only-binary` for `download_only` `pip download` by [@​lpulley](https://togithub.com/lpulley) in [https://github.com/bazelbuild/rules_python/pull/1219](https://togithub.com/bazelbuild/rules_python/pull/1219) - feat: Adding variable support for distribution in py_wheel by [@​ns-tkonduri](https://togithub.com/ns-tkonduri) in [https://github.com/bazelbuild/rules_python/pull/1251](https://togithub.com/bazelbuild/rules_python/pull/1251) - feat(bzlmod): Register a default toolchain by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1259](https://togithub.com/bazelbuild/rules_python/pull/1259) #### New Contributors - [@​boomanaiden154](https://togithub.com/boomanaiden154) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1245](https://togithub.com/bazelbuild/rules_python/pull/1245) - [@​clnperez](https://togithub.com/clnperez) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1234](https://togithub.com/bazelbuild/rules_python/pull/1234) - [@​lpulley](https://togithub.com/lpulley) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1219](https://togithub.com/bazelbuild/rules_python/pull/1219) - [@​ns-tkonduri](https://togithub.com/ns-tkonduri) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1251](https://togithub.com/bazelbuild/rules_python/pull/1251) **Full Changelog**: bazelbuild/rules_python@0.22.0...0.23.0 ### [`v0.22.0`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.22.0) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.21.0...0.22.0) #### Notable and Breaking Changes ##### Bzlmod extension paths have changed 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. ##### Lockfile output churn The output of lockfiles has slightly changed. Though functionally the same, their integrity hashes will change. *** #### Using Bzlmod with Bazel 6 NOTE: Bzlmod support is still in beta. Add to your `MODULE.bazel` file: ```starlark 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", ) ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` #### What's Changed - fix: remove reference to @​bazel_tools//tools/python/private:defs.bzl by [@​comius](https://togithub.com/comius) in [https://github.com/bazelbuild/rules_python/pull/1173](https://togithub.com/bazelbuild/rules_python/pull/1173) - docs: Tell how to use GitHub to find commits in an upcoming release. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1092](https://togithub.com/bazelbuild/rules_python/pull/1092) - fix: compile_pip_requirements test from external repositories by [@​Rasrack](https://togithub.com/Rasrack) in [https://github.com/bazelbuild/rules_python/pull/1124](https://togithub.com/bazelbuild/rules_python/pull/1124) - feat: add Python 3.8.16 by [@​jml-derek](https://togithub.com/jml-derek) in [https://github.com/bazelbuild/rules_python/pull/1168](https://togithub.com/bazelbuild/rules_python/pull/1168) - test: Set mac platform for test_mac_requires_darwin_for_execution by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1179](https://togithub.com/bazelbuild/rules_python/pull/1179) - fix: Don't reference deleted private bazel_tools bzl file by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1180](https://togithub.com/bazelbuild/rules_python/pull/1180) - docs: Add starlark directive to code snippet by [@​blorente](https://togithub.com/blorente) in [https://github.com/bazelbuild/rules_python/pull/1170](https://togithub.com/bazelbuild/rules_python/pull/1170) - tests: Upgrade rules_testing to 0.0.5 by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1184](https://togithub.com/bazelbuild/rules_python/pull/1184) - tests: Set linux platform for test_non_mac_doesnt_require_darwin_for_execution by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1183](https://togithub.com/bazelbuild/rules_python/pull/1183) - fix(bzlmod): correctly template repository macros for requirements, etc by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1190](https://togithub.com/bazelbuild/rules_python/pull/1190) - type:docs Update README.md by [@​yuanweixin](https://togithub.com/yuanweixin) in [https://github.com/bazelbuild/rules_python/pull/1186](https://togithub.com/bazelbuild/rules_python/pull/1186) - fix: Allow passing a tuple to the `tags` attribute. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1191](https://togithub.com/bazelbuild/rules_python/pull/1191) - tests: Add skylib to various test dependencies to fix CI by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1199](https://togithub.com/bazelbuild/rules_python/pull/1199) - feat: removing bzlmod from example by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1200](https://togithub.com/bazelbuild/rules_python/pull/1200) - feat: propagate visibility attribute for py_wheel publishing by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1203](https://togithub.com/bazelbuild/rules_python/pull/1203) - docs: fix typos in pip_repository docs by [@​martis42](https://togithub.com/martis42) in [https://github.com/bazelbuild/rules_python/pull/1202](https://togithub.com/bazelbuild/rules_python/pull/1202) - tests: Force analysis test labels to resolve within @​rules_python context by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1187](https://togithub.com/bazelbuild/rules_python/pull/1187) - fix(update_deleted_packages.sh): allow to run from anywhere in the repo by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1206](https://togithub.com/bazelbuild/rules_python/pull/1206) - feat(bzlmod): expose platform-agnostic repo target for toolchain interpreter by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1155](https://togithub.com/bazelbuild/rules_python/pull/1155) - fix(update_deleted_packages.sh): wheels example should not be included in .bazelrc by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1207](https://togithub.com/bazelbuild/rules_python/pull/1207) - fix: Strip trailing newline from python output by [@​illicitonion](https://togithub.com/illicitonion) in [https://github.com/bazelbuild/rules_python/pull/1212](https://togithub.com/bazelbuild/rules_python/pull/1212) - fix: manually ignore bazel-\* directories to make using custom Bazel builds easier by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1181](https://togithub.com/bazelbuild/rules_python/pull/1181) - test(bzlmod): explicitly enable bzlmod in the test harness by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1204](https://togithub.com/bazelbuild/rules_python/pull/1204) - feat(bzlmod): Cleaning up interpreter resolution by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1218](https://togithub.com/bazelbuild/rules_python/pull/1218) - feat(bzlmod)!: Move each bzlmod extension into its own file by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1226](https://togithub.com/bazelbuild/rules_python/pull/1226) - Adding bzlmod support document by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1214](https://togithub.com/bazelbuild/rules_python/pull/1214) - test(coverage): add a test to check the sys.path under bzlmod by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1223](https://togithub.com/bazelbuild/rules_python/pull/1223) - fix(toolchain): set correct return attrs to remove non-hermeticity warning by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1231](https://togithub.com/bazelbuild/rules_python/pull/1231) - fix: allow url fragments in requirements file by [@​mattoberle](https://togithub.com/mattoberle) in [https://github.com/bazelbuild/rules_python/pull/1195](https://togithub.com/bazelbuild/rules_python/pull/1195) - fix: `example/build_file_generation/README.md` by [@​ofey404](https://togithub.com/ofey404) in [https://github.com/bazelbuild/rules_python/pull/1164](https://togithub.com/bazelbuild/rules_python/pull/1164) - fix: Using canonical name in requirements.bzl by [@​linzhp](https://togithub.com/linzhp) in [https://github.com/bazelbuild/rules_python/pull/1176](https://togithub.com/bazelbuild/rules_python/pull/1176) - feat(bzlmod): support entry_point macro by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1220](https://togithub.com/bazelbuild/rules_python/pull/1220) #### New Contributors - [@​Rasrack](https://togithub.com/Rasrack) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1124](https://togithub.com/bazelbuild/rules_python/pull/1124) - [@​jml-derek](https://togithub.com/jml-derek) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1168](https://togithub.com/bazelbuild/rules_python/pull/1168) - [@​blorente](https://togithub.com/blorente) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1170](https://togithub.com/bazelbuild/rules_python/pull/1170) - [@​yuanweixin](https://togithub.com/yuanweixin) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1186](https://togithub.com/bazelbuild/rules_python/pull/1186) - [@​ofey404](https://togithub.com/ofey404) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1164](https://togithub.com/bazelbuild/rules_python/pull/1164) **Full Changelog**: bazelbuild/rules_python@0.21.0...0.22.0 ### [`v0.21.0`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.21.0) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.20.0...0.21.0) #### Using Bzlmod with Bazel 6 Add to your `MODULE.bazel` file: ```starlark 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", ) ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` #### What's Changed - cleanup: factor reexports.bzl into the respective implementation files by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1137](https://togithub.com/bazelbuild/rules_python/pull/1137) - fix: bump installer to handle windows better by [@​f0rmiga](https://togithub.com/f0rmiga) in [https://github.com/bazelbuild/rules_python/pull/1138](https://togithub.com/bazelbuild/rules_python/pull/1138) - build: Fixing buildifier by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1148](https://togithub.com/bazelbuild/rules_python/pull/1148) - docs: Updating documentation for bzlmod by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_python/pull/1149](https://togithub.com/bazelbuild/rules_python/pull/1149) - fix: use a consistent buildifier version for CI and pre-commit by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1151](https://togithub.com/bazelbuild/rules_python/pull/1151) - chore: bump buildifier to 6.1.0 by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1152](https://togithub.com/bazelbuild/rules_python/pull/1152) - fix: correct the labels returned by all_requirements lists by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1146](https://togithub.com/bazelbuild/rules_python/pull/1146) - fix: gazelle correctly adds new py_test rules by [@​amartani](https://togithub.com/amartani) in [https://github.com/bazelbuild/rules_python/pull/1143](https://togithub.com/bazelbuild/rules_python/pull/1143) - fix: respect kind mapping by [@​OniOni](https://togithub.com/OniOni) in [https://github.com/bazelbuild/rules_python/pull/1158](https://togithub.com/bazelbuild/rules_python/pull/1158) - test: cleanup gazelle tests and run them in parallel by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1159](https://togithub.com/bazelbuild/rules_python/pull/1159) - \[docs] Fixing rule name in coverage.md docs by [@​anfelbar](https://togithub.com/anfelbar) in [https://github.com/bazelbuild/rules_python/pull/1162](https://togithub.com/bazelbuild/rules_python/pull/1162) - feat: Support specifying multiple download URLs in tool_versions. by [@​quval](https://togithub.com/quval) in [https://github.com/bazelbuild/rules_python/pull/1145](https://togithub.com/bazelbuild/rules_python/pull/1145) #### New Contributors - [@​amartani](https://togithub.com/amartani) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1143](https://togithub.com/bazelbuild/rules_python/pull/1143) - [@​anfelbar](https://togithub.com/anfelbar) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1162](https://togithub.com/bazelbuild/rules_python/pull/1162) - [@​quval](https://togithub.com/quval) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1145](https://togithub.com/bazelbuild/rules_python/pull/1145) **Full Changelog**: bazelbuild/rules_python@0.20.0...0.21.0 ### [`v0.20.0`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.20.0) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.19.0...0.20.0) #### Using Bzlmod with Bazel 6 Add to your `MODULE.bazel` file: ```starlark 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", ) ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` #### What's Changed - chore: fix some lingering GH archive URLs by [@​alexeagle](https://togithub.com/alexeagle) in [https://github.com/bazelbuild/rules_python/pull/1108](https://togithub.com/bazelbuild/rules_python/pull/1108) - feat: add bzlmod support for gazelle plugin by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1077](https://togithub.com/bazelbuild/rules_python/pull/1077) - docs: Simplify pull request template by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1100](https://togithub.com/bazelbuild/rules_python/pull/1100) - chore: fix syntax that stardoc misunderstands as HTML by [@​alexeagle](https://togithub.com/alexeagle) in [https://github.com/bazelbuild/rules_python/pull/1110](https://togithub.com/bazelbuild/rules_python/pull/1110) - fix: update gazelle to properly handle dot in package name. by [@​OniOni](https://togithub.com/OniOni) in [https://github.com/bazelbuild/rules_python/pull/1083](https://togithub.com/bazelbuild/rules_python/pull/1083) - fix(bzlmod): expose ignore_root_user_error attribute from python_register_toolchains by [@​alexeagle](https://togithub.com/alexeagle) in [https://github.com/bazelbuild/rules_python/pull/1114](https://togithub.com/bazelbuild/rules_python/pull/1114) - feat: add bzl_library for defs.bzl and its dependencies by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1115](https://togithub.com/bazelbuild/rules_python/pull/1115) - fix: docs for ignore_root_user_error at the module level by [@​stonier](https://togithub.com/stonier) in [https://github.com/bazelbuild/rules_python/pull/1112](https://togithub.com/bazelbuild/rules_python/pull/1112) - fix: generation of toolchain aliases //:defs.bzl file. by [@​oxidase](https://togithub.com/oxidase) in [https://github.com/bazelbuild/rules_python/pull/1088](https://togithub.com/bazelbuild/rules_python/pull/1088) - feat: make variable substitution for py_wheel abi, python_tag args by [@​stonier](https://togithub.com/stonier) in [https://github.com/bazelbuild/rules_python/pull/1113](https://togithub.com/bazelbuild/rules_python/pull/1113) - feat: add bzl_library for proto.bzl by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1116](https://togithub.com/bazelbuild/rules_python/pull/1116) - cleanup: Remove license comment in proto build file by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1118](https://togithub.com/bazelbuild/rules_python/pull/1118) - fix: restrict proto package visibility to private by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1117](https://togithub.com/bazelbuild/rules_python/pull/1117) - cleanup: rename proto BUILD -> BUILD.bazel by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1119](https://togithub.com/bazelbuild/rules_python/pull/1119) - feat: bzl file per rule/provider by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1122](https://togithub.com/bazelbuild/rules_python/pull/1122) - cleanup: fix typo: libraries, not libaries by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1127](https://togithub.com/bazelbuild/rules_python/pull/1127) - feat: add public entry point for PyCcLinkParamsInfo by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1128](https://togithub.com/bazelbuild/rules_python/pull/1128) - cleanup: reformat defs.bzl doc string. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1126](https://togithub.com/bazelbuild/rules_python/pull/1126) - fix: Include filename when parsing imports for gazelle by [@​jlaxson](https://togithub.com/jlaxson) in [https://github.com/bazelbuild/rules_python/pull/1133](https://togithub.com/bazelbuild/rules_python/pull/1133) #### New Contributors - [@​OniOni](https://togithub.com/OniOni) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1083](https://togithub.com/bazelbuild/rules_python/pull/1083) - [@​stonier](https://togithub.com/stonier) made their first contribution in [https://github.com/bazelbuild/rules_python/pull/1112](https://togithub.com/bazelbuild/rules_python/pull/1112) **Full Changelog**: bazelbuild/rules_python@0.19.0...0.20.0 ### [`v0.19.0`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.19.0) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.18.1...0.19.0) #### Using Bzlmod with Bazel 6 Add to your `MODULE.bazel` file: ```starlark 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", ) ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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", ) ``` #### What's Changed - Making exclusions more strict by [@​linzhp](https://togithub.com/linzhp) in [https://github.com/bazelbuild/rules_python/pull/1054](https://togithub.com/bazelbuild/rules_python/pull/1054) - docs: fix requirement line for runfiles example by [@​alexeagle](https://togithub.com/alexeagle) in [https://github.com/bazelbuild/rules_python/pull/1052](https://togithub.com/bazelbuild/rules_python/pull/1052) - fix: make py_proto_library respect PyInfo imports by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1046](https://togithub.com/bazelbuild/rules_python/pull/1046) - Make toolchain acceptance tests work with latest Bazel build CI pipeline by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1062](https://togithub.com/bazelbuild/rules_python/pull/1062) - Only set `py_runtime.coverage_tool` for Bazel 6 and higher. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1061](https://togithub.com/bazelbuild/rules_python/pull/1061) - Allow building with unreleased Bazel versions. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1063](https://togithub.com/bazelbuild/rules_python/pull/1063) - Extending server process timeout by [@​linzhp](https://togithub.com/linzhp) in [https://github.com/bazelbuild/rules_python/pull/1060](https://togithub.com/bazelbuild/rules_python/pull/1060) - chore: regenerate gazelle_python.yaml manifest by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1066](https://togithub.com/bazelbuild/rules_python/pull/1066) - feat: wheel publishing by [@​alexeagle](https://togithub.com/alexeagle) in [https://github.com/bazelbuild/rules_python/pull/1015](https://togithub.com/bazelbuild/rules_python/pull/1015) - fix: checked-in requirements imports generated requirements by [@​f0rmiga](https://togithub.com/f0rmiga) in [https://github.com/bazelbuild/rules_python/pull/1053](https://togithub.com/bazelbuild/rules_python/pull/1053) - fix: Propagate testonly et al for wheel `.dist` targets by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1064](https://togithub.com/bazelbuild/rules_python/pull/1064) - fix: correctly advertise minimum supported version by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1065](https://togithub.com/bazelbuild/rules_python/pull/1065) - refactor: starlark reimplementation of pip_repository by [@​aignas](https://togithub.com/aignas) in [https://github.com/bazelbuild/rules_python/pull/1043](https://togithub.com/bazelbuild/rules_python/pull/1043) - Add some docs about how to configure coverage. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1074](https://togithub.com/bazelbuild/rules_python/pull/1074) - Remove empty line between copyright and build file docstring. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1084](https://togithub.com/bazelbuild/rules_python/pull/1084) - cleanup: Remove license type comment; they're no longer required by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1078](https://togithub.com/bazelbuild/rules_python/pull/1078) - fix: Use GitHub download URL for BCR URL instead of archive URL. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1093](https://togithub.com/bazelbuild/rules_python/pull/1093) - Add a script to add missing license headers by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1094](https://togithub.com/bazelbuild/rules_python/pull/1094) - fix: Update pre-commit dependency versions so isort works. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1096](https://togithub.com/bazelbuild/rules_python/pull/1096) - docs: doc that the Conventional Commit style should be used for merged commits and PRs by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1099](https://togithub.com/bazelbuild/rules_python/pull/1099) - test(core): Add analysis tests for base Python rules. by [@​rickeylev](https://togithub.com/rickeylev) in [https://github.com/bazelbuild/rules_python/pull/1102](https://togithub.com/bazelbuild/rules_python/pull/1102) **Full Changelog**: bazelbuild/rules_python@0.18.0...0.19.0 ### [`v0.18.1`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.18.1) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.18.0...0.18.1) #### Using Bzlmod with Bazel 6 Add to your `MODULE.bazel` file: ```starlark 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", ) ``` #### Using WORKSPACE Paste this snippet into your `WORKSPACE` file: ```starlark 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() ``` ##### Gazelle plugin Paste this snippet into your `WORKSPACE` file: ```starlark 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", ) ``` ### Relevant Changes - Only set `py_runtime.coverage_tool` for Bazel 6 and higher. ([#​1061](https://togithub.com/bazelbuild/rules_python/issues/1061)) **Full Changelog**: bazelbuild/rules_python@0.18.0...0.18.1 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/aspect-build/rules_py). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi45Ny4xIiwidXBkYXRlZEluVmVyIjoiMzcuNDYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This allows the
distribution
attribute to expand workspace status keys, just as theversion
attribute can.This allows, for example, the VCS's branch name (e.g test, release, etc) to be part of the
distribution name without having to modify the BUILD file. Having distinct distribution
names is necessary because tools like pip-compile, which determine version compatibility
and replacements, and having the same distribution name would mean the different builds
are seen as equivalent.
Closes #1250