Skip to content

Commit

Permalink
chore(deps): update dependency rules_python_gazelle_plugin to v0.31.0 (
Browse files Browse the repository at this point in the history
…#271)

[![Mend
Renovate](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.26.0` -> `0.31.0` |

---

### Release Notes

<details>
<summary>bazelbuild/rules_python (rules_python_gazelle_plugin)</summary>

###
[`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`.

([#&#8203;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
--@&#8203;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

[#&#8203;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.

([#&#8203;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.

##### 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.

([#&#8203;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.

([#&#8203;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.

([#&#8203;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.

([#&#8203;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`.

###
[`v0.27.1`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.27.1)

[Compare
Source](https://togithub.com/bazelbuild/rules_python/compare/0.27.0...0.27.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.27.1")

pip = use_extension("@&#8203;rules_python//python/extensions:pip.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("@&#8203;bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "rules_python",
    sha256 = "e85ae30de33625a63eca7fc40a94fea845e641888e52f32b6beea91e8b1b2793",
    strip_prefix = "rules_python-0.27.1",
    url = "https://github.com/bazelbuild/rules_python/releases/download/0.27.1/rules_python-0.27.1.tar.gz",
)

load("@&#8203;rules_python//python:repositories.bzl", "py_repositories")

py_repositories()
```

##### Gazelle plugin

Paste this snippet into your `WORKSPACE` file:

```starlark
load("@&#8203;bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
    name = "rules_python_gazelle_plugin",
    sha256 = "e85ae30de33625a63eca7fc40a94fea845e641888e52f32b6beea91e8b1b2793",
    strip_prefix = "rules_python-0.27.1/gazelle",
    url = "https://github.com/bazelbuild/rules_python/releases/download/0.27.1/rules_python-0.27.1.tar.gz",
)

##### To compile the rules_python gazelle extension from source,
##### we must fetch some third-party go dependencies that it uses.

load("@&#8203;rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")

_py_gazelle_deps()
```

**Full Changelog**:
bazelbuild/rules_python@0.27.0...0.27.1

###
[`v0.27.0`](https://togithub.com/bazelbuild/rules_python/blob/HEAD/CHANGELOG.md#0270---2023-11-16)

[Compare
Source](https://togithub.com/bazelbuild/rules_python/compare/0.26.0...0.27.0)

[0.27.0]:
https://togithub.com/bazelbuild/rules_python/releases/tag/0.27.0

##### Changed

- Make `//python/pip_install:pip_repository_bzl` `bzl_library` target
internal
as all of the publicly available symbols (etc. `package_annotation`) are
    re-exported via `//python:pip_bzl` `bzl_library`.

- (gazelle) Gazelle Python extension no longer has runtime dependencies.
Using
`GAZELLE_PYTHON_RUNTIME_DEPS` from
`@rules_python_gazelle_plugin//:def.bzl` is
    no longer necessary.

- (pip_parse) The installation of `pip_parse` repository rule toolchain
    dependencies is now done as part of `py_repositories` call.

- (pip_parse) The generated `requirements.bzl` file now has an
additional symbol
`all_whl_requirements_by_package` which provides a map from the
normalized
PyPI package name to the target that provides the built wheel file. Use
`pip_utils.normalize_name` function from `@rules_python//python:pip.bzl`
to
convert a PyPI package name to a key in the
`all_whl_requirements_by_package`
    map.

- (pip_parse) The flag `incompatible_generate_aliases` has been flipped
to
`True` by default on `non-bzlmod` setups allowing users to use the same
label
    strings during the transition period. For example, instead of
`@pypi_foo//:pkg`, you can now use `@pypi//foo` or `@pypi//foo:pkg`.
Other
labels that are present in the `foo` package are `dist_info`, `whl` and
`data`. Note, that the `@pypi_foo//:pkg` labels are still present for
    backwards compatibility.

- (gazelle) The flag `use_pip_repository_aliases` is now set to `True`
by
default, which will cause `gazelle` to change third-party dependency
labels
    from `@pip_foo//:pkg` to `@pip//foo` by default.

- The `compile_pip_requirements` now defaults to `pyproject.toml` if the
`src`
or `requirements_in` attributes are unspecified, matching the upstream
    `pip-compile` behaviour more closely.

- (gazelle) Use relative paths if possible for dependencies added
through
    the use of the `resolve` directive.

- (gazelle) When using `python_generation_mode file`, one `py_test`
target is
    made per test file even if a target named `__test__` or a file named
`__test__.py` exists in the same package. Previously in these cases
there
    would only be one test target made.

Breaking changes:

- (pip) `pip_install` repository rule in this release has been disabled
and
will fail by default. The API symbol is going to be removed in the next
version, please migrate to `pip_parse` as a replacement. The `pip_parse`
    rule no longer supports `requirements` attribute, please use
    `requirements_lock` instead.

-   (py_wheel) switch `incompatible_normalize_name` and
`incompatible_normalize_version` to `True` by default to enforce
`PEP440`
    for wheel names built by `rules_python`.

- (tools/wheelmaker.py) drop support for Python 2 as only Python 3 is
tested.

##### Fixed

- Skip aliases for unloaded toolchains. Some Python versions that don't
have full
platform support, and referencing their undefined repositories can break
operations
    like `bazel query rdeps(...)`.

- Python code generated from `proto_library` with `strip_import_prefix`
can be imported now.

- (py_wheel) Produce deterministic wheel files and make `RECORD` file
entries
    follow the order of files written to the `.whl` archive.

- (gazelle) Generate a single `py_test` target when
`gazelle:python_generation_mode project`
    is used.

- (gazelle) Move waiting for the Python interpreter process to exit to
the shutdown hook
    to make the usage of the `exec.Command` more idiomatic.

- (toolchains) Keep tcl subdirectory in Windows build of hermetic
interpreter.

- (bzlmod) sub-modules now don't have the `//conditions:default` clause
in the
hub repos created by `pip.parse`. This should fix confusing error
messages
in case there is a misconfiguration of toolchains or a bug in
`rules_python`.

##### Added

- (bzlmod) Added `.whl` patching support via `patches` and `patch_strip`
    arguments to the new `pip.override` tag class.

- (pip) Support for using [PEP621](https://peps.python.org/pep-0621/)
compliant
    `pyproject.toml` for creating a resolved `requirements.txt` file.

- (utils) Added a `pip_utils` struct with a `normalize_name` function to
allow users
to find out how `rules_python` would normalize a PyPI distribution name.

</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**: Never, 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:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMTIuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIxMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
  • Loading branch information
renovate[bot] authored Mar 2, 2024
1 parent 9ee2b08 commit 72ba776
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions internal_deps.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,9 @@ def rules_py_internal_deps():

http_archive(
name = "rules_python_gazelle_plugin",
sha256 = "9d04041ac92a0985e344235f5d946f71ac543f1b1565f2cdbc9a2aaee8adf55b",
strip_prefix = "rules_python-0.26.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.26.0/rules_python-0.26.0.tar.gz",
sha256 = "c68bdc4fbec25de5b5493b8819cfc877c4ea299c0dcb15c244c5a00208cde311",
strip_prefix = "rules_python-0.31.0/gazelle",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.31.0/rules_python-0.31.0.tar.gz",
)

http_archive(
Expand Down

0 comments on commit 72ba776

Please sign in to comment.