py_runtime_pair

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")

Attributes

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

py_binary(attrs)

See the Bazel core py_binary documentation.

Parameters

attrs optional.

Rule attributes

py_library

py_library(attrs)

See the Bazel core py_library documentation.

Parameters

attrs optional.

Rule attributes

py_runtime

py_runtime(attrs)

See the Bazel core py_runtime documentation.

Parameters

attrs optional.

Rule attributes

py_test

py_test(attrs)

See the Bazel core py_test documentation.

Parameters

attrs optional.

Rule attributes