uv/crates/uv-python
Zanie Blue 9b8d6989d4
Allow pinning managed Python versions to specific build versions (#15314)
Allows pinning the Python build version via environment variables, e.g.,
`UV_PYTHON_CPYTHON_BUILD=...`. Each variable is implementation specific,
because they use different versioning schemes.

Updates the Python download metadata to include a `build` string, so we
can filter downloads by the pin. Writes the build version to a file in
the managed install, e.g., `cpython-3.10.18-macos-aarch64-none/BUILD`,
so we can filter installed versions by the pin.

Some important follow-up here:

- Include the build version in not found errors (when pinned)
- Automatically use a remote list of Python downloads to satisfy build
versions not present in the latest embedded download metadata

Some less important follow-ups to consider:

- Allow using ranges for build version pins
2025-08-25 16:25:05 -05:00
..
python Include all site packages directories in ephemeral environment overlays (#15121) 2025-08-08 13:49:21 -05:00
src Allow pinning managed Python versions to specific build versions (#15314) 2025-08-25 16:25:05 -05:00
.gitignore minify and filter embed managed pythons json on compile time (#12967) 2025-04-30 15:51:03 -04:00
build.rs Only rebuild download JSON on change (#13261) 2025-05-02 07:49:34 -05:00
Cargo.toml Move preview features into a dedicated crate (#15482) 2025-08-24 09:55:30 -04:00
download-metadata.json Allow pinning managed Python versions to specific build versions (#15314) 2025-08-25 16:25:05 -05:00
fetch-download-metadata.py Allow pinning managed Python versions to specific build versions (#15314) 2025-08-25 16:25:05 -05:00