tree 14d04c1c27107714df96d586d7049ee171952b47
parent 32b00530160c3a8894350fab7a195540df89819d
author Logan Pulley <logan@pulley.host> 1686352772 -0500
committer GitHub <noreply@github.com> 1686352772 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJkg7OVCRBK7hj4Ov3rIwAAw9sIACDYWIydPD4vdTdpm+F4+AGb
 OKT+Wwu7PNkSQVNQtY0AyQhv20d+zT/lwHeJRZCIeiE05g0JUVjxpVq+BMzXKrws
 8UfLNN2QZMAiEgbYI6JqrWo0o9wuhd24MrgTtFCR75/3OPvETONIv08zEp10Gwvj
 kIlXJsq2b++ojsK5zsIH+gwGdJafblW57/6QSL0yAB4siZGxCCeLrV5npj0l6P6E
 SFg8I4qA+f/CS891149qIl8CU7111/v5NbuoKjiTg5rOitnu/Qpw/8INPEF7O5BL
 8J3EBGpK7t7lZE6vmZXMUITDXC21982BlIhoMr0s8N+A0FOUvQxHKXRKW5nT56g=
 =iRA+
 -----END PGP SIGNATURE-----
 

fix: use `only-binary` for `download_only` `pip download` (#1219)

[`wheel_installer` assumes that if the pip command succeeded, there must
be at least one `*.whl`
file](https://github.com/lpulley/rules_python/blob/fdec44120aa45d748ab804f1d019002c6949b449/python/pip_install/tools/wheel_installer/wheel_installer.py#L439),
but this is not currently true when `download_only` is enabled and the
package provides no wheel; a `.tar.gz` will happily be downloaded, pip
will succeed, and the `next(iter(glob.glob("*.whl")))` call will fail,
producing a mysterious `StopIteration`:

```
Saved ./artifactory-0.1.17.tar.gz
Successfully downloaded artifactory
 (Traceback (most recent call last):
  File "[redacted]/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "[redacted]/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "[redacted]/external/rules_python/python/pip_install/tools/wheel_installer/wheel_installer.py", line 450, in <module>
    main()
  File "[redacted]/external/rules_python/python/pip_install/tools/wheel_installer/wheel_installer.py", line 438, in main
    whl = next(iter(glob.glob("*.whl")))
StopIteration
)
```

By using `--only-binary=:all:` when using `pip download`, the pip
command will fail if there is no suitable wheel to be downloaded. This
should make the error much more obvious, since with
`--only-binary=:all:` and no suitable wheel, pip fails and reports an
error like this:

```
ERROR: Could not find a version that satisfies the requirement artifactory (from versions: none)
ERROR: No matching distribution found for artifactory
```