fix: expose types to implement custom ResolverProvider (#1862)

<!--
Thank you for contributing to uv! To help us out with reviewing, please
consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title?
- Does this pull request include references to any relevant issues?
-->

## Summary

To integrate `uv` into `pixi` I need to specify a custom
`ResolverProvider` to be able to specify that some packages are already
installed by conda and should not be touched. However, some of the types
required to implement your own `ResolverProvider` were not accessible
through the public API. This PR basically adds them.

## Test Plan

I didnt add an explicit test for this.
This commit is contained in:
Bas Zalmstra 2024-02-22 15:59:03 +01:00 committed by GitHub
parent e97b094bc9
commit 4e011b305f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 19 additions and 7 deletions

View file

@ -4,12 +4,15 @@ pub use finder::{DistFinder, Reporter as FinderReporter};
pub use manifest::Manifest; pub use manifest::Manifest;
pub use options::{Options, OptionsBuilder}; pub use options::{Options, OptionsBuilder};
pub use prerelease_mode::PreReleaseMode; pub use prerelease_mode::PreReleaseMode;
pub use python_requirement::PythonRequirement;
pub use resolution::{AnnotationStyle, Diagnostic, DisplayResolutionGraph, ResolutionGraph}; pub use resolution::{AnnotationStyle, Diagnostic, DisplayResolutionGraph, ResolutionGraph};
pub use resolution_mode::ResolutionMode; pub use resolution_mode::ResolutionMode;
pub use resolver::{ pub use resolver::{
BuildId, DefaultResolverProvider, InMemoryIndex, Reporter as ResolverReporter, Resolver, BuildId, DefaultResolverProvider, InMemoryIndex, PackageVersionsResult,
ResolverProvider, Reporter as ResolverReporter, Resolver, ResolverProvider, VersionsResponse,
WheelMetadataResult,
}; };
pub use version_map::VersionMap;
mod candidate_selector; mod candidate_selector;
mod constraints; mod constraints;

View file

@ -47,9 +47,10 @@ use crate::pubgrub::{
use crate::python_requirement::PythonRequirement; use crate::python_requirement::PythonRequirement;
use crate::resolution::ResolutionGraph; use crate::resolution::ResolutionGraph;
pub use crate::resolver::index::InMemoryIndex; pub use crate::resolver::index::InMemoryIndex;
pub use crate::resolver::provider::DefaultResolverProvider; pub use crate::resolver::provider::{
pub use crate::resolver::provider::ResolverProvider; DefaultResolverProvider, PackageVersionsResult, ResolverProvider, VersionsResponse,
pub(crate) use crate::resolver::provider::VersionsResponse; WheelMetadataResult,
};
use crate::resolver::reporter::Facade; use crate::resolver::reporter::Facade;
pub use crate::resolver::reporter::{BuildId, Reporter}; pub use crate::resolver::reporter::{BuildId, Reporter};
use crate::yanks::AllowedYanks; use crate::yanks::AllowedYanks;

View file

@ -17,8 +17,8 @@ use uv_traits::{BuildContext, NoBinary};
use crate::python_requirement::PythonRequirement; use crate::python_requirement::PythonRequirement;
use crate::version_map::VersionMap; use crate::version_map::VersionMap;
type PackageVersionsResult = Result<VersionsResponse, uv_client::Error>; pub type PackageVersionsResult = Result<VersionsResponse, uv_client::Error>;
type WheelMetadataResult = Result<(Metadata21, Option<Url>), uv_distribution::Error>; pub type WheelMetadataResult = Result<(Metadata21, Option<Url>), uv_distribution::Error>;
/// The response when requesting versions for a package /// The response when requesting versions for a package
#[derive(Debug)] #[derive(Debug)]

View file

@ -181,6 +181,14 @@ impl From<FlatDistributions> for VersionMap {
} }
} }
impl From<BTreeMap<Version, PrioritizedDist>> for VersionMap {
fn from(value: BTreeMap<Version, PrioritizedDist>) -> Self {
Self {
inner: VersionMapInner::Eager(value),
}
}
}
/// A lazily initialized distribution. /// A lazily initialized distribution.
/// ///
/// This permits access to a handle that can be turned into a resolvable /// This permits access to a handle that can be turned into a resolvable