uv/crates
Charlie Marsh 22fd9f7ff1
Pass extra when evaluating lockfile markers (#9539)
## Summary

When we serialize and deserialize the lockfile, we remove the conflict
markers. So in the linked case, the edges for the `tqdm` entries are
like:

```
complexified_marker: UniversalMarker {
    pep508_marker: python_full_version >= '3.9.0',
    conflict_marker: true,
},
```

However... when we evaluate in-memory, the conflict markers are still
there...

```
complexified_marker: UniversalMarker {
    pep508_marker: true,
    conflict_marker: extra == 't1' and extra != 't2',
},
```

So if `uv run` creates the lockfile, we evaluate this as `false`.

We should make this consistent, and I expect @BurntSushi is aware. But
for now, it's reasonable / correct to pass the extra when evaluating at
this specific point, since we know the dependency was enabled by the
marker.

Closes
https://github.com/astral-sh/uv/issues/9533#issuecomment-2508908591.
2024-11-30 14:22:18 +00:00
..
uv Pass extra when evaluating lockfile markers (#9539) 2024-11-30 14:22:18 +00:00
uv-auth Publish: Warn when keyring has no password (#8827) 2024-11-27 20:54:49 +01:00
uv-bench Rename ResolutionGraph to ResolverOutput (#9103) 2024-11-14 14:51:11 +00:00
uv-build-backend Align tempfile workspace dependencies with root project (#9524) 2024-11-29 12:05:10 -05:00
uv-build-frontend Use consistent formatting for build system errors (#9340) 2024-11-27 14:22:53 +00:00
uv-cache Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
uv-cache-info Improve error message for cache info serialization (#8500) 2024-10-23 13:17:31 +00:00
uv-cache-key Remove separate test files in favor of same-file mod tests (#9199) 2024-11-18 20:11:46 +00:00
uv-cli Enable constraints in uv tool upgrade CLI (#9375) 2024-11-25 22:22:30 +00:00
uv-client Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
uv-configuration Override manylinux_compatible with --python-platform (#9526) 2024-11-29 17:26:24 +00:00
uv-console Support interactive input in uv publish (#8158) 2024-10-15 10:00:43 +02:00
uv-dev Reorganize the project concept documentation (#9121) 2024-11-19 13:52:12 -06:00
uv-dirs Eliminate dependencies on directores and dirs-sys (#8048) 2024-11-07 14:29:54 -06:00
uv-dispatch Show full derivation chain when encountering build failures (#9108) 2024-11-14 15:48:26 -05:00
uv-distribution Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
uv-distribution-filename Remove separate test files in favor of same-file mod tests (#9199) 2024-11-18 20:11:46 +00:00
uv-distribution-types Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
uv-extract Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
uv-fs Avoid empty user display paths (#9312) 2024-11-21 14:56:50 -05:00
uv-git Remove separate test files in favor of same-file mod tests (#9199) 2024-11-18 20:11:46 +00:00
uv-globfilter Align tempfile workspace dependencies with root project (#9524) 2024-11-29 12:05:10 -05:00
uv-install-wheel Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
uv-installer Consistently enforce requested-vs.-built metadata when retrieving wheels (#9484) 2024-11-27 16:51:01 -05:00
uv-macros Generate environment variables doc from code (#8493) 2024-11-03 08:31:38 -06:00
uv-metadata chore: Move all integration tests to a single binary (#8093) 2024-10-11 16:41:35 +02:00
uv-normalize Remove separate test files in favor of same-file mod tests (#9199) 2024-11-18 20:11:46 +00:00
uv-once-map Use shared resolver state between add and lock (#8146) 2024-10-12 14:58:07 +00:00
uv-options-metadata Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
uv-pep440 Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
uv-pep508 Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
uv-performance-flate2-backend Use zlib-rs on all platforms (#9264) 2024-11-20 00:01:58 -05:00
uv-performance-memory-allocator Run cargo update (#8703) 2024-11-01 10:26:21 -04:00
uv-platform-tags Fix Python interpreter discovery on non-glibc hosts (#9005) 2024-11-21 12:35:02 +01:00
uv-publish Upload: All metadata incl. PEP 639 (#9442) 2024-11-27 00:25:08 +01:00
uv-pypi-types Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
uv-python Align tempfile workspace dependencies with root project (#9524) 2024-11-29 12:05:10 -05:00
uv-requirements Support recursive extras with marker in pip compile -r pyproject.toml (#9535) 2024-11-30 03:40:22 +00:00
uv-requirements-txt Align tempfile workspace dependencies with root project (#9524) 2024-11-29 12:05:10 -05:00
uv-resolver Pass extra when evaluating lockfile markers (#9539) 2024-11-30 14:22:18 +00:00
uv-scripts Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
uv-settings Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
uv-shell Refactor shell quoting (#9055) 2024-11-15 09:06:54 +00:00
uv-state Add uv-dirs to consolidate directory lookup methods (#8453) 2024-10-22 11:33:25 -05:00
uv-static docs: reference --no-progress option in related environment variable (#9357) 2024-11-22 14:51:53 +00:00
uv-tool Eliminate dependencies on directores and dirs-sys (#8048) 2024-11-07 14:29:54 -06:00
uv-trampoline Update Rust crate fs-err to v3 (#8625) 2024-11-19 15:09:00 +00:00
uv-trampoline-builder Add support for installing versioned Python executables on Windows (#8663) 2024-10-31 15:58:35 +00:00
uv-types Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
uv-version Bump version to 0.5.5 (#9478) 2024-11-27 11:37:39 -06:00
uv-virtualenv Allow apostrophe in venv name (#8984) 2024-11-15 10:52:10 +01:00
uv-warnings chore: Move all integration tests to a single binary (#8093) 2024-10-11 16:41:35 +02:00
uv-workspace Upgrade to Rust 1.83 (#9511) 2024-11-29 12:04:22 -05:00
README.md Link to Dependency specifiers instead of PEP 508 (#8411) 2024-10-21 14:43:38 -04:00

Crates

uv-bench

Functionality for benchmarking uv.

uv-cache-key

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

uv-distribution-filename

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

uv-distribution-types

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

uv-install-wheel-rs

Install built distributions (wheels) into a virtual environment.

uv-once-map

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

uv-pep440-rs

Utilities for interacting with Python version numbers and specifiers.

uv-pep508-rs

Utilities for parsing and evaluating dependency specifiers, previously known as PEP 508.

uv-platform-tags

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

uv-cli

Command-line interface for the uv package manager.

uv-build-frontend

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-requirements

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

uv-resolver

Functionality for resolving Python packages and their dependencies.

uv-shell

Utilities for detecting and manipulating shell environments.

uv-types

Shared traits for uv, to avoid circular dependencies.

uv-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.

uv-workspace

Workspace abstractions for uv.

uv-requirements-txt

Functionality for parsing requirements.txt files.