uv/crates
Andrew Gallant 857d2e8f1e uv-resolver: partially revert Requires-Python version narrowing
The PR #4707 introduced the notion of "version narrowing," where a
Requires-Python constraint was _possibly_ narrowed whenever the
universal resolver created a fork. The version narrowing would occur
when the fork was a result of a marker expression on `python_version`
that is *stricter* than the configured `Requires-Python` (via, say,
`pyproject.toml`).

The crucial conceptual change made by #4707 is therefore that
`Requires-Python` is no longer an invariant configuration of resolution,
but rather a mutable constraint that can vary from fork to fork. This in
turn can result in some cases, such as in #4885, where different
versions of dependencies are selected. We aren't sure whether we can fix
those or not, with version narrowing, so for now, we do this revert to
restore the previous behavior and we'll try to address the version
narrowing some other time.

This also adds the case from #4885 as a regression test, ensuring that
we don't break that in the future. I confirmed that with version
narrowing, this test outputs duplicate distributions. Without narrowing,
there are no duplicates.

Ref #4707, Fixes #4885
2024-07-08 09:56:59 -07:00
..
bench Change "toolchain" to "python" (#4735) 2024-07-03 07:44:29 -05:00
cache-key Cache tool environments in uv tool run (#4784) 2024-07-03 19:25:39 -04:00
distribution-filename Remove incompatible wheels from uv.lock (#4799) 2024-07-04 14:03:54 -04:00
distribution-types Preserve verbatim URLs for --find-links (#4838) 2024-07-05 16:57:40 -05:00
install-wheel-rs Show user-facing warning when falling back to copy installs (#4880) 2024-07-08 13:35:58 +00:00
once-map Simplify OnceMap::wait_blocking (#4704) 2024-07-01 15:17:37 -04:00
pep440-rs Always use release-only comparisons for requires-python (#4794) 2024-07-04 20:06:52 +00:00
pep508-rs Disable Clippy's too-many-arguments rule (#4663) 2024-06-30 19:30:38 +00:00
platform-tags fix: add missing ppc64le alias for powerpc64le (#3963) 2024-06-02 13:15:24 -04:00
pypi-types Respect tool upgrades in uv tool install (#4736) 2024-07-02 16:46:31 -04:00
requirements-txt Preserve verbatim URLs for --find-links (#4838) 2024-07-05 16:57:40 -05:00
uv uv-resolver: partially revert Requires-Python version narrowing 2024-07-08 09:56:59 -07:00
uv-auth Enable workspace lint configuration in remaining crates (#4329) 2024-06-18 03:02:28 +00:00
uv-build Change "toolchain" to "python" (#4735) 2024-07-03 07:44:29 -05:00
uv-cache uv cache prune removes all cached environments (#4845) 2024-07-06 19:37:15 +00:00
uv-cli Add UV_OVERRIDE environment variable for --override (#4836) 2024-07-05 16:03:17 -05:00
uv-client Preserve verbatim URLs for --find-links (#4838) 2024-07-05 16:57:40 -05:00
uv-configuration Flatten requirements eagerly in get_dependencies (#4430) 2024-06-25 21:13:47 +00:00
uv-dev Change "toolchain" to "python" (#4735) 2024-07-03 07:44:29 -05:00
uv-dispatch Change "toolchain" to "python" (#4735) 2024-07-03 07:44:29 -05:00
uv-distribution Rename Workspace.root to Workspace.install_path (#4859) 2024-07-07 18:35:41 +00:00
uv-extract Fix nightly cfg checker warnings (#3932) 2024-05-31 09:35:52 +00:00
uv-fs Replace map_or(false, ..) uses with is_some_and and is_ok_and (#4703) 2024-07-01 19:28:42 +00:00
uv-git Fix implementation of GitDatabase::contains (#4698) 2024-07-01 13:01:29 -04:00
uv-installer Skip installing --with requirements if present in base environment (#4879) 2024-07-08 01:23:59 +00:00
uv-macros Enable workspace lint configuration in remaining crates (#4329) 2024-06-18 03:02:28 +00:00
uv-normalize Enable workspace lint configuration in remaining crates (#4329) 2024-06-18 03:02:28 +00:00
uv-python Initialize all --prefix subdirectories (#4895) 2024-07-08 14:15:25 +00:00
uv-requirements Rename Workspace.root to Workspace.install_path (#4859) 2024-07-07 18:35:41 +00:00
uv-resolver uv-resolver: partially revert Requires-Python version narrowing 2024-07-08 09:56:59 -07:00
uv-scripts Add PEP 723 support to uv run (#4656) 2024-07-01 08:20:24 -04:00
uv-settings Add --exclude-newer to installer arguments (#4785) 2024-07-03 18:05:05 +00:00
uv-state Cache tool environments in uv tool run (#4784) 2024-07-03 19:25:39 -04:00
uv-tool feat: add tool version to list command (#4674) 2024-07-03 18:24:37 +00:00
uv-trampoline Update windows binaries, again (#4864) 2024-07-07 18:58:22 -04:00
uv-types Change "toolchain" to "python" (#4735) 2024-07-03 07:44:29 -05:00
uv-version Bump version to v0.2.22 (#4862) 2024-07-07 19:23:38 +00:00
uv-virtualenv Change "toolchain" to "python" (#4735) 2024-07-03 07:44:29 -05:00
uv-warnings Fix a bug where no warning is output when parsing of workspace settings fails. (#4014) 2024-06-04 09:21:19 -04:00
README.md Change "toolchain" to "python" (#4735) 2024-07-03 07:44:29 -05:00

Crates

bench

Functionality for benchmarking uv.

cache-key

Generic functionality for caching paths, URLs, and other resources across platforms.

distribution-filename

Parse built distribution (wheel) and source distribution (sdist) filenames to extract structured metadata.

distribution-types

Abstractions for representing built distributions (wheels) and source distributions (sdists), and the sources from which they can be downloaded.

install-wheel-rs

Install built distributions (wheels) into a virtual environment.]

once-map

A waitmap-like concurrent hash map for executing tasks exactly once.

pep440-rs

Utilities for interacting with Python version numbers and specifiers.

pep508-rs

Utilities for interacting with PEP 508 dependency specifiers.

platform-host

Functionality for detecting the current platform (operating system, architecture, etc.).

platform-tags

Functionality for parsing and inferring Python platform tags as per PEP 425.

uv

Command-line interface for the uv package manager.

uv-build

A PEP 517-compatible build frontend for uv.

uv-cache

Functionality for caching Python packages and associated metadata.

uv-client

Client for interacting with PyPI-compatible HTTP APIs.

uv-dev

Development utilities for uv.

uv-dispatch

A centralized struct for resolving and building source distributions in isolated environments. Implements the traits defined in uv-types.

uv-distribution

Client for interacting with built distributions (wheels) and source distributions (sdists). Capable of fetching metadata, distribution contents, etc.

uv-extract

Utilities for extracting files from archives.

uv-fs

Utilities for interacting with the filesystem.

uv-git

Functionality for interacting with Git repositories.

uv-installer

Functionality for installing Python packages into a virtual environment.

uv-python

Functionality for detecting and leveraging the current Python interpreter.

uv-normalize

Normalize package and extra names as per Python specifications.

uv-package

Types and functionality for working with Python packages, e.g., parsing wheel files.

uv-requirements

Utilities for reading package requirements from pyproject.toml and requirements.txt files.

uv-resolver

Functionality for resolving Python packages and their dependencies.

uv-types

Shared traits for uv, to avoid circular dependencies.

pypi-types

General-purpose type definitions for types used in PyPI-compatible APIs.

uv-virtualenv

A venv replacement to create virtual environments in Rust.

uv-warnings

User-facing warnings for uv.

requirements-txt

Functionality for parsing requirements.txt files.