Documentation for @aspect_rules_py@v1.8.4 — View source
Choosing the Python version
Thepython_version attribute must refer to a python toolchain version
which has been registered in the WORKSPACE or MODULE.bazel file.
When using WORKSPACE, this may look like this:
Rule: py_pex_binary
Build a pex executable from a py_binary
Kind: Executable rule
Attributes
name
required
A unique name for this target.
label
required
A py_binary target
dictionary: String → String
default:"{}"
Environment variables to set when running the pex binary.
string
default:"\"\""
Whether to inherit the
sys.path (aka PYTHONPATH) of the environment that the binary runs in.Use false to not inherit sys.path; use fallback to inherit sys.path after packaged
dependencies; and use prefer to inherit sys.path before packaged dependencies.string
default:"#!/usr/bin/env python3"
list of strings
default:"[\"CPython=={major}.{minor}.*\"]"
Python interpreter versions this PEX binary is compatible with. A list of semver strings.
The placeholder strings
{major}, {minor}, {patch} can be used for gathering version
information from the hermetic python toolchain.Rule: py_binary_rule
Run a Python program under Bazel. Most users should use the py_binary macro instead of loading this directly.
Kind: Executable rule
Attributes
name
required
A unique name for this target.
dictionary: String → String
default:"{}"
Environment variables to set when running the binary.
label
default:"None"
Script to execute with the Python interpreter.Must be a label pointing to a
.py source file.
If such a label is provided, it will be honored.If no label is provided AND there is only one srcs file, that srcs file will be used.If there are more than one srcs, a file matching {name}.py is searched for.
This is for historical compatibility with the Bazel native py_binary and rules_python.
Relying on this behavior is STRONGLY discouraged, may produce warnings and may
be deprecated in the future.string
default:"\"\""
The name of the Python virtual environment within which deps should be resolved.Part of the aspect_rules_py//uv system, has no effect in rules_python’s pip.
string
default:"\"\""
Whether to build this target and its transitive deps for a specific python version.
string
default:"error"
The action that should be taken when a symlink collision is encountered when creating the venv.
A collision can occur when multiple packages providing the same file are installed into the venv. The possible values are:
- “error”: When conflicting symlinks are found, an error is reported and venv creation halts.
- “warning”: When conflicting symlinks are found, an warning is reported, however venv creation continues.
- “ignore”: When conflicting symlinks are found, no message is reported and venv creation continues.
list of strings
default:"[]"
Additional options to pass to the Python interpreter in addition to -B and -I passed by rules_py
list of labels
default:"[]"
Python source files.
list of labels
default:"[]"
Targets that produce Python code, commonly
py_library rules.list of labels
default:"[]"
Runtime dependencies of the program.The transitive closure of the
data dependencies will be available in the .runfiles
folder for this binary/test. The program may optionally use the Runfiles lookup library to
locate the data files, see https://pypi.org/project/bazel-runfiles/.list of strings
default:"[]"
List of import directories to be added to the PYTHONPATH.
dictionary: Label → String
default:"{}"
Satisfy a virtual_dep with a mapping from external package name to the label of an installed package that provides it.
See virtual_deps.
Rule: py_test_rule
Run a Python program under Bazel. Most users should use the py_test macro instead of loading this directly.
Kind: Test rule
Attributes
name
required
A unique name for this target.
dictionary: String → String
default:"{}"
Environment variables to set when running the binary.
label
default:"None"
Script to execute with the Python interpreter.Must be a label pointing to a
.py source file.
If such a label is provided, it will be honored.If no label is provided AND there is only one srcs file, that srcs file will be used.If there are more than one srcs, a file matching {name}.py is searched for.
This is for historical compatibility with the Bazel native py_binary and rules_python.
Relying on this behavior is STRONGLY discouraged, may produce warnings and may
be deprecated in the future.string
default:"\"\""
The name of the Python virtual environment within which deps should be resolved.Part of the aspect_rules_py//uv system, has no effect in rules_python’s pip.
string
default:"\"\""
Whether to build this target and its transitive deps for a specific python version.
string
default:"error"
The action that should be taken when a symlink collision is encountered when creating the venv.
A collision can occur when multiple packages providing the same file are installed into the venv. The possible values are:
- “error”: When conflicting symlinks are found, an error is reported and venv creation halts.
- “warning”: When conflicting symlinks are found, an warning is reported, however venv creation continues.
- “ignore”: When conflicting symlinks are found, no message is reported and venv creation continues.
list of strings
default:"[]"
Additional options to pass to the Python interpreter in addition to -B and -I passed by rules_py
list of labels
default:"[]"
Python source files.
list of labels
default:"[]"
Targets that produce Python code, commonly
py_library rules.list of labels
default:"[]"
Runtime dependencies of the program.The transitive closure of the
data dependencies will be available in the .runfiles
folder for this binary/test. The program may optionally use the Runfiles lookup library to
locate the data files, see https://pypi.org/project/bazel-runfiles/.list of strings
default:"[]"
List of import directories to be added to the PYTHONPATH.
dictionary: Label → String
default:"{}"
Satisfy a virtual_dep with a mapping from external package name to the label of an installed package that provides it.
See virtual_deps.
list of strings
default:"[]"
Specifies additional environment variables to inherit from the external environment when the test is executed by bazel test.
Rule: py_library
Attributes
name
required
A unique name for this target.
list of strings
default:"[]"
list of labels
default:"[]"
Python source files.
list of labels
default:"[]"
Targets that produce Python code, commonly
py_library rules.list of labels
default:"[]"
Runtime dependencies of the program.The transitive closure of the
data dependencies will be available in the .runfiles
folder for this binary/test. The program may optionally use the Runfiles lookup library to
locate the data files, see https://pypi.org/project/bazel-runfiles/.list of strings
default:"[]"
List of import directories to be added to the PYTHONPATH.
dictionary: Label → String
default:"{}"
Satisfy a virtual_dep with a mapping from external package name to the label of an installed package that provides it.
See virtual_deps.
Rule: py_unpacked_wheel
Attributes
name
required
A unique name for this target.
label
required
The Wheel file, as defined by https://packaging.python.org/en/latest/specifications/binary-distribution-format/#binary-distribution-format
Function: py_pytest_main
py_pytest_main wraps the template rendering target and the final py_library.
Parameters
name
required
The name of the runable target that updates the test entry file.
name
Use this attribute to override the default py_library rule.
name
default:"[]"
A list containing the pytest library target, e.g., @pypi_pytest//:pkg.
name
default:"[]"
A list of data dependencies to pass to the py_library target.
name
default:"True"
A boolean indicating if the py_library target is testonly.
string_list
The extra arguments passed to the template rendering target.
Function: py_venv
Build a Python virtual environment and produce a script to link it into the build directory.
Parameters
name
default:"None"
name
default:"[]"
string_list
Function: py_venv_link
Build a Python virtual environment and produce a script to link it into the build directory.
Parameters
name
default:"None"
name
default:"[]"
string_list
Function: py_image_layer
Produce a separate tar output for each layer of a python app
Requires awk to be installed on the host machine/rbe runner.
For better performance, it is recommended to split the output of a py_binary into multiple layers.
This can be done by grouping files into layers based on their path by using the layer_groups attribute.
The matching order for layer groups is as follows:
layer_groupsare checked first.- If no match is found for
layer_groups, thedefault layer groupsare checked. - Any remaining files are placed into the default layer.
Parameters
name
required
base name for targets
name
required
a py_binary target
name
default:"/"
Path to where the layers should be rooted. If not specified, the layers will be rooted at the workspace root.
name
default:"{}"
Additional layer groups to create. They are used to group files into layers based on their path. In the form of:
{"<name>": "regex_to_match_against_file_paths"}name
default:"gzip"
Compression algorithm to use. Default is gzip. See: https://github.com/bazel-contrib/bazel-lib/blob/main/docs/tar.md#tar_rule-compress
name
default:"[]"
Additional arguments to pass to the tar rule. Default is
[]. See: https://github.com/bazel-contrib/bazel-lib/blob/main/docs/tar.md#tar_rule-argsname
default:"1"
Whether to compute unused inputs. Default is 1. See: https://github.com/bazel-contrib/bazel-lib/blob/main/docs/tar.md#tar_rule-compute_unused_inputs
name
default:"None"
The platform to use for the transition. Default is None. See: https://github.com/bazel-contrib/bazel-lib/blob/main/docs/transitions.md#platform_transition_binary-target_platform
name
default:"None"
An owner uid for the uncompressed files. See mtree_mutate: https://github.com/bazel-contrib/bazel-lib/blob/main/docs/tar.md#mutating-the-tar-contents
name
default:"None"
A group uid for the uncompressed files. See mtree_mutate: https://github.com/bazel-contrib/bazel-lib/blob/main/docs/tar.md#mutating-the-tar-contents
string_list
attribute that apply to all targets expanded by the macro
Function: resolutions.empty
Function: resolutions.from_requirements
Parameters
name
required
name
Function: py_binary
Wrapper macro for py_binary_rule.
Creates a py_venv target to constrain the interpreter and packages used at runtime.
Users can bazel run [name].venv to create this virtualenv, then use it in the editor or other tools.
Parameters
name
required
Name of the rule.
name
default:"[]"
Python source files.
name
default:"None"
Entry point.
Like rules_python, this is treated as a suffix of a file that should appear among the srcs.
If absent, then
[name].py is tried. As a final fallback, if the srcs has a single file,
that is used as the main.string_list
additional named parameters to
py_binary_rule.Function: py_test
Identical to py_binary, but produces a target that can be used with bazel test.
Parameters
name
required
Name of the rule.
name
default:"[]"
Python source files.
name
default:"None"
Entry point.
Like rules_python, this is treated as a suffix of a file that should appear among the srcs.
If absent, then
[name].py is tried. As a final fallback, if the srcs has a single file,
that is used as the main.name
default:"False"
If set, generate a py_pytest_main script and use it as the main.
The deps should include the pytest package (as well as the coverage package if desired).
string_list
additional named parameters to
py_binary_rule.
