uv/README.md
2023-10-07 14:32:25 +00:00

2 KiB

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

Resolution

To compare a warm run of puffin to pip-compile:

hyperfine --runs 10 --warmup 3 --prepare "rm -f /tmp/tmp.txt" \
    "./target/release/puffin-cli compile requirements.txt" \
    "pip-compile requirements.txt -o /tmp/tmp.txt"

To compare a cold run of puffin to pip-compile:

hyperfine --runs 10 --warmup 3 --prepare "rm -f /tmp/tmp.txt" \
    "./target/release/puffin-cli compile requirements.txt --no-cache" \
    "pip-compile requirements.txt --rebuild --pip-args '--no-cache-dir' -o /tmp/tmp.txt"

Installation

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 --ignore-installed --no-deps"

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 --no-deps"

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.