yacl
yacl copied to clipboard
chore(deps): update dependency rules_python to v1
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| rules_python | bazel_dep | major | 0.16.2 -> 1.4.1 |
Release Notes
bazel-contrib/rules_python (rules_python)
v1.4.1
{#1-4-1-fixed}
Fixed
- (pypi) Fix a typo not allowing users to benefit from using the downloader when the hashes in the requirements file are not present. Fixes #2863.
{#1-4-0}
v1.4.0
{#1-4-0-changed}
Changed
- (toolchain) The
execconfiguration toolchain now has the forwardedexec_interpreternow also forwards theToolchainInfoprovider. This is for increased compatibility with theRBEsetups where access to theexecconfiguration interpreter is needed. - (toolchains) Use the latest astral-sh toolchain release 20250317 for Python versions:
- 3.9.21
- 3.10.16
- 3.11.11
- 3.12.9
- 3.13.2
- (pypi) Use
xcrun xcodebuild --showsdksto find XCode root. - (toolchains) Remove all but
3.8.20versions of the Python3.8interpreter who has reached EOL. If users still need other versions of the3.8interpreter, please supply the URLs manually {bzl:obj}python.toolchainor {bzl:obj}python_register_toolchainscalls. - (toolchains) Previously #2636
changed the semantics of
ignore_root_user_errorfrom "ignore" to "warning". This is now flipped back to ignoring the issue, and will only emit a warning when the attribute is setFalse. - (pypi) The PyPI extension will no longer write the lock file entries as the extension has been marked reproducible. Fixes #2434.
- (gazelle) Lazily load and parse manifest files when running Gazelle. This ensures no manifest files are loaded when Gazelle is run over a set of non-python directories PR #2746.
- (rules) {attr}
py_binary.srcsand {attr}py_test.srcsis no longer mandatory whenmain_moduleis specified (for--bootstrap_impl=script)
{#1-4-0-fixed}
Fixed
- (pypi) Platform specific extras are now correctly handled when using universal lock files with environment markers. Fixes #2690.
- (runfiles) ({obj}
--bootstrap_impl=script) Follow symlinks when searching for runfiles. - (toolchains) Do not try to run
chmodwhen downloading non-windows hermetic toolchain repositories on Windows. Fixes #2660. - (logging) Allow repo rule logging level to be set to
FAILvia theRULES_PYTHON_REPO_DEBUG_VERBOSITYenvironment variable. - (toolchains) The toolchain matching is has been fixed when writing
transitions transitioning on the
python_versionflag. Fixes #2685. - (toolchains) Run the check on the Python interpreter in isolated mode, to ensure it's not affected by userland environment variables, such as
PYTHONPATH. - (toolchains) Ensure temporary
.pycand.pyofiles are also excluded from the interpreters repository files. - (pypi) Run interpreter version call in isolated mode, to ensure it's not affected by userland environment variables, such as
PYTHONPATH. - (packaging) An empty
requires_fileis treated as if it were omitted, resulting in a validMETADATAfile. - (rules) py_wheel and sphinxdocs rules now propagate
target_compatible_withto all targets they create. PR #2788. - (pypi) Correctly handle
METADATAentries whenpython_full_versionis used in the environment marker. Fixes #2319. - (pypi) Correctly handle
python_versionparameter and transition the requirement locking to the right interpreter version when using {obj}compile_pip_requirementsrule. See #2819.
{#1-4-0-added}
Added
- (pypi) From now on
sha256values in therequirements.txtis no longer mandatory when enabling {attr}pip.parse.experimental_index_urlfeature. This means thatrules_pythonwill attempt to fetch metadata for all packages through SimpleAPI unless they are pulled through direct URL references. Fixes #2023. In case you see issues withrules_pythonbeing too eager to fetch the SimpleAPI metadata, you can use the newly added {attr}pip.parse.experimental_skip_sourcesto skip metadata fetching for those packages. - (uv) A {obj}
lockrule that is the replacement for the {obj}compile_pip_requirements. This may still have rough corners so 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 automatictesttarget (but it can be added on the user side by usingnative_test). For customizing theuvversion that is used, please check the {obj}uv.configuretag class. - Add support for riscv64 linux platform.
- (toolchains) Add python 3.13.2 and 3.12.9 toolchains
- (providers) (experimental) {obj}
PyInfo.site_packages_symlinksfield added to allow specifying links to create within the venv site packages (only applicable with {obj}--bootstrap_impl=script) (#2156). - (toolchains) Local Python installs can be used to create a toolchain equivalent to the standard toolchains. See [Local toolchains] docs for how to configure them.
- (toolchains) Expose
$(PYTHON2_ROOTPATH)and$(PYTHON3_ROOTPATH)which are runfiles locations equivalents of$(PYTHON2)and `$(PYTHON3) respectively.
{#1-4-0-removed}
Removed
- Nothing removed.
{#v1-3-0}
v1.3.0
{#v1-3-0-changed}
Changed
- (deps) platforms 0.0.4 -> 0.0.11
- (py_wheel) Package
py_library.pyi_srcs(.pyifiles) in the wheel. - (py_package) Package
py_library.pyi_srcs(.pyifiles) inpy_package. - (gazelle) The generated manifest file (default:
gazelle_python.yaml) will now include the YAML document start---line. Implemented in #2656.
{#v1-3-0-fixed}
Fixed
- (pypi) The
ppc64leis now pointing to the right target in theplatformspackage. - (gazelle) No longer incorrectly merge
py_binarytargets during partial updates infilegeneration mode. Fixed in #2619. - (bzlmod) Running as root is no longer an error.
ignore_root_user_error=Trueis now the default. Note that running as root may still cause spurious Bazel cache invalidation (#1169). - (gazelle) Don't collapse depsets to a list or into args when generating the modules mapping file. Support spilling modules mapping args into a params file.
- (coverage) Fix missing files in the coverage report if they have no tests.
- (pypi) From now on
pythoninvocations in repository and module extension evaluation contexts will invoke Python interpreter with-Bto avoid creating.pycfiles. - (deps) doublestar 4.7.1 (required for recent Gazelle versions)
{#v1-3-0-added}
Added
- (python) {attr}
python.defaultshas been added to allow users to set the default python version in the root module by reading the default version number from a file or an environment variable. - {obj}
//python/bin:python: convenience target for directly running an interpreter. {obj}--//python/bin:python_srccan be used to specify a binary whose interpreter to use. - (uv) Now the extension can be fully configured via
bzlmodAPIs without the need to patchrules_python. The documentation has been added torules_pythondocs 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 theuvproject. - (pypi) An extra argument to add the interpreter lib dir to
LDFLAGSwhen building wheels fromsdist. - (pypi) Direct HTTP urls for wheels and sdists are now supported when using
{obj}
experimental_index_url(bazel downloader). Partially fixes #2363. - (rules) APIs for creating custom rules based on the core py_binary, py_test, and py_library rules (#1647)
- (rules) Added env-var to allow additional interpreter args for stage1 bootstrap.
See {obj}
RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGSenvironment variable. Only applicable for {obj}--bootstrap_impl=script. - (rules) Added {obj}
interpreter_argsattribute topy_binaryandpy_test, which allows pass arguments to the interpreter before the regular args. - (rules) Added {obj}
main_moduleattribute topy_binaryandpy_test, which allows specifying a module name to run (i.e.python -m <module>).
{#v1-3-0-removed}
Removed
- Nothing removed.
{#v1-2-0}
v1.2.0
{#v1-2-0-changed}
Changed
- (rules)
py_proto_libraryis deprecated in favour of the implementation in https://github.com/protocolbuffers/protobuf. It will be removed in the future release. - (pypi) {obj}
pip.overridewill now be ignored instead of raising an error, fixes #2550. - (rules) deprecation warnings for deprecated symbols have been turned off by
default for now and can be enabled with
RULES_PYTHON_DEPRECATION_WARNINGSenv var. - (pypi) Downgraded versions of packages:
pipfrom24.3.2to24.0.0andpackagingfrom24.2to24.0.
{#v1-2-0-fixed}
Fixed
- (rules)
python_zip_fileoutput with--bootstrap_impl=scriptworks again (#2596). - (docs) Using
python_versionattribute for specifying python versions introduced inv1.1.0 - (gazelle) Providing multiple input requirements files to
gazelle_python_manifestnow works correctly. - (pypi) Handle trailing slashes in pip index URLs in environment variables, fixes #2554.
- (runfiles) Runfile manifest and repository mapping files are now interpreted as UTF-8 on all platforms.
- (coverage) Coverage with
--bootstrap_impl=scriptis fixed (#2572). - (pypi) Non deterministic behaviour in requirement file usage has been fixed by reverting #2514. The related issue is #908.
- (sphinxdocs) Do not crash when
tag_classdoes not have a populateddocvalue. Fixes (#2579). - (binaries/tests) Fix packaging when using
--bootstrap_impl=script: set {obj}--venvs_use_declare_symlink=noto have it not create symlinks at build time (they will be created at runtime instead). (Fixes #2489)
{#v1-2-0-added}
Added
- Nothing added.
{#v1-2-0-removed}
Removed
- Nothing removed.
{#v1-1-0}
v1.1.0
{#v1-1-0-changed}
Changed
- (toolchains) 3.13 means 3.13.1 (previously 3.13.0)
- Bazel 6 support is dropped and Bazel 7.4.1 is the minimum supported version, per our Bazel support matrix. Earlier versions are not tested by CI, so functionality cannot be guaranteed.
- ({bzl:obj}
pip.parse) From now we will make fewer calls to indexes when fetching 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. - ({bzl:obj}
pip.parse) Only query SimpleAPI for packages that have sha values in therequirements.txtfile. - (rules) The version-aware rules have been folded into the base rules and
the version-aware rules are now simply aliases for the base rules. The
python_versionattribute is still used to specify the Python version. - (pypi) Updated versions of packages:
pipto 24.3.1 andpackagingto 24.2.
{#v1-1-0-deprecations}
Deprecations
//python/config_settings:transitions.bzland itspy_binaryandpy_testwrappers are deprecated. Use the regular rules instead.
{#v1-1-0-fixed}
Fixed
- (py_wheel) Use the default shell environment when building wheels to allow toolchains that search PATH to be used for the wheel builder tool.
- (pypi) The requirement argument parsed to
whl_librarywill now not have env marker information allowingbazel queryto work in cases where thewhlis available for all of the platforms and the sdist can be built. This fix is for both WORKSPACE andbzlmodsetups. Fixes #2450. - (gazelle) Gazelle will now correctly parse Python3.12 files that use PEP 695 Type Parameter Syntax. (#2396)
- (pypi) Using {bzl:obj}
pip_parse.experimental_requirement_cyclesand {bzl:obj}pip_parse.use_hub_alias_dependenciestogether now works when using WORKSPACE files. - (pypi) The error messages when the wheel distributions do not match anything are now printing more details and include the currently active flag values. Fixes #2466.
- (py_proto_library) Fix import paths in Bazel 8.
- (whl_library) Now the changes to the dependencies are correctly tracked when
PyPI packages used in {bzl:obj}
whl_libraryduring therepository_rulephase change. Fixes #2468.
- (gazelle) Gazelle no longer ignores
setup.pyfiles by default. To restore this behavior, apply the# gazelle:python_ignore_files setup.pydirective.
- Don't re-fetch whl_library, python_repository, etc. repository rules
whenever
PATHchanges. Fixes #2551.
{#v1-1-0-added}
Added
- (gazelle) Added
include_stub_packagesflag tomodules_mapping. When set toTrue, this automatically includes corresponding stub packages for third-party libraries that are present and used (e.g.,boto3→boto3-stubs), improving type-checking support. - (pypi) Freethreaded packages are now fully supported in the
{obj}
experimental_index_urlusage or the regularpip.parseusage. To select the free-threaded interpreter in the repo phase, please use the documented env variables. Fixes #2386. - (toolchains) Use the latest astrahl-sh toolchain release 20241206 for Python versions:
- 3.9.21
- 3.10.16
- 3.11.11
- 3.12.8
- 3.13.1
- (rules) Attributes for type definition files (
.pyifiles) and type-checking only dependencies added. See {obj}py_library.pyi_srcsandpy_library.pyi_deps(and the same named attributes forpy_binaryandpy_test). - (pypi) pypi-generated targets set
pyi_srcsto include*.pyifiles. - (providers) {obj}
PyInfohas 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_requirementsin//python:defs.bzlhas been removed.
{#v1-0-0}
v1.0.0
{#v1-0-0-changed}
Changed
Breaking:
- (toolchains) stop exposing config settings in python toolchain alias repos.
Please consider depending on the flags defined in
//python/config_setting/...and the@platformspackage instead. - (toolchains) consumers who were depending on the
MACOS_NAMEand thearchattribute in thePLATFORMSlist, please update your code to respect the new values. The values now correspond to the values available in the@platforms//package constraint values. - (toolchains)
host_platformandinterpreterconstants are no longer created in thetoolchaingenerated alias.bzlfiles. If you need to access the host interpreter during therepository_ruleevaluation, please use the@python_{version}_host//:pythontargets created by {bzl:obj}python_register_toolchainsand {bzl:obj}python_register_multi_toolchainsmacros or the {bzl:obj}pythonbzlmod extension. - (bzlmod)
pip.parse.parse_all_requirements_filesattribute has been removed. See notes in the previous versions about what to do. - (deps) rules_cc 0.1.0 (workspace) and 0.0.16 (bzlmod).
- (deps) protobuf 29.0-rc2 (workspace; bzlmod already specifying that version).
Other changes:
- (python_repository) Start honoring the
strip_prefixfield forzstdarchives. - (pypi) {bzl:obj}
pip_parse.extra_hub_aliasesnow works in WORKSPACE files. - (binaries/tests) For {obj}
--bootstrap_impl=script, a binary-specific (but otherwise empty) virtual env is used to customizesys.pathinitialization. - (deps) bazel_skylib 1.7.0 (workspace; bzlmod already specifying that version)
- (deps) bazel_features 1.21.0; necessary for compatiblity with Bazel 8 rc3
- (deps) stardoc 0.7.2 to support Bazel 8.
{#v1-0-0-fixed}
Fixed
- (toolchains) stop depending on
unameto get the value of the host platform. - (pypi): Correctly handle multiple versions of the same package in the requirements files which is useful when including different PyTorch builds (e.g. <pytorch+cpu> vs <pytorch+cu118> ) for different target platforms. Fixes (2337).
- (uv): Correct the sha256sum for the
uvbinary for aarch64-apple-darwin. Fixes (2411). - (binaries/tests) ({obj}
--bootstrap_impl=scipt) Usingsys.executablewill use the samesys.pathsetup as the calling binary. (2169). - (workspace) Corrected protobuf's name to com_google_protobuf, the name is hardcoded in Bazel, WORKSPACE mode.
- (pypi): {bzl:obj}
compile_pip_requirementsno longer fails on Windows when--enable_runfilesis not enabled. - (pypi): {bzl:obj}
compile_pip_requirementsnow correctly updates files in the source tree on Windows when--windows_enable_symlinksis not enabled. - (repositories): Add libs/python3.lib and pythonXY.dll to the
libpythontarget defined by a repository template. This enables stable ABI builds of Python extensions on Windows (by defining Py_LIMITED_API). - (rules)
py_testandpy_binarytargets no longer incorrectly remove the firstsys.pathentry when using {obj}--bootstrap_impl=script
{#v1-0-0-added}
Added
- (gazelle): Parser failures will now be logged to the terminal. Additional
details can be logged by setting
RULES_PYTHON_GAZELLE_VERBOSE=1. - (toolchains) allow users to select which variant of the support host toolchain
they would like to use through
RULES_PYTHON_REPO_TOOLCHAIN_{VERSION}_{OS}_{ARCH}env variable setting. For example, this allows one to usefreethreadedpython interpreter in therepository_ruleto build a wheel fromsdist. - (toolchain) The python interpreters targeting
muslclibc have been added for 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_libcbuild flag. - (providers) Added {obj}
py_runtime_info.site_init_templateand {obj}PyRuntimeInfo.site_init_templatefor specifying the template to use to initialize the interpreter via venv startup hooks. - (runfiles) (Bazel 7.4+) Added support for spaces and newlines in runfiles paths
{#v1-0-0-removed}
Removed
- (pypi): Remove
pypi_install_dependenciesmacro that has been included in {bzl:obj}py_repositoriesfor a long time. - (bzlmod): Remove
DEFAULT_PYTHON_VERSIONfrominterpreters.bzlfile. If you need the version, please use it from theversions.bzlfile instead.
{#v0-40-0}
v0.40.0
{#v0-40-changed}
Changed
- Nothing changed.
{#v0-40-fixed}
Fixed
- (rules) Don't drop custom import paths if Bazel-builtin PyInfo is removed. (2414).
{#v0-40-added}
Added
- Nothing added.
{#v0-40-removed}
Removed
- (publish) Remove deprecated
requirements.txtfor thetwinedependencies. Please userequirements_linux.txtinstead. - (python_repository) Use bazel's built in
zstdsupport and remove attributes for customizing thezstdbinary to be used forzstdarchives in the {bzl:obj}python_repositoryrepository_rule. This affects the {bzl:obj}python_register_toolchainsand {bzl:obj}python_register_multi_toolchainscallers in theWORKSPACE.
{#v0-39-0}
v0.39.0
{#v0-39-0-changed}
Changed
- (deps) bazel_skylib 1.6.1 -> 1.7.1
- (deps) rules_cc 0.0.9 -> 0.0.14
- (deps) protobuf 24.4 -> 29.0-rc2
- (deps) rules_proto 6.0.0-rc1 -> 6.0.2
- (deps) stardoc 0.6.2 -> 0.7.1
- For bzlmod, Bazel 7.4 is now the minimum Bazel version.
- (toolchains) Use the latest indygreg toolchain release 20241016 for Python versions:
- 3.9.20
- 3.10.15
- 3.11.10
- 3.12.7
- 3.13.0
- (pypi) The naming scheme for the
bzlmodspoke repositories have changed as all of the givenrequirements.txtfiles are now parsed bydefault, to temporarily restore the behavior, you can use {bzl:obj}pip.parse.extra_hub_aliases, which will be removed or made noop in the future.
{#v0-39-0-fixed}
Fixed
- (precompiling) Skip precompiling (instead of erroring) if the legacy
@bazel_tools//tools/python:autodetecting_toolchainis being used (#2364).
{#v0-39-0-added}
Added
- Bazel 8 is now supported.
- (toolchain) Support for freethreaded Python toolchains is now available. Use
the config flag
//python/config_settings:py_freethreadedto toggle the selection of the free-threaded toolchains. - (toolchain) {obj}
py_runtime.abi_flagsattribute and {obj}PyRuntimeInfo.abi_flagsfield added.
{#v0-39-0-removed}
Removed
- Support for Bazel 6 using bzlmod has been dropped.
{#v0-38-0}
v0.38.0
{#v0-38-0-changed}
Changed
- (deps) (WORKSPACE only) rules_cc 0.0.13 and protobuf 27.0 is now the default version used; this for Bazel 8+ support (previously version was rules_cc 0.0.9 and no protobuf version specified) (2310).
- (publish) The dependencies have been updated to the latest available versions
for the
twinepublishing rule. - (whl_library) Remove
--no-build-isolationto allow non-hermetic sdist builds by default. Users wishing to keep this argument and to enforce more hermetic builds can do so by passing the argument inpip.parse#extra_pip_args - (pip.parse) {attr}
pip.parse.whl_modificationsnow normalizes the given whl names and nowpyyamlandPyYAMLwill both work. - (bzlmod)
pip.parsespoke repository naming will be changed in an upcoming release 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 thehubrepository directly and make use of {bzl:obj}pip.parse.extra_hub_aliasesfeature added in this release.
{#v0-38-0-fixed}
Fixed
- (pypi) (Bazel 7.4+) Allow spaces in filenames included in
whl_librarys (617). - (pypi) When {attr}
pip.parse.experimental_index_urlis set, we need to still pass theextra_pip_argsvalue when building ansdist. - (pypi) The patched wheel filenames from now on are using local version specifiers which fixes usage of the said wheels using standard package managers.
- (bzlmod) The extension evaluation has been adjusted to always generate the
same lock file irrespective if
experimental_index_urlis set by any module or not. To opt into this behavior, setpip.parse.parse_all_requirements_files, which will become the default in future releases leading up to1.0.0. Fixes #2268. A known issue is that it may breakbazel queryand in these use cases it is advisable to usecqueryor switch todownload_only = True
{#v0-38-0-added}
Added
- (publish) The requirements file for the
twinepublishing rules have been updated to have a new convention:requirements_darwin.txt,requirements_linux.txt,requirements_windows.txtfor each respective OS and one extra filerequirements_universal.txtif you prefer a single file. Therequirements.txtfile may be removed in the future. - The rules_python version is now reported in
//python/features.bzl#features.version - (pip.parse) {attr}
pip.parse.extra_hub_aliasescan now be used to expose extra targets created by annotations in whl repositories. Fixes #2187. - (bzlmod)
pip.parsenow supportswhl-onlysetup usingdownload_only = Truewhere users can specify multiple requirements files and use thepipbackend to do the downloading. This was only available for users setting {bzl:obj}pip.parse.experimental_index_url, but now users have more options whilst we continue to work on stabilizing the experimental feature.
{#v0-37-2}
v0.37.2
{#v0-37-2-fixed}
Fixed
- (bzlmod) Generate
config_settingvalues for all available toolchains instead of only the registered toolchains, which restores the previous behaviour thatbzlmodusers would have observed.
{#v0-37-1}
v0.37.1
{#v0-37-1-fixed}
Fixed
- (rules) Setting
--incompatible_python_disallow_native_rulesno longer causes rules_python rules to fail (#2326).
{#v0-37-0}
v0.37.0
{#v0-37-0-changed}
Changed
- BREAKING
py_libraryno longer puts its source files or generated pyc files in runfiles; it's the responsibility of consumers (e.g. binaries) to populate runfiles with the necessary files. Adding source files to runfiles can be temporarily restored by setting {obj}--add_srcs_to_runfiles=enabled, but this flag will be removed in a subsequent releases. - {obj}
PyInfo.transitive_sourcesis now added to runfiles. These files are.pyfiles that are required to be added to runfiles by downstream binaries (or equivalent). - (toolchains)
py_runtime.implementation_namenow defaults tocpython(previously it defaulted to None). - (toolchains) The exec tools toolchain is enabled by default. It can be
disabled by setting
{obj}
--@​rules_python//python/config_settings:exec_tools_toolchain=disabled. - (deps) stardoc 0.6.2 added as dependency.
{#v0-37-0-fixed}
Fixed
- (bzlmod) The
python.override(minor_mapping)now merges the default and the overridden versions ensuring that the resultantminor_mappingwill always have all of the python versions. - (bzlmod) The default value for the {obj}
--python_versionflag will now be always set to the default python toolchain version value. - (bzlmod) correctly wire the {attr}
pip.parse.extra_pip_argsall the way to {obj}whl_library. What is more we will pass theextra_pip_argsto {obj}whl_libraryforsdistdistributions when using {attr}pip.parse.experimental_index_url. See #2239. - (whl_filegroup): Provide per default also the
RECORDfile - (py_wheel):
RECORDfile entry elements are now quoted if necessary when a wheel is created - (whl_library) truncate progress messages from the repo rule to better handle
case where a requirement has many
--hash=sha256:...flags - (rules)
compile_pip_requirementspassesenvto theX.updatetarget (and not only to theX_testtarget, a bug introduced in #1067). - (bzlmod) In hybrid bzlmod with WORKSPACE builds,
python_register_toolchains(register_toolchains=True)is respected (#1675). - (precompiling) The {obj}
pyc_collectionattribute now correctly enables (or disables) using pyc files from targets transitively - (pip) Skip patching wheels not matching
pip.override'sfile(#2294). - (chore): Add a
rules_shelldev dependency and moved ash_testtarget outside of the//:BUILD.bazelfile. Fixes #2299.
{#v0-37-0-added}
Added
- (py_wheel) Now supports
compress = (True|False)to allow disabling compression to speed up development. - (toolchains): A public
//python/config_settings:python_version_major_minorhas been exposed for users to be able to match on theX.Yversion of a Python interpreter. - (api) Added {obj}
merge_py_infos()so user rules can merge and propagatePyInfowithout losing information. - (toolchains) New Python versions available: 3.13.0 using the 20241008 release.
- (toolchains): Bump default toolchain versions to:
3.8 -> 3.8.203.9 -> 3.9.203.10 -> 3.10.153.11 -> 3.11.103.12 -> 3.12.7
- (coverage) Add support for python 3.13 and bump
coverage.pyto 7.6.1. - (bzlmod) Add support for
download_onlyflag to disable usage ofsdistswhen {bzl:attr}pip.parse.experimental_index_urlis set. - (api) PyInfo fields: {obj}
PyInfo.transitive_implicit_pyc_files, {obj}PyInfo.transitive_implicit_pyc_source_files.
{#v0-37-0-removed}
Removed
- (precompiling) {obj}
--precompile_add_to_runfileshas been removed. - (precompiling) {obj}
--pyc_collectionhas been removed. Thepyc_collectionattribute now bases its default on {obj}--precompile. - (precompiling) The {obj}
precompile=if_generated_sourcevalue has been removed. - (precompiling) The {obj}
precompile_source_retention=omit_if_generated_sourcevalue has been removed.
{#v0-36-0}
v0.36.0
{#v0-36-0-changed}
Changed
- (gazelle): Update error messages when unable to resolve a dependency to be more human-friendly.
- (flags) The {obj}
--python_versionflag now also returns {obj}config_common.FeatureFlagInfo. - (toolchain): The toolchain patches now expose the
patch_stripattribute that one should use when patching toolchains. Please set it if you are patching python interpreter. In the next release the default will be set to0which better reflects the defaults used in publicbazelAPIs. - (toolchains) When {obj}
py_runtime.interpreter_version_infoisn't specified, the {obj}--python_versionflag will determine the value. This allows specifying the build-time Python version for the {obj}runtime_env_toolchains. - (toolchains) {obj}
py_cc_toolchain.libsand {obj}PyCcToolchainInfo.libsis optional. This is to support situations where only the Python headers are available. - (bazel) Minimum bazel 7 version that we test against has been bumped to
7.1.
{#v0-36-0-fixed}
Fixed
- (whl_library): Remove
--no-indexand add--no-build-isolationto thepip installcommand when installing a wheel from a local file, which happens whenexperimental_index_urlflag is used. - (bzlmod) get the path to the host python interpreter in a way that results in platform non-dependent hashes in the lock file when the requirement markers need to be evaluated.
- (bzlmod) correctly watch sources used for evaluating requirement markers for any changes so that the repository rule or module extensions can be re-evaluated when the said files change.
- (gazelle): Fix incorrect use of
t.Fatal/t.Fatalfin tests. - (toolchain) Omit third-party python packages from coverage reports from stage2 bootstrap template.
- (bzlmod) Properly handle relative path URLs in parse_simpleapi_html.bzl
- (gazelle) Correctly resolve deps that have top-level module overlap with a gazelle_python.yaml dep module
- (rules) Make
RUNFILES_MANIFEST_FILE-based invocations work when used with {obj}--bootstrap_impl=script. This fixes invocations using non-sandboxed test execution with--enable_runfiles=false --build_runfile_manifests=true. (#2186). - (py_wheel) Fix incorrectly generated
Required-Distwhen specifying requirements with markers in extra_requires in py_wheel rule. - (rules) Prevent pytest from trying run the generated stage2
bootstrap .py file when using {obj}
--bootstrap_impl=script - (toolchain) The {bzl:obj}
gen_python_config_settingshas been fixed to include the flag_values from the platform definitions.
{#v0-36-0-added}
Added
- (bzlmod): Toolchain overrides can now be done using the new
{bzl:obj}
python.override, {bzl:obj}python.single_version_overrideand {bzl:obj}python.single_version_platform_overridetag classes. See #2081. - (rules) Executables provide {obj}
PyExecutableInfo, which contains executable-specific information useful for packaging an executable or or deriving a new one from the original. - (py_wheel) Removed use of bash to avoid failures on Windows machines which do not have it installed.
- (docs) Automatically generated documentation for {bzl:obj}
python_register_toolchainsand related symbols. - (toolchains) Added {attr}
python_repository.patch_stripattribute for allowing values that are other than1, which has been hard-coded up until now. If you are relying on the undocumentedpatchessupport inTOOL_VERSIONSfor registering patched toolchains please consider setting thepatch_stripexplicitly to1if you depend on this value - in the future the value may change to default to0. - (toolchains) Added
//python:none, a special target for use with {obj}py_exec_tools_toolchain.exec_interpreterto treat the value asNone.
{#v0-36-0-removed}
Removed
- (toolchains): Removed accidentally exposed
http_archivesymbol frompython/repositories.bzl. - (toolchains): An internal is_python_config_setting macro has been removed.
{#v0-35-0}
v0.35.0
{#v0-35-0-changed}
Changed
- (whl_library) A better log message when the wheel is built from an sdist or
when the wheel is downloaded using
download_onlyfeature 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)
PYTHONSAFEPATHis inherited from the calling environment to allow disabling it (Requires {obj}--bootstrap_impl=script) (#2060).
{#v0-35-0-fixed}
Fixed
- (rules)
compile_pip_requirementsnow sets theUSERPROFILEenv variable on Windows to work around an issue wheresetuptoolsfails 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_libsin host platform builds on macOS, by editing theLC_ID_DYLIBfield of the hermetic interpreter'slibpython3.x.dylibusinginstall_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) - (rules) Fixes Python builds when the
--build_python_zipis set tofalseon Windows. See #1840. - (rules) Fixes Mac +
--build_python_zip+ {obj}--bootstrap_impl=script(#2030). - (rules) User dependencies come before runtime site-packages when using
{obj}
--bootstrap_impl=script. (#2064). - (rules) Version-aware rules now return both
@_builtinsand@rules_pythonproviders instead of only one. (#2114). - (pip) Fixed pypi parse_simpleapi_html function for feeds with package metadata containing ">" sign
- (toolchains) Added missing executable permission to
//python/runtime_env_toolchainsinterpreter script so that it is runnable. (#2085). - (pip) Correctly use the
sdistdownloaded by the bazel downloader when usingexperimental_index_urlfeature. Fixes #2091. - (gazelle) Make
gazelle_python_manifest.updatemanual to avoid unnecessary network behavior. - (bzlmod): The conflicting toolchains during
pythonextension will no longer cause warnings by default. In order to see the warnings for diagnostic purposes set the env varRULES_PYTHON_REPO_DEBUG_VERBOSITYto one ofINFO,DEBUGorTRACE. Fixes #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.
{#v0-35-0-added}
Added
- (rules)
compile_pip_requirementssupports multiple requirements input files assrcs. - (rules)
PYTHONSAFEPATHis inherited from the calling environment to allow disabling it (Requires {obj}--bootstrap_impl=script) (#2060). - (gazelle) Added
python_generation_mode_per_package_require_test_entry_pointin order to better accommodate users who use a custom macro,pytest-bazel, rules_python_pytest orrules_pypy_test_main in order to integrate withpytest. Currently the default flag value is set totruefor backwards compatible behaviour, but in the future the flag will be flipped befalseby default. - (toolchains) New Python versions available:
3.12.4using 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).
{#v0-34-0}
v0.34.0
{#v0-34-0-changed}
Changed
protobuf/com_google_protobufdependency bumped tov24.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.
{#v0-34-0-fixed}
Fixed
- (bzlmod): When using
experimental_index_urltheall_requirements,all_whl_requirementsandall_data_requirementswill 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 thedepsof the materializedpy_library. If you would like to include platform specific packages, using aselectstatement 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_requirementsnow use the same form as targets returned by therequirementmacro. - (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}
PyRuntimeInfodoesn't require passing theinterpreter_version_infoarg. - (bzlmod) Correctly pass
isolated,quietandtimeoutvalues towhl_libraryand 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. - (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)
{#v0-34-0-added}
Added
- (toolchains) {obj}
//python/runtime_env_toolchains:all, which is a drop-in replacement for the "autodetecting" toolchain. - (gazelle) Added new
python_label_conventionandpython_label_normalizationdirectives. These directive allows altering default Gazelle label format to third-party dependencies useful for re-using Gazelle plugin with other rules, includingrules_pycross. See #1939.
{#v0-34-0-removed}
Removed
- (pip): Removes the
entrypointmacro that was replaced bypy_console_script_binaryin 0.26.0.
{#v0-33-2}
v0.33.2
{#v0-33-2-fixed}
Fixed
- (toolchains) The {obj}
exec_tools_toolchain_typeis 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.
{#v0-33-1}
v0.33.1
{#v0-33-1-fixed}
Fixed
- (py_binary) Fix building of zip file when using
--build_python_zipargument. Fixes #1954.
{#v0-33-0}
v0.33.0
{#v0-33-0-changed}
Changed
- (deps) Upgrade the
pip_installdependencies to pick up a new version of pip. - (toolchains) Optional toolchain dependency:
py_binary,py_test, andpy_librarynow depend on the//python:exec_tools_toolchain_typefor build tools. - (deps): Bumped
bazel_skylibto 1.6.1. - (bzlmod): The
pythonand internalrules_pythonextensions have been marked asreproducibleand 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-listfor standard library module verification. - (pip.parse): Do not ignore yanked packages when using
experimental_index_url. This is to mimic whatuvis doing. We will print a warning instead. - (pip.parse): Add references to all supported wheels when using
experimental_index_urlto 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 and #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.bzlno longer has platform-specific labels which where left there for compatibility reasons. Move topython_{version}_hostkeys if you would like to have access to a Python interpreter that can be used in a repository rule context.
{#v0-33-0-fixed}
Fixed
- (gazelle) Remove
visibilityfromNonEmptyAttr. Now empty(have nodeps/main/srcs/importsattr)py_library/test/binaryrules will be automatically deleted correctly. For example, ifpython_generation_modeis set to package, when__init__.pyis deleted, thepy_librarygenerated 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_platformsincludes 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)
- (pip.parse): The lock file is now reproducible on any host platform if the
experimental_index_urlis not used by any of the modules in the dependency chain. To make the lock file identical on eachosandarch, please use theexperimental_index_urlfeature which will fetch metadata from PyPI or a different private index and write the contents to the lock file. Fixes #1643. - (pip.parse): Install
yankedpackages and print a warning instead of ignoring them. This better matches the behaviour ofuv 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_versionflag setting. - (doc) Fix the
WORKSPACErequirement vendoring example. Fixes #1918.
{#v0-33-0-added}
Added
- (rules) Precompiling Python source at build time is available. but is
disabled by default, for now. Set
@rules_python//python/config_settings:precompile=enabledto 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) - (rules) Attributes and flags to control precompile behavior:
precompile,precompile_optimize_level,precompile_source_retention,precompile_invalidation_mode, andpyc_collection - (toolchains) The target runtime toolchain (
//python:toolchain_type) has two new optional attributes:pyc_tag(tells the pyc filename infix to use) andimplementation_name(tells the Python implementation name). - (toolchains) A toolchain type for build tools has been added:
//python:exec_tools_toolchain_type. - (providers)
PyInfohas two new attributes:direct_pyc_filesandtransitive_pyc_files, which tell the pyc files a target makes available directly and transitively, respectively. //python:features.bzladded 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 withextra_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_visibilitydirective now supports the$python_root$placeholder, just like thepython_default_visibilitydirective 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) - (providers)
PyRuntimeInfohas two new attributes: {obj}PyRuntimeInfo.stage2_bootstrap_templateand {obj}PyRuntimeInfo.zip_main_template. - (toolchains) A replacement for the Bazel-builtn autodetecting toolchain is
available. The
//python:autodetecting_toolchainalias now uses it. - (pip): Support fetching and using the wheels for other platforms. This
supports customizing whether the linux wheels are pulled for
muslorglibc, whetheruniversal2or arch-specific MacOS wheels are preferred and it also allows to select a particularlibcversion. Al
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.
- [ ] If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.
Stale pull request message. Please comment to remove stale tag. Otherwise this pr will be closed soon.
Stale pull request message. Please comment to remove stale tag. Otherwise this pr will be closed soon.
Stale pull request message. Please comment to remove stale tag. Otherwise this pr will be closed soon.
Renovate Ignore Notification
Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 1.x releases. But if you manually upgrade to 1.x then Renovate will re-enable minor and patch updates automatically.
If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.