bazel-contrib / bazel-mypy-integration

πŸπŸŒΏπŸ’š Integrate MyPy type-checking into your Python Bazel builds
MIT License
118 stars 44 forks source link

chore(deps): update dependency rules_python to v0.35.0 #99

Open renovate[bot] opened 7 months ago

renovate[bot] commented 7 months ago

This PR contains the following updates:

Package Type Update Change
rules_python bazel_dep minor 0.27.1 -> 0.35.0
rules_python http_archive minor 0.27.1 -> 0.35.0

Release Notes

bazelbuild/rules_python (rules_python) ### [`v0.35.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0350---2024-08-15) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.34.0...0.35.0) [0.35.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.35.0 ##### Changed - (whl_library) A better log message when the wheel is built from an sdist or when the wheel is downloaded using `download_only` feature to aid debugging. - (gazelle): Simplify and make gazelle_python.yaml have only top level package name. It would work well in cases to reduce merge conflicts. - (toolchains): Change some old toochain versions to use [20240726] release to include dependency updates `3.8.19`, `3.9.19`, `3.10.14`, `3.11.9` - (toolchains): Bump default toolchain versions to: - `3.12 -> 3.12.4` - (rules) `PYTHONSAFEPATH` is inherited from the calling environment to allow disabling it (Requires {obj}`--bootstrap_impl=script`) ([#​2060](https://togithub.com/bazelbuild/rules_python/issues/2060)). ##### Fixed - (rules) `compile_pip_requirements` now sets the `USERPROFILE` env variable on Windows to work around an issue where `setuptools` fails to locate the user's home directory. - (rules) correctly handle absolute URLs in parse_simpleapi_html.bzl. - (rules) Fixes build targets linking against `@rules_python//python/cc:current_py_cc_libs` in host platform builds on macOS, by editing the `LC_ID_DYLIB` field of the hermetic interpreter's `libpython3.x.dylib` using `install_name_tool`, setting it to its absolute path under Bazel's execroot. - (rules) Signals are properly received when using {obj}`--bootstrap_impl=script` (for non-zip builds). ([#​2043](https://togithub.com/bazelbuild/rules_python/issues/2043)) - (rules) Fixes Python builds when the `--build_python_zip` is set to `false` on Windows. See [#​1840](https://togithub.com/bazelbuild/rules_python/issues/1840). - (rules) Fixes Mac + `--build_python_zip` + {obj}`--bootstrap_impl=script` ([#​2030](https://togithub.com/bazelbuild/rules_python/issues/2030)). - (rules) User dependencies come before runtime site-packages when using {obj}`--bootstrap_impl=script`. ([#​2064](https://togithub.com/bazelbuild/rules_python/issues/2064)). - (rules) Version-aware rules now return both `@_builtins` and `@rules_python` providers instead of only one. ([#​2114](https://togithub.com/bazelbuild/rules_python/issues/2114)). - (pip) Fixed pypi parse_simpleapi_html function for feeds with package metadata containing ">" sign - (toolchains) Added missing executable permission to `//python/runtime_env_toolchains` interpreter script so that it is runnable. ([#​2085](https://togithub.com/bazelbuild/rules_python/issues/2085)). - (pip) Correctly use the `sdist` downloaded by the bazel downloader when using `experimental_index_url` feature. Fixes [#​2091](https://togithub.com/bazelbuild/rules_python/issues/2090). - (gazelle) Make `gazelle_python_manifest.update` manual to avoid unnecessary network behavior. - (bzlmod): The conflicting toolchains during `python` extension will no longer cause warnings by default. In order to see the warnings for diagnostic purposes set the env var `RULES_PYTHON_REPO_DEBUG_VERBOSITY` to one of `INFO`, `DEBUG` or `TRACE`. Fixes [#​1818](https://togithub.com/bazelbuild/rules_python/issues/1818). - (runfiles) Make runfiles lookups work for the situation of Bazel 7, Python 3.9 (or earlier, where safepath isn't present), and the Rlocation call in the same directory as the main file. Fixes [#​1631](https://togithub.com/bazelbuild/rules_python/issues/1631). ##### Added - (rules) `compile_pip_requirements` supports multiple requirements input files as `srcs`. - (rules) `PYTHONSAFEPATH` is inherited from the calling environment to allow disabling it (Requires {obj}`--bootstrap_impl=script`) ([#​2060](https://togithub.com/bazelbuild/rules_python/issues/2060)). - (gazelle) Added `python_generation_mode_per_package_require_test_entry_point` in order to better accommodate users who use a custom macro, [`pytest-bazel`][pytest_bazel], [rules_python_pytest] or `rules_py` [py_test_main] in order to integrate with `pytest`. Currently the default flag value is set to `true` for backwards compatible behaviour, but in the future the flag will be flipped be `false` by default. - (toolchains) New Python versions available: `3.12.4` using the [20240726] release. - (pypi) Support env markers in requirements files. Note, that this means that if your requirements files contain env markers, the Python interpreter will need to be run during bzlmod phase to evaluate them. This may incur downloading an interpreter (for hermetic-based builds) or cause non-hermetic behavior (if using a system Python). [rules_python_pytest]: https://togithub.com/caseyduquettesc/rules_python_pytest [py_test_main]: https://docs.aspect.build/rulesets/aspect_rules_py/docs/rules/#py_pytest_main [pytest_bazel]: https://pypi.org/project/pytest-bazel [20240726]: https://togithub.com/indygreg/python-build-standalone/releases/tag/20240726 ### [`v0.34.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0340---2024-07-04) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.33.2...0.34.0) [0.34.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.34.0 ##### Changed - `protobuf`/`com_google_protobuf` dependency bumped to `v24.4` - (bzlmod): optimize the creation of config settings used in pip to reduce the total number of targets in the hub repo. - (toolchains) The exec tools toolchain now finds its interpreter by reusing the regular interpreter toolchain. This avoids having to duplicate specifying where the runtime for the exec tools toolchain is. - (toolchains) ({obj}`//python:autodetecting_toolchain`) is deprecated. It is replaced by {obj}`//python/runtime_env_toolchains:all`. The old target will be removed in a future release. ##### Fixed - (bzlmod): When using `experimental_index_url` the `all_requirements`, `all_whl_requirements` and `all_data_requirements` will now only include common packages that are available on all target platforms. This is to ensure that packages that are only present for some platforms are pulled only via the `deps` of the materialized `py_library`. If you would like to include platform specific packages, using a `select` statement with references to the specific package will still work (e.g. my_attr = all_requirements + select( { "@​platforms//os:linux": ["@​pypi//foo_available_only_on_linux"], "//conditions:default": [], } ) - (bzlmod): Targets in `all_requirements` now use the same form as targets returned by the `requirement` macro. - (rules) Auto exec groups are enabled. This allows actions run by the rules, such as precompiling, to pick an execution platform separately from what other toolchains support. - (providers) {obj}`PyRuntimeInfo` doesn't require passing the `interpreter_version_info` arg. - (bzlmod) Correctly pass `isolated`, `quiet` and `timeout` values to `whl_library` and drop the defaults from the lock file. - (whl_library) Correctly handle arch-specific dependencies when we encounter a platform specific wheel and use `experimental_target_platforms`. Fixes [#​1996](https://togithub.com/bazelbuild/rules_python/issues/1996). - (rules) The first element of the default outputs is now the executable again. - (pip) Fixed crash when pypi packages lacked a sha (e.g. yanked packages) ##### Added - (toolchains) {obj}`//python/runtime_env_toolchains:all`, which is a drop-in replacement for the "autodetecting" toolchain. - (gazelle) Added new `python_label_convention` and `python_label_normalization` directives. These directive allows altering default Gazelle label format to third-party dependencies useful for re-using Gazelle plugin with other rules, including `rules_pycross`. See [#​1939](https://togithub.com/bazelbuild/rules_python/issues/1939). ##### Removed - (pip): Removes the `entrypoint` macro that was replaced by `py_console_script_binary` in 0.26.0. ### [`v0.33.2`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0332---2024-06-13) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.33.1...0.33.2) [0.33.2]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.33.2 ##### Fixed - (toolchains) The {obj}`exec_tools_toolchain_type` is disabled by default. To enable it, set {obj}`--//python/config_settings:exec_tools_toolchain=enabled`. This toolchain must be enabled for precompilation to work. This toolchain will be enabled by default in a future release. Fixes [#​1967](https://togithub.com/bazelbuild/rules_python/issues/1967). ### [`v0.33.1`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0331---2024-06-13) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.33.0...0.33.1) [0.33.1]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.33.1 ##### Fixed - (py_binary) Fix building of zip file when using `--build_python_zip` argument. Fixes [#​1954](https://togithub.com/bazelbuild/rules_python/issues/1954). ### [`v0.33.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0330---2024-06-12) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.32.2...0.33.0) [0.33.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.33.0 ##### Changed - (deps) Upgrade the `pip_install` dependencies to pick up a new version of pip. - (toolchains) Optional toolchain dependency: `py_binary`, `py_test`, and `py_library` now depend on the `//python:exec_tools_toolchain_type` for build tools. - (deps): Bumped `bazel_skylib` to 1.6.1. - (bzlmod): The `python` and internal `rules_python` extensions have been marked as `reproducible` and will not include any lock file entries from now on. - (gazelle): Remove gazelle plugin's python deps and make it hermetic. Introduced a new Go-based helper leveraging tree-sitter for syntax analysis. Implemented the use of `pypi/stdlib-list` for standard library module verification. - (pip.parse): Do not ignore yanked packages when using `experimental_index_url`. This is to mimic what `uv` is doing. We will print a warning instead. - (pip.parse): Add references to all supported wheels when using `experimental_index_url` to allowing to correctly fetch the wheels for the right platform. See the updated docs on how to use the feature. This is work towards addressing [#​735](https://togithub.com/bazelbuild/rules_python/issues/735) and [#​260](https://togithub.com/bazelbuild/rules_python/issues/260). The spoke repository names when using this flag will have a structure of `{pip_hub_prefix}_{wheel_name}_{py_tag}_{abi_tag}_{platform_tag}_{sha256}`, which is an implementation detail which should not be relied on and is there purely for better debugging experience. - (bzlmod) The `pythons_hub//:interpreters.bzl` no longer has platform-specific labels which where left there for compatibility reasons. Move to `python_{version}_host` keys if you would like to have access to a Python interpreter that can be used in a repository rule context. ##### Fixed - (gazelle) Remove `visibility` from `NonEmptyAttr`. Now empty(have no `deps/main/srcs/imports` attr) `py_library/test/binary` rules will be automatically deleted correctly. For example, if `python_generation_mode` is set to package, when `__init__.py` is deleted, the `py_library` generated for this package before will be deleted automatically. - (whl_library): Use `is_python_config_setting` to correctly handle multi-python version dependency select statements when the `experimental_target_platforms` includes the Python ABI. The default python version case within the select is also now handled correctly, stabilizing the implementation. - (gazelle) Fix Gazelle failing on Windows with "panic: runtime error: invalid memory address or nil pointer dereference" - (bzlmod) remove `pip.parse(annotations)` attribute as it is unused and has been replaced by whl_modifications. - (pip) Correctly select wheels when the python tag includes minor versions. See ([#​1930](https://togithub.com/bazelbuild/rules_python/issues/1930)) - (pip.parse): The lock file is now reproducible on any host platform if the `experimental_index_url` is not used by any of the modules in the dependency chain. To make the lock file identical on each `os` and `arch`, please use the `experimental_index_url` feature which will fetch metadata from PyPI or a different private index and write the contents to the lock file. Fixes [#​1643](https://togithub.com/bazelbuild/rules_python/issues/1643). - (pip.parse): Install `yanked` packages and print a warning instead of ignoring them. This better matches the behaviour of `uv pip install`. - (toolchains): Now matching of the default hermetic toolchain is more robust and explicit and should fix rare edge-cases where the host toolchain autodetection would match a different toolchain than expected. This may yield to toolchain selection failures when the python toolchain is not registered, but is requested via `//python/config_settings:python_version` flag setting. - (doc) Fix the `WORKSPACE` requirement vendoring example. Fixes [#​1918](https://togithub.com/bazelbuild/rules_python/issues/1918). ##### Added - (rules) Precompiling Python source at build time is available. but is disabled by default, for now. Set `@rules_python//python/config_settings:precompile=enabled` to enable it by default. A subsequent release will enable it by default. See the [Precompiling docs][precompile-docs] and API reference docs for more information on precompiling. Note this requires Bazel 7+ and the Pystar rule implementation enabled. ([#​1761](https://togithub.com/bazelbuild/rules_python/issues/1761)) - (rules) Attributes and flags to control precompile behavior: `precompile`, `precompile_optimize_level`, `precompile_source_retention`, `precompile_invalidation_mode`, and `pyc_collection` - (toolchains) The target runtime toolchain (`//python:toolchain_type`) has two new optional attributes: `pyc_tag` (tells the pyc filename infix to use) and `implementation_name` (tells the Python implementation name). - (toolchains) A toolchain type for build tools has been added: `//python:exec_tools_toolchain_type`. - (providers) `PyInfo` has two new attributes: `direct_pyc_files` and `transitive_pyc_files`, which tell the pyc files a target makes available directly and transitively, respectively. - `//python:features.bzl` added to allow easy feature-detection in the future. - (pip) Allow specifying the requirements by (os, arch) and add extra validations when parsing the inputs. This is a non-breaking change for most users unless they have been passing multiple `requirements_*` files together with `extra_pip_args = ["--platform=manylinux_2_4_x86_64"]`, that was an invalid usage previously but we were not failing the build. From now on this is explicitly disallowed. - (toolchains) Added riscv64 platform definition for python toolchains. - (gazelle) The `python_visibility` directive now supports the `$python_root$` placeholder, just like the `python_default_visibility` directive does. - (rules) A new bootstrap implementation that doesn't require a system Python is available. It can be enabled by setting {obj}`--@​rules_python//python/config_settings:bootstrap_impl=script`. It will become the default in a subsequent release. ([#​691](https://togithub.com/bazelbuild/rules_python/issues/691)) - (providers) `PyRuntimeInfo` has two new attributes: {obj}`PyRuntimeInfo.stage2_bootstrap_template` and {obj}`PyRuntimeInfo.zip_main_template`. - (toolchains) A replacement for the Bazel-builtn autodetecting toolchain is available. The `//python:autodetecting_toolchain` alias now uses it. - (pip): Support fetching and using the wheels for other platforms. This supports customizing whether the linux wheels are pulled for `musl` or `glibc`, whether `universal2` or arch-specific MacOS wheels are preferred and it also allows to select a particular `libc` version. All of this is done via the `string_flags` in `@rules_python//python/config_settings`. If there are no wheels that are supported for the target platform, `rules_python` will fallback onto building the `sdist` from source. This behaviour can be disabled if desired using one of the available string flags as well. - (whl_filegroup) Added a new `whl_filegroup` rule to extract files from a wheel file. This is useful to extract headers for use in a `cc_library`. [precompile-docs]: /precompiling ### [`v0.32.2`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0322---2024-05-14) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.32.1...0.32.2) [0.32.2]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.32.2 ##### Fixed - Workaround existence of infinite symlink loops on case insensitive filesystems when targeting linux platforms with recent Python toolchains. Works around an upstream [issue][indygreg-231]. Fixes [#​1800][rules_python_1800]. [indygreg-231]: https://togithub.com/indygreg/python-build-standalone/issues/231 [rules_python_1800]: https://togithub.com/bazelbuild/rules_python/issues/1800 ### [`v0.32.1`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.32.1) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.32.0...0.32.1) ##### Using Bzlmod with Bazel 6 **NOTE: bzlmod support is still beta. APIs subject to change.** Add to your `MODULE.bazel` file: ```starlark bazel_dep(name = "rules_python", version = "0.32.1") pip = use_extension("@​rules_python//python/extensions:pip.bzl", "pip") pip.parse( hub_name = "pip", python_version = "3.11", requirements_lock = "//:requirements_lock.txt", ) use_repo(pip, "pip") ``` ##### 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 = "b289b0b023c71b80f26d39476e5e2c3cf72d21cb2759bcf02638ba3cc480e9df", strip_prefix = "rules_python-0.32.1", url = "https://github.com/bazelbuild/rules_python/releases/download/0.32.1/rules_python-0.32.1.tar.gz", ) load("@​rules_python//python:repositories.bzl", "py_repositories") py_repositories() ``` ##### 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 = "b289b0b023c71b80f26d39476e5e2c3cf72d21cb2759bcf02638ba3cc480e9df", strip_prefix = "rules_python-0.32.1/gazelle", url = "https://github.com/bazelbuild/rules_python/releases/download/0.32.1/rules_python-0.32.1.tar.gz", ) ##### To compile the rules_python gazelle extension from source, ##### we must fetch some third-party go dependencies that it uses. load("@​rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps") _py_gazelle_deps() ``` ##### What's Changed ##### Changed - (bzlmod): The `MODULE.bazel.lock` `whl_library` rule attributes are now sorted in the attributes section. We are also removing values that are not default in order to reduce the size of the lock file. - (coverage) Bump `coverage.py` to [7.4.3](https://togithub.com/nedbat/coveragepy/blob/master/CHANGES.rst#version-743--2024-02-23). - (deps): Bumped bazel_features to 1.9.1 to detect optional support non-blocking downloads. - (deps): Updated `pip_tools` to >= 7.4.0 - (toolchains): Change some old toolchain versions to use [20240224] release to include security fixes `3.8.18`, `3.9.18` and `3.10.13` - (toolchains): Bump default toolchain versions to: - `3.8 -> 3.8.19` - `3.9 -> 3.9.19` - `3.10 -> 3.10.14` - `3.11 -> 3.11.9` - `3.12 -> 3.12.3` ##### Fixed - (whl_library): Fix the experimental_target_platforms overriding for platform specific wheels when the wheels are for any python interpreter version. Fixes [#​1810](https://togithub.com/bazelbuild/rules_python/issues/1810). - (whl_library): Stop generating duplicate dependencies when encountering duplicates in the METADATA. Fixes [#​1873](https://togithub.com/bazelbuild/rules_python/issues/1873). - (gazelle) In `project` or `package` generation modes, do not generate `py_test` rules when there are no test files and do not set `main = "__test__.py"` when that file doesn't exist. - (whl_library) The group redirection is only added when the package is part of the group potentially fixing aspects that want to traverse a `py_library` graph. Fixes [#​1760](https://togithub.com/bazelbuild/rules_python/issues/1760). - (bzlmod) Setting a particular micro version for the interpreter and the `pip.parse` extension is now possible, see the `examples/pip_parse/MODULE.bazel` for how to do it. See [#​1371](https://togithub.com/bazelbuild/rules_python/issues/1371). - (refactor) The pre-commit developer workflow should now pass `isort` and `black` checks (see [#​1674](https://togithub.com/bazelbuild/rules_python/issues/1674)). ##### Added - (toolchains) Added armv7 platform definition for python toolchains. - (toolchains) New Python versions available: `3.11.8`, `3.12.2` using the [20240224] release. - (toolchains) New Python versions available: `3.8.19`, `3.9.19`, `3.10.14`, `3.11.9`, `3.12.3` using the [20240415] release. - (gazelle) Added a new `python_visibility` directive to control visibility of generated targets by appending additional visibility labels. - (gazelle) Added a new `python_default_visibility` directive to control the *default* visibility of generated targets. See the [docs][python_default_visibility] for details. - (gazelle) Added a new `python_test_file_pattern` directive. This directive tells gazelle which python files should be mapped to the `py_test` rule. See the [original issue][test_file_pattern_issue] and the [docs][test_file_pattern_docs] for details. - (wheel) Add support for `data_files` attributes in py_wheel rule ([#​1777](https://togithub.com/bazelbuild/rules_python/issues/1777)) - (py_wheel) `bzlmod` installations now provide a `twine` setup for the default Python toolchain in `rules_python` for version 3.11. - (bzlmod) New `experimental_index_url`, `experimental_extra_index_urls` and `experimental_index_url_overrides` to `pip.parse` for using the bazel downloader. If you see any issues, report in [#​1357](https://togithub.com/bazelbuild/rules_python/issues/1357). The URLs for the whl and sdist files will be written to the lock file. Controlling whether the downloading of metadata is done in parallel can be done using `parallel_download` attribute. - (gazelle) Add a new annotation `include_dep`. Also add documentation for annotations to `gazelle/README.md`. - (deps): `rules_python` depends now on `rules_cc` 0.0.9 - (pip_parse): A new flag `use_hub_alias_dependencies` has been added that is going to become default in the next release. This makes use of `dep_template` flag in the `whl_library` rule. This also affects the `experimental_requirement_cycles` feature where the dependencies that are in a group would be only accessible via the hub repo aliases. If you still depend on legacy labels instead of the hub repo aliases and you use the `experimental_requirement_cycles`, now is a good time to migrate. [python_default_visibility]: gazelle/README.md#directive-python_default_visibility [test_file_pattern_issue]: https://togithub.com/bazelbuild/rules_python/issues/1816 [test_file_pattern_docs]: gazelle/README.md#directive-python_test_file_pattern [20240224]: https://togithub.com/indygreg/python-build-standalone/releases/tag/20240224. [20240415]: https://togithub.com/indygreg/python-build-standalone/releases/tag/20240415. **Full Changelog**: https://github.com/bazelbuild/rules_python/compare/0.32.0...0.32.1 ### [`v0.32.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0320---2024-05-12) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.31.0...0.32.0) [0.32.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.32.0 ##### Changed - (bzlmod): The `MODULE.bazel.lock` `whl_library` rule attributes are now sorted in the attributes section. We are also removing values that are not default in order to reduce the size of the lock file. - (coverage) Bump `coverage.py` to [7.4.3](https://togithub.com/nedbat/coveragepy/blob/master/CHANGES.rst#version-743--2024-02-23). - (deps): Bumped `bazel_features` to 1.9.1 to detect optional support non-blocking downloads. - (deps): Updated `pip_tools` to >= 7.4.0 - (toolchains): Change some old toolchain versions to use [20240224] release to include security fixes `3.8.18`, `3.9.18` and `3.10.13` - (toolchains): Bump default toolchain versions to: - `3.8 -> 3.8.19` - `3.9 -> 3.9.19` - `3.10 -> 3.10.14` - `3.11 -> 3.11.9` - `3.12 -> 3.12.3` ##### Fixed - (whl_library): Fix the experimental_target_platforms overriding for platform specific wheels when the wheels are for any python interpreter version. Fixes [#​1810](https://togithub.com/bazelbuild/rules_python/issues/1810). - (whl_library): Stop generating duplicate dependencies when encountering duplicates in the METADATA. Fixes [#​1873](https://togithub.com/bazelbuild/rules_python/issues/1873). - (gazelle) In `project` or `package` generation modes, do not generate `py_test` rules when there are no test files and do not set `main = "__test__.py"` when that file doesn't exist. - (whl_library) The group redirection is only added when the package is part of the group potentially fixing aspects that want to traverse a `py_library` graph. Fixes [#​1760](https://togithub.com/bazelbuild/rules_python/issues/1760). - (bzlmod) Setting a particular micro version for the interpreter and the `pip.parse` extension is now possible, see the `examples/pip_parse/MODULE.bazel` for how to do it. See [#​1371](https://togithub.com/bazelbuild/rules_python/issues/1371). - (refactor) The pre-commit developer workflow should now pass `isort` and `black` checks (see [#​1674](https://togithub.com/bazelbuild/rules_python/issues/1674)). ##### Added - (toolchains) Added armv7 platform definition for python toolchains. - (toolchains) New Python versions available: `3.11.8`, `3.12.2` using the [20240224] release. - (toolchains) New Python versions available: `3.8.19`, `3.9.19`, `3.10.14`, `3.11.9`, `3.12.3` using the [20240415] release. - (gazelle) Added a new `python_visibility` directive to control visibility of generated targets by appending additional visibility labels. - (gazelle) Added a new `python_default_visibility` directive to control the *default* visibility of generated targets. See the [docs][python_default_visibility] for details. - (gazelle) Added a new `python_test_file_pattern` directive. This directive tells gazelle which python files should be mapped to the `py_test` rule. See the [original issue][test_file_pattern_issue] and the [docs][test_file_pattern_docs] for details. - (wheel) Add support for `data_files` attributes in py_wheel rule ([#​1777](https://togithub.com/bazelbuild/rules_python/issues/1777)) - (py_wheel) `bzlmod` installations now provide a `twine` setup for the default Python toolchain in `rules_python` for version 3.11. - (bzlmod) New `experimental_index_url`, `experimental_extra_index_urls` and `experimental_index_url_overrides` to `pip.parse` for using the bazel downloader. If you see any issues, report in [#​1357](https://togithub.com/bazelbuild/rules_python/issues/1357). The URLs for the whl and sdist files will be written to the lock file. Controlling whether the downloading of metadata is done in parallel can be done using `parallel_download` attribute. - (gazelle) Add a new annotation `include_dep`. Also add documentation for annotations to `gazelle/README.md`. - (deps): `rules_python` depends now on `rules_cc` 0.0.9 - (pip_parse): A new flag `use_hub_alias_dependencies` has been added that is going to become default in the next release. This makes use of `dep_template` flag in the `whl_library` rule. This also affects the `experimental_requirement_cycles` feature where the dependencies that are in a group would be only accessible via the hub repo aliases. If you still depend on legacy labels instead of the hub repo aliases and you use the `experimental_requirement_cycles`, now is a good time to migrate. [python_default_visibility]: gazelle/README.md#directive-python_default_visibility [test_file_pattern_issue]: https://togithub.com/bazelbuild/rules_python/issues/1816 [test_file_pattern_docs]: gazelle/README.md#directive-python_test_file_pattern [20240224]: https://togithub.com/indygreg/python-build-standalone/releases/tag/20240224. [20240415]: https://togithub.com/indygreg/python-build-standalone/releases/tag/20240415. ### [`v0.31.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0310---2024-02-12) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.30.0...0.31.0) [0.31.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.31.0 ##### Changed - For Bazel 7, the core rules and providers are now implemented in rules_python directly and the rules bundled with Bazel are not used. Bazel 6 and earlier continue to use the Bazel builtin symbols. Of particular note, this means, under Bazel 7, the builtin global symbol `PyInfo` is **not** the same as what is loaded from rules_python. The same is true of `PyRuntimeInfo`. ### [`v0.30.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0300---2024-02-12) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.29.0...0.30.0) [0.30.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.30.0 ##### Changed - (toolchains) Windows hosts always ignore pyc files in the downloaded runtimes. This fixes issues due to pyc files being created at runtime and affecting the definition of what files were considered part of the runtime. - (pip_parse) Added the `envsubst` parameter, which enables environment variable substitutions in the `extra_pip_args` attribute. - (pip_repository) Added the `envsubst` parameter, which enables environment variable substitutions in the `extra_pip_args` attribute. ##### Fixed - (bzlmod) pip.parse now does not fail with an empty `requirements.txt`. - (py_wheel) Wheels generated by `py_wheel` now preserve executable bits when being extracted by `installer` and/or `pip`. - (coverage) During the running of lcov, the stdout/stderr was causing test failures. By default, suppress output when generating lcov. This can be overridden by setting 'VERBOSE_COVERAGE'. This change only affect bazel 7.x.x and above. - (toolchain) Changed the `host_toolchain` to symlink all files to support Windows host environments without symlink support. - (PyRuntimeInfo) Switch back to builtin PyRuntimeInfo for Bazel 6.4 and when pystar is disabled. This fixes an error about `target ... does not have ... PyRuntimeInfo`. ([#​1732](https://togithub.com/bazelbuild/rules_python/issues/1732)) ##### Added - (py_wheel) Added `requires_file` and `extra_requires_files` attributes. - (whl_library) *experimental_target_platforms* now supports specifying the Python version explicitly and the output `BUILD.bazel` file will be correct irrespective of the python interpreter that is generating the file and extracting the `whl` distribution. Multiple python target version can be specified and the code generation will generate version specific dependency closures but that is not yet ready to be used and may break the build if the default python version is not selected using `common --@​rules_python//python/config_settings:python_version=X.Y.Z`. - New Python versions available: `3.11.7`, `3.12.1` using https://github.com/indygreg/python-build-standalone/releases/tag/20240107. - (toolchain) Allow setting `x.y` as the `python_version` parameter in the version-aware `py_binary` and `py_test` rules. This allows users to use the same rule import for testing with specific Python versions and rely on toolchain configuration and how the latest version takes precedence if e.g. `3.8` is selected. That also simplifies `.bazelrc` for any users that set the default `python_version` string flag in that way. - (toolchain) The runtime's shared libraries (libpython.so et al) can be accessed using `@rules_python//python/cc:current_py_cc_libs`. This uses toolchain resolution, so the files are from the same runtime used to run a target. If you were previously using e.g. `@python_3_11//:libpython`, then switch to `:current_py_cc_libs` for looser coupling to the underlying runtime repo implementation. - (repo rules) The environment variable `RULES_PYTHON_REPO_DEBUG=1` can be set to make repository rules log detailed information about what they're up to. - (coverage) Add support for python 3.12 and bump `coverage.py` to 7.4.1. ### [`v0.29.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0290---2024-01-22) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.28.0...0.29.0) [0.29.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.29.0 ##### Changed - **BREAKING** The deprecated `incompatible_generate_aliases` feature flags from `pip_parse` and `gazelle` got removed. They had been flipped to `True` in 0.27.0 release. - **BREAKING** (wheel) The `incompatible_normalize_name` and `incompatible_normalize_version` flags have been removed. They had been flipped to `True` in 0.27.0 release. - (bzlmod) The pip hub repository now uses the newly introduced config settings using the `X.Y` python version notation. This improves cross module interoperability and allows to share wheels built by interpreters using different patch versions. ##### Fixed - (bzlmod pip.parse) Use a platform-independent reference to the interpreter pip uses. This reduces (but doesn't eliminate) the amount of platform-specific content in `MODULE.bazel.lock` files; Follow [#​1643](https://togithub.com/bazelbuild/rules_python/issues/1643) for removing platform-specific content in `MODULE.bazel.lock` files. - (wheel) The stamp variables inside the distribution name are no longer lower-cased when normalizing under PEP440 conventions. ##### Added - (toolchains) `python_register_toolchains` now also generates a repository that is suffixed with `_host`, that has a single label `:python` that is a symlink to the python interpreter for the host platform. The intended use is mainly in `repository_rule`, which are always run using `host` platform Python. This means that `WORKSPACE` users can now copy the `requirements.bzl` file for vendoring as seen in the updated `pip_parse_vendored` example. - (runfiles) `rules_python.python.runfiles.Runfiles` now has a static `Create` method to make imports more ergonomic. Users should only need to import the `Runfiles` object to locate runfiles. - (toolchains) `PyRuntimeInfo` now includes a `interpreter_version_info` field that contains the static version information for the given interpreter. This can be set via `py_runtime` when registering an interpreter toolchain, and will done automatically for the builtin interpreter versions registered via `python_register_toolchains`. Note that this only available on the Starlark implementation of the provider. - (config_settings) Added `//python/config_settings:is_python_X.Y` config settings to match on minor Python version. These settings match any `X.Y` version instead of just an exact `X.Y.Z` version. ### [`v0.28.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0280---2024-01-07) [Compare Source](https://togithub.com/bazelbuild/rules_python/compare/0.27.1...0.28.0) [0.28.0]: https://togithub.com/bazelbuild/rules_python/releases/tag/0.28.0 ##### Changed - **BREAKING** (pip_install) the deprecated `pip_install` macro and related items have been removed. - **BREAKING** Support for Bazel 5 has been officially dropped. This release was only partially tested with Bazel 5 and may or may not work with Bazel 5. Subequent versions will no longer be tested under Bazel 5. - (runfiles) `rules_python.python.runfiles` now directly implements type hints and drops support for python2 as a result. - (toolchains) `py_runtime`, `py_runtime_pair`, and `PyRuntimeInfo` now use the rules_python Starlark implementation, not the one built into Bazel. NOTE: This only applies to Bazel 6+; Bazel 5 still uses the builtin implementation. - (pip_parse) The parameter `experimental_requirement_cycles` may be provided a map of names to lists of requirements which form a dependency cycle. `pip_parse` will break the cycle for you transparently. This behavior is also available under bzlmod as `pip.parse(experimental_requirement_cycles={})`. - (toolchains) `py_runtime` can now take an executable target. Note: runfiles from the target are not supported yet. ([#​1612](https://togithub.com/bazelbuild/rules_python/issues/1612)) - (gazelle) When `python_generation_mode` is set to `file`, create one `py_binary` target for each file with `if __name__ == "__main__"` instead of just one `py_binary` for the whole module. - (gazelle) the Gazelle manifest integrity field is now optional. If the `requirements` argument to `gazelle_python_manifest` is unset, no integrity field will be generated. ##### Fixed - (gazelle) The gazelle plugin helper was not working with Python toolchains 3.11 and above due to a bug in the helper components not being on PYTHONPATH. - (pip_parse) The repositories created by `whl_library` can now parse the `whl` METADATA and generate dependency closures irrespective of the host platform the generation is executed on. This can be turned on by supplying `experimental_target_platforms = ["all"]` to the `pip_parse` or the `bzlmod` equivalent. This may help in cases where fetching wheels for a different platform using `download_only = True` feature. - (bzlmod pip.parse) The `pip.parse(python_interpreter)` arg now works for specifying a local system interpreter. - (bzlmod pip.parse) Requirements files with duplicate entries for the same package (e.g. one for the package, one for an extra) now work. - (bzlmod python.toolchain) Submodules can now (re)register the Python version that rules_python has set as the default. ([#​1638](https://togithub.com/bazelbuild/rules_python/issues/1638)) - (whl_library) Actually use the provided patches to patch the whl_library. On Windows the patching may result in files with CRLF line endings, as a result the RECORD file consistency requirement is lifted and now a warning is emitted instead with a location to the patch that could be used to silence the warning. Copy the patch to your workspace and add it to the list if patches for the wheel file if you decide to do so. - (coverage): coverage reports are now created when the version-aware rules are used. ([#​1600](https://togithub.com/bazelbuild/rules_python/issues/1600)) - (toolchains) Workspace builds register the py cc toolchain (bzlmod already was). This makes e.g. `//python/cc:current_py_cc_headers` Just Work. ([#​1669](https://togithub.com/bazelbuild/rules_python/issues/1669)) - (bzlmod python.toolchain) The value of `ignore_root_user_error` is now decided by the root module only. ([#​1658](https://togithub.com/bazelbuild/rules_python/issues/1658)) ##### Added - (docs) bzlmod extensions are now documented on rules-python.readthedocs.io - (docs) Support and backwards compatibility policies have been documented. See https://rules-python.readthedocs.io/en/latest/support.html - (gazelle) `file` generation mode can now also add `__init__.py` to the srcs attribute for every target in the package. This is enabled through a separate directive `python_generation_mode_per_file_include_init`.

Configuration

πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

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

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

πŸ”• Ignore: Close this PR and you won't be reminded about these updates again.



This PR was generated by Mend Renovate. View the repository job log.