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](https://docs.bazel.build/versions/master/be/python.html#py_binary) documentation. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | attrs | Rule attributes | none | ## py_library
py_library(attrs)
See the Bazel core [py_library](https://docs.bazel.build/versions/master/be/python.html#py_library) documentation. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | attrs | Rule attributes | none | ## py_runtime
py_runtime(attrs)
See the Bazel core [py_runtime](https://docs.bazel.build/versions/master/be/python.html#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: ```python platform_common.ToolchainInfo( py2_runtime = None, py3_runtime = <PyRuntimeInfo or None>, ) ``` Example usage: ```python # 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", ) ``` ```python # 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](https://docs.bazel.build/versions/master/be/python.html#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 | |