Core rules for building Python projects.
current_py_toolchain(name)
This rule exists so that the current python toolchain can be used in the `toolchains` attribute of
other rules, such as genrule. It allows exposing a python toolchain after toolchain resolution has
happened, to a rule which expects a concrete implementation of a toolchain, rather than a
toolchain_type which could be resolved to that toolchain.
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this target. | Name | required |
py_import(name, deps, srcs)
This rule allows the use of Python packages as dependencies.
It imports the given `.egg` file(s), which might be checked in source files,
fetched externally as with `http_file`, or produced as outputs of other rules.
It may be used like a `py_library`, in the `deps` of other Python rules.
This is similar to [java_import](https://docs.bazel.build/versions/master/be/java.html#java_import).
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this target. | Name | required | |
| deps | The list of other libraries to be linked in to the binary target. | List of labels | optional | [] |
| srcs | The list of Python package files provided to Python targets that depend on this target. Note that currently only the .egg format is accepted. For .whl files, try the whl_library rule. We accept contributions to extend py_import to handle .whl. | List of labels | optional | [] |
py_binary(attrs)
See the Bazel core py_binary documentation.
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| attrs | Rule attributes | none |
py_library(attrs)
See the Bazel core py_library documentation.
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| attrs | Rule attributes | none |
py_runtime(attrs)
See the Bazel core py_runtime documentation.
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| attrs | Rule attributes | none |
py_runtime_pair(name, py2_runtime, py3_runtime, attrs)
A toolchain rule for Python.
This used to wrap up to two Python runtimes, one for Python 2 and one for Python 3. However, Python 2 is no longer supported, so it now only wraps a single Python 3 runtime.
Usually the wrapped runtimes are declared using the py_runtime rule, but any
rule returning a PyRuntimeInfo provider may be used.
This rule returns a platform_common.ToolchainInfo provider with the following
schema:
platform_common.ToolchainInfo(
py2_runtime = None,
py3_runtime = <PyRuntimeInfo or None>,
)Example usage:
# In your BUILD file...
load("@rules_python//python:defs.bzl", "py_runtime_pair")
py_runtime(
name = "my_py3_runtime",
interpreter_path = "/system/python3",
python_version = "PY3",
)
py_runtime_pair(
name = "my_py_runtime_pair",
py3_runtime = ":my_py3_runtime",
)
toolchain(
name = "my_toolchain",
target_compatible_with = <...>,
toolchain = ":my_py_runtime_pair",
toolchain_type = "@rules_python//python:toolchain_type",
)# In your WORKSPACE...
register_toolchains("//my_pkg:my_toolchain")PARAMETERS
py_test(attrs)
See the Bazel core py_test documentation.
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| attrs | Rule attributes | none |
find_requirements(name)
The aspect definition. Can be invoked on the command line as
bazel build //pkg:my_py_binary_target --aspects=@rules_python//python:defs.bzl%find_requirements --output_groups=pyversioninfo
ASPECT ATTRIBUTES
| Name | Type |
|---|---|
| deps | String |
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this target. | Name | required |