Update dependency rules_python to v0.29.0 #234
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.24.0
->0.29.0
Release Notes
bazelbuild/rules_python (rules_python)
v0.29.0
Compare Source
Changed
incompatible_generate_aliases
feature flagsfrom
pip_parse
andgazelle
got removed. They had been flipped toTrue
in 0.27.0 release.
incompatible_normalize_name
andincompatible_normalize_version
flags have been removed. They had beenflipped to
True
in 0.27.0 release.using the
X.Y
python version notation. This improves cross moduleinteroperability and allows to share wheels built by interpreters using
different patch versions.
Fixed
pip uses. This reduces (but doesn't eliminate) the amount of
platform-specific content in
MODULE.bazel.lock
files; Follow#1643 for removing
platform-specific content in
MODULE.bazel.lock
files.lower-cased when normalizing under PEP440 conventions.
Added
(toolchains)
python_register_toolchains
now also generates a repositorythat is suffixed with
_host
, that has a single label:python
that is asymlink to the python interpreter for the host platform. The intended use is
mainly in
repository_rule
, which are always run usinghost
platformPython. This means that
WORKSPACE
users can now copy therequirements.bzl
file for vendoring as seen in the updated
pip_parse_vendored
example.(runfiles)
rules_python.python.runfiles.Runfiles
now has a staticCreate
method to make imports more ergonomic. Users should only need to import the
Runfiles
object to locate runfiles.(toolchains)
PyRuntimeInfo
now includes ainterpreter_version_info
fieldthat 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
configsettings 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
Compare Source
Changed
BREAKING (pip_install) the deprecated
pip_install
macro and relateditems 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 hintsand drops support for python2 as a result.
(toolchains)
py_runtime
,py_runtime_pair
, andPyRuntimeInfo
now use therules_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 amap of names to lists of requirements which form a dependency
cycle.
pip_parse
will break the cycle for you transparently. This behavioris also available under bzlmod as
pip.parse(experimental_requirement_cycles={})
.(toolchains)
py_runtime
can now take an executable target. Note: runfilesfrom the target are not supported yet.
(#1612)
(gazelle) When
python_generation_mode
is set tofile
, create onepy_binary
target for each file with
if __name__ == "__main__"
instead of just onepy_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 thewhl
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 thepip_parse
or thebzlmod
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 forspecifying 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)
(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)
(toolchains) Workspace builds register the py cc toolchain (bzlmod already
was). This makes e.g.
//python/cc:current_py_cc_headers
Just Work.(#1669)
(bzlmod python.toolchain) The value of
ignore_root_user_error
is now decidedby the root module only.
(#1658)
Added
See https://rules-python.readthedocs.io/en/latest/support.html
file
generation mode can now also add__init__.py
to the srcsattribute for every target in the package. This is enabled through a separate
directive
python_generation_mode_per_file_include_init
.v0.27.1
Compare Source
Using Bzlmod with Bazel 6
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your
MODULE.bazel
file:Using WORKSPACE
Paste this snippet into your
WORKSPACE
file:Gazelle plugin
Paste this snippet into your
WORKSPACE
file:Full Changelog: bazelbuild/rules_python@0.27.0...0.27.1
v0.27.0
Compare Source
Changed
Make
//python/pip_install:pip_repository_bzl
bzl_library
target internalas all of the publicly available symbols (etc.
package_annotation
) arere-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
isno longer necessary.
(pip_parse) The installation of
pip_parse
repository rule toolchaindependencies is now done as part of
py_repositories
call.(pip_parse) The generated
requirements.bzl
file now has an additional symbolall_whl_requirements_by_package
which provides a map from the normalizedPyPI package name to the target that provides the built wheel file. Use
pip_utils.normalize_name
function from@rules_python//python:pip.bzl
toconvert 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 toTrue
by default onnon-bzlmod
setups allowing users to use the same labelstrings during the transition period. For example, instead of
@pypi_foo//:pkg
, you can now use@pypi//foo
or@pypi//foo:pkg
. Otherlabels that are present in the
foo
package aredist_info
,whl
anddata
. Note, that the@pypi_foo//:pkg
labels are still present forbackwards compatibility.
(gazelle) The flag
use_pip_repository_aliases
is now set toTrue
bydefault, which will cause
gazelle
to change third-party dependency labelsfrom
@pip_foo//:pkg
to@pip//foo
by default.The
compile_pip_requirements
now defaults topyproject.toml
if thesrc
or
requirements_in
attributes are unspecified, matching the upstreampip-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
, onepy_test
target ismade per test file even if a target named
__test__
or a file named__test__.py
exists in the same package. Previously in these cases therewould only be one test target made.
Breaking changes:
(pip)
pip_install
repository rule in this release has been disabled andwill fail by default. The API symbol is going to be removed in the next
version, please migrate to
pip_parse
as a replacement. Thepip_parse
rule no longer supports
requirements
attribute, please userequirements_lock
instead.(py_wheel) switch
incompatible_normalize_name
andincompatible_normalize_version
toTrue
by default to enforcePEP440
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
withstrip_import_prefix
can be imported now.(py_wheel) Produce deterministic wheel files and make
RECORD
file entriesfollow the order of files written to the
.whl
archive.(gazelle) Generate a single
py_test
target whengazelle: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 thehub repos created by
pip.parse
. This should fix confusing error messagesin case there is a misconfiguration of toolchains or a bug in
rules_python
.Added
(bzlmod) Added
.whl
patching support viapatches
andpatch_strip
arguments to the new
pip.override
tag class.(pip) Support for using PEP621 compliant
pyproject.toml
for creating a resolvedrequirements.txt
file.(utils) Added a
pip_utils
struct with anormalize_name
function to allow usersto find out how
rules_python
would normalize a PyPI distribution name.v0.26.0
Compare Source
Changed
Python version patch level bumps:
(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. Thisattribute has been long deprecated by Bazel and shouldn't be used.
Calling
//python:repositories.bzl#py_repositories()
is required. It hasalways been documented as necessary, but it was possible to omit it in certain
cases. An error about
@rules_python_internal
means thepy_repositories()
call is missing in
WORKSPACE
.(bzlmod) The
pip.parse
extension will generate os/arch specific lockfile entries on
bazel>=6.4
.Added
(bzlmod, entry_point) Added
py_console_script_binary
, whichallows 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
usinghttps://github.com/indygreg/python-build-standalone/releases/tag/20230826.
(gazelle) New
# gazelle:python_generation_mode file
directive to supportgenerating one
py_library
per file.(python_repository) Support
netrc
andauth_patterns
attributes to enableauthentication against private HTTP hosts serving Python toolchain binaries.
//python:packaging_bzl
added, abzl_library
for the Starlarkfiles
//python:packaging.bzl
requires.(py_wheel) Added the
incompatible_normalize_name
feature flag tonormalize 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 flagto 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 thetime being.
New Python versions available:
3.8.18
,3.9.18
,3.10.13
,3.11.6
,3.12.0
usinghttps://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 removedin favour of the
py_console_script_binary
macro forbzlmod
users.(bzlmod) The
pip.parse
no longer generates{hub_name}_{py_version}
hub reposas the
entry_point
macro has been superseded bypy_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
Compare Source
Changed
pip.parse
can no longer automatically use the defaultPython version; this was an unreliable and unsafe behavior. The
python_version
arg must always be explicitly specified.Fixed
various APIs.
main
arg is now correctly computed and usually optional.pip.parse
no longer requires a call for whatever the configureddefault Python version is.
Added
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 this update again.
This PR has been generated by Mend Renovate. View repository job log here.