fix(pypi): correctly pass `extra_pip_args` when building sdists (#2368)
Before this change the `extra_pip_args` would not be passed down the
chain if `experimental_index_url` is set. This adds a test and fixes the
bug.
Work towards #260
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 004d92c..95d1dc8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -45,6 +45,8 @@
`bzlmod` users would have observed.
* (pypi) (Bazel 7.4+) Allow spaces in filenames included in `whl_library`s
([617](https://github.com/bazelbuild/rules_python/issues/617)).
+* (pypi) When {attr}`pip.parse.experimental_index_url` is set, we need to still
+ pass the `extra_pip_args` value when building an `sdist`.
{#v0-0-0-added}
### Added
diff --git a/examples/bzlmod/MODULE.bazel.lock b/examples/bzlmod/MODULE.bazel.lock
index b8ce0dc..6e7d780 100644
--- a/examples/bzlmod/MODULE.bazel.lock
+++ b/examples/bzlmod/MODULE.bazel.lock
@@ -1392,7 +1392,7 @@
},
"@@rules_python~//python/extensions:pip.bzl%pip": {
"general": {
- "bzlTransitiveDigest": "45JfYNdHqP7vwP3B2J7fF5SOBX2ewmWdn0AmVfmIYT8=",
+ "bzlTransitiveDigest": "HF4Ob8+IVv7X7DHag07k47pv+QywfyjKF8Z6Q7M5/oU=",
"usagesDigest": "MChlcSw99EuW3K7OOoMcXQIdcJnEh6YmfyjJm+9mxIg=",
"recordedFileInputs": {
"@@other_module~//requirements_lock_3_11.txt": "a7d0061366569043d5efcf80e34a32c732679367cb3c831c4cdc606adc36d314",
@@ -1488,6 +1488,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "zipp-3.20.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -1623,6 +1629,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "sphinx-7.2.6.tar.gz",
"group_deps": [
"sphinx",
@@ -1690,6 +1702,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "s3cmd-2.1.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -1816,6 +1834,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "lazy-object-proxy-1.10.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -1844,6 +1868,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "websockets-11.0.3.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -1984,6 +2014,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "urllib3-1.26.18.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -2040,6 +2076,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "sphinxcontrib_applehelp-1.0.7.tar.gz",
"group_deps": [
"sphinx",
@@ -2267,6 +2309,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "jinja2-3.1.4.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -2295,6 +2343,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "sphinxcontrib_qthelp-1.0.6.tar.gz",
"group_deps": [
"sphinx",
@@ -2381,6 +2435,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "setuptools-65.6.3.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -2430,6 +2490,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "chardet-4.0.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -2458,6 +2524,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "mccabe-0.7.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -2486,6 +2558,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "sphinxcontrib_serializinghtml-1.1.9.tar.gz",
"group_deps": [
"sphinx",
@@ -2544,6 +2622,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "docutils-0.20.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -2621,6 +2705,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "tomli-2.0.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -2700,6 +2790,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "Pygments-2.16.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -2729,6 +2825,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "wheel-0.40.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -2844,6 +2946,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "colorama-0.4.6.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -2949,6 +3057,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "MarkupSafe-2.1.3.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -3005,6 +3119,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "sphinxcontrib_htmlhelp-2.0.4.tar.gz",
"group_deps": [
"sphinx",
@@ -3070,6 +3190,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "typing_extensions-4.12.2.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -3243,6 +3369,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "tomlkit-0.11.6.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -3308,6 +3440,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "pylint-2.15.9.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -3336,6 +3474,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "pathspec-0.10.3.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -3476,6 +3620,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "packaging-23.2.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -3532,6 +3682,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "idna-2.10.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -3581,6 +3737,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "snowballstemmer-2.2.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -3730,6 +3892,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "dill-0.3.6.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -3933,6 +4101,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "platformdirs-2.6.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -4335,6 +4509,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "yamllint-1.28.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -4363,6 +4543,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "python-dateutil-2.8.2.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -4506,6 +4692,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "importlib_metadata-8.4.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -4718,6 +4910,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "sphinxcontrib-jsmath-1.0.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -4746,6 +4944,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "alabaster-0.7.13.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -4802,6 +5006,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "six-1.16.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -4831,6 +5041,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "requests-2.25.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -4990,6 +5206,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "Babel-2.13.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -5109,6 +5331,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "isort-5.11.4.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -5137,6 +5365,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "python-magic-0.4.27.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -5242,6 +5476,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "certifi-2023.7.22.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -5328,6 +5568,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "PyYAML-6.0.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -5356,6 +5602,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "sphinxcontrib_devhelp-1.0.5.tar.gz",
"group_deps": [
"sphinx",
@@ -5451,6 +5703,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "tabulate-0.9.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -5517,6 +5775,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "imagesize-1.4.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -5770,6 +6034,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "astroid-2.12.13.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -5912,6 +6182,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "pylint-print-1.0.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -6010,6 +6286,12 @@
"cp39_osx_x86_64",
"cp39_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple",
+ "--extra-index-url",
+ "https://pypi.org/simple/"
+ ],
"filename": "wrapt-1.14.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python",
"repo": "pip_39",
@@ -6299,7 +6581,7 @@
},
"@@rules_python~//python/private/pypi:pip.bzl%pip_internal": {
"general": {
- "bzlTransitiveDigest": "pgIPI+ouKZGvpe1ZWE13QCQ5n0E4veB3tzWhx5XURJ0=",
+ "bzlTransitiveDigest": "oEqeANhT7TnWlFpmzRhRdWn9kCRKTen7mIV72CWlAIA=",
"usagesDigest": "LYtSAPzhPjmfD9vF39mCED1UQSvHEo2Hv+aK5Z4ZWWc=",
"recordedFileInputs": {
"@@rules_python~//tools/publish/requirements_linux.txt": "8175b4c8df50ae2f22d1706961884beeb54e7da27bd2447018314a175981997d",
@@ -6349,6 +6631,10 @@
"cp311_linux_s390x",
"cp311_linux_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "cffi-1.17.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -6471,6 +6757,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "urllib3-2.2.3.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -6543,6 +6833,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "charset_normalizer-3.4.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -6637,6 +6931,10 @@
"cp311_linux_s390x",
"cp311_linux_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "cryptography-43.0.3.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -6684,6 +6982,10 @@
"cp311_linux_s390x",
"cp311_linux_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "SecretStorage-3.3.3.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -6709,6 +7011,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "jaraco_functools-4.1.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -6778,6 +7084,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "idna-3.10.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -6821,6 +7131,10 @@
"experimental_target_platforms": [
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "pywin32-ctypes-0.2.3.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -6871,6 +7185,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "pygments-2.18.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -6971,6 +7289,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "backports_tarfile-1.2.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7040,6 +7362,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "jaraco.classes-3.4.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7137,6 +7463,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "requests-toolbelt-1.0.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7237,6 +7567,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "docutils-0.21.2.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7262,6 +7596,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "keyring-25.4.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7337,6 +7675,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "more-itertools-10.5.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7387,6 +7729,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "certifi-2024.8.30.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7509,6 +7855,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "mdurl-0.1.2.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7584,6 +7934,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "rfc3986-2.0.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7609,6 +7963,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "twine-5.1.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7634,6 +7992,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "pkginfo-1.10.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7684,6 +8046,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "markdown-it-py-3.0.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7809,6 +8175,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "nh3-0.2.18.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7834,6 +8204,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "requests-2.32.3.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7878,6 +8252,10 @@
"cp311_linux_s390x",
"cp311_linux_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "pycparser-2.22.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -7953,6 +8331,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "importlib_metadata-8.5.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -8103,6 +8485,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "rich-13.9.3.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -8284,6 +8670,10 @@
"cp311_linux_s390x",
"cp311_linux_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "jeepney-0.8.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -8356,6 +8746,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "zipp-3.20.2.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -8497,6 +8891,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "jaraco_context-6.0.1.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
@@ -8547,6 +8945,10 @@
"cp311_osx_x86_64",
"cp311_windows_x86_64"
],
+ "extra_pip_args": [
+ "--index-url",
+ "https://pypi.org/simple"
+ ],
"filename": "readme_renderer-44.0.tar.gz",
"python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python",
"repo": "rules_python_publish_deps_311",
diff --git a/python/private/pypi/extension.bzl b/python/private/pypi/extension.bzl
index dc02392..fdc76d5 100644
--- a/python/private/pypi/extension.bzl
+++ b/python/private/pypi/extension.bzl
@@ -274,28 +274,28 @@
found_something = True
is_reproducible = False
+ args = dict(whl_library_args)
if pip_attr.netrc:
- whl_library_args["netrc"] = pip_attr.netrc
+ args["netrc"] = pip_attr.netrc
if pip_attr.auth_patterns:
- whl_library_args["auth_patterns"] = pip_attr.auth_patterns
+ args["auth_patterns"] = pip_attr.auth_patterns
- if distribution.filename.endswith(".whl"):
- # pip is not used to download wheels and the python `whl_library` helpers are only extracting things
- whl_library_args.pop("extra_pip_args", None)
- else:
- # For sdists, they will be built by `pip`, so we still
+ if not distribution.filename.endswith(".whl"):
+ # pip is not used to download wheels and the python
+ # `whl_library` helpers are only extracting things, however
+ # for sdists, they will be built by `pip`, so we still
# need to pass the extra args there.
- pass
+ args["extra_pip_args"] = requirement.extra_pip_args
# This is no-op because pip is not used to download the wheel.
- whl_library_args.pop("download_only", None)
+ args.pop("download_only", None)
repo_name = whl_repo_name(pip_name, distribution.filename, distribution.sha256)
- whl_library_args["requirement"] = requirement.srcs.requirement
- whl_library_args["urls"] = [distribution.url]
- whl_library_args["sha256"] = distribution.sha256
- whl_library_args["filename"] = distribution.filename
- whl_library_args["experimental_target_platforms"] = requirement.target_platforms
+ args["requirement"] = requirement.srcs.requirement
+ args["urls"] = [distribution.url]
+ args["sha256"] = distribution.sha256
+ args["filename"] = distribution.filename
+ args["experimental_target_platforms"] = requirement.target_platforms
# Pure python wheels or sdists may need to have a platform here
target_platforms = None
@@ -303,7 +303,7 @@
if len(requirements) > 1:
target_platforms = requirement.target_platforms
- whl_libraries[repo_name] = dict(whl_library_args.items())
+ whl_libraries[repo_name] = args
whl_map.setdefault(whl_name, []).append(
whl_alias(
diff --git a/tests/pypi/extension/extension_tests.bzl b/tests/pypi/extension/extension_tests.bzl
index 3d79e10..27c6bba 100644
--- a/tests/pypi/extension/extension_tests.bzl
+++ b/tests/pypi/extension/extension_tests.bzl
@@ -167,7 +167,14 @@
got_simpleapi_download_kwargs.update(kwargs)
return {
"simple": struct(
- whls = {},
+ whls = {
+ "deadb00f": struct(
+ yanked = False,
+ filename = "simple-0.0.1-py3-none-any.whl",
+ sha256 = "deadb00f",
+ url = "example2.org",
+ ),
+ },
sdists = {
"deadbeef": struct(
yanked = False,
@@ -190,9 +197,15 @@
python_version = "3.15",
requirements_lock = "requirements.txt",
experimental_index_url = "pypi.org",
+ extra_pip_args = [
+ "--extra-args-for-sdist-building",
+ ],
),
],
),
+ read = lambda x: {
+ "requirements.txt": "simple==0.0.1 --hash=sha256:deadbeef --hash=sha256:deadb00f",
+ }[x],
),
available_interpreters = {
"python_3_15_host": "unit_test_interpreter_target",
@@ -207,6 +220,13 @@
"simple": [
struct(
config_setting = "//_config:is_python_3.15",
+ filename = "simple-0.0.1-py3-none-any.whl",
+ repo = "pypi_315_simple_py3_none_any_deadb00f",
+ target_platforms = None,
+ version = "3.15",
+ ),
+ struct(
+ config_setting = "//_config:is_python_3.15",
filename = "simple-0.0.1.tar.gz",
repo = "pypi_315_simple_sdist_deadbeef",
target_platforms = None,
@@ -215,6 +235,25 @@
],
}})
pypi.whl_libraries().contains_exactly({
+ "pypi_315_simple_py3_none_any_deadb00f": {
+ "dep_template": "@pypi//{name}:{target}",
+ "experimental_target_platforms": [
+ "cp315_linux_aarch64",
+ "cp315_linux_arm",
+ "cp315_linux_ppc",
+ "cp315_linux_s390x",
+ "cp315_linux_x86_64",
+ "cp315_osx_aarch64",
+ "cp315_osx_x86_64",
+ "cp315_windows_x86_64",
+ ],
+ "filename": "simple-0.0.1-py3-none-any.whl",
+ "python_interpreter_target": "unit_test_interpreter_target",
+ "repo": "pypi_315",
+ "requirement": "simple==0.0.1",
+ "sha256": "deadb00f",
+ "urls": ["example2.org"],
+ },
"pypi_315_simple_sdist_deadbeef": {
"dep_template": "@pypi//{name}:{target}",
"experimental_target_platforms": [
@@ -227,6 +266,9 @@
"cp315_osx_x86_64",
"cp315_windows_x86_64",
],
+ "extra_pip_args": [
+ "--extra-args-for-sdist-building",
+ ],
"filename": "simple-0.0.1.tar.gz",
"python_interpreter_target": "unit_test_interpreter_target",
"repo": "pypi_315",