pub struct PyPIProvider { /* private fields */ }Expand description
PyPI-based dependency provider for pubgrub
Implementations§
Source§impl PyPIProvider
impl PyPIProvider
Sourcepub fn new(
metadata: HashMap<String, PackageMetadata>,
root_deps: Vec<(Package, Range<Version>)>,
) -> Self
pub fn new( metadata: HashMap<String, PackageMetadata>, root_deps: Vec<(Package, Range<Version>)>, ) -> Self
Create a new provider with pre-fetched metadata
Sourcepub async fn build(
client: &PyPIClient,
requirements: &[Requirement],
) -> Result<Self, Error>
pub async fn build( client: &PyPIClient, requirements: &[Requirement], ) -> Result<Self, Error>
Build the provider by pre-fetching all required metadata
Sourcepub fn add_metadata(&mut self, name: String, metadata: PackageMetadata)
pub fn add_metadata(&mut self, name: String, metadata: PackageMetadata)
Add more metadata to the provider (for transitive dependencies)
Sourcepub fn missing_packages(&self) -> Vec<String>
pub fn missing_packages(&self) -> Vec<String>
Get all packages that need metadata fetched
Sourcepub fn discover_all_packages(&mut self) -> Vec<String>
pub fn discover_all_packages(&mut self) -> Vec<String>
Pre-crawl the dependency graph to find all packages we need This must be called before running pubgrub to ensure all metadata is available
Trait Implementations§
Source§impl DependencyProvider<Package, Version> for PyPIProvider
impl DependencyProvider<Package, Version> for PyPIProvider
Source§fn choose_package_version<T: Borrow<Package>, U: Borrow<Range<Version>>>(
&self,
potential_packages: impl Iterator<Item = (T, U)>,
) -> Result<(T, Option<Version>), Box<dyn StdError>>
fn choose_package_version<T: Borrow<Package>, U: Borrow<Range<Version>>>( &self, potential_packages: impl Iterator<Item = (T, U)>, ) -> Result<(T, Option<Version>), Box<dyn StdError>>
Decision making
is the process of choosing the next package
and version that will be appended to the partial solution.
Every time such a decision must be made,
potential valid packages and version ranges are preselected by the resolver,
and the dependency provider must choose. Read more
Source§fn get_dependencies(
&self,
package: &Package,
version: &Version,
) -> Result<Dependencies<Package, Version>, Box<dyn StdError>>
fn get_dependencies( &self, package: &Package, version: &Version, ) -> Result<Dependencies<Package, Version>, Box<dyn StdError>>
Retrieves the package dependencies.
Return Dependencies::Unknown if its dependencies are unknown.
Source§fn should_cancel(&self) -> Result<(), Box<dyn Error>>
fn should_cancel(&self) -> Result<(), Box<dyn Error>>
This is called fairly regularly during the resolution,
if it returns an Err then resolution will be terminated.
This is helpful if you want to add some form of early termination like a timeout,
or you want to add some form of user feedback if things are taking a while.
If not provided the resolver will run as long as needed.
Auto Trait Implementations§
impl !Freeze for PyPIProvider
impl !RefUnwindSafe for PyPIProvider
impl Send for PyPIProvider
impl !Sync for PyPIProvider
impl Unpin for PyPIProvider
impl UnwindSafe for PyPIProvider
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more