py_runtime_pair(name, py2_runtime, py3_runtime)
A toolchain rule for Python.
This wraps up to two Python runtimes, one for Python 2 and one for Python 3. The rule consuming this toolchain will choose which runtime is appropriate. Either runtime may be omitted, in which case the resulting toolchain will be unusable for building Python code using that version.
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 = <PyRuntimeInfo or 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_py2_runtime",
interpreter_path = "/system/python2",
python_version = "PY2",
)
py_runtime(
name = "my_py3_runtime",
interpreter_path = "/system/python3",
python_version = "PY3",
)
py_runtime_pair(
name = "my_py_runtime_pair",
py2_runtime = ":my_py2_runtime",
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")
name |
Name; required
A unique name for this target. |
py2_runtime |
Label; optional
The runtime to use for Python 2 targets. Must have `python_version` set to `PY2`. |
py3_runtime |
Label; optional
The runtime to use for Python 3 targets. Must have `python_version` set to `PY3`. |
py_binary(attrs)
See the Bazel core py_binary documentation.
attrs |
optional.
Rule attributes |
py_library(attrs)
See the Bazel core py_library documentation.
attrs |
optional.
Rule attributes |
py_runtime(attrs)
See the Bazel core py_runtime documentation.
attrs |
optional.
Rule attributes |
py_test(attrs)
See the Bazel core py_test documentation.
attrs |
optional.
Rule attributes |