uv/crates
Charlie Marsh 6d672b8951
Add source distribution support to pip-compile (#323)
## Summary

This is a first-pass at adding source distribution support to the
installer.

The previous installation flow was:

1. Come up with a plan.
1. Find a distribution (specific file) for every package that we'll need
to download.
1. Download those distributions.
1. Unzip them (since we assumed they were all wheels).
1. Install them into the virtual environment.

Now, Step (3) downloads both wheels and source distributions, and we
insert a step between Steps (3) and (4) to build any source
distributions into zipped wheels.

There are a bunch of TODOs, the most important (IMO) is that we
basically have two implementations of downloading and building, between
the stuff in `puffin_installer` and `puffin_resolver` (namely in
`crates/puffin-resolver/src/distribution`). I didn't attempt to clean
that up here -- it's already a problem, and it's related to the overall
problem we need to solve around unified caching and resource management.

Closes #243.
2023-11-06 08:22:36 -05:00
..
distribution-filename Validate package and extra name (#290) 2023-11-06 10:04:31 +00:00
gourgeist Make cache non-optional in most crates (#293) 2023-11-02 13:40:20 -04:00
install-wheel-rs Add PackageName::as_dist_info_name (#305) 2023-11-03 08:16:44 +00:00
pep440-rs Add support for pre-release versions (#216) 2023-10-29 14:31:55 -04:00
pep508-rs Validate package and extra name (#290) 2023-11-06 10:04:31 +00:00
platform-host Fix musl compilation (#234) 2023-10-30 18:10:17 +01:00
platform-tags Store all distributions rather than compatible wheels (#114) 2023-10-17 17:09:31 -04:00
puffin-build Add support for subdirectories in URL dependencies (#312) 2023-11-03 15:28:38 -04:00
puffin-cache Require URL dependencies to be declared upfront (#319) 2023-11-05 17:09:58 +00:00
puffin-cli Add source distribution support to pip-compile (#323) 2023-11-06 08:22:36 -05:00
puffin-client Wheel filename distribution package name (#278) 2023-11-02 11:15:27 +00:00
puffin-dev Add support for subdirectories in URL dependencies (#312) 2023-11-03 15:28:38 -04:00
puffin-dispatch Add source distribution support to pip-compile (#323) 2023-11-06 08:22:36 -05:00
puffin-distribution Add source distribution support to pip-compile (#323) 2023-11-06 08:22:36 -05:00
puffin-git Use separate representations for canonical repository vs. commit (#317) 2023-11-04 11:46:42 -04:00
puffin-installer Add source distribution support to pip-compile (#323) 2023-11-06 08:22:36 -05:00
puffin-interpreter Make cache non-optional in most crates (#293) 2023-11-02 13:40:20 -04:00
puffin-normalize Validate package and extra name (#290) 2023-11-06 10:04:31 +00:00
puffin-package Validate package and extra name (#290) 2023-11-06 10:04:31 +00:00
puffin-resolver Add source distribution support to pip-compile (#323) 2023-11-06 08:22:36 -05:00
puffin-traits Add support for subdirectories in URL dependencies (#312) 2023-11-03 15:28:38 -04:00
puffin-workspace Update pyproject-toml to 0.8.0 (#329) 2023-11-06 13:16:36 +00:00
README.md Add source distribution filename abstraction (#154) 2023-10-20 17:45:57 +02:00

Crates

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

Command-line interface for the Puffin package manager.

puffin-client

Client for interacting with PyPI-compatible HTTP APIs.

puffin-installer

Functionality for installing Python packages into a virtual environment.

puffin-interpreter

Functionality for detecting and leveraging the current Python interpreter.

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.

distribution-filename

Functionality for parsing wheel filenames as per PEP 427.