Skip to content

Latest commit

 

History

History
executable file
·
227 lines (136 loc) · 6.6 KB

File metadata and controls

executable file
·
227 lines (136 loc) · 6.6 KB

Core rules for building Python projects.

current_py_toolchain

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

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

py_binary(attrs)

See the Bazel core py_binary documentation.

PARAMETERS

Name Description Default Value
attrs Rule attributes none

py_library

py_library(attrs)

See the Bazel core py_library documentation.

PARAMETERS

Name Description Default Value
attrs Rule attributes none

py_runtime

py_runtime(attrs)

See the Bazel core py_runtime documentation.

PARAMETERS

Name Description Default Value
attrs Rule attributes none

py_runtime_pair

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

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

py_test

py_test(attrs)

See the Bazel core py_test documentation.

PARAMETERS

Name Description Default Value
attrs Rule attributes none

find_requirements

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