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](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 | [] |
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 |