uv/crates
Zanie Blue 6856a27711
Add `extra-build-dependencies` (#14735)
Replaces https://github.com/astral-sh/uv/pull/14092

Adds `tool.uv.extra-build-dependencies = {package = [dependency, ...]}`
which extends `build-system.requires` during package builds.

These are lowered via workspace sources, are applied to transitive
dependencies, and are included in the wheel cache shard hash.

There are some features we need to follow-up on, but are out of scope
here:

- Preferring locked versions for build dependencies
- Settings for requiring locked versions for build depencies

There are some quality of life follow-ups we should also do:

- Warn on `extra-build-dependencies` that do not apply to any packages
- Add test cases and improve error messaging when the
`extra-build-dependencies` resolve fails


-------

There ~are~ were a few open decisions to be made here

1. Should we resolve these dependencies alongside the
`build-system.requires` dependencies? Or should we resolve separately?
(I think the latter is more powerful? because you can override things?
but it opens the door to breaking your build)
2. Should we install these dependencies into the same environment? Or
should we layer it on top as we do elsewhere? (I think it's fine to
install into the same environment)
3. Should we respect sources defined in the parent project? (I think
yes, but then we need to lower the dependencies earlier — I don't think
that's a big deal, but it's not implemented)
4. Should we respect sources defined in the child project? (I think no,
this gets really complicated and seems weird to allow)
5. Should we apply this to transitive dependencies? (I think so)

---------

Co-authored-by: Aria Desires <aria.desires@gmail.com>
Co-authored-by: konstin <konstin@mailbox.org>
2025-07-30 09:53:07 -05:00
..
uv Add `extra-build-dependencies` (#14735) 2025-07-30 09:53:07 -05:00
uv-auth Use workspace dependencies for crate dev-dependencies (#14903) 2025-07-25 13:57:49 -05:00
uv-bench Add `extra-build-dependencies` (#14735) 2025-07-30 09:53:07 -05:00
uv-build Bump version to 0.8.3 (#14875) 2025-07-24 15:51:15 -05:00
uv-build-backend Fix incorrect file permissions in wheel packages (#14930) 2025-07-28 15:56:08 +02:00
uv-build-frontend Add `extra-build-dependencies` (#14735) 2025-07-30 09:53:07 -05:00
uv-cache Cache Python downloads by default in `python install` tests (#14326) 2025-07-28 17:33:57 +00:00
uv-cache-info Follow links when cache-key is a glob (#13438) 2025-07-14 11:35:34 -04:00
uv-cache-key Add `DisplaySafeUrl` newtype to prevent leaking of credentials by default (#13560) 2025-05-27 00:05:30 +02:00
uv-cli Add `extra-build-dependencies` (#14735) 2025-07-30 09:53:07 -05:00
uv-client Use workspace dependencies for crate dev-dependencies (#14903) 2025-07-25 13:57:49 -05:00
uv-configuration Add `extra-build-dependencies` (#14735) 2025-07-30 09:53:07 -05:00
uv-console Fix rendering of `uv venv --clear` hint in bash (#14691) 2025-07-17 17:20:21 -05:00
uv-dev Split preview mode into separate feature flags (#14823) 2025-07-25 11:01:57 -05:00
uv-dirs Use workspace dependencies for crate dev-dependencies (#14903) 2025-07-25 13:57:49 -05:00
uv-dispatch Add `extra-build-dependencies` (#14735) 2025-07-30 09:53:07 -05:00
uv-distribution Add `extra-build-dependencies` (#14735) 2025-07-30 09:53:07 -05:00
uv-distribution-filename Use workspace dependencies for crate dev-dependencies (#14903) 2025-07-25 13:57:49 -05:00
uv-distribution-types Remove resolved TODO in `allowed_indexes` (#14912) 2025-07-26 04:04:28 +00:00
uv-extract Disallow writing symlinks outside the source distribution target directory (#12259) 2025-07-22 09:20:09 -04:00
uv-fs Copy entry points and Jupyter data directories into ephemeral environments (#14790) 2025-07-22 12:11:05 +00:00
uv-git Skip GitHub fast path when rate-limited (#13033) 2025-06-24 12:11:41 -07:00
uv-git-types make GitOid strict about parsing exactly 40 hex characters 2025-06-09 23:50:36 +00:00
uv-globfilter Use workspace dependencies for crate dev-dependencies (#14903) 2025-07-25 13:57:49 -05:00
uv-install-wheel Use workspace dependencies for crate dev-dependencies (#14903) 2025-07-25 13:57:49 -05:00
uv-installer Run `cargo update` (#14899) 2025-07-25 15:19:38 -05:00
uv-macros Bump MSRV to 1.85 and Edition 2024 (#13516) 2025-05-18 19:38:43 -04:00
uv-metadata only warn if CRC appears to be missing (#12722) 2025-04-07 12:49:05 -05:00
uv-normalize Move dependency group normalization into specification (#14757) 2025-07-20 14:13:27 -04:00
uv-once-map Bump MSRV to 1.84 (#12670) 2025-04-04 11:49:26 -04:00
uv-options-metadata Implement `PartialEq` for `OptionSet` (#14765) 2025-07-20 18:17:07 -04:00
uv-pep440 Add `extra-build-dependencies` (#14735) 2025-07-30 09:53:07 -05:00
uv-pep508 Add `extra-build-dependencies` (#14735) 2025-07-30 09:53:07 -05:00
uv-performance-memory-allocator Update Rust crate mimalloc to v0.1.47 (#14207) 2025-06-23 12:07:09 +02:00
uv-platform Split platform detection code into a dedicated `uv-platform` crate (#14918) 2025-07-28 14:12:04 -05:00
uv-platform-tags Use workspace dependencies for crate dev-dependencies (#14903) 2025-07-25 13:57:49 -05:00
uv-publish Use workspace dependencies for crate dev-dependencies (#14903) 2025-07-25 13:57:49 -05:00
uv-pypi-types Use workspace dependencies for crate dev-dependencies (#14903) 2025-07-25 13:57:49 -05:00
uv-python Split platform detection code into a dedicated `uv-platform` crate (#14918) 2025-07-28 14:12:04 -05:00
uv-redacted Avoid writing redacted credentials to tool receipt (#14855) 2025-07-23 16:01:10 -04:00
uv-requirements Support `extras` and `dependency_groups` markers on `uv pip install` and `uv pip sync` (#14755) 2025-07-21 12:48:47 +00:00
uv-requirements-txt Use workspace dependencies for crate dev-dependencies (#14903) 2025-07-25 13:57:49 -05:00
uv-resolver Add `exclude-newer-package` (#14489) 2025-07-29 17:00:25 -05:00
uv-scripts Add `extra-build-dependencies` (#14735) 2025-07-30 09:53:07 -05:00
uv-settings Add `extra-build-dependencies` (#14735) 2025-07-30 09:53:07 -05:00
uv-shell Bump MSRV to 1.85 and Edition 2024 (#13516) 2025-05-18 19:38:43 -04:00
uv-small-str Update schemars 1.0.0 (#13693) 2025-06-24 21:43:31 +02:00
uv-state Bump MSRV to 1.85 and Edition 2024 (#13516) 2025-05-18 19:38:43 -04:00
uv-static Add `UV_` prefix to installer environment variables (#14964) 2025-07-30 01:24:59 +00:00
uv-tool Split preview mode into separate feature flags (#14823) 2025-07-25 11:01:57 -05:00
uv-torch Add auto-detection for Intel GPUs (#14386) 2025-07-09 13:31:08 +00:00
uv-trampoline Support transparent Python patch version upgrades (#13954) 2025-06-20 16:17:13 +02:00
uv-trampoline-builder Use workspace dependencies for crate dev-dependencies (#14903) 2025-07-25 13:57:49 -05:00
uv-types Add `extra-build-dependencies` (#14735) 2025-07-30 09:53:07 -05:00
uv-version Bump version to 0.8.3 (#14875) 2025-07-24 15:51:15 -05:00
uv-virtualenv Split preview mode into separate feature flags (#14823) 2025-07-25 11:01:57 -05:00
uv-warnings Better warning chain styling (#14934) 2025-07-28 16:23:39 +00:00
uv-workspace Add `extra-build-dependencies` (#14735) 2025-07-30 09:53:07 -05:00
README.md Link to Dependency specifiers instead of PEP 508 (#8411) 2024-10-21 14:43:38 -04:00

README.md

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.