uv/crates/uv-python
Zanie Blue b38edb9b7d
Allow Python requests with missing segments (#14399)
This allows `PythonDownloadRequest` which is used for parsing general
install key requests to have missing segments, which unblocks requests
like `windows-aarch64` or `cpython-linux` (whereas before those would
require `any-any-windows-aarch64` and `cpython-any-linux` respectively).
We still require strict ordering of segments.

Previously, we only allowed missing segments at the end of the key.

This uses a state machine for parsing, which is quite a bit more
complicated.

I'm a little hesitant about the possibility that this regresses error
messages and the complexity of the implementation, but `uv run -p
aarch64` seems valuable following #13724. The alternative to this would
probably be to make these explicit in various places? e.g., expose
`--python-arch`, `--python-libc`, and `--python-os`? Or make
`--python-platform` (which already exists) accept a subset of the keys?

There is a possibility of regressions here, e.g., if something matches
this parser it will not fallback to the `PythonRequest::ExecutableName`
case and we've made this parser more permissive, but I think that should
be quite rare?
2025-08-13 11:03:09 -05:00
..
python Include all site packages directories in ephemeral environment overlays (#15121) 2025-08-08 13:49:21 -05:00
src Allow Python requests with missing segments (#14399) 2025-08-13 11:03:09 -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 Split platform detection code into a dedicated uv-platform crate (#14918) 2025-07-28 14:12:04 -05:00
download-metadata.json Sync latest Python releases (#15171) 2025-08-08 19:03:25 +00:00
fetch-download-metadata.py Use sha256 checksum from GitHub API for GraalPy releases (#14779) 2025-07-21 08:35:45 -04:00