Go to file
Charlie Marsh 6c31631913
Fetch from `data-dist-info-metadata` when available (#37)
As specified in https://peps.python.org/pep-0658/#specification.
2023-10-07 13:05:29 +00:00
.cargo Add basic CI via GitHub Actions (#10) 2023-10-05 13:42:58 -04:00
.github/workflows Add basic CI via GitHub Actions (#10) 2023-10-05 13:42:58 -04:00
crates Fetch from `data-dist-info-metadata` when available (#37) 2023-10-07 13:05:29 +00:00
.gitignore Check in `Cargo.lock` (#29) 2023-10-06 20:59:17 +00:00
Cargo.lock Use local copy of `install-wheel-rs` (#34) 2023-10-07 01:43:55 +00:00
Cargo.toml Use local copy of `install-wheel-rs` (#34) 2023-10-07 01:43:55 +00:00
LICENSE-APACHE Add README and LICENSE files 2023-10-05 12:45:38 -04:00
LICENSE-MIT Add README and LICENSE files 2023-10-05 12:45:38 -04:00
README.md Migrate to `tokio` (#27) 2023-10-06 20:31:03 +00:00
requirements.in Move `puffin-installer` to its own crate (#23) 2023-10-06 19:31:21 +00:00
requirements.txt Update README 2023-10-06 01:03:07 -04:00
rust-toolchain.toml Add basic CI via GitHub Actions (#10) 2023-10-05 13:42:58 -04:00

README.md

puffin

An experimental Python package manager.

Usage

To resolve a requirements.in file:

cargo run -p puffin-cli -- compile requirements.in

To install from a resolved requirements.txt file:

cargo run -p puffin-cli -- sync requirements.txt

Benchmarks

To compare a warm run of puffin to pip:

hyperfine --runs 10 --warmup 3 \
    "./target/release/puffin-cli sync requirements.txt" \
    "pip install -r requirements.txt"

To compare a cold run of puffin to pip:

hyperfine --runs 10 --warmup 3 \
    "./target/release/puffin-cli sync requirements.txt --no-cache" \
    "pip install -r requirements.txt --ignore-installed --no-cache-dir"

License

Puffin is licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Puffin by you, as defined in the Apache-2.0 license, shall be dually licensed as above, without any additional terms or conditions.