Use distributions for Reporter signatures (#266)

This commit is contained in:
Charlie Marsh 2023-10-31 20:19:13 -07:00 committed by GitHub
parent bee1b0f5ad
commit 079b685c8c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 34 additions and 30 deletions

View file

@ -1,8 +1,9 @@
use indicatif::{ProgressBar, ProgressStyle};
use pep440_rs::Version;
use std::time::Duration;
use pep440_rs::Version;
use puffin_distribution::RemoteDistribution;
use puffin_distribution::{CachedDistribution, RemoteDistribution};
use puffin_package::dist_info_name::DistInfoName;
use puffin_package::package_name::PackageName;
use crate::printer::Printer;
@ -32,9 +33,8 @@ impl WheelFinderReporter {
}
impl puffin_resolver::WheelFinderReporter for WheelFinderReporter {
fn on_progress(&self, package: &RemoteDistribution) {
self.progress
.set_message(format!("{}=={}", package.name(), package.version()));
fn on_progress(&self, wheel: &RemoteDistribution) {
self.progress.set_message(format!("{wheel}"));
self.progress.inc(1);
}
@ -68,8 +68,8 @@ impl UnzipReporter {
}
impl puffin_installer::UnzipReporter for UnzipReporter {
fn on_unzip_progress(&self, name: &PackageName, version: &Version) {
self.progress.set_message(format!("{name}=={version}"));
fn on_unzip_progress(&self, wheel: &RemoteDistribution) {
self.progress.set_message(format!("{wheel}"));
self.progress.inc(1);
}
@ -103,8 +103,8 @@ impl DownloadReporter {
}
impl puffin_installer::DownloadReporter for DownloadReporter {
fn on_download_progress(&self, name: &PackageName, version: &Version) {
self.progress.set_message(format!("{name}=={version}"));
fn on_download_progress(&self, wheel: &RemoteDistribution) {
self.progress.set_message(format!("{wheel}"));
self.progress.inc(1);
}
@ -138,8 +138,8 @@ impl InstallReporter {
}
impl puffin_installer::InstallReporter for InstallReporter {
fn on_install_progress(&self, name: &PackageName, version: &Version) {
self.progress.set_message(format!("{name}=={version}"));
fn on_install_progress(&self, wheel: &CachedDistribution) {
self.progress.set_message(format!("{wheel}"));
self.progress.inc(1);
}
@ -168,8 +168,13 @@ impl From<Printer> for ResolverReporter {
}
impl puffin_resolver::ResolverReporter for ResolverReporter {
fn on_progress(&self, name: &PackageName, version: &Version) {
self.progress.set_message(format!("{name}=={version}"));
fn on_progress(&self, name: &PackageName, extra: Option<&DistInfoName>, version: &Version) {
if let Some(extra) = extra {
self.progress
.set_message(format!("{name}[{extra}]=={version}"));
} else {
self.progress.set_message(format!("{name}=={version}"));
}
}
fn on_complete(&self) {

View file

@ -8,10 +8,8 @@ use tokio_util::compat::FuturesAsyncReadCompatExt;
use tracing::debug;
use url::Url;
use pep440_rs::Version;
use puffin_client::RegistryClient;
use puffin_distribution::RemoteDistribution;
use puffin_package::package_name::PackageName;
pub struct Downloader<'a> {
client: &'a RegistryClient,
@ -64,7 +62,7 @@ impl<'a> Downloader<'a> {
let result = result?;
if let Some(reporter) = self.reporter.as_ref() {
reporter.on_download_progress(result.remote.name(), result.remote.version());
reporter.on_download_progress(&result.remote);
}
downloads.push(result);
@ -127,7 +125,7 @@ async fn fetch_wheel(
pub trait Reporter: Send + Sync {
/// Callback to invoke when a wheel is downloaded.
fn on_download_progress(&self, name: &PackageName, version: &Version);
fn on_download_progress(&self, wheel: &RemoteDistribution);
/// Callback to invoke when the operation is complete.
fn on_download_complete(&self);

View file

@ -1,10 +1,8 @@
use anyhow::{Context, Error, Result};
use rayon::iter::{IntoParallelRefIterator, ParallelIterator};
use pep440_rs::Version;
use puffin_distribution::CachedDistribution;
use puffin_interpreter::Virtualenv;
use puffin_package::package_name::PackageName;
pub struct Installer<'a> {
venv: &'a Virtualenv,
@ -52,7 +50,7 @@ impl<'a> Installer<'a> {
})?;
if let Some(reporter) = self.reporter.as_ref() {
reporter.on_install_progress(wheel.name(), wheel.version());
reporter.on_install_progress(wheel);
}
Ok::<(), Error>(())
@ -63,7 +61,7 @@ impl<'a> Installer<'a> {
pub trait Reporter: Send + Sync {
/// Callback to invoke when a dependency is resolved.
fn on_install_progress(&self, name: &PackageName, version: &Version);
fn on_install_progress(&self, wheel: &CachedDistribution);
/// Callback to invoke when the resolution is complete.
fn on_install_complete(&self);

View file

@ -7,9 +7,7 @@ use rayon::iter::ParallelIterator;
use tracing::debug;
use zip::ZipArchive;
use pep440_rs::Version;
use puffin_distribution::CachedDistribution;
use puffin_package::package_name::PackageName;
use puffin_distribution::{CachedDistribution, RemoteDistribution};
use crate::cache::WheelCache;
use crate::downloader::InMemoryDistribution;
@ -81,7 +79,7 @@ impl Unzipper {
));
if let Some(reporter) = self.reporter.as_ref() {
reporter.on_unzip_progress(remote.name(), remote.version());
reporter.on_unzip_progress(&remote);
}
}
@ -144,7 +142,7 @@ fn unzip_wheel(wheel: InMemoryDistribution, target: &Path) -> Result<()> {
pub trait Reporter: Send + Sync {
/// Callback to invoke when a wheel is unzipped.
fn on_unzip_progress(&self, name: &PackageName, version: &Version);
fn on_unzip_progress(&self, wheel: &RemoteDistribution);
/// Callback to invoke when the operation is complete.
fn on_unzip_complete(&self);

View file

@ -613,8 +613,8 @@ impl<'a, Context: BuildContext + Sync> Resolver<'a, Context> {
fn on_progress(&self, package: &PubGrubPackage, version: &PubGrubVersion) {
if let Some(reporter) = self.reporter.as_ref() {
if let PubGrubPackage::Package(package_name, _) = package {
reporter.on_progress(package_name, version.into());
if let PubGrubPackage::Package(package_name, extra) = package {
reporter.on_progress(package_name, extra.as_ref(), version.into());
}
}
}
@ -628,7 +628,12 @@ impl<'a, Context: BuildContext + Sync> Resolver<'a, Context> {
pub trait Reporter: Send + Sync {
/// Callback to invoke when a dependency is resolved.
fn on_progress(&self, name: &PackageName, version: &pep440_rs::Version);
fn on_progress(
&self,
name: &PackageName,
extra: Option<&DistInfoName>,
version: &pep440_rs::Version,
);
/// Callback to invoke when the resolution is complete.
fn on_complete(&self);

View file

@ -162,7 +162,7 @@ enum Response {
pub trait Reporter: Send + Sync {
/// Callback to invoke when a package is resolved to a wheel.
fn on_progress(&self, package: &RemoteDistribution);
fn on_progress(&self, wheel: &RemoteDistribution);
/// Callback to invoke when the resolution is complete.
fn on_complete(&self);