Allow switching out the resolver's IO (#517)
I'm working off of @konstin's commit here to implement arbitrary unsat test cases for the resolver. The entirety of the resolver's io are two functions: Get the version map for a package (PEP 440 version -> distribution) and get the metadata for a distribution. A new trait `ResolverProvider` abstracts these two away and allows replacing the real network requests e.g. with stored responses (https://github.com/pradyunsg/pip-resolver-benchmarks/blob/main/scenarios/pyrax_198.json). --------- Co-authored-by: konsti <konstin@mailbox.org>
This commit is contained in:
@@ -20,7 +20,7 @@ use puffin_client::RegistryClientBuilder;
|
||||
use puffin_dispatch::BuildDispatch;
|
||||
use puffin_interpreter::Virtualenv;
|
||||
use puffin_normalize::ExtraName;
|
||||
use puffin_resolver::{Manifest, PreReleaseMode, ResolutionMode, ResolutionOptions};
|
||||
use puffin_resolver::{Manifest, PreReleaseMode, ResolutionMode, ResolutionOptions, Resolver};
|
||||
use pypi_types::IndexUrls;
|
||||
|
||||
use crate::commands::reporters::ResolverReporter;
|
||||
@@ -149,15 +149,8 @@ pub(crate) async fn pip_compile(
|
||||
.with_options(options);
|
||||
|
||||
// Resolve the dependencies.
|
||||
let resolver = puffin_resolver::Resolver::new(
|
||||
manifest,
|
||||
options,
|
||||
&markers,
|
||||
&tags,
|
||||
&client,
|
||||
&build_dispatch,
|
||||
)
|
||||
.with_reporter(ResolverReporter::from(printer));
|
||||
let resolver = Resolver::new(manifest, options, &markers, &tags, &client, &build_dispatch)
|
||||
.with_reporter(ResolverReporter::from(printer));
|
||||
let resolution = match resolver.resolve().await {
|
||||
Err(puffin_resolver::ResolveError::PubGrub(err)) => {
|
||||
#[allow(clippy::print_stderr)]
|
||||
|
||||
Reference in New Issue
Block a user