//python/config_settings
- flag --//python/config_settings:add_srcs_to_runfiles
Determines if the
srcsof targets are added to their runfiles.More specifically, the sources added to runfiles are the
.pyfiles insrcs. If precompiling is performed, it is the.pyfiles that are kept according toprecompile_source_retention.Values:
auto: (default) Automatically decide the effective value; the current behavior isdisabled.disabled: Don’t addsrcsto a target’s runfiles.enabled: Addsrcsto a target’s runfiles.
Added in version 0.37.0.
Deprecated since version 0.37.0: This is a transition flag and will be removed in a subsequent release.
- flag --//python/config_settings:python_version
Determines the default hermetic Python toolchain version. This can be set to one of the values that
rules_pythonmaintains.
- //python/config_settings:python_version_major_minor
Parses the value of the
python_versionand transforms it into aX.Yvalue.
- //python/config_settings:is_python_*
config_settings to match Python versions
The name pattern is
is_python_X.Y(to match major.minor) andis_python_X.Y.Z(to match major.minor.patch).Note that the set of available targets depends on the configured
TOOL_VERSIONS. Versions may not always be available if the root module has customized them, or as older Python versions are removed from rules_python’s set of builtin, known versions.If you need to match a version that isn’t present, then you have two options:
Manually define a
config_settingand have it match--python_versionor . This works best when you don’t control the root module, or don’t want to rely on the MODULE.bazel configuration. Such a config settings would look like:# Match any 3.5 version config_setting( name = "is_python_3.5", flag_values = { "@rules_python//python/config_settings:python_version_major_minor": "3.5", } ) # Match exactly 3.5.1 config_setting( name = "is_python_3.5.1", flag_values = { "@rules_python//python/config_settings:python_version": "3.5.1", } )
Use
python.single_overrideto re-introduce the desired version so that the corresponding//python/config_setting:is_python_XXXtarget is generated.
- flag --//python/config_settings:exec_tools_toolchain
Determines if the
exec_tools_toolchain_typetoolchain is enabled.Note
Note that this only affects the rules_python generated toolchains.
Values:
enabled: Allow matching of the registered toolchains at build time.disabled: Prevent the toolchain from being matched at build time.
Added in version 0.33.2.
- flag --//python/config_settings:precompile
Determines if Python source files should be compiled at build time.
Note
The flag value is overridden by the target level
precompileattribute, except for the case offorce_enabledandforced_disabled.Values:
auto: (default) Automatically decide the effective value based on environment, target platform, etc.enabled: Compile Python source files at build time.disabled: Don’t compile Python source files at build time.force_enabled: Likeenabled, except overrides target-level setting. This is mostly useful for development, testing enabling precompilation more broadly, or as an escape hatch if build-time compiling is not available.force_disabled: Likedisabled, except overrides target-level setting. This is useful useful for development, testing enabling precompilation more broadly, or as an escape hatch if build-time compiling is not available.
Added in version 0.33.0.
Changed in version 0.37.0: The
if_generated_sourcevalue was removed
- flag --//python/config_settings:precompile_source_retention
Determines, when a source file is compiled, if the source file is kept in the resulting output or not.
Note
This flag is overridden by the target level
precompile_source_retentionattribute.Values:
auto: (default) Automatically decide the effective value based on environment, target platform, etc.keep_source: Include the original Python source.omit_source: Don’t include the orignal py source.
Added in version 0.33.0.
Added in version 0.36.0: The
autovalueChanged in version 0.37.0: The
omit_if_generated_sourcevalue was removed
- flag --//python/config_settings:py_linux_libc
Set what libc is used for the target platform. This will affect which whl binaries will be pulled and what toolchain will be auto-detected. Currently
rules_pythononly supplies toolchains compatible withglibc.Values:
glibc: Useglibc, default.muslc: Usemuslc.
Added in version 0.33.0.
- flag --//python/config_settings:py_freethreaded
Set whether to use an interpreter with the experimental freethreaded option set to true.
Values:
no: Use regular Python toolchains, default.yes: Use the experimental Python toolchain with freethreaded compile option enabled.
Added in version 0.38.0.
- flag --//python/config_settings:pip_whl
Set what distributions are used in the
pipintegration.Values:
auto: Preferwhldistributions if they are compatible with a target platform, but fallback tosdist. This is the default.only: Only usewhldistributions and error out if it is not available.no: Only usesdistdistributions. The wheels will be built non-hermetically in thewhl_libraryrepository rule.
Added in version 0.33.0.
- flag --//python/config_settings:pip_whl_osx_arch
Set what wheel types we should prefer when building on the OSX platform.
Values:
arch: Prefer architecture specific wheels.universal: Prefer universal wheels that usually are bigger and contain binaries for both, Intel and ARM architectures in the same wheel.
Added in version 0.33.0.
- flag --//python/config_settings:pip_whl_glibc_version
Set the minimum
glibcversion that thepy_binaryusingwhldistributions from a PyPI index should support.Values:
"": Select the lowest available version of each wheel giving you the maximum compatibility. This is the default.X.Y: The string representation of aglibcversion. The allowed values depend on therequirements.txtlock file contents.
Added in version 0.33.0.
- flag --//python/config_settings:pip_whl_muslc_version
Set the minimum
muslcversion that thepy_binaryusingwhldistributions from a PyPI index should support.Values:
"": Select the lowest available version of each wheel giving you the maximum compatibility. This is the default.X.Y: The string representation of amuslcversion. The allowed values depend on therequirements.txtlock file contents.
Added in version 0.33.0.
- flag --//python/config_settings:pip_whl_osx_version
Set the minimum
osxversion that thepy_binaryusingwhldistributions from a PyPI index should support.Values:
"": Select the lowest available version of each wheel giving you the maximum compatibility. This is the default.X.Y: The string representation of the MacOS version. The allowed values depend on therequirements.txtlock file contents.
Added in version 0.33.0.
- flag --//python/config_settings:bootstrap_impl
Determine how programs implement their startup process.
Values:
system_python: Use a bootstrap that requires a system Python available in order to start programs. This requiresPyRuntimeInfo.bootstrap_templateto be a Python program.script: Use a bootstrap that uses an arbitrary executable script (usually a shell script) instead of requiring it be a Python program.
Note
The
scriptbootstrap requires the toolchain to provide thePyRuntimeInfoprovider fromrules_python. This loosely translates to using Bazel 7+ with a toolchain created by rules_python. Most notably, WORKSPACE builds default to using a legacy toolchain built into Bazel itself which doesn’t support the script bootstrap. If not available, thesystem_pythonbootstrap will be used instead.Added in version 0.33.0.