uv/crates
Charlie Marsh a825b2db06
Shard the registry cache by package (#583)
## Summary

This PR modifies the cache structure in a few ways. Most notably, we now
shard the set of registry wheels by package, and index them lazily when
computing the install plan.

This applies both to built wheels:

<img width="989" alt="Screen Shot 2023-12-06 at 4 42 19 PM"
src="0e8a306f-befd-4be9-a63e-2303389837bb">

And remote wheels:

<img width="836" alt="Screen Shot 2023-12-06 at 4 42 30 PM"
src="7fd908cd-dd86-475e-9779-07ed067b4a1a">

For other distributions, we now consistently cache using the package
name, which is really just for clarity and debuggability (we could
consider omitting these):

<img width="955" alt="Screen Shot 2023-12-06 at 4 58 30 PM"
src="3e8d0f99-df45-429a-9175-d57b54a72e56">

Obliquely closes https://github.com/astral-sh/puffin/issues/575.
2023-12-07 05:02:46 +00:00
..
bench Use Clippy lint table over Cargo config (#490) 2023-11-22 15:10:27 +00:00
distribution-filename Remove .whl extension for cached, unzipped wheels (#574) 2023-12-05 22:41:22 +00:00
distribution-types Modify install plan to support all distribution types (#581) 2023-12-07 04:43:34 +00:00
gourgeist Use atomic writes for the cache consistently (#546) 2023-12-04 12:02:01 -05:00
install-wheel-rs Overwrite individual files when reflinking (#556) 2023-12-04 23:59:35 +00:00
pep440-rs Use u64 instead of u32 in Version fields (#555) 2023-12-04 21:00:55 -05:00
pep508-rs Consistent Cargo.toml syntax (#483) 2023-11-22 08:34:08 +00:00
platform-host Error when ldd is not in path (#506) 2023-11-28 05:55:04 +00:00
platform-tags Add Tags::from_interpreter (#498) 2023-11-24 11:36:01 +00:00
puffin-build Avoid removing existing directories when unzipping and building (#577) 2023-12-06 02:36:12 +00:00
puffin-cache Shard the registry cache by package (#583) 2023-12-07 05:02:46 +00:00
puffin-cli Modify install plan to support all distribution types (#581) 2023-12-07 04:43:34 +00:00
puffin-client Shard the registry cache by package (#583) 2023-12-07 05:02:46 +00:00
puffin-dev Consolidate wheel caches (#524) 2023-12-01 20:16:33 +00:00
puffin-dispatch Consolidate wheel caches (#524) 2023-12-01 20:16:33 +00:00
puffin-distribution Shard the registry cache by package (#583) 2023-12-07 05:02:46 +00:00
puffin-fs Avoid removing existing directories when unzipping and building (#577) 2023-12-06 02:36:12 +00:00
puffin-git Better tracing span (#513) 2023-11-29 10:34:18 +00:00
puffin-installer Shard the registry cache by package (#583) 2023-12-07 05:02:46 +00:00
puffin-interpreter Improve path source dist caching (#578) 2023-12-06 11:47:01 -05:00
puffin-macros Use Clippy lint table over Cargo config (#490) 2023-11-22 15:10:27 +00:00
puffin-normalize Shard the registry cache by package (#583) 2023-12-07 05:02:46 +00:00
puffin-resolver Allow switching out the resolver's IO (#517) 2023-12-06 11:53:16 -06:00
puffin-traits Introduce Cache, CacheBucket and CacheEntry (#507) 2023-11-28 17:11:14 +00:00
puffin-workspace Use Clippy lint table over Cargo config (#490) 2023-11-22 15:10:27 +00:00
pypi-types Consolidate wheel caches (#524) 2023-12-01 20:16:33 +00:00
requirements-txt Parse editable installs (#564) 2023-12-06 18:21:15 +01:00
README.md Remove existing built wheels when building source distributions (#559) 2023-12-05 12:45:24 -05:00

Crates

bench

Functionality for benchmarking Puffin.

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.

gourgeist

A venv replacement to create virtual environments in Rust.

install-wheel-rs

Install built distributions (wheels) into a virtual environment.]

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.

puffin-build

A PEP 517-compatible build frontend for Puffin.

puffin-cache

Functionality for caching Python packages and associated metadata.

puffin-cli

Command-line interface for the Puffin package manager.

puffin-client

Client for interacting with PyPI-compatible HTTP APIs.

puffin-dev

Development utilities for Puffin.

puffin-dispatch

A centralized struct for resolving and building source distributions in isolated environments. Implements the traits defined in puffin-traits.

puffin-distribution

Client for interacting with built distributions (wheels) and source distributions (sdists). Capable of fetching metadata, distribution contents, etc.

puffin-fs

Utilities for interacting with the filesystem.

puffin-git

Functionality for interacting with Git repositories.

puffin-installer

Functionality for installing Python packages into a virtual environment.

puffin-interpreter

Functionality for detecting and leveraging the current Python interpreter.

puffin-macros

Reusable procedural macros for Puffin.

puffin-normalize

Normalize package and extra names as per Python specifications.

puffin-package

Types and functionality for working with Python packages, e.g., parsing wheel files.

puffin-resolver

Functionality for resolving Python packages and their dependencies.

puffin-traits

Shared traits for Puffin, to avoid circular dependencies.

pypi-types

General-purpose type definitions for types used in PyPI-compatible APIs.

requirements-txt

Functionality for parsing requirements.txt files.