-
Notifications
You must be signed in to change notification settings - Fork 9
Update dependency rules_python to v0.40.0 #782
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
renovate
wants to merge
1
commit into
main
Choose a base branch
from
renovate/rules_python-0.x
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5914b51 to
25d8965
Compare
e20b86a to
2071c9d
Compare
051030d to
b204d39
Compare
59ce5c2 to
3b7bf7c
Compare
4e6adc3 to
060aeee
Compare
59c32cd to
08b3835
Compare
08b3835 to
bc24ea9
Compare
bc24ea9 to
2dcf8bb
Compare
2dcf8bb to
82dc141
Compare
82dc141 to
ff75258
Compare
ff75258 to
8cbd5fe
Compare
8cbd5fe to
02da806
Compare
02da806 to
bd48f66
Compare
bd48f66 to
a01ea95
Compare
a01ea95 to
e4feb41
Compare
e4feb41 to
d3826b9
Compare
d3826b9 to
54ab297
Compare
54ab297 to
4af63f5
Compare
4af63f5 to
c23b83e
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
None yet
0 participants
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.5.0->0.40.0Release Notes
bazelbuild/rules_python (rules_python)
v0.40.0Compare Source
{#v0-40-changed}
Changed
{#v0-40-fixed}
Fixed
(2414).
{#v0-40-added}
Added
{#v0-40-removed}
Removed
requirements.txtfor thetwinedependencies.Please use
requirements_linux.txtinstead.zstdsupport and remove attributesfor customizing the
zstdbinary 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.0Compare Source
{#v0-39-0-changed}
Changed
bzlmodspoke repositories have changed asall of the given
requirements.txtfiles 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_toolchainis being used(#2364).
{#v0-39-0-added}
Added
the config flag
//python/config_settings:py_freethreadedto toggle theselection of the free-threaded toolchains.
py_runtime.abi_flagsattribute and{obj}
PyRuntimeInfo.abi_flagsfield added.{#v0-39-0-removed}
Removed
{#v0-38-0}
v0.38.0Compare 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
twinepublishing rule.--no-build-isolationto 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_argspip.parse.whl_modificationsnow normalizes the given whl namesand now
pyyamlandPyYAMLwill both work.pip.parsespoke 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
hubrepository directly and make use of {bzl:obj}
pip.parse.extra_hub_aliasesfeature added in this release.
{#v0-38-0-fixed}
Fixed
whl_librarys(617).
pip.parse.experimental_index_urlis set, we need to stillpass the
extra_pip_argsvalue when building ansdist.which fixes usage of the said wheels using standard package managers.
same lock file irrespective if
experimental_index_urlis 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 queryand in these use cases it isadvisable to use
cqueryor switch todownload_only = True{#v0-38-0-added}
Added
twinepublishing rules have beenupdated to have a new convention:
requirements_darwin.txt,requirements_linux.txt,requirements_windows.txtfor each respective OSand one extra file
requirements_universal.txtif you prefer a single file.The
requirements.txtfile may be removed in the future.//python/features.bzl#features.versionpip.parse.extra_hub_aliasescan now be used to expose extratargets created by annotations in whl repositories.
Fixes #2187.
pip.parsenow supportswhl-onlysetup usingdownload_only = Truewhere users can specify multiple requirements filesand use the
pipbackend 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}
v0.37.2Compare Source
{#v0-37-2-fixed}
Fixed
config_settingvalues for all available toolchains insteadof only the registered toolchains, which restores the previous behaviour that
bzlmodusers would have observed.{#v0-37-1}
v0.37.1Compare Source
{#v0-37-1-fixed}
Fixed
--incompatible_python_disallow_native_rulesno longercauses rules_python rules to fail
(#2326).
{#v0-37-0}
v0.37.0Compare Source
{#v0-37-0-changed}
Changed
py_libraryno longer puts its source files or generated pycfiles 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.
PyInfo.transitive_sourcesis now added to runfiles. These files are.pyfiles that are required to be added to runfiles by downstream binaries(or equivalent).
py_runtime.implementation_namenow defaults tocpython(previously it defaulted to None).
disabled by setting
{obj}
--@​rules_python//python/config_settings:exec_tools_toolchain=disabled.{#v0-37-0-fixed}
Fixed
python.override(minor_mapping)now merges the default and theoverridden versions ensuring that the resultant
minor_mappingwill alwayshave all of the python versions.
--python_versionflag will now bealways set to the default python toolchain version value.
pip.parse.extra_pip_argsall theway to
whl_library. What is more we will pass theextra_pip_argstowhl_libraryforsdistdistributions when using{attr}
pip.parse.experimental_index_url. See#2239.
RECORDfileRECORDfile entry elements are now quoted if necessary when awheel is created
case where a requirement has many
--hash=sha256:...flagscompile_pip_requirementspassesenvto theX.updatetarget (andnot only to the
X_testtarget, a bug introduced in#1067).
python_register_toolchains(register_toolchains=True)is respected(#1675).
pyc_collectionattribute now correctlyenables (or disables) using pyc files from targets transitively
pip.override'sfile(#2294).
rules_shelldev dependency and moved ash_testtargetoutside of the
//:BUILD.bazelfile.Fixes #2299.
{#v0-37-0-added}
Added
compress = (True|False)to allow disablingcompression to speed up development.
//python/config_settings:python_version_major_minorhasbeen exposed for users to be able to match on the
X.Yversion of a Pythoninterpreter.
merge_py_infos()so user rules can merge and propagatePyInfowithout losing information.3.8 -> 3.8.203.9 -> 3.9.203.10 -> 3.10.153.11 -> 3.11.103.12 -> 3.12.7coverage.pyto 7.6.1.download_onlyflag to disable usage ofsdistswhen {bzl:attr}
pip.parse.experimental_index_urlis set.PyInfo.transitive_implicit_pyc_files,{obj}
PyInfo.transitive_implicit_pyc_source_files.{#v0-37-0-removed}
Removed
--precompile_add_to_runfileshas been removed.--pyc_collectionhas been removed. Thepyc_collectionattribute now bases its default on {obj}
--precompile.precompile=if_generated_sourcevalue has been removed.precompile_source_retention=omit_if_generated_sourcevalue has been removed.{#v0-36-0}
v0.36.0Compare Source
{#v0-36-0-changed}
Changed
--python_versionflag now also returns{obj}
config_common.FeatureFlagInfo.patch_stripattributethat one should use when patching toolchains. Please set it if you are
patching python interpreter. In the next release the default will be set to
0which better reflects the defaults used in publicbazelAPIs.py_runtime.interpreter_version_infoisn't specified,the {obj}
--python_versionflag will determine the value. This allowsspecifying the build-time Python version for the
{obj}
runtime_env_toolchains.py_cc_toolchain.libsand {obj}PyCcToolchainInfo.libsisoptional. This is to support situations where only the Python headers are
available.
7.1.{#v0-36-0-fixed}
Fixed
--no-indexand add--no-build-isolationto thepip installcommand when installing a wheel from a local file, which happenswhen
experimental_index_urlflag is used.platform non-dependent hashes in the lock file when the requirement markers need
to be evaluated.
any changes so that the repository rule or module extensions can be
re-evaluated when the said files change.
t.Fatal/t.Fatalfin tests.stage2 bootstrap template.
RUNFILES_MANIFEST_FILE-based invocations work when used with{obj}
--bootstrap_impl=script. This fixes invocations using non-sandboxedtest execution with
--enable_runfiles=false --build_runfile_manifests=true.(#2186).
Required-Distwhen specifying requirements with markersin extra_requires in py_wheel rule.
bootstrap .py file when using {obj}
--bootstrap_impl=scriptgen_python_config_settingshas been fixed to includethe flag_values from the platform definitions.
{#v0-36-0-added}
Added
{bzl:obj}
python.override, {bzl:obj}python.single_version_overrideand{bzl:obj}
python.single_version_platform_overridetag classes.See #2081.
PyExecutableInfo, which containsexecutable-specific information useful for packaging an executable or
or deriving a new one from the original.
have it installed.
python_register_toolchainsand related symbols.
python_repository.patch_stripattribute forallowing values that are other than
1, which has been hard-coded up untilnow. If you are relying on the undocumented
patchessupport inTOOL_VERSIONSfor registering patched toolchains please consider settingthe
patch_stripexplicitly to1if you depend on this value - in thefuture the value may change to default to
0.//python:none, a special target for use with{obj}
py_exec_tools_toolchain.exec_interpreterto treat the value asNone.{#v0-36-0-removed}
Removed
http_archivesymbol frompython/repositories.bzl.{#v0-35-0}
v0.35.0Compare Source
{#v0-35-0-changed}
Changed
when the wheel is downloaded using
download_onlyfeature to aid debugging.It would work well in cases to reduce merge conflicts.
include dependency updates
3.8.19,3.9.19,3.10.14,3.11.93.12 -> 3.12.4PYTHONSAFEPATHis inherited from the calling environment to allowdisabling it (Requires {obj}
--bootstrap_impl=script)(#2060).
{#v0-35-0-fixed}
Fixed
compile_pip_requirementsnow sets theUSERPROFILEenv variable onWindows to work around an issue where
setuptoolsfails to locate the user'shome directory.
@rules_python//python/cc:current_py_cc_libsin host platform builds on macOS, by editing the
LC_ID_DYLIBfield of the hermetic interpreter'slibpython3.x.dylibusinginstall_name_tool, setting it to its absolute path under Bazel'sexecroot.
--bootstrap_impl=script(for non-zip builds).
(#2043)
--build_python_zipis set tofalseonWindows. See #1840.
--build_python_zip+ {obj}--bootstrap_impl=script(#2030).
{obj}
--bootstrap_impl=script.(#2064).
@_builtinsand@rules_pythonproviders instead of only one.
(#2114).
containing ">" sign
//python/runtime_env_toolchainsinterpreter script so that it is runnable.(#2085).
sdistdownloaded by the bazel downloader when usingexperimental_index_urlfeature. Fixes#2091.
gazelle_python_manifest.updatemanual to avoid unnecessarynetwork behavior.
pythonextension will no longercause warnings by default. In order to see the warnings for diagnostic purposes
set the env var
RULES_PYTHON_REPO_DEBUG_VERBOSITYto one ofINFO,DEBUGorTRACE.Fixes #1818.
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
compile_pip_requirementssupports multiple requirements input files assrcs.PYTHONSAFEPATHis inherited from the calling environment to allowdisabling it (Requires {obj}
--bootstrap_impl=script)(#2060).
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 with
pytest. Currently the defaultflag value is set to
truefor backwards compatible behaviour, but in thefuture the flag will be flipped be
falseby default.3.12.4using the 20240726 release.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.0Compare Source
{#v0-34-0-changed}
Changed
protobuf/com_google_protobufdependency bumped tov24.4reduce the total number of targets in the hub repo.
the regular interpreter toolchain. This avoids having to duplicate specifying
where the runtime for the exec tools toolchain is.
//python:autodetecting_toolchain) is deprecated. It isreplaced by {obj}
//python/runtime_env_toolchains:all. The old target will beremoved in a future release.
{#v0-34-0-fixed}
Fixed
experimental_index_urltheall_requirements,all_whl_requirementsandall_data_requirementswill now only includecommon packages that are available on all target platforms. This is to ensure
that packages that are only present for some platforms are pulled only via
the
depsof the materializedpy_library. If you would like to includeplatform specific packages, using a
selectstatement with references to thespecific package will still work (e.g.
all_requirementsnow use the same form as targets returned by therequirementmacro.such as precompiling, to pick an execution platform separately from what
other toolchains support.
PyRuntimeInfodoesn't require passing theinterpreter_version_infoarg.isolated,quietandtimeoutvalues towhl_libraryand drop the defaults from the lock file.
platform specific wheel and use
experimental_target_platforms.Fixes #1996.
{#v0-34-0-added}
Added
//python/runtime_env_toolchains:all, which is a drop-inreplacement for the "autodetecting" toolchain.
python_label_conventionandpython_label_normalizationdirectives. These directiveallows altering default Gazelle label format to third-party dependencies useful for re-using Gazelle plugin
with other rules, including
rules_pycross. See #1939.{#v0-34-0-removed}
Removed
entrypointmacro that was replaced bypy_console_script_binaryin 0.26.0.{#v0-33-2}
v0.33.2Compare Source
{#v0-33-2-fixed}
Fixed
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.1Compare Source
{#v0-33-1-fixed}
Fixed
--build_python_zipargument. Fixes #1954.
{#v0-33-0}
v0.33.0Compare Source
{#v0-33-0-changed}
Changed
pip_installdependencies to pick up a new version of pip.py_binary,py_test, andpy_librarynow depend on the//python:exec_tools_toolchain_typefor buildtools.
bazel_skylibto 1.6.1.pythonand internalrules_pythonextensions have beenmarked as
reproducibleand will not include any lock file entries from nowon.
Introduced a new Go-based helper leveraging tree-sitter for syntax analysis.
Implemented the use of
pypi/stdlib-listfor standard library module verification.experimental_index_url.This is to mimic what
uvis doing. We will print a warning instead.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.
pythons_hub//:interpreters.bzlno longer has platform-specificlabels which where left there for compatibility reasons. Move to
python_{version}_hostkeys if you would like to have access to a Pythoninterpreter that can be used in a repository rule context.
{#v0-33-0-fixed}
Fixed
visibilityfromNonEmptyAttr.Now empty(have no
deps/main/srcs/importsattr)py_library/test/binaryrules willbe automatically deleted correctly. For example, if
python_generation_modeis set to package, when
__init__.pyis deleted, thepy_librarygeneratedfor this package before will be deleted automatically.
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.
"panic: runtime error: invalid memory address or nil pointer dereference"
pip.parse(annotations)attribute as it is unused and has beenreplaced by whl_modifications.
See (#1930)
experimental_index_urlis not used by any of the modules in the dependencychain. To make the lock file identical on each
osandarch, please usethe
experimental_index_urlfeature which will fetch metadata from PyPI or adifferent private index and write the contents to the lock file. Fixes
#1643.
yankedpackages and print a warning instead ofignoring them. This better matches the behaviour of
uv pip install.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.WORKSPACErequirement vendoring example. Fixes#1918.
{#v0-33-0-added}
Added
disabled by default, for now. Set
@rules_python//python/config_settings:precompile=enabledto enable itby default. A subsequent release will enable it by default. See the
Precompiling docs and API reference docs for more
information on precompiling. Note this requires Bazel 7+ and the Pystar rule
implementation enabled.
(#1761)
precompile,precompile_optimize_level,precompile_source_retention,precompile_invalidation_mode, andpyc_collection//python:toolchain_type) hastwo new optional attributes:
pyc_tag(tells the pyc filename infix to use) andimplementation_name(tells the Python implementation name).//python:exec_tools_toolchain_type.PyInfohas two new attributes:direct_pyc_filesandtransitive_pyc_files, which tell the pyc files a target makes availabledirectly and transitively, respectively.
//python:features.bzladded to allow easy feature-detection in the future.validations when parsing the inputs. This is a non-breaking change for most
users unless they have been passing multiple
requirements_*files togetherwith
extra_pip_args = ["--platform=manylinux_2_4_x86_64"], that was aninvalid usage previously but we were not failing the build. From now on this
is explicitly disallowed.
python_visibilitydirective now supports the$python_root$placeholder, just like the
python_default_visibilitydirective does.is available. It can be enabled by setting
{obj}
--@​rules_python//python/config_settings:bootstrap_impl=script. Itwill become the default in a subsequent release.
(#691)
PyRuntimeInfohas two new attributes:{obj}
PyRuntimeInfo.stage2_bootstrap_templateand{obj}
PyRuntimeInfo.zip_main_template.available. The
//python:autodetecting_toolchainalias now uses it.supports customizing whether the linux wheels are pulled for
muslorglibc, whetheruniversal2or arch-specific MacOS wheels are preferred andit also allows to select a particular
libcversion. All of this is done viathe
string_flagsin@rules_python//python/config_settings. If there areno wheels that are supported for the target platform,
rules_pythonwillfallback onto building the
sdistfrom source. This behaviour can bedisabled if desired using one of the available string flags as well.
whl_filegrouprule to extract files from a wheel file.This is useful to extract headers for use in a
cc_library.{#v0-32-2}
v0.32.2Compare Source
{#v0-32-2-fixed}
Fixed
{#v0-32-0}
v0.32.1Compare Source
Using Bzlmod with Bazel 6
NOTE: bzlmod support is still beta. APIs subject to change.
Add to your
MODULE.bazelfile:Using WORKSPACE
Paste this snippet into your
WORKSPACEfile:Gazelle plugin
Paste this snippet into your
WORKSPACEfile:What's Changed
Changed
MODULE.bazel.lockwhl_libraryrule attributes are nowsorted in the attributes section. We are also removing values that are not
default in order to reduce the size of the lock file.
coverage.pyto 7.4.3.non-blocking downloads.
pip_toolsto >= 7.4.0include security fixes
3.8.18,3.9.18and3.10.133.8 -> 3.8.193.9 -> 3.9.193.10 -> 3.10.143.11 -> 3.11.93.12 -> 3.12.3Fixed
specific wheels when the wheels are for any python interpreter version. Fixes
#1810.
duplicates in the METADATA. Fixes
#1873.
projectorpackagegeneration modes, do not generatepy_testrules when there are no test files and do not set
main = "__test__.py"whenthat file doesn't exist.
the group potentially fixing aspects that want to traverse a
py_librarygraph.Fixes #1760.
pip.parseextension is now possible, see theexamples/pip_parse/MODULE.bazelfor how to do it.See #1371.
isortandblackchecks (see #1674).
Added
3.11.8,3.12.2using the 20240224 release.3.8.19,3.9.19,3.10.14,3.11.9,3.12.3usingthe 20240415 release.
python_visibilitydirective to control visibilityof generated targets by appending additional visibility labels.
python_default_visibilitydirective to control thedefault visibility of generated targets. See the docs
for details.
python_test_file_patterndirective. This directive tellsgazelle which python files should be mapped to the
py_testrule. See theoriginal issue and the docs
for details.
data_filesattributes in py_wheel rule(#1777)
bzlmodinstallations now provide atwinesetup for the defaultPython toolchain in
rules_pythonfor version 3.11.experimental_index_url,experimental_extra_index_urlsandexperimental_index_url_overridestopip.parsefor using the bazeldownloader. If you see any issues, report in
#1357. The URLs for
the whl and sdist files will be written to the lock file. Controlling whether
the downloading of metadata is done in parallel can be done using
parallel_downloadattribute.include_dep. Also add documentation forannotations to
gazelle/README.md.rules_pythondepends now onrules_cc0.0.9use_hub_alias_dependencieshas been added that is goingto become default in the next release. This makes use of
dep_templateflagin the
whl_libraryrule. This also affects theexperimental_requirement_cyclesfeature where the dependencies that are ina group would be only accessible via the hub repo aliases. If you still
depend on legacy labels instead of the hub repo aliases and you use the
experimental_requirement_cycles, now is a good time to migrate.Full Changelog: bazel-contrib/rules_python@0.32.0...0.32.1
v0.32.0Compare Source
{#v0-32-0-changed}
Changed
MODULE.bazel.lockwhl_libraryrule attributes are nowsorted in the attributes section. We are also removing values that are not
default in order to reduce the size of the lock file.
coverage.pyto 7.4.3.bazel_featuresto 1.9.1 to detect optional supportnon-blocking downloads.
pip_toolsto >= 7.4.0include security fixes
3.8.18,3.9.18and3.10.133.8 -> 3.8.193.9 -> 3.9.193.10 -> 3.10.143.11 -> 3.11.93.12 -> 3.12.3Fixed
specific wheels when the wheels are for any python interpreter version. Fixes
#1810.
duplicates in the METADATA. Fixes
#1873.
projectorpackagegeneration modes, do not generatepy_testrules when there are no test files and do not set
main = "__test__.py"whenthat file doesn't exist.
the group potentially fixing aspects that want to traverse a
py_librarygraph.Fixes #1760.
pip.parseextension is now possible, see theexamples/pip_parse/MODULE.bazelfor how to do it.See #1371.
isortandblackchecks (see #1674).
Added
3.11.8,3.12.2using the 20240224 release.3.8.19,3.9.19,3.10.14,3.11.9,3.12.3usingthe 20240415 release.
python_visibilitydirective to control visibilityof generated targets by appending additional visibility labels.
python_default_visibilitydirective to control thedefault visibility of generated targets. See the docs
for details.
python_test_file_patterndirective. This directive tellsgazelle which python files should be mapped to the
py_testrule. See theoriginal issue and the docs
for details.
data_filesattributes in py_wheel rule(#1777)
bzlmodinstallations now provide atwinesetup for the defaultPython toolchain in
rules_pythonfor version 3.11.experimental_index_url,experimental_extra_index_urlsandexperimental_index_url_overridestopip.parsefor using the bazeldownloader. If you see any issues, report in
#1357. The URLs for
the whl and sdist files will be written to the lock file. Controlling whether
the downloading of metadata is done in parallel can be done using
parallel_downloadattribute.include_dep. Also add documentation forannotations to
gazelle/README.md.rules_pythondepends now onrules_cc0.0.9use_hub_alias_dependencieshas been added that is goingto become default in the next release. This makes use of
dep_templateflagin the
whl_libraryrule. This also affects theexperimental_requirement_cyclesfeature where the dependencies that are ina group would be only accessible via the hub repo aliases. If you still
depend on legacy labels instead of the hub repo aliases and you use the
experimental_requirement_cycles, now is a good time to migrate.v0.31.0Compare Source
Changed
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
PyInfois not the same as whatis loaded from rules_python. The same is true of
PyRuntimeInfo.v0.30.0Compare Source
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
envsubstparameter, which enables environment variablesubstitutions in the
extra_pip_argsattribute.(pip_repository) Added the
envsubstparameter, which enables environmentvariable substitutions in the
extra_pip_argsattribute.Fixed
(bzlmod) pip.parse now does not fail with an empty
requirements.txt.(py_wheel) Wheels generated by
py_wheelnow preserve executable bits whenbeing extracted by
installerand/orpip.(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_toolchainto symlink all files to supportWindows host environments without symlink support.
(PyRuntimeInfo) Switch back to builtin PyRuntimeInfo for Bazel 6.4 and when
pystar is disabled. This fixes an error about
target ... does not have ... PyRuntimeInfo.(#1732)
Added
(py_wheel) Added
requires_fileandextra_requires_filesattributes.(whl_library) experimental_target_platforms now supports specifying the
Python version explicitly and the output
BUILD.bazelfile will be correctirrespective of the python interpreter that is generating the file and
extracting the
whldistribution. Multiple python target version can bespecified and the code generation will generate version specific dependency
closures but that is not yet ready to be used and may break the build if
the default python version is not selected using
common --@​rules_python//python/config_settings:python_version=X.Y.Z.New Python versions available:
3.11.7,3.12.1usinghttps://github.com/indygreg/python-build-standalone/releases/tag/20240107.
(toolchain) Allow setting
x.yas thepython_versionparameter inthe version-aware
py_binaryandpy_testrules. This allows users touse 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.8is selected. That also simplifies.bazelrcfor any usersthat set the default
python_versionstring 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 usestoolchain 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, thenswitch to
:current_py_cc_libsfor looser coupling to the underlying runtimerepo implementation.
(repo rules) The environment variable
RULES_PYTHON_REPO_DEBUG=1can beset to make repository rules log detailed information about what they're
up to.
(coverage) Add support for python 3.12 and bump
coverage.pyto7.4.1.
v0.29.0Compare Source
Changed
incompatible_generate_aliasesfeature flagsfrom
pip_parseandgazellegot removed. They had been flipped toTruein 0.27.0 release.
incompatible_normalize_nameandincompatible_normalize_versionflags have been removed. They had beenflipped to
Truein 0.27.0 release.using the
X.Ypython version notation. This improves cross moduleinteroperability 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.lockfiles; Follow#1643 for removing
platform-specific content in
MODULE.bazel.lockfiles.(wheel) The stamp variables inside the distribution name are no longer
lower-cased when normalizing under PEP440 conventions.
Added
(toolchains)
python_register_toolchainsnow also generates a repositorythat is suffixed with
_host, that has a single label:pythonthat is asymlink to the python interpreter for the host platform. The intended use is
mainly in
repository_rule, which are always run usinghostplatformPython. This means that
WORKSPACEusers can now copy therequirements.bzlfile for vendoring as seen in the updated
pip_parse_vendoredexample.(runfiles)
rules_python.python.runfiles.Runfilesnow has a staticCreatemethod to make imports more ergonomic. Users should only need to import the
Runfilesobject to locate runfiles.(toolchains)
PyRuntimeInfonow includes ainterpreter_version_infofieldthat contains the static version information for the given interpreter.
This can be set via
py_runtimewhen 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.Yconfigsettings to match on minor Python version. These settings match any
X.Yversion instead of just an exact
X.Y.Zversion.v0.28.0Compare Source
Changed
BREAKING (pip_install) the deprecated
pip_installmacro 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.
Subsequent versions will no longer be tested under Bazel 5.
(runfiles)
rules_python.python.runfilesnow directly implements type hintsand drops support for python2 as a result.
(toolchains)
py_runtime,py_runtime_pair, andPyRuntimeInfonow 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_cyclesmay be provided amap of names to lists of requirements which form a dependency
cycle.
pip_parsewill break the cycle for you transparently. This behavioris also available under bzlmod as
pip.parse(experimental_requirement_cycles={}).(toolchains)
py_runtimecan now take an executable target. Note: runfilesfrom the target are not supported yet.
(#1612)
(gazelle) When
python_generation_modeis set tofile, create onepy_binarytarget for each file with
if __name__ == "__main__"instead of just onepy_binaryfor the whole module.(gazelle) the Gazelle manifest integrity field is now optional. If the
requirementsargument togazelle_python_manifestis unset, no integrityfield will be generated.
Fixed
(gazelle) The gazelle plugin helper was not working with Python toolchains 3.11
and above due to a bug in the helper components not being on PYTHONPATH.
(pip_parse) The repositories created by
whl_librarycan now parse thewhlMETADATA 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_parseor thebzlmodequivalent. This may help in cases where fetching wheels for a different
platform
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.