uv/crates
Andrew Gallant 9595a511cd uv-resolver: filter out sibling dependencies in a fork
When a fork is created from a list of dependencies, we were previously
adding all other sibling dependencies to every fork created. But this
isn't actually quite right, since the fork created is always created by
some marker expression. And while it is definitively disjoint from any
directly conflicting dependency specification, it is also possibly
disjoint with other dependencies. For example, as reported in #4414:

```toml
dependencies = [
  "anyio==4.4.0 ; python_version >= '3.12'",
  "anyio==4.3.0 ; python_version < '3.12'",
  "b1 ; python_version >= '3.12'",
  "b2 ; python_version < '3.12'",
]
```

The first two `anyio` requirements are conflicting with non-overlapping
marker expressions, and so a fork is created. Prior to this commit,
*both* `b1` and `b2` would be added to each fork. But of course, `b2` is
impossible in the `anyio==4.4.0` fork because of disjoint marker
expressions.

So in this commit, we specifically filter out any sibling dependencies
that could find their way into a fork that have disjoint markers with
that fork. We are careful to do this both when a new fork is created
from an existing set of dependencies, and when adding new dependencies
to a fork.

Fixes #4414
2024-06-20 07:21:45 -04:00
..
bench Add BuildOptions for centralized combination of NoBuild and NoBinary (#4284) 2024-06-12 21:33:33 +00:00
cache-key Remove some unused pub use exports (#3930) 2024-05-30 22:26:52 -04:00
distribution-filename Represent build tag as u64 (#4253) 2024-06-11 21:40:08 +00:00
distribution-types Use separate path types for directories and files (#4285) 2024-06-12 15:59:21 -04:00
install-wheel-rs Fix relative and absolute path handling in lockfiles (#4266) 2024-06-13 11:51:08 -04:00
once-map Avoid race condition in OnceMap (#3987) 2024-06-03 12:25:58 -04:00
pep440-rs Enable workspace lint configuration in remaining crates (#4329) 2024-06-18 03:02:28 +00:00
pep508-rs Opt-out tool.uv.sources support for uv add (#4406) 2024-06-19 14:20:16 -04:00
platform-tags fix: add missing ppc64le alias for powerpc64le (#3963) 2024-06-02 13:15:24 -04:00
pypi-types Support unnamed requirements in uv add (#4326) 2024-06-14 13:42:39 -04:00
requirements-txt Add --no-build, --no-build-package, and binary variants (#4322) 2024-06-14 04:05:00 +00:00
uv Opt-out tool.uv.sources support for uv add (#4406) 2024-06-19 14:20:16 -04:00
uv-auth Enable workspace lint configuration in remaining crates (#4329) 2024-06-18 03:02:28 +00:00
uv-build Create temporary environments in dedicated cache bucket (#4223) 2024-06-10 23:17:35 +00:00
uv-cache Represent build tag as u64 (#4253) 2024-06-11 21:40:08 +00:00
uv-client Respect .python-version files and fetch manged toolchains in uv project commands (#4361) 2024-06-18 09:43:52 -05:00
uv-configuration Add --no-build, --no-build-package, and binary variants (#4322) 2024-06-14 04:05:00 +00:00
uv-dev Remove cargo dev fetch-python (#4337) 2024-06-17 18:49:06 +00:00
uv-dispatch Rename Downloader for clarity (#4395) 2024-06-18 16:00:10 -05:00
uv-distribution Opt-out tool.uv.sources support for uv add (#4406) 2024-06-19 14:20:16 -04:00
uv-extract Fix nightly cfg checker warnings (#3932) 2024-05-31 09:35:52 +00:00
uv-fs Fix relative and absolute path handling in lockfiles (#4266) 2024-06-13 11:51:08 -04:00
uv-git Remove some anyhow usages (#3962) 2024-06-01 20:11:23 +00:00
uv-installer Treat mismatched directory and file urls as unsatisfied requirements (#4393) 2024-06-19 14:50:13 +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-requirements Enable workspace lint configuration in remaining crates (#4329) 2024-06-18 03:02:28 +00:00
uv-resolver uv-resolver: filter out sibling dependencies in a fork 2024-06-20 07:21:45 -04:00
uv-settings Add a derive macro for Combine (#4325) 2024-06-14 04:53:27 +00:00
uv-state Add persistent storage of installed toolchains (#3797) 2024-05-27 03:54:49 +00:00
uv-toolchain Refactor Python executable chain into lazy variables (#4318) 2024-06-19 15:27:02 -05:00
uv-trampoline Support x86 windows (#3873) 2024-05-28 16:07:39 +00:00
uv-types Add BuildOptions for centralized combination of NoBuild and NoBinary (#4284) 2024-06-12 21:33:33 +00:00
uv-version Bump version to 0.2.13 (#4388) 2024-06-18 11:46:32 -05:00
uv-virtualenv Use relative path for lib64 symlink (#4268) 2024-06-12 09:36:27 -04: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 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.