mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-07 13:25:00 +00:00
Add progress bar
This commit is contained in:
parent
8032d4606e
commit
7f497fa43f
5 changed files with 13 additions and 4 deletions
|
@ -24,3 +24,4 @@ pep440_rs = "0.3.12"
|
|||
tracing = "0.1.37"
|
||||
tracing-tree = "0.2.5"
|
||||
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
|
||||
indicatif = "0.17.7"
|
||||
|
|
|
@ -13,14 +13,16 @@ use puffin_client::{File, PypiClientBuilder, SimpleJson};
|
|||
use puffin_requirements::metadata::Metadata21;
|
||||
use puffin_requirements::package_name::PackageName;
|
||||
use puffin_requirements::wheel::WheelName;
|
||||
|
||||
use indicatif::{ProgressBar, ProgressStyle};
|
||||
use crate::commands::ExitStatus;
|
||||
|
||||
#[derive(Debug)]
|
||||
enum Request {
|
||||
Package(Requirement),
|
||||
Version(Requirement, File),
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
enum Response {
|
||||
Package(SimpleJson, Requirement),
|
||||
Version(Metadata21, Requirement),
|
||||
|
@ -66,7 +68,7 @@ pub(crate) async fn install(src: &Path) -> Result<ExitStatus> {
|
|||
),
|
||||
Request::Version(requirement, file) => Either::Right(
|
||||
proxy_client
|
||||
.file(file.clone())
|
||||
.file(file)
|
||||
.map_ok(move |metadata| Response::Version(metadata, requirement)),
|
||||
),
|
||||
})
|
||||
|
@ -84,6 +86,10 @@ pub(crate) async fn install(src: &Path) -> Result<ExitStatus> {
|
|||
// Resolve the requirements.
|
||||
let mut resolution: HashMap<PackageName, Version> = HashMap::with_capacity(requirements.len());
|
||||
|
||||
let spinner_style = ProgressStyle::with_template("{spinner} {wide_bar} [{pos}/{len}] {msg}").unwrap();
|
||||
let bar = ProgressBar::new(8);
|
||||
bar.set_style(spinner_style);
|
||||
|
||||
while let Some(chunk) = package_stream.next().await {
|
||||
for result in chunk {
|
||||
let result: Response = result?;
|
||||
|
@ -125,6 +131,7 @@ pub(crate) async fn install(src: &Path) -> Result<ExitStatus> {
|
|||
let normalized_name = PackageName::normalize(&requirement.name);
|
||||
in_flight.remove(&normalized_name);
|
||||
resolution.insert(normalized_name, metadata.version);
|
||||
bar.inc(1);
|
||||
|
||||
// Enqueue its dependencies.
|
||||
for dependency in metadata.requires_dist {
|
||||
|
|
|
@ -17,3 +17,4 @@ serde_json = { version = "1.0.107" }
|
|||
thiserror = { version = "1.0.49" }
|
||||
url = { version = "2.4.1" }
|
||||
tracing = "0.1.37"
|
||||
indicatif = "0.17.7"
|
||||
|
|
|
@ -35,7 +35,7 @@ impl PypiClient {
|
|||
// Fetch from the registry.
|
||||
let text = self.simple_impl(&package_name, &url).await?;
|
||||
let payload = serde_json::from_str(&text)
|
||||
.map_err(move |e| PypiClientError::from_json_err(e, "".to_string()));
|
||||
.map_err(move |e| PypiClientError::from_json_err(e, String::new()));
|
||||
|
||||
trace!("fetched metadata for {} in {:?}", url, start.elapsed());
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
flask
|
||||
black
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue