Update dependency rules_python to v1 #388
Open
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.37.2
->1.4.0
Release Notes
bazel-contrib/rules_python (rules_python)
v1.4.0
Compare Source
{#1-4-0-changed}
Changed
exec
configuration toolchain now has the forwardedexec_interpreter
now also forwards theToolchainInfo
provider. This isfor increased compatibility with the
RBE
setups where access to theexec
configuration interpreter is needed.
xcrun xcodebuild --showsdks
to find XCode root.3.8.20
versions of the Python3.8
interpreter who hasreached EOL. If users still need other versions of the
3.8
interpreter, please supplythe URLs manually {bzl:obj}
python.toolchain
or {bzl:obj}python_register_toolchains
calls.changed the semantics of
ignore_root_user_error
from "ignore" to "warning". This is nowflipped back to ignoring the issue, and will only emit a warning when the attribute is set
False
.extension has been marked reproducible.
Fixes #2434.
manifest files are loaded when Gazelle is run over a set of non-python directories
PR #2746.
py_binary.srcs
and {attr}py_test.srcs
is no longer mandatory whenmain_module
is specified (for--bootstrap_impl=script
){#1-4-0-fixed}
Fixed
universal lock files with environment markers. Fixes #2690.
--bootstrap_impl=script
) Follow symlinks when searching for runfiles.chmod
when downloading non-windows hermetic toolchainrepositories on Windows. Fixes
#2660.
FAIL
via theRULES_PYTHON_REPO_DEBUG_VERBOSITY
environment variable.transitions transitioning on the
python_version
flag.Fixes #2685.
PYTHONPATH
..pyc
and.pyo
files are also excluded from the interpreters repository files.PYTHONPATH
.requires_file
is treated as if it were omitted, resulting in a validMETADATA
file.target_compatible_with
to all targets they create.PR #2788.
METADATA
entries whenpython_full_version
is used inthe environment marker.
Fixes #2319.
python_version
parameter and transition the requirementlocking to the right interpreter version when using
{obj}
compile_pip_requirements
rule.See #2819.
{#1-4-0-added}
Added
sha256
values in therequirements.txt
is no longermandatory when enabling {attr}
pip.parse.experimental_index_url
feature.This means that
rules_python
will attempt to fetch metadata for allpackages through SimpleAPI unless they are pulled through direct URL
references. Fixes #2023.
In case you see issues with
rules_python
being too eager to fetch the SimpleAPImetadata, you can use the newly added {attr}
pip.parse.experimental_skip_sources
to skip metadata fetching for those packages.
lock
rule that is the replacement for the{obj}
compile_pip_requirements
. This may still have rough cornersso please report issues with it in the
#1975.
Main highlights - the locking can be done within a build action or outside
it, there is no more automatic
test
target (but it can be added on the userside by using
native_test
). For customizing theuv
version that is used,please check the {obj}
uv.configure
tag class.PyInfo.site_packages_symlinks
field added toallow specifying links to create within the venv site packages (only
applicable with {obj}
--bootstrap_impl=script
)(#2156).
equivalent to the standard toolchains. See [Local toolchains] docs for how to
configure them.
$(PYTHON2_ROOTPATH)
and$(PYTHON3_ROOTPATH)
which are runfileslocations equivalents of
$(PYTHON2)
and `$(PYTHON3) respectively.{#1-4-0-removed}
Removed
{#v1-3-0}
v1.3.0
Compare Source
{#v1-3-0-changed}
Changed
py_library.pyi_srcs
(.pyi
files) in the wheel.py_library.pyi_srcs
(.pyi
files) inpy_package
.gazelle_python.yaml
) will now include theYAML document start
---
line. Implemented in#2656.
{#v1-3-0-fixed}
Fixed
ppc64le
is now pointing to the right target in theplatforms
package.py_binary
targets during partial updates infile
generation mode. Fixed in #2619.ignore_root_user_error=True
is now the default. Note that running as root may still cause spurious
Bazel cache invalidation
(#1169).
Support spilling modules mapping args into a params file.
python
invocations in repository and module extensionevaluation contexts will invoke Python interpreter with
-B
to avoidcreating
.pyc
files.{#v1-3-0-added}
Added
python.defaults
has been added to allow users toset the default python version in the root module by reading the
default version number from a file or an environment variable.
//python/bin:python
: convenience target for directly running aninterpreter. {obj}
--//python/bin:python_src
can be used to specify abinary whose interpreter to use.
bzlmod
APIs without theneed to patch
rules_python
. The documentation has been added torules_python
docs but usage of the extension may result in your setup breaking without any
notice. What is more, the URLs and SHA256 values will be retrieved from the
GitHub releases page metadata published by the
uv
project.LDFLAGS
whenbuilding wheels from
sdist
.{obj}
experimental_index_url
(bazel downloader).Partially fixes #2363.
and py_library rules
(#1647)
See {obj}
RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS
environment variable.Only applicable for {obj}
--bootstrap_impl=script
.interpreter_args
attribute topy_binary
andpy_test
,which allows pass arguments to the interpreter before the regular args.
main_module
attribute topy_binary
andpy_test
,which allows specifying a module name to run (i.e.
python -m <module>
).{#v1-3-0-removed}
Removed
{#v1-2-0}
v1.2.0
Compare Source
{#v1-2-0-changed}
Changed
py_proto_library
is deprecated in favour of theimplementation in https://github.com/protocolbuffers/protobuf. It will be
removed in the future release.
pip.override
will now be ignored instead of raising an error,fixes #2550.
default for now and can be enabled with
RULES_PYTHON_DEPRECATION_WARNINGS
env var.
pip
from24.3.2
to24.0.0
andpackaging
from24.2
to24.0
.{#v1-2-0-fixed}
Fixed
python_zip_file
output with--bootstrap_impl=script
works again(#2596).
python_version
attribute for specifying python versions introduced inv1.1.0
gazelle_python_manifest
now works correctly.fixes #2554.
as UTF-8 on all platforms.
--bootstrap_impl=script
is fixed(#2572).
by reverting #2514.
The related issue is #908.
tag_class
does not have a populateddoc
value.Fixes (#2579).
--bootstrap_impl=script
: set{obj}
--venvs_use_declare_symlink=no
to have it not create symlinks atbuild time (they will be created at runtime instead).
(Fixes #2489)
{#v1-2-0-added}
Added
{#v1-2-0-removed}
Removed
{#v1-1-0}
v1.1.0
Compare Source
{#v1-1-0-changed}
Changed
version, per our Bazel support matrix. Earlier versions are not
tested by CI, so functionality cannot be guaranteed.
pip.parse
) From now we will make fewer calls to indexes whenfetching the metadata from SimpleAPI. The calls will be done in parallel to
each index separately, so the extension evaluation time might slow down if
not using {bzl:obj}
pip.parse.experimental_index_url_overrides
.pip.parse
) Only query SimpleAPI for packages that havesha values in the
requirements.txt
file.the version-aware rules are now simply aliases for the base rules. The
python_version
attribute is still used to specify the Python version.pip
to 24.3.1 andpackaging
to 24.2.{#v1-1-0-deprecations}
Deprecations
//python/config_settings:transitions.bzl
and itspy_binary
andpy_test
wrappers are deprecated. Use the regular rules instead.
{#v1-1-0-fixed}
Fixed
toolchains that search PATH to be used for the wheel builder tool.
whl_library
will now not have envmarker information allowing
bazel query
to work in cases where thewhl
isavailable for all of the platforms and the sdist can be built. This fix is
for both WORKSPACE and
bzlmod
setups.Fixes #2450.
Parameter Syntax. (#2396)
pip_parse.experimental_requirement_cycles
and{bzl:obj}
pip_parse.use_hub_alias_dependencies
together now works whenusing WORKSPACE files.
are now printing more details and include the currently active flag
values. Fixes #2466.
PyPI packages used in {bzl:obj}
whl_library
during therepository_rule
phasechange. Fixes #2468.
setup.py
files by default. To restorethis behavior, apply the
# gazelle:python_ignore_files setup.py
directive.whenever
PATH
changes. Fixes#2551.
{#v1-1-0-added}
Added
include_stub_packages
flag tomodules_mapping
. When set toTrue
, thisautomatically includes corresponding stub packages for third-party libraries
that are present and used (e.g.,
boto3
→boto3-stubs
), improvingtype-checking support.
{obj}
experimental_index_url
usage or the regularpip.parse
usage.To select the free-threaded interpreter in the repo phase, please use
the documented env variables.
Fixes #2386.
.pyi
files) and type-checkingonly dependencies added. See {obj}
py_library.pyi_srcs
andpy_library.pyi_deps
(and the same named attributes forpy_binary
andpy_test
).pyi_srcs
to include*.pyi
files.PyInfo
has new fields to aid static analysis tools:{obj}
direct_original_sources
, {obj}direct_pyi_files
,{obj}
transitive_original_sources
, {obj}transitive_pyi_files
.{#v1-1-0-removed}
Removed
find_requirements
in//python:defs.bzl
has been removed.{#v1-0-0}
v1.0.0
Compare Source
{#v1-0-0-changed}
Changed
Breaking:
Please consider depending on the flags defined in
//python/config_setting/...
and the@platforms
package instead.MACOS_NAME
and thearch
attribute in the
PLATFORMS
list, please update your code to respect the newvalues. The values now correspond to the values available in the
@platforms//
package constraint values.host_platform
andinterpreter
constants are no longer createdin the
toolchain
generated alias.bzl
files. If you need to access thehost interpreter during the
repository_rule
evaluation, please use the@python_{version}_host//:python
targets created by{bzl:obj}
python_register_toolchains
and{bzl:obj}
python_register_multi_toolchains
macros or the {bzl:obj}python
bzlmod extension.
pip.parse.parse_all_requirements_files
attribute has been removed.See notes in the previous versions about what to do.
Other changes:
strip_prefix
field forzstd
archives.pip_parse.extra_hub_aliases
now works in WORKSPACE files.--bootstrap_impl=script
, a binary-specific (butotherwise empty) virtual env is used to customize
sys.path
initialization.{#v1-0-0-fixed}
Fixed
uname
to get the value of the host platform.files which is useful when including different PyTorch builds (e.g. <pytorch+cpu> vs <pytorch+cu118> ) for different target platforms.
Fixes (2337).
uv
binary for aarch64-apple-darwin.Fixes (2411).
--bootstrap_impl=scipt
) Usingsys.executable
willuse the same
sys.path
setup as the calling binary.(2169).
hardcoded in Bazel, WORKSPACE mode.
compile_pip_requirements
no longer fails on Windows when--enable_runfiles
is not enabled.compile_pip_requirements
now correctly updates files in the source tree on Windows when--windows_enable_symlinks
is not enabled.libpython
targetdefined by a repository template. This enables stable ABI builds of Python extensions
on Windows (by defining Py_LIMITED_API).
py_test
andpy_binary
targets no longer incorrectly remove thefirst
sys.path
entry when using {obj}--bootstrap_impl=script
{#v1-0-0-added}
Added
details can be logged by setting
RULES_PYTHON_GAZELLE_VERBOSE=1
.they would like to use through
RULES_PYTHON_REPO_TOOLCHAIN_{VERSION}_{OS}_{ARCH}
env variable setting. Forexample, this allows one to use
freethreaded
python interpreter in therepository_rule
to build a wheel fromsdist
.muslc
libc have been addedfor the latest toolchain versions for each minor Python version. You can control
the toolchain selection by using the
{bzl:obj}
//python/config_settings:py_linux_libc
build flag.py_runtime_info.site_init_template
and{obj}
PyRuntimeInfo.site_init_template
for specifying the template to use toinitialize the interpreter via venv startup hooks.
{#v1-0-0-removed}
Removed
pypi_install_dependencies
macro that has been included in{bzl:obj}
py_repositories
for a long time.DEFAULT_PYTHON_VERSION
frominterpreters.bzl
file. Ifyou need the version, please use it from the
versions.bzl
file instead.{#v0-40-0}
v0.40.0
Compare Source
{#v0-40-changed}
Changed
{#v0-40-fixed}
Fixed
(2414).
{#v0-40-added}
Added
{#v0-40-removed}
Removed
requirements.txt
for thetwine
dependencies.Please use
requirements_linux.txt
instead.zstd
support and remove attributesfor customizing the
zstd
binary to be used forzstd
archives in the{bzl:obj}
python_repository
repository_rule. This affects the{bzl:obj}
python_register_toolchains
and{bzl:obj}
python_register_multi_toolchains
callers in theWORKSPACE
.{#v0-39-0}
v0.39.0
Compare Source
{#v0-39-0-changed}
Changed
bzlmod
spoke repositories have changed asall of the given
requirements.txt
files are now parsed bydefault
, totemporarily restore the behavior, you can use
{bzl:obj}
pip.parse.extra_hub_aliases
, which will be removed or made noop inthe future.
{#v0-39-0-fixed}
Fixed
@bazel_tools//tools/python:autodetecting_toolchain
is being used(#2364).
{#v0-39-0-added}
Added
the config flag
//python/config_settings:py_freethreaded
to toggle theselection of the free-threaded toolchains.
py_runtime.abi_flags
attribute and{obj}
PyRuntimeInfo.abi_flags
field added.{#v0-39-0-removed}
Removed
{#v0-38-0}
v0.38.0
Compare Source
{#v0-38-0-changed}
Changed
version used; this for Bazel 8+ support (previously version was rules_cc 0.0.9
and no protobuf version specified)
(2310).
for the
twine
publishing rule.--no-build-isolation
to allow non-hermetic sdist buildsby default. Users wishing to keep this argument and to enforce more hermetic
builds can do so by passing the argument in
pip.parse#extra_pip_args
pip.parse.whl_modifications
now normalizes the given whl namesand now
pyyaml
andPyYAML
will both work.pip.parse
spoke repository naming will be changed in an upcomingrelease in places where the users specify different package versions per
platform in the same hub repository. The naming of the spoke repos is
considered an implementation detail and we advise the users to use the
hub
repository directly and make use of {bzl:obj}
pip.parse.extra_hub_aliases
feature added in this release.
{#v0-38-0-fixed}
Fixed
whl_library
s(617).
pip.parse.experimental_index_url
is set, we need to stillpass the
extra_pip_args
value when building ansdist
.which fixes usage of the said wheels using standard package managers.
same lock file irrespective if
experimental_index_url
is set by any moduleor not. To opt into this behavior, set
pip.parse.parse_all_requirements_files
, which will become thedefault in future releases leading up to
1.0.0
. Fixes#2268. A known
issue is that it may break
bazel query
and in these use cases it isadvisable to use
cquery
or switch todownload_only = True
{#v0-38-0-added}
Added
twine
publishing rules have beenupdated to have a new convention:
requirements_darwin.txt
,requirements_linux.txt
,requirements_windows.txt
for each respective OSand one extra file
requirements_universal.txt
if you prefer a single file.The
requirements.txt
file may be removed in the future.//python/features.bzl#features.version
pip.parse.extra_hub_aliases
can now be used to expose extratargets created by annotations in whl repositories.
Fixes #2187.
pip.parse
now supportswhl-only
setup usingdownload_only = True
where users can specify multiple requirements filesand use the
pip
backend to do the downloading. This was only available forusers setting {bzl:obj}
pip.parse.experimental_index_url
, but now users havemore options whilst we continue to work on stabilizing the experimental feature.
{#v0-37-2}
View the repository job log