Core rules for building Python projects.
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 |
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.
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 | [] |
See the Bazel core py_binary documentation.
PARAMETERS
Name | Description | Default Value |
---|---|---|
attrs | Rule attributes | none |
See the Bazel core py_library documentation.
PARAMETERS
Name | Description | Default Value |
---|---|---|
attrs | Rule attributes | none |
See the Bazel core py_runtime documentation.
PARAMETERS
Name | Description | Default Value |
---|---|---|
attrs | Rule attributes | none |
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
Name | Description | Default Value |
---|---|---|
name | str, the name of the target | none |
py2_runtime | optional Label; must be unset or None; an error is raised otherwise. | None |
py3_runtime | Label; a target with PyRuntimeInfo for Python 3. | None |
attrs | Extra attrs passed onto the native rule | none |
See the Bazel core py_test documentation.
PARAMETERS
Name | Description | Default Value |
---|---|---|
attrs | Rule attributes | none |
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 |