uv/crates
konsti 00aa2ab672
Make `uv cache clean` parallel process safe (#15888)
Currently, `uv cache clean` and `uv cache prune` can cause crashes in
other uv processes running in parallel by removing their in-use files.

We can solve this by using a shared (read) lock on the cache directory,
while the `uv cache` operations use an exclusive (write) lock. The
drawback is that this is always one extra lock, and that we assume that
all platforms support shared locks.

Once Rust 1.89 fulfills our N-2 policy, we can add support for these
methods in fs_err and switch to
https://doc.rust-lang.org/std/fs/struct.File.html#platform-specific-behavior-2.

**Test Plan**

Open one terminal, run:

```
uv venv -c -p 3.13
UV_CACHE_DIR=cache uv cache clean
UV_CACHE_DIR=cache uv pip install numpy==2.0.0
```

Open another terminal, run:

```
UV_CACHE_DIR=cache uv cache clean
```

Fixes #15704
Part of #13883
2025-09-19 10:21:22 +02:00
..
uv Make `uv cache clean` parallel process safe (#15888) 2025-09-19 10:21:22 +02:00
uv-auth Avoid ANSI codes in debug! messages (#15843) 2025-09-17 14:30:43 +00:00
uv-bench Use a global `BaseClientBuilder` (#15548) 2025-08-29 13:30:51 -05:00
uv-bin-install Retry streaming Python and bin download errors (#15567) 2025-08-31 15:07:22 +00:00
uv-build Bump version to 0.8.18 (#15920) 2025-09-17 16:13:41 -05:00
uv-build-backend Better warning for no direct build (#15898) 2025-09-17 13:18:41 +02:00
uv-build-frontend fix misleading debug message in uv sync (#15881) 2025-09-16 18:39:08 +00:00
uv-cache Make `uv cache clean` parallel process safe (#15888) 2025-09-19 10:21:22 +02: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 Infer check URL from publish URL when known (#15886) 2025-09-16 14:03:03 +00:00
uv-client Use `EnvVars` in linehaul (#15931) 2025-09-18 14:08:58 +00:00
uv-configuration Allow escaping spaces in --env-file handling (#15815) 2025-09-12 18:11:51 -04:00
uv-console Bump MSRV to 1.88 (#15935) 2025-09-18 14:00:39 -04:00
uv-dev Sync latest Python releases (#15670) 2025-09-03 20:04:55 -05:00
uv-dirs Use workspace dependencies for crate dev-dependencies (#14903) 2025-07-25 13:57:49 -05:00
uv-dispatch Fix `uv sync --no-sources` not switching from editable to registry installations (#15234) 2025-09-17 06:35:32 -05:00
uv-distribution Allow `[project]` to be missing from a `pyproject.toml` (#14113) 2025-09-17 10:48:56 -05:00
uv-distribution-filename Add logging of incompatible tags on satisfies check (#15663) 2025-09-03 11:45:49 -05:00
uv-distribution-types Fix implied `platform_machine` marker for `win_arm64` platform tag (#15921) 2025-09-17 19:33:59 -04:00
uv-extract Respect `UV_INSECURE_NO_ZIP_VALIDATION=1` in duplicate header errors (#15912) 2025-09-17 14:34:49 +00:00
uv-fs Make `uv cache clean` parallel process safe (#15888) 2025-09-19 10:21:22 +02:00
uv-git Update Rust toolchain to 1.89 (#15157) 2025-08-08 13:01:52 +00:00
uv-git-types Include SHA when listing lockfile changes (#15817) 2025-09-12 17:57:58 +00:00
uv-globfilter additional use of Self, remove * and & where not needed (#15091) 2025-08-05 15:19:56 -05:00
uv-install-wheel Reject already-installed wheels that don't match the target platform (#15484) 2025-08-25 09:20:54 -04:00
uv-installer Avoid ANSI codes in debug! messages (#15843) 2025-09-17 14:30:43 +00:00
uv-keyring Use the `windows` crate facade consistently (#15737) 2025-09-09 15:07:14 +00:00
uv-logging Add logging to the uv build backend (#15533) 2025-08-27 09:14:00 +02:00
uv-macros Use consistent workspace inheritance (#15031) 2025-08-02 22:03:51 +02:00
uv-metadata Harden ZIP streaming to reject repeated entries and other malformed ZIP files (#15136) 2025-08-07 15:31:48 +01:00
uv-normalize Add `rkyv` implementation for Core Metadata (#15532) 2025-08-26 10:22:50 -04:00
uv-once-map Make the use of `Self` consistent. (#15074) 2025-08-05 20:17:12 +01:00
uv-options-metadata Make the use of `Self` consistent. (#15074) 2025-08-05 20:17:12 +01:00
uv-pep440 Update Rust toolchain to 1.89 (#15157) 2025-08-08 13:01:52 +00:00
uv-pep508 Add `rkyv` implementation for Core Metadata (#15532) 2025-08-26 10:22:50 -04:00
uv-performance-memory-allocator Update Rust crate mimalloc to v0.1.48 (#15724) 2025-09-08 07:08:37 +00:00
uv-platform Don't trace logs all architectures (#15710) 2025-09-07 17:31:50 +02:00
uv-platform-tags Improve BSD tag construction (#15829) 2025-09-14 10:48:37 -04:00
uv-preview Remove the native system store from the keyring providers (#15612) 2025-09-02 13:16:52 -05:00
uv-publish Rename `provides_extras` to `provides_extra` (#15825) 2025-09-14 13:27:45 +00:00
uv-pypi-types Avoid re-parsing `pyproject.toml` when provided as a source (#15851) 2025-09-15 10:07:38 -04:00
uv-python Use `EnvVars` for Conda variables in tests (#15930) 2025-09-18 07:52:23 -05:00
uv-redacted Make the use of `Self` consistent. (#15074) 2025-08-05 20:17:12 +01:00
uv-requirements Avoid re-parsing `pyproject.toml` when provided as a source (#15851) 2025-09-15 10:07:38 -04:00
uv-requirements-txt Support recursive requirements and constraints inclusion (#15657) 2025-09-05 11:20:12 +02:00
uv-resolver Fix `uv sync --no-sources` not switching from editable to registry installations (#15234) 2025-09-17 06:35:32 -05:00
uv-scripts Import `PackageName` from `uv-normalize` (#15439) 2025-08-21 23:15:40 +00:00
uv-settings Rename `provides_extras` to `provides_extra` (#15825) 2025-09-14 13:27:45 +00:00
uv-shell Use the `windows` crate facade consistently (#15737) 2025-09-09 15:07:14 +00:00
uv-small-str Update schemars 1.0.0 (#13693) 2025-06-24 21:43:31 +02:00
uv-state Add pyx support to `uv auth` commands (#15636) 2025-09-02 18:18:09 -04:00
uv-static Use `EnvVars` in linehaul (#15931) 2025-09-18 14:08:58 +00:00
uv-tool fix misleading debug message in uv sync (#15881) 2025-09-16 18:39:08 +00:00
uv-torch Add PyG packages to torch backend (#15911) 2025-09-17 14:18:30 +00:00
uv-trampoline Update trampoline to ~1.87 nightly (#15052) 2025-08-06 12:45:04 +00:00
uv-trampoline-builder Use workspace dependencies for crate dev-dependencies (#14903) 2025-07-25 13:57:49 -05:00
uv-types Import `PackageName` from `uv-normalize` (#15439) 2025-08-21 23:15:40 +00:00
uv-version Bump version to 0.8.18 (#15920) 2025-09-17 16:13:41 -05:00
uv-virtualenv fix misleading debug message in uv sync (#15881) 2025-09-16 18:39:08 +00:00
uv-warnings Better warning chain styling (#14934) 2025-07-28 16:23:39 +00:00
uv-workspace Allow `[project]` to be missing from a `pyproject.toml` (#14113) 2025-09-17 10:48:56 -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.