Macro creating targets for running pip-compile
Produce a filegroup by default, named “[name]” which can be included in the data of some other compile_pip_requirements rule that references these requirements (e.g. with -r ../other/requirements.txt)
Produce two targets for checking pip-compile:
bazel test <name>_testbazel run <name>.updatePARAMETERS
| Name | Description | Default Value |
|---|---|---|
| name | base name for generated targets, typically “requirements” | none |
| extra_args | passed to pip-compile | [] |
| visibility | passed to both the _test and .update rules | [“//visibility:private”] |
| requirements_in | file expressing desired dependencies | None |
| requirements_txt | result of “compiling” the requirements.in file | None |
| tags | tagging attribute common to all build rules, passed to both the _test and .update rules | None |
| kwargs | other bazel attributes passed to the “_test” rule | none |
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| kwargs | - | none |
Imports a requirements.txt file and generates a new requirements.bzl file.
This is used via the WORKSPACE pattern:
pip_install( requirements = ":requirements.txt", )
You can then reference imported dependencies from your BUILD file with:
load("@pip//:requirements.bzl", "requirement") py_library( name = "bar", ... deps = [ "//my/other:dep", requirement("requests"), requirement("numpy"), ], )
In addition to the requirement macro, which is used to access the generated py_library target generated from a package's wheel, The generated requirements.bzl file contains functionality for exposing entry points as py_binary targets as well.
load("@pip_deps//:requirements.bzl", "entry_point") alias( name = "pip-compile", actual = entry_point( pkg = "pip-tools", script = "pip-compile", ), )
Note that for packages who's name and script are the same, only the name of the package is needed when calling the entry_point macro.
load("@pip_deps//:requirements.bzl", "entry_point") alias( name = "flake8", actual = entry_point("flake8"), )
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| requirements | A ‘requirements.txt’ pip requirements file. | none |
| name | A unique name for the created external repository (default ‘pip’). | “pip” |
| kwargs | Keyword arguments passed directly to the pip_repository repository rule. | none |
Imports a locked/compiled requirements file and generates a new requirements.bzl file.
This is used via the WORKSPACE pattern:
load("@rules_python//python:pip.bzl", "pip_parse") pip_parse( name = "pip_deps", requirements_lock = ":requirements.txt", ) load("@pip_deps//:requirements.bzl", "install_deps") install_deps()
You can then reference imported dependencies from your BUILD file with:
load("@pip_deps//:requirements.bzl", "requirement") py_library( name = "bar", ... deps = [ "//my/other:dep", requirement("requests"), requirement("numpy"), ], )
In addition to the requirement macro, which is used to access the generated py_library target generated from a package's wheel, The generated requirements.bzl file contains functionality for exposing entry points as py_binary targets as well.
load("@pip_deps//:requirements.bzl", "entry_point") alias( name = "pip-compile", actual = entry_point( pkg = "pip-tools", script = "pip-compile", ), )
Note that for packages who's name and script are the same, only the name of the package is needed when calling the entry_point macro.
load("@pip_deps//:requirements.bzl", "entry_point") alias( name = "flake8", actual = entry_point("flake8"), )
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| 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’. | none |
| name | The name of the generated repository. | “pip_parsed_deps” |
| kwargs | Additional keyword arguments for the underlying pip_repository rule. | none |
PARAMETERS