uv/crates
Andrew Gallant c46fa74e65
make universal resolver fork only when markers are disjoint (#4135)
The basic idea here is to make it so forking can only ever result in a
resolution that, for a particular marker environment, will only install
at most one version of a package. We can guarantee this by ensuring we
only fork on conflicting dependency specifications only when their
corresponding markers are completely disjoint. If they aren't, then
resolution _must_ find a single version of the package in the
intersection of the two dependency specifications.

A test for this case has been added to packse here:
https://github.com/astral-sh/packse/pull/182. Previously, that test
would result in a resolution with two different unconditional versions
of the same package. With this change, resolution fails (as it should).

A commit-by-commit review should be helpful here, since the first commit
is a refactor to make the second commit a bit more digestible.
2024-06-07 23:40:55 +00:00
..
bench Refactor uv-toolchain types (#4121) 2024-06-07 14:20:28 -05:00
cache-key Remove some unused pub use exports (#3930) 2024-05-30 22:26:52 -04:00
distribution-filename Incorporate build tag into wheel prioritization (#3781) 2024-05-23 21:12:53 +00:00
distribution-types Add support for development dependencies (#4036) 2024-06-06 01:40:17 +00:00
install-wheel-rs Support x86 windows (#3873) 2024-05-28 16:07:39 +00:00
once-map Avoid race condition in OnceMap (#3987) 2024-06-03 12:25:58 -04:00
pep440-rs Simplify marker expressions in lockfile (#4066) 2024-06-07 16:14:24 -04:00
pep508-rs Simplify marker expressions in lockfile (#4066) 2024-06-07 16:14:24 -04:00
platform-tags fix: add missing ppc64le alias for powerpc64le (#3963) 2024-06-02 13:15:24 -04:00
pypi-types Avoid building packages with dynamic versions (#4058) 2024-06-05 18:11:58 +00:00
requirements-txt Accept file:// URLs for requirements.txt et all references (#4145) 2024-06-07 22:03:08 +00:00
uv make universal resolver fork only when markers are disjoint (#4135) 2024-06-07 23:40:55 +00:00
uv-auth Include non-standard ports in keyring host queries (#4061) 2024-06-06 19:02:47 -05:00
uv-build Rename uv-interpreter crate to uv-toolchain (#4120) 2024-06-07 13:59:14 -05:00
uv-cache Prefix sys fields with sys_ consistently on Interpreter (#4084) 2024-06-06 02:11:21 +00:00
uv-client Drop "registry" prefix from request timeout log (#4144) 2024-06-07 16:56:32 -05:00
uv-configuration Add support for tool.uv into distribution building (#3904) 2024-05-31 02:42:03 +00:00
uv-dev Refactor uv-toolchain types (#4121) 2024-06-07 14:20:28 -05:00
uv-dispatch Rename uv-interpreter crate to uv-toolchain (#4120) 2024-06-07 13:59:14 -05:00
uv-distribution Do not create a virtual environment when locking (#4147) 2024-06-07 16:56:45 -05:00
uv-extract Fix nightly cfg checker warnings (#3932) 2024-05-31 09:35:52 +00:00
uv-fs Add support for tool.uv into distribution building (#3904) 2024-05-31 02:42:03 +00:00
uv-git Remove some anyhow usages (#3962) 2024-06-01 20:11:23 +00:00
uv-installer Rename uv-interpreter crate to uv-toolchain (#4120) 2024-06-07 13:59:14 -05:00
uv-normalize Add support for development dependencies (#4036) 2024-06-06 01:40:17 +00:00
uv-requirements Lock all packages in workspace (#4016) 2024-06-06 19:09:44 +00:00
uv-resolver make universal resolver fork only when markers are disjoint (#4135) 2024-06-07 23:40:55 +00:00
uv-state Add persistent storage of installed toolchains (#3797) 2024-05-27 03:54:49 +00:00
uv-toolchain Reduce uv-toolchain discovery API to Toolchain (#4148) 2024-06-07 16:56:25 -05:00
uv-trampoline Support x86 windows (#3873) 2024-05-28 16:07:39 +00:00
uv-types Rename uv-interpreter crate to uv-toolchain (#4120) 2024-06-07 13:59:14 -05:00
uv-version Bump version to v0.2.9 (#4107) 2024-06-06 14:21:33 -04:00
uv-virtualenv Refactor uv-toolchain types (#4121) 2024-06-07 14:20:28 -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
uv-workspace Rename uv-interpreter crate to uv-toolchain (#4120) 2024-06-07 13:59:14 -05:00
README.md Rename uv-interpreter crate to uv-toolchain (#4120) 2024-06-07 13:59:14 -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-toolchain

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.