uv-wheel-download
A pip-free replacement for the pip download step in our Azure pipelines. It reads uv.lock, downloads every
pinned wheel (sdist only if no wheel fits) into a folder, and writes a requirements.txt that installs from that folder
only.
# before: uv export + pip download + PowerShell "Adjust requirements.txt"
- script: uvx --from git+https://github.com/bmsuisse/uv-wheel-download uv-wheel-download -d _dependencies -r requirements.txt
displayName: Download dependencies
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken) # for the private BMS feed; ~/.netrc works too
Result: _dependencies/*.whl and a requirements.txt starting with --no-index / --find-links _dependencies,
followed by the usual uv export --no-hashes content.
How it works
uv export --frozen --format pylock.tomlgives all files inuv.lockwith URL and sha256 (--frozen: the lock is trusted as is, no re-resolve; pass--lockedafter--to have uv verify it instead).- The target interpreter (
--python, defaultuv python findin the project) is run directly to get its markers and compatible wheel tags (no index or network access needed), and one file per package is picked (marker-excluded packages are skipped). - Files are fetched in parallel, sha256-verified, and kept in
<uv cache dir>/wheel-download/<sha256>/. Whatever already persistsUV_CACHE_DIRbetween runs also persists the wheels, and a hit costs no network. They are then hard-linked into the destination.
uv's own cache only holds unpacked archives, not .whl files, so it can't be reused directly; this store lives next to
it and follows UV_CACHE_DIR.
Auth: SYSTEM_ACCESSTOKEN is sent as VssSessionToken:<token> to https://pkgs.dev.azure.com only; any other host (or Azure
without the variable) uses ~/.netrc.
Local/editable packages (workspace members, -e .) are not downloaded; they stay in requirements.txt as uv exports
them.
Options
uv-wheel-download [-d DEST] [-r REQUIREMENTS | --no-requirements] [--project DIR] [--python PY] [-j N] [-- <uv export args>]
Everything after -- goes to uv export, e.g. -- --package mdmapp or -- --group build. --no-dev is added unless
you choose groups yourself (--dev, --only-dev, --all-groups, ...).
Development
just install, then just test-all (ruff, ty, pytest).
Metadata
Release files for uv-wheel-download 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| uv_wheel_download-0.1.0.tar.gz | 33.3 kB | With provenance | Details for uv_wheel_download-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| uv_wheel_download-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for uv_wheel_download-0.1.0-py3-none-any.whl |
Total release size: 42.4 kB
Release files / uv_wheel_download-0.1.0.tar.gz
| Download URL | uv_wheel_download-0.1.0.tar.gz |
|---|---|
| Size | 33.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
916e3181f3bced03d8efc4b799617d809f26fd12b5897c5a897d3dfa8e1517c5
|
|
BLAKE2b-256 checksum How to use checksums |
a61a04d9476b87abb493c3661c6cfa83be4b9bc7b26a4393dbe3b185918bafda
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / uv_wheel_download-0.1.0-py3-none-any.whl
| Download URL | uv_wheel_download-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dffa39b84fb0ec3a09816703890165a40a92d572348ee9d2762b34ca9a05139f
|
|
BLAKE2b-256 checksum How to use checksums |
68946ce42a71b129a9fe33e94b6568b95d231a0c2b07875bc50f534a82ae5a60
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logSecurity for uv-wheel-download 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for uv_wheel_download-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.