From 8c76e2dd0764518612b74434a0d2c425e8c60b87 Mon Sep 17 00:00:00 2001 From: Michael Scarito Date: Tue, 21 Jan 2020 17:13:53 -0800 Subject: [PATCH 1/2] Add option to pass extra args to pip from pip_import. Adds the attr extra_pip_args to pip_import. These args will be passed along to the pip invocation inside piptool. --- packaging/piptool.py | 8 +++++++- python/pip.bzl | 16 +++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packaging/piptool.py b/packaging/piptool.py index 766a6742fd..ffae941064 100644 --- a/packaging/piptool.py +++ b/packaging/piptool.py @@ -102,6 +102,9 @@ def pip_main(argv): parser.add_argument('--directory', action='store', help=('The directory into which to put .whl files.')) +parser.add_argument('--extra_pip_args', action='store', + help=('Extra arguments to pass down to pip.')) + def determine_possible_extras(whls): """Determines the list of possible "extras" for each .whl @@ -160,7 +163,10 @@ def main(): args = parser.parse_args() # https://github.com/pypa/pip/blob/9.0.1/pip/__init__.py#L209 - if pip_main(["wheel", "-w", args.directory, "-r", args.input]): + pip_args = ["wheel", "-w", args.directory, "-r", args.input] + if args.extra_pip_args: + pip_args += args.extra_pip_args.strip("\"").split() + if pip_main(pip_args): sys.exit(1) # Enumerate the .whl files we downloaded. diff --git a/python/pip.bzl b/python/pip.bzl index 37da2a2cac..cae023f646 100644 --- a/python/pip.bzl +++ b/python/pip.bzl @@ -22,8 +22,7 @@ def _pip_import_impl(repository_ctx): # requirements.bzl without it. repository_ctx.file("BUILD", "") - # To see the output, pass: quiet=False - result = repository_ctx.execute([ + args = [ repository_ctx.attr.python_interpreter, repository_ctx.path(repository_ctx.attr._script), "--python_interpreter", @@ -36,13 +35,24 @@ def _pip_import_impl(repository_ctx): repository_ctx.path("requirements.bzl"), "--directory", repository_ctx.path(""), - ]) + ] + if repository_ctx.attr.extra_pip_args: + args += [ + "--extra_pip_args", + "\"" + " ".join(repository_ctx.attr.extra_pip_args) + "\"", + ] + + # To see the output, pass: quiet=False + result = repository_ctx.execute(args) if result.return_code: fail("pip_import failed: %s (%s)" % (result.stdout, result.stderr)) pip_import = repository_rule( attrs = { + "extra_pip_args": attr.string_list( + doc = "Extra arguments to pass on to pip. Must not contain spaces.", + ), "python_interpreter": attr.string(default = "python", doc = """ The command to run the Python interpreter used to invoke pip and unpack the wheels. From 442263e07a6b340d3933a377c618ab3600756224 Mon Sep 17 00:00:00 2001 From: Jon Brandvein Date: Fri, 21 Feb 2020 14:50:08 -0500 Subject: [PATCH 2/2] Regenerate tools and docs --- docs/pip.md | 11 ++++++++++- tools/piptool.par | Bin 5901310 -> 5901770 bytes 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/pip.md b/docs/pip.md index 037bdfa90b..73035fdfef 100755 --- a/docs/pip.md +++ b/docs/pip.md @@ -5,7 +5,7 @@ ## pip_import
-pip_import(name, python_interpreter, requirements)
+pip_import(name, extra_pip_args, python_interpreter, requirements)
 
A rule for importing `requirements.txt` dependencies into Bazel. @@ -67,6 +67,15 @@ py_binary(

+ + extra_pip_args + + List of strings; optional +

+ Extra arguments to pass on to pip. Must not contain spaces. +

+ + python_interpreter diff --git a/tools/piptool.par b/tools/piptool.par index 57ef98d14edfea0ef26c6693512d4af12f5442a3..2fa8909d0abbb392b0d57b4ff38064f4418b4b86 100755 GIT binary patch delta 8859 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 delta 8138 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