//python/config_settings — rules_python 0.0.0 documentation (original) (raw)
flag --//python/config_settings:add_srcs_to_runfiles
Determines if the srcs
of targets are added to their runfiles.
More specifically, the sources added to runfiles are the .py
files in srcs
. If precompiling is performed, it is the .py
files that are kept according to precompile_source_retention.
Values:
auto
: (default) Automatically decide the effective value; the current behavior isdisabled
.disabled
: Don’t addsrcs
to a target’s runfiles.enabled
: Addsrcs
to 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_python
maintains.
//python/config_settings:python_version_major_minor
Parses the value of the python_version
and transforms it into a X.Y
value.
//python/config_settings:is_python_*
config_settings to match Python versions
The name pattern is is_python_X.Y
(to match major.minor) and is_python_X.Y.Z
(to match major.minor.patch).
Note that the set of available targets depends on the configuredTOOL_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_setting
and have it match --python_versionor python_version_major_minor. 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",
}
)
2. Use python.single_override
to re-introduce the desired version so that the corresponding //python/config_setting:is_python_XXX
target is generated.
flag --//python/config_settings:exec_tools_toolchain
Determines if the exec_tools_toolchain_type toolchain 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 precompile
attribute, except for the case of force_enabled
and forced_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_source
value 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_retention
attribute.
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 auto
value
Changed in version 0.37.0: The omit_if_generated_source
value 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_python
only supplies toolchains compatible with glibc
.
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 pip
integration.
Values:
auto
: Preferwhl
distributions if they are compatible with a target platform, but fallback tosdist
. This is the default.only
: Only usewhl
distributions and error out if it is not available.no
: Only usesdist
distributions. The wheels will be built non-hermetically in thewhl_library
repository 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 glibc
version that the py_binary
using whl
distributions 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 aglibc
version. The allowed values depend on therequirements.txt
lock file contents.
Added in version 0.33.0.
flag --//python/config_settings:pip_whl_muslc_version
Set the minimum muslc
version that the py_binary
using whl
distributions 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 amuslc
version. The allowed values depend on therequirements.txt
lock file contents.
Added in version 0.33.0.
flag --//python/config_settings:pip_whl_osx_version
Set the minimum osx
version that the py_binary
using whl
distributions 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.txt
lock file contents.
Added in version 0.33.0.
flag --//python/config_settings:venvs_site_packages
Determines if libraries use a site-packages layout for their files.
Note this flag only affects PyPI dependencies of --bootstrap_impl=script
binaries
Warning
Experimental API. This API is still under development and may change or be removed without notice.
Values:
no
(default): Make libraries importable by adding tosys.path
yes
: Make libraries importable by creating paths in a binary’s site-packages directory.
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_template to 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 script
bootstrap requires the toolchain to provide the PyRuntimeInfo
provider from rules_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, the system_python
bootstrap will be used instead.
Added in version 0.33.0.
flag --//python/config_settings:current_config
Fail the build if the current build configuration does not match thepip.parse defined wheels.
Values:
fail
: Will fail in the build action ensuring that we get the error message no matter the action cache.- ``: (empty string) The default value, that will just print a warning.
Added in version 1.1.0.
flag --//python/config_settings:venvs_use_declare_symlink
Determines if relative symlinks are created using declare_symlink()
at build time.
This is only intended to work around#2489, where some packaging rules don’t support declare_symlink()
artifacts.
Values:
yes
: Usedeclare_symlink()
and create relative symlinks at build time.no
: Do not usedeclare_symlink()
. Instead, the venv will be created at runtime.
Added in version 1.2.0.