diff --git a/README.md b/README.md index 4a27fa5e6..ca1ce764a 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,36 @@ An experimental Python package manager. ## Usage +To resolve a `requirements.in` file: + +```shell +cargo run -p puffin-cli -- compile requirements.in +``` + +To install from a resolved `requirements.txt` file: + ```shell cargo run -p puffin-cli -- install requirements.txt ``` +## Benchmarks + +To compare a warm run of `puffin` to `pip`: + +```shell +hyperfine --runs 10 --warmup 3 \ + "./target/release/puffin-cli install requirements.txt" \ + "pip install -r requirements.txt" +``` + +To compare a cold run of `puffin` to `pip`: + +```shell +hyperfine --runs 10 --warmup 3 \ + "./target/release/puffin-cli install requirements.txt --no-cache" \ + "pip install -r requirements.txt --ignore-installed --no-cache-dir" +``` + ## License Puffin is licensed under either of diff --git a/crates/puffin-cli/src/commands/compile.rs b/crates/puffin-cli/src/commands/compile.rs index 87c9b8097..29f19b10d 100644 --- a/crates/puffin-cli/src/commands/compile.rs +++ b/crates/puffin-cli/src/commands/compile.rs @@ -12,6 +12,7 @@ use puffin_resolve::resolve; use crate::commands::ExitStatus; +/// Resolve a set of requirements into a set of pinned versions. pub(crate) async fn compile(src: &Path, cache: Option<&Path>) -> Result { // Read the `requirements.txt` from disk. let requirements_txt = std::fs::read_to_string(src)?; diff --git a/crates/puffin-cli/src/commands/install.rs b/crates/puffin-cli/src/commands/install.rs index c5e0a4a8a..85b7035c6 100644 --- a/crates/puffin-cli/src/commands/install.rs +++ b/crates/puffin-cli/src/commands/install.rs @@ -15,6 +15,7 @@ use puffin_resolve::resolve; use crate::commands::ExitStatus; +/// Install a set of requirements into the current Python environment. pub(crate) async fn install(src: &Path, cache: Option<&Path>) -> Result { // Read the `requirements.txt` from disk. let requirements_txt = std::fs::read_to_string(src)?; @@ -46,6 +47,7 @@ pub(crate) async fn install(src: &Path, cache: Option<&Path>) -> Result