From 7d72da2745b4c2dcb68282bc5d25f1438286299a Mon Sep 17 00:00:00 2001 From: Jeremy Volkman Date: Tue, 12 Jul 2022 13:40:47 -0700 Subject: [PATCH 1/3] Take **kwargs in pip_parse-generated install_deps --- examples/pip_parse_vendored/requirements.bzl | 6 ++++-- .../pip_install/extract_wheels/parse_requirements_to_bzl.py | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/examples/pip_parse_vendored/requirements.bzl b/examples/pip_parse_vendored/requirements.bzl index 038b612309..a589745d76 100644 --- a/examples/pip_parse_vendored/requirements.bzl +++ b/examples/pip_parse_vendored/requirements.bzl @@ -41,11 +41,13 @@ def _get_annotation(requirement): name = requirement.split(" ")[0].split("=")[0] return _annotations.get(name) -def install_deps(): +def install_deps(**whl_library_kwargs): + whl_config = dict(_config) + whl_config.update(whl_library_kwargs) for name, requirement in _packages: whl_library( name = name, requirement = requirement, annotation = _get_annotation(requirement), - **_config + **whl_config ) diff --git a/python/pip_install/extract_wheels/parse_requirements_to_bzl.py b/python/pip_install/extract_wheels/parse_requirements_to_bzl.py index 1a756e55d4..0194d101b1 100644 --- a/python/pip_install/extract_wheels/parse_requirements_to_bzl.py +++ b/python/pip_install/extract_wheels/parse_requirements_to_bzl.py @@ -153,13 +153,15 @@ def _get_annotation(requirement): name = requirement.split(" ")[0].split("=")[0] return _annotations.get(name) - def install_deps(): + def install_deps(**whl_library_kwargs): + whl_config = dict(_config) + whl_config.update(whl_library_kwargs) for name, requirement in _packages: whl_library( name = name, requirement = requirement, annotation = _get_annotation(requirement), - **_config + **whl_config ) """.format( all_requirements=all_requirements, From 436529a7796416b0be6a711e15ef4ac971e9dd58 Mon Sep 17 00:00:00 2001 From: Jeremy Volkman Date: Tue, 12 Jul 2022 14:16:55 -0700 Subject: [PATCH 2/3] Update README.md --- examples/pip_parse_vendored/README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/examples/pip_parse_vendored/README.md b/examples/pip_parse_vendored/README.md index 616e291409..4a118b4d9c 100644 --- a/examples/pip_parse_vendored/README.md +++ b/examples/pip_parse_vendored/README.md @@ -9,3 +9,23 @@ The requirements now form a triple: - requirements.in - human editable, expresses only direct dependencies and load-bearing version constraints - requirements.txt - lockfile produced by pip-compile or other means - requirements.bzl - the "parsed" version of the lockfile readable by Bazel downloader + +The `requirements.bzl` file contains baked-in attributes such as `python_interpreter_target` as they were specified in the original `pip_parse` rule. These can be overridden at install type by passing arguments to `install_deps`. For example: + +```python +# Register a hermetic toolchain +load("@rules_python//python:repositories.bzl", "python_register_toolchains") + +python_register_toolchains( + name = "python39", + python_version = "3.9", +) +load("@python39//:defs.bzl", "interpreter") + +# Load dependencies vendored by some other ruleset. +load("@some_rules//:py_deps.bzl", "install_deps") + +install_deps( + python_interpreter_target = interpreter, +) +``` From 3d50372ef6aa8dc295810de5242b1a3e59d4f451 Mon Sep 17 00:00:00 2001 From: Jeremy Volkman Date: Wed, 7 Sep 2022 11:05:06 -0700 Subject: [PATCH 3/3] typo --- examples/pip_parse_vendored/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/pip_parse_vendored/README.md b/examples/pip_parse_vendored/README.md index 4a118b4d9c..f53260a175 100644 --- a/examples/pip_parse_vendored/README.md +++ b/examples/pip_parse_vendored/README.md @@ -10,7 +10,7 @@ The requirements now form a triple: - requirements.txt - lockfile produced by pip-compile or other means - requirements.bzl - the "parsed" version of the lockfile readable by Bazel downloader -The `requirements.bzl` file contains baked-in attributes such as `python_interpreter_target` as they were specified in the original `pip_parse` rule. These can be overridden at install type by passing arguments to `install_deps`. For example: +The `requirements.bzl` file contains baked-in attributes such as `python_interpreter_target` as they were specified in the original `pip_parse` rule. These can be overridden at install time by passing arguments to `install_deps`. For example: ```python # Register a hermetic toolchain