uv/crates
Charlie Marsh 5370484307
Remove .whl extension for cached, unzipped wheels (#574)
## Summary

This PR uses the wheel stem (e.g., `foo-1.2.3-py3-none-any`) instead of
the wheel name (e.g., `foo-1.2.3-py3-none-any.whl`) when storing
unzipped wheels in the cache, which removes a class of confusing issues
around overwrites and directory-vs.-file collisions.

For now, we retain _both_ the zipped and unzipped wheels in the cache,
though we can easily change this by storing the zipped wheels in a
temporary directory.

Closes https://github.com/astral-sh/puffin/issues/573.

## Test Plan

Some examples from my local cache:

<img width="835" alt="Screen Shot 2023-12-05 at 4 09 55 PM"
src="784146aa-b080-416e-9767-40c843fe5d6a">
<img width="847" alt="Screen Shot 2023-12-05 at 4 12 14 PM"
src="4bc7f30f-bef3-47f1-b4e8-da9cabf87f28">
<img width="637" alt="Screen Shot 2023-12-05 at 4 09 50 PM"
src="25ca4944-4a06-4a08-ac85-c6f7d8b5c8ea">
2023-12-05 22:41:22 +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 Remove .whl extension for cached, unzipped wheels (#574) 2023-12-05 22:41:22 +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 local wheels when unzipping (#560) 2023-12-05 17:50:08 +00:00
puffin-cache Remove .whl extension for cached, unzipped wheels (#574) 2023-12-05 22:41:22 +00:00
puffin-cli Allow yanked versions when specified via == (#561) 2023-12-05 09:44:06 +01:00
puffin-client Remove existing built wheels when building source distributions (#559) 2023-12-05 12:45:24 -05: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 Remove .whl extension for cached, unzipped wheels (#574) 2023-12-05 22:41:22 +00:00
puffin-fs Avoid removing local wheels when unzipping (#560) 2023-12-05 17:50:08 +00:00
puffin-git Better tracing span (#513) 2023-11-29 10:34:18 +00:00
puffin-installer Remove .whl extension for cached, unzipped wheels (#574) 2023-12-05 22:41:22 +00:00
puffin-interpreter Remove existing built wheels when building source distributions (#559) 2023-12-05 12:45:24 -05:00
puffin-macros Use Clippy lint table over Cargo config (#490) 2023-11-22 15:10:27 +00:00
puffin-normalize Split puffin-package into requirements.txt parser and pypi-types (#341) 2023-11-06 18:19:49 +00:00
puffin-resolver Allow yanked versions when specified via == (#561) 2023-12-05 09:44:06 +01: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 Use Clippy lint table over Cargo config (#490) 2023-11-22 15:10:27 +00: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.