uv/crates
Charlie Marsh 471a1d657d
Migrate resolver proof-of-concept to PubGrub (#97)
## Summary

This PR enables the proof-of-concept resolver to backtrack by way of
using the `pubgrub-rs` crate.

Rather than using PubGrub as a _framework_ (implementing the
`DependencyProvider` trait, letting PubGrub call us), I've instead
copied over PubGrub's primary solver hook (which is only ~100 lines or
so) and modified it for our purposes (e.g., made it async).

There's a lot to improve here, but it's a start that will let us
understand PubGrub's appropriateness for this problem space. A few
observations:

- In simple cases, the resolver is slower than our current (naive)
resolver. I think it's just that the pipelining isn't as efficient as in
the naive case, where we can just stream package and version fetches
concurrently without any bottlenecks.
- A lot of the code here relates to bridging PubGrub with our own
abstractions -- so we need a `PubGrubPackage`, a `PubGrubVersion`, etc.
2023-10-15 22:05:44 -04:00
..
gourgeist Add puffin venv command to create virtual environments (#83) 2023-10-10 13:46:25 -04:00
install-wheel-rs Parallelize wheel installations with Rayon (#84) 2023-10-10 23:46:30 -04:00
pep440-rs Enable release builds via cargo-dist (#79) 2023-10-09 20:48:55 +00:00
pep508-rs Migrate resolver proof-of-concept to PubGrub (#97) 2023-10-15 22:05:44 -04:00
platform-host Migrate resolver proof-of-concept to PubGrub (#97) 2023-10-15 22:05:44 -04:00
platform-tags Add a basic test for the resolver (#86) 2023-10-11 03:30:53 +00:00
puffin-cli Migrate resolver proof-of-concept to PubGrub (#97) 2023-10-15 22:05:44 -04:00
puffin-client Migrate resolver proof-of-concept to PubGrub (#97) 2023-10-15 22:05:44 -04:00
puffin-installer Fix tempdir rename (#94) 2023-10-12 18:47:38 +00:00
puffin-interpreter Rework puffin sync output to summarize (#81) 2023-10-10 03:29:09 +00:00
puffin-package Migrate resolver proof-of-concept to PubGrub (#97) 2023-10-15 22:05:44 -04:00
puffin-resolver Migrate resolver proof-of-concept to PubGrub (#97) 2023-10-15 22:05:44 -04:00
wheel-filename Enable release builds via cargo-dist (#79) 2023-10-09 20:48:55 +00:00
README.md Use local copy of install-wheel-rs (#34) 2023-10-07 01:43:55 +00: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.

wheel-filename

Functionality for parsing wheel filenames as per PEP 427.