Rules
pip_repository
A rule for importing requirements.txt
dependencies into Bazel.
This rule imports a requirements.txt
file and generates a new
requirements.bzl
file. This is used via the WORKSPACE
pattern:
pip_repository(
name = "foo",
requirements = ":requirements.txt",
)
You can then reference imported dependencies from your BUILD
file with:
load("@foo//:requirements.bzl", "requirement")
py_library(
name = "bar",
...
deps = [
"//my/other:dep",
requirement("requests"),
requirement("numpy"),
],
)
Or alternatively:
load("@foo//:requirements.bzl", "all_requirements")
py_binary(
name = "baz",
...
deps = [
":foo",
] + all_requirements,
)
Example usage (generated)
load("@rules_python//python/pip_install:pip_repository.bzl", "pip_repository")
pip_repository(
# A unique name for this repository.
name = "",
# A dictionary from local repository name to global repository name
repo_mapping = {},
)
name
A unique name for this repository.
annotations
Optional annotations to apply to packages
download_only
Whether to use "pip download" instead of "pip wheel". Disables building wheels from source, but allows use of --platform, --python-version, --implementation, and --abi in --extra_pip_args to download wheels for a different platform from the host platform.
enable_implicit_namespace_pkgs
If true, disables conversion of native namespace packages into pkg-util style namespace packages. When set all py_binary
and py_test targets must specify either legacy_create_init=False
or the global Bazel option
--incompatible_default_to_explicit_init_py
to prevent __init__.py
being automatically generated in every directory.
This option is required to support some packages which cannot handle the conversion to pkg-util style.
environment
Environment variables to set in the pip subprocess.
Can be used to set common variables such as http_proxy
, https_proxy
and no_proxy
Note that pip is run with "--isolated" on the CLI so PIP__
extra_pip_args
Extra arguments to pass on to pip. Must not contain spaces.
isolated
Whether or not to pass the --isolated flag to
the underlying pip command. Alternatively, the RULES_PYTHON_PIP_ISOLATED
enviornment varaible can be used
to control this flag.
pip_data_exclude
Additional data exclusion parameters to add to the pip packages BUILD file.
python_interpreter
The python interpreter to use. This can either be an absolute path or the name
of a binary found on the host's PATH
environment variable. If no value is set
python3
is defaulted for Unix systems and python.exe
for Windows.
python_interpreter_target
If you are using a custom python interpreter built by another repository rule, use this attribute to specify its BUILD target. This allows pip_repository to invoke pip using the same interpreter as your toolchain. If set, takes precedence over python_interpreter.
quiet
If True, suppress printing stdout and stderr output to the terminal.
repo_mapping
A dictionary from local repository name to global repository name. This allows controls over workspace dependency resolution for dependencies of this repository.
For example, an entry "@foo": "@bar"
declares that, for any time this repository depends on @foo
(such as a dependency on @foo//some:target
, it should actually resolve that dependency within globally-declared @bar
(@bar//some:target
).
repo_prefix
Prefix for the generated packages will be of the form
@
requirements_darwin
Override the requirements_lock attribute when the host platform is Mac OS
requirements_linux
Override the requirements_lock attribute when the host platform is Linux
requirements_lock
A fully resolved 'requirements.txt' pip requirement file containing the transitive set of your dependencies. If this file is passed instead of 'requirements' no resolve will take place and pip_repository will create individual repositories for each of your dependencies so that wheels are fetched/built only for the targets specified by 'build/run/test'.
requirements_windows
Override the requirements_lock attribute when the host platform is Windows
timeout
Timeout (in seconds) on the rule's execution duration.
whl_library
Download and extracts a single wheel based into a bazel repo based on the requirement string passed in. Instantiated from pip_repository and inherits config options from there.
Example usage (generated)
load("@rules_python//python/pip_install:pip_repository.bzl", "whl_library")
whl_library(
# A unique name for this repository.
name = "",
# Pointer to parent repo name
repo = "",
# A dictionary from local repository name to global repository name
repo_mapping = {},
# Python requirement string describing the package to make available
requirement = "",
)
name
A unique name for this repository.
annotation
Optional json encoded file containing annotation to apply to the extracted wheel. See package_annotation
download_only
Whether to use "pip download" instead of "pip wheel". Disables building wheels from source, but allows use of --platform, --python-version, --implementation, and --abi in --extra_pip_args to download wheels for a different platform from the host platform.
enable_implicit_namespace_pkgs
If true, disables conversion of native namespace packages into pkg-util style namespace packages. When set all py_binary
and py_test targets must specify either legacy_create_init=False
or the global Bazel option
--incompatible_default_to_explicit_init_py
to prevent __init__.py
being automatically generated in every directory.
This option is required to support some packages which cannot handle the conversion to pkg-util style.
environment
Environment variables to set in the pip subprocess.
Can be used to set common variables such as http_proxy
, https_proxy
and no_proxy
Note that pip is run with "--isolated" on the CLI so PIP__
extra_pip_args
Extra arguments to pass on to pip. Must not contain spaces.
isolated
Whether or not to pass the --isolated flag to
the underlying pip command. Alternatively, the RULES_PYTHON_PIP_ISOLATED
enviornment varaible can be used
to control this flag.
pip_data_exclude
Additional data exclusion parameters to add to the pip packages BUILD file.
python_interpreter
The python interpreter to use. This can either be an absolute path or the name
of a binary found on the host's PATH
environment variable. If no value is set
python3
is defaulted for Unix systems and python.exe
for Windows.
python_interpreter_target
If you are using a custom python interpreter built by another repository rule, use this attribute to specify its BUILD target. This allows pip_repository to invoke pip using the same interpreter as your toolchain. If set, takes precedence over python_interpreter.
quiet
If True, suppress printing stdout and stderr output to the terminal.
repo
Pointer to parent repo name. Used to make these rules rerun if the parent repo changes.
repo_mapping
A dictionary from local repository name to global repository name. This allows controls over workspace dependency resolution for dependencies of this repository.
For example, an entry "@foo": "@bar"
declares that, for any time this repository depends on @foo
(such as a dependency on @foo//some:target
, it should actually resolve that dependency within globally-declared @bar
(@bar//some:target
).
repo_prefix
Prefix for the generated packages will be of the form
@
requirement
Python requirement string describing the package to make available
timeout
Timeout (in seconds) on the rule's execution duration.
Macros and Functions
package_annotation
Annotations to apply to the BUILD file content from package generated from a pip_repository
rule.
Example usage (generated)
load("@rules_python//python/pip_install:pip_repository.bzl", "package_annotation")
package_annotation(
)
additive_build_content
Raw text to add to the generated BUILD
file of a package.
copy_files
A mapping of src
and out
files for [@bazel_skylib//rules:copy_file.bzl][cf]
copy_executables
A mapping of src
and out
files for
[@bazel_skylib//rules:copy_file.bzl][cf]. Targets generated here will also be flagged as
executable.
data
A list of labels to add as data
dependencies to the generated py_library
target.
data_exclude_glob
A list of exclude glob patterns to add as data
to the generated
py_library
target.
srcs_exclude_glob
A list of labels to add as srcs
to the generated py_library
target.