From cbfd39093e401e6314f037050b1964319fa7ee8d Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Wed, 13 Dec 2023 01:21:47 -0500 Subject: [PATCH] Clean up some function signatures (#633) --- crates/puffin-cli/src/commands/freeze.rs | 2 +- crates/puffin-cli/src/commands/pip_compile.rs | 4 ++-- crates/puffin-cli/src/commands/pip_install.rs | 10 +++++----- crates/puffin-cli/src/commands/pip_sync.rs | 9 ++------- crates/puffin-cli/src/commands/pip_uninstall.rs | 11 +++-------- crates/puffin-cli/src/requirements.rs | 13 +++++++++---- crates/puffin-installer/src/plan.rs | 2 +- crates/puffin-installer/src/site_packages.rs | 2 +- crates/puffin-resolver/src/pubgrub/dependencies.rs | 8 ++++---- crates/puffin-resolver/src/resolver.rs | 4 ++-- 10 files changed, 30 insertions(+), 35 deletions(-) diff --git a/crates/puffin-cli/src/commands/freeze.rs b/crates/puffin-cli/src/commands/freeze.rs index f6d490f55..cac129341 100644 --- a/crates/puffin-cli/src/commands/freeze.rs +++ b/crates/puffin-cli/src/commands/freeze.rs @@ -20,7 +20,7 @@ pub(crate) fn freeze(cache: &Cache, _printer: Printer) -> Result { ); // Build the installed index. - let site_packages = SitePackages::try_from_executable(&python)?; + let site_packages = SitePackages::from_executable(&python)?; for dist in site_packages.distributions() { #[allow(clippy::print_stdout)] { diff --git a/crates/puffin-cli/src/commands/pip_compile.rs b/crates/puffin-cli/src/commands/pip_compile.rs index 00756cfca..3ebb7c166 100644 --- a/crates/puffin-cli/src/commands/pip_compile.rs +++ b/crates/puffin-cli/src/commands/pip_compile.rs @@ -77,7 +77,7 @@ pub(crate) async fn pip_compile( requirements, constraints, extras: used_extras, - } = RequirementsSpecification::try_from_sources(requirements, constraints, &extras)?; + } = RequirementsSpecification::from_sources(requirements, constraints, &extras)?; // Check that all provided extras are used if let ExtrasSpecification::Some(extras) = extras { @@ -102,7 +102,7 @@ pub(crate) async fn pip_compile( .map(Path::to_path_buf) .map(RequirementsSource::from) .as_ref() - .map(|source| RequirementsSpecification::try_from_source(source, &extras)) + .map(|source| RequirementsSpecification::from_source(source, &extras)) .transpose()? .map(|spec| spec.requirements) .unwrap_or_default(); diff --git a/crates/puffin-cli/src/commands/pip_install.rs b/crates/puffin-cli/src/commands/pip_install.rs index 0c24e928c..c8af0a6de 100644 --- a/crates/puffin-cli/src/commands/pip_install.rs +++ b/crates/puffin-cli/src/commands/pip_install.rs @@ -137,7 +137,7 @@ fn specification( } // Read all requirements from the provided sources. - let spec = RequirementsSpecification::try_from_sources(requirements, constraints, extras)?; + let spec = RequirementsSpecification::from_sources(requirements, constraints, extras)?; // Check that all provided extras are used if let ExtrasSpecification::Some(extras) = extras { @@ -161,7 +161,7 @@ fn specification( /// Returns `true` if the requirements are already satisfied. fn satisfied(spec: &RequirementsSpecification, venv: &Virtualenv) -> Result { - SitePackages::try_from_executable(venv)?.satisfies(&spec.requirements, &spec.constraints) + SitePackages::from_executable(venv)?.satisfies(&spec.requirements, &spec.constraints) } /// Resolve a set of requirements, similar to running `pip-compile`. @@ -191,10 +191,10 @@ async fn resolve( // Respect preferences from the existing environments. let preferences: Vec = match reinstall { Reinstall::All => vec![], - Reinstall::None => SitePackages::try_from_executable(venv)? + Reinstall::None => SitePackages::from_executable(venv)? .requirements() .collect(), - Reinstall::Packages(packages) => SitePackages::try_from_executable(venv)? + Reinstall::Packages(packages) => SitePackages::from_executable(venv)? .requirements() .filter(|requirement| !packages.contains(&requirement.name)) .collect(), @@ -452,7 +452,7 @@ async fn install( /// Validate the installed packages in the virtual environment. fn validate(resolution: &Resolution, venv: &Virtualenv, mut printer: Printer) -> Result<()> { - let site_packages = SitePackages::try_from_executable(venv)?; + let site_packages = SitePackages::from_executable(venv)?; let diagnostics = site_packages.diagnostics()?; for diagnostic in diagnostics { // Only surface diagnostics that are "relevant" to the current resolution. diff --git a/crates/puffin-cli/src/commands/pip_sync.rs b/crates/puffin-cli/src/commands/pip_sync.rs index 428ec8e88..ee7ab194a 100644 --- a/crates/puffin-cli/src/commands/pip_sync.rs +++ b/crates/puffin-cli/src/commands/pip_sync.rs @@ -22,7 +22,7 @@ use pypi_types::{IndexUrls, Yanked}; use crate::commands::reporters::{DownloadReporter, FinderReporter, InstallReporter}; use crate::commands::{elapsed, ChangeEvent, ChangeEventKind, ExitStatus}; use crate::printer::Printer; -use crate::requirements::{ExtrasSpecification, RequirementsSource, RequirementsSpecification}; +use crate::requirements::{RequirementsSource, RequirementsSpecification}; /// Install a set of locked requirements into the current Python environment. pub(crate) async fn pip_sync( @@ -35,12 +35,7 @@ pub(crate) async fn pip_sync( mut printer: Printer, ) -> Result { // Read all requirements from the provided sources. - let RequirementsSpecification { - project: _, - requirements, - constraints: _, - extras: _, - } = RequirementsSpecification::try_from_sources(sources, &[], &ExtrasSpecification::None)?; + let requirements = RequirementsSpecification::requirements(sources)?; if requirements.is_empty() { writeln!(printer, "No requirements found")?; diff --git a/crates/puffin-cli/src/commands/pip_uninstall.rs b/crates/puffin-cli/src/commands/pip_uninstall.rs index 22bb8a8e3..06d26db35 100644 --- a/crates/puffin-cli/src/commands/pip_uninstall.rs +++ b/crates/puffin-cli/src/commands/pip_uninstall.rs @@ -11,7 +11,7 @@ use puffin_interpreter::Virtualenv; use crate::commands::{elapsed, ExitStatus}; use crate::printer::Printer; -use crate::requirements::{ExtrasSpecification, RequirementsSource, RequirementsSpecification}; +use crate::requirements::{RequirementsSource, RequirementsSpecification}; /// Uninstall packages from the current environment. pub(crate) async fn pip_uninstall( @@ -22,12 +22,7 @@ pub(crate) async fn pip_uninstall( let start = std::time::Instant::now(); // Read all requirements from the provided sources. - let RequirementsSpecification { - project: _, - requirements, - constraints: _, - extras: _, - } = RequirementsSpecification::try_from_sources(sources, &[], &ExtrasSpecification::None)?; + let requirements = RequirementsSpecification::requirements(sources)?; // Detect the current Python interpreter. let platform = Platform::current()?; @@ -38,7 +33,7 @@ pub(crate) async fn pip_uninstall( ); // Index the current `site-packages` directory. - let site_packages = puffin_installer::SitePackages::try_from_executable(&venv)?; + let site_packages = puffin_installer::SitePackages::from_executable(&venv)?; // Sort and deduplicate the requirements. let packages = { diff --git a/crates/puffin-cli/src/requirements.rs b/crates/puffin-cli/src/requirements.rs index e04879587..9465c2e13 100644 --- a/crates/puffin-cli/src/requirements.rs +++ b/crates/puffin-cli/src/requirements.rs @@ -70,7 +70,7 @@ pub(crate) struct RequirementsSpecification { impl RequirementsSpecification { /// Read the requirements and constraints from a source. - pub(crate) fn try_from_source( + pub(crate) fn from_source( source: &RequirementsSource, extras: &ExtrasSpecification, ) -> Result { @@ -138,7 +138,7 @@ impl RequirementsSpecification { } /// Read the combined requirements and constraints from a set of sources. - pub(crate) fn try_from_sources( + pub(crate) fn from_sources( requirements: &[RequirementsSource], constraints: &[RequirementsSource], extras: &ExtrasSpecification, @@ -149,7 +149,7 @@ impl RequirementsSpecification { // A `requirements.txt` can contain a `-c constraints.txt` directive within it, so reading // a requirements file can also add constraints. for source in requirements { - let source = Self::try_from_source(source, extras)?; + let source = Self::from_source(source, extras)?; spec.requirements.extend(source.requirements); spec.constraints.extend(source.constraints); spec.extras.extend(source.extras); @@ -162,11 +162,16 @@ impl RequirementsSpecification { // Read all constraints, treating both requirements _and_ constraints as constraints. for source in constraints { - let source = Self::try_from_source(source, extras)?; + let source = Self::from_source(source, extras)?; spec.constraints.extend(source.requirements); spec.constraints.extend(source.constraints); } Ok(spec) } + + /// Read the requirements from a set of sources. + pub(crate) fn requirements(requirements: &[RequirementsSource]) -> Result> { + Ok(Self::from_sources(requirements, &[], &ExtrasSpecification::None)?.requirements) + } } diff --git a/crates/puffin-installer/src/plan.rs b/crates/puffin-installer/src/plan.rs index a3db22f71..c85e4e663 100644 --- a/crates/puffin-installer/src/plan.rs +++ b/crates/puffin-installer/src/plan.rs @@ -51,7 +51,7 @@ impl InstallPlan { ) -> Result { // Index all the already-installed packages in site-packages. let mut site_packages = - SitePackages::try_from_executable(venv).context("Failed to list installed packages")?; + SitePackages::from_executable(venv).context("Failed to list installed packages")?; // Index all the already-downloaded wheels in the cache. let mut registry_index = RegistryWheelIndex::new(cache, tags, index_urls); diff --git a/crates/puffin-installer/src/site_packages.rs b/crates/puffin-installer/src/site_packages.rs index d1c730522..f3ce1905c 100644 --- a/crates/puffin-installer/src/site_packages.rs +++ b/crates/puffin-installer/src/site_packages.rs @@ -19,7 +19,7 @@ pub struct SitePackages<'a> { impl<'a> SitePackages<'a> { /// Build an index of installed packages from the given Python executable. - pub fn try_from_executable(venv: &'a Virtualenv) -> Result> { + pub fn from_executable(venv: &'a Virtualenv) -> Result> { let mut index = BTreeMap::new(); for entry in fs::read_dir(venv.site_packages())? { diff --git a/crates/puffin-resolver/src/pubgrub/dependencies.rs b/crates/puffin-resolver/src/pubgrub/dependencies.rs index 301dc8372..e56e98ba1 100644 --- a/crates/puffin-resolver/src/pubgrub/dependencies.rs +++ b/crates/puffin-resolver/src/pubgrub/dependencies.rs @@ -16,12 +16,12 @@ pub struct PubGrubDependencies(DependencyConstraints( + pub(crate) fn from_requirements( requirements: &[Requirement], constraints: &[Requirement], - extra: Option<&'a ExtraName>, - source: Option<&'a PackageName>, - env: &'a MarkerEnvironment, + extra: Option<&ExtraName>, + source: Option<&PackageName>, + env: &MarkerEnvironment, ) -> Result { let mut dependencies = DependencyConstraints::>::default(); diff --git a/crates/puffin-resolver/src/resolver.rs b/crates/puffin-resolver/src/resolver.rs index 5cb68404a..b1d99b4e0 100644 --- a/crates/puffin-resolver/src/resolver.rs +++ b/crates/puffin-resolver/src/resolver.rs @@ -583,7 +583,7 @@ impl<'a, Provider: ResolverProvider> Resolver<'a, Provider> { match package { PubGrubPackage::Root(_) => { // Add the root requirements. - let constraints = PubGrubDependencies::try_from_requirements( + let constraints = PubGrubDependencies::from_requirements( &self.requirements, &self.constraints, None, @@ -618,7 +618,7 @@ impl<'a, Provider: ResolverProvider> Resolver<'a, Provider> { let entry = self.index.distributions.wait(&dist.package_id()).await; let metadata = entry.value(); - let mut constraints = PubGrubDependencies::try_from_requirements( + let mut constraints = PubGrubDependencies::from_requirements( &metadata.requires_dist, &self.constraints, extra.as_ref(),