mirror of
https://github.com/astral-sh/uv.git
synced 2025-11-20 03:49:54 +00:00
Change reporter length to Option (#16448)
## Summary Changes the `length` parameter to `PythonDownloadReporter::new` to an `Option<u64>` to resolve the issue of setting a single-item reporter length. Resolves: #15404 ## Test Plan - build test - ran test suite
This commit is contained in:
parent
659b4873b6
commit
fe5d944afa
3 changed files with 14 additions and 20 deletions
|
|
@ -51,14 +51,14 @@ pub(crate) fn cache_clean(
|
|||
)?;
|
||||
|
||||
let num_paths = walkdir::WalkDir::new(cache.root()).into_iter().count();
|
||||
let reporter = CleaningDirectoryReporter::new(printer, num_paths);
|
||||
let reporter = CleaningDirectoryReporter::new(printer, Some(num_paths));
|
||||
|
||||
let root = cache.root().to_path_buf();
|
||||
cache
|
||||
.clear(Box::new(reporter))
|
||||
.with_context(|| format!("Failed to clear cache at: {}", root.user_display()))?
|
||||
} else {
|
||||
let reporter = CleaningPackageReporter::new(printer, packages.len());
|
||||
let reporter = CleaningPackageReporter::new(printer, Some(packages.len()));
|
||||
let mut summary = Removal::default();
|
||||
|
||||
for package in packages {
|
||||
|
|
|
|||
|
|
@ -407,7 +407,7 @@ pub(crate) async fn install(
|
|||
// default retries to avoid the middleware from performing uncontrolled retries.
|
||||
let client = client_builder.retries(0).build();
|
||||
|
||||
let reporter = PythonDownloadReporter::new(printer, downloads.len() as u64);
|
||||
let reporter = PythonDownloadReporter::new(printer, Some(downloads.len() as u64));
|
||||
let mut tasks = FuturesUnordered::new();
|
||||
|
||||
for download in &downloads {
|
||||
|
|
|
|||
|
|
@ -637,16 +637,13 @@ pub(crate) struct PythonDownloadReporter {
|
|||
impl PythonDownloadReporter {
|
||||
/// Initialize a [`PythonDownloadReporter`] for a single Python download.
|
||||
pub(crate) fn single(printer: Printer) -> Self {
|
||||
Self::new(printer, 1)
|
||||
Self::new(printer, None)
|
||||
}
|
||||
|
||||
/// Initialize a [`PythonDownloadReporter`] for multiple Python downloads.
|
||||
pub(crate) fn new(printer: Printer, length: u64) -> Self {
|
||||
pub(crate) fn new(printer: Printer, length: Option<u64>) -> Self {
|
||||
let multi_progress = MultiProgress::with_draw_target(printer.target());
|
||||
let root = multi_progress.add(ProgressBar::with_draw_target(
|
||||
Some(length),
|
||||
printer.target(),
|
||||
));
|
||||
let root = multi_progress.add(ProgressBar::with_draw_target(length, printer.target()));
|
||||
let reporter = ProgressReporter::new(root, multi_progress, printer);
|
||||
Self { reporter }
|
||||
}
|
||||
|
|
@ -680,16 +677,13 @@ pub(crate) struct PublishReporter {
|
|||
impl PublishReporter {
|
||||
/// Initialize a [`PublishReporter`] for a single upload.
|
||||
pub(crate) fn single(printer: Printer) -> Self {
|
||||
Self::new(printer, 1)
|
||||
Self::new(printer, None)
|
||||
}
|
||||
|
||||
/// Initialize a [`PublishReporter`] for multiple uploads.
|
||||
pub(crate) fn new(printer: Printer, length: u64) -> Self {
|
||||
pub(crate) fn new(printer: Printer, length: Option<u64>) -> Self {
|
||||
let multi_progress = MultiProgress::with_draw_target(printer.target());
|
||||
let root = multi_progress.add(ProgressBar::with_draw_target(
|
||||
Some(length),
|
||||
printer.target(),
|
||||
));
|
||||
let root = multi_progress.add(ProgressBar::with_draw_target(length, printer.target()));
|
||||
let reporter = ProgressReporter::new(root, multi_progress, printer);
|
||||
Self { reporter }
|
||||
}
|
||||
|
|
@ -758,8 +752,8 @@ pub(crate) struct CleaningDirectoryReporter {
|
|||
|
||||
impl CleaningDirectoryReporter {
|
||||
/// Initialize a [`CleaningDirectoryReporter`] for cleaning the cache directory.
|
||||
pub(crate) fn new(printer: Printer, max: usize) -> Self {
|
||||
let bar = ProgressBar::with_draw_target(Some(max as u64), printer.target());
|
||||
pub(crate) fn new(printer: Printer, max: Option<usize>) -> Self {
|
||||
let bar = ProgressBar::with_draw_target(max.map(|m| m as u64), printer.target());
|
||||
bar.set_style(
|
||||
ProgressStyle::with_template("{prefix} [{bar:20}] {percent}%")
|
||||
.unwrap()
|
||||
|
|
@ -787,8 +781,8 @@ pub(crate) struct CleaningPackageReporter {
|
|||
|
||||
impl CleaningPackageReporter {
|
||||
/// Initialize a [`CleaningPackageReporter`] for cleaning packages from the cache.
|
||||
pub(crate) fn new(printer: Printer, max: usize) -> Self {
|
||||
let bar = ProgressBar::with_draw_target(Some(max as u64), printer.target());
|
||||
pub(crate) fn new(printer: Printer, max: Option<usize>) -> Self {
|
||||
let bar = ProgressBar::with_draw_target(max.map(|m| m as u64), printer.target());
|
||||
bar.set_style(
|
||||
ProgressStyle::with_template("{prefix} [{bar:20}] {pos}/{len}{msg}")
|
||||
.unwrap()
|
||||
|
|
@ -841,7 +835,7 @@ impl BinaryDownloadReporter {
|
|||
/// Initialize a [`BinaryDownloadReporter`] for a single binary download.
|
||||
pub(crate) fn single(printer: Printer) -> Self {
|
||||
let multi_progress = MultiProgress::with_draw_target(printer.target());
|
||||
let root = multi_progress.add(ProgressBar::with_draw_target(Some(1), printer.target()));
|
||||
let root = multi_progress.add(ProgressBar::with_draw_target(None, printer.target()));
|
||||
let reporter = ProgressReporter::new(root, multi_progress, printer);
|
||||
Self { reporter }
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue