Update pubgrub (#5649)

We improved the API structure in pubgrub, and also update to generally
keep up with upstream.
This commit is contained in:
konsti 2024-07-31 14:54:11 +02:00 committed by GitHub
parent 2574f5b3fd
commit 981661c4af
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 19 additions and 25 deletions

2
Cargo.lock generated
View file

@ -2706,7 +2706,7 @@ dependencies = [
[[package]] [[package]]
name = "pubgrub" name = "pubgrub"
version = "0.2.1" version = "0.2.1"
source = "git+https://github.com/astral-sh/pubgrub?rev=3f0ba760951ab0deeac874b98bb18fc90103fcf7#3f0ba760951ab0deeac874b98bb18fc90103fcf7" source = "git+https://github.com/astral-sh/pubgrub?rev=2fac39371a47e7cb821e510aaa4de25405413d29#2fac39371a47e7cb821e510aaa4de25405413d29"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"log", "log",

View file

@ -109,7 +109,7 @@ pathdiff = { version = "0.2.1" }
petgraph = { version = "0.6.4" } petgraph = { version = "0.6.4" }
platform-info = { version = "2.0.2" } platform-info = { version = "2.0.2" }
proc-macro2 = { version = "1.0.86" } proc-macro2 = { version = "1.0.86" }
pubgrub = { git = "https://github.com/astral-sh/pubgrub", rev = "3f0ba760951ab0deeac874b98bb18fc90103fcf7" } pubgrub = { git = "https://github.com/astral-sh/pubgrub", rev = "2fac39371a47e7cb821e510aaa4de25405413d29" }
pyo3 = { version = "0.21.0" } pyo3 = { version = "0.21.0" }
pyo3-log = { version = "0.10.0" } pyo3-log = { version = "0.10.0" }
quote = { version = "1.0.36" } quote = { version = "1.0.36" }

View file

@ -1,5 +1,5 @@
use itertools::Itertools; use itertools::Itertools;
use pubgrub::range::Range; use pubgrub::Range;
use std::fmt::{Display, Formatter}; use std::fmt::{Display, Formatter};
use tracing::debug; use tracing::debug;

View file

@ -1,7 +1,6 @@
use std::convert::Infallible; use std::convert::Infallible;
use pubgrub::range::Range; use pubgrub::{Dependencies, DependencyProvider, Range};
use pubgrub::solver::{Dependencies, DependencyProvider};
use pep440_rs::Version; use pep440_rs::Version;

View file

@ -2,8 +2,7 @@ use std::collections::{BTreeMap, BTreeSet};
use std::fmt::Formatter; use std::fmt::Formatter;
use std::sync::Arc; use std::sync::Arc;
use pubgrub::range::Range; use pubgrub::{DefaultStringReporter, DerivationTree, External, Range, Reporter};
use pubgrub::report::{DefaultStringReporter, DerivationTree, External, Reporter};
use rustc_hash::FxHashMap; use rustc_hash::FxHashMap;
use distribution_types::{BuiltDist, IndexLocations, InstalledDist, SourceDist}; use distribution_types::{BuiltDist, IndexLocations, InstalledDist, SourceDist};
@ -117,7 +116,7 @@ impl<T> From<tokio::sync::mpsc::error::SendError<T>> for ResolveError {
/// A wrapper around [`pubgrub::error::NoSolutionError`] that displays a resolution failure report. /// A wrapper around [`pubgrub::error::NoSolutionError`] that displays a resolution failure report.
#[derive(Debug)] #[derive(Debug)]
pub struct NoSolutionError { pub struct NoSolutionError {
error: pubgrub::error::NoSolutionError<UvDependencyProvider>, error: pubgrub::NoSolutionError<UvDependencyProvider>,
available_versions: FxHashMap<PubGrubPackage, BTreeSet<Version>>, available_versions: FxHashMap<PubGrubPackage, BTreeSet<Version>>,
selector: CandidateSelector, selector: CandidateSelector,
python_requirement: PythonRequirement, python_requirement: PythonRequirement,
@ -141,7 +140,7 @@ impl NoSolutionError {
} }
pub(crate) fn new( pub(crate) fn new(
error: pubgrub::error::NoSolutionError<UvDependencyProvider>, error: pubgrub::NoSolutionError<UvDependencyProvider>,
available_versions: FxHashMap<PubGrubPackage, BTreeSet<Version>>, available_versions: FxHashMap<PubGrubPackage, BTreeSet<Version>>,
selector: CandidateSelector, selector: CandidateSelector,
python_requirement: PythonRequirement, python_requirement: PythonRequirement,

View file

@ -3,7 +3,7 @@
use std::ops::Bound::{self, *}; use std::ops::Bound::{self, *};
use std::ops::RangeBounds; use std::ops::RangeBounds;
use pubgrub::range::{Range as PubGrubRange, Range}; use pubgrub::Range as PubGrubRange;
use rustc_hash::FxHashMap; use rustc_hash::FxHashMap;
use pep440_rs::{Version, VersionSpecifier}; use pep440_rs::{Version, VersionSpecifier};
@ -125,7 +125,7 @@ fn string_is_disjoint(this: &MarkerExpression, other: &MarkerExpression) -> bool
true true
} }
pub(crate) fn python_range(expr: &MarkerExpression) -> Option<Range<Version>> { pub(crate) fn python_range(expr: &MarkerExpression) -> Option<PubGrubRange<Version>> {
match expr { match expr {
MarkerExpression::Version { MarkerExpression::Version {
key: MarkerValueVersion::PythonFullVersion, key: MarkerValueVersion::PythonFullVersion,
@ -331,7 +331,7 @@ pub(crate) fn normalize_all(
MarkerTree::Expression(expr) MarkerTree::Expression(expr)
if bound.is_some_and(|bound| { if bound.is_some_and(|bound| {
python_range(&expr).is_some_and(|supported_range| { python_range(&expr).is_some_and(|supported_range| {
Range::from(bound.clone()).subset_of(&supported_range) PubGrubRange::from(bound.clone()).subset_of(&supported_range)
}) })
}) => }) =>
{ {

View file

@ -1,7 +1,7 @@
use std::iter; use std::iter;
use itertools::Itertools; use itertools::Itertools;
use pubgrub::range::Range; use pubgrub::Range;
use tracing::warn; use tracing::warn;
use pep440_rs::{Version, VersionSpecifiers}; use pep440_rs::{Version, VersionSpecifiers};

View file

@ -1,6 +1,6 @@
use std::cmp::Reverse; use std::cmp::Reverse;
use pubgrub::range::Range; use pubgrub::Range;
use rustc_hash::FxHashMap; use rustc_hash::FxHashMap;
use crate::fork_urls::ForkUrls; use crate::fork_urls::ForkUrls;

View file

@ -6,10 +6,7 @@ use std::ops::Bound;
use derivative::Derivative; use derivative::Derivative;
use indexmap::IndexSet; use indexmap::IndexSet;
use owo_colors::OwoColorize; use owo_colors::OwoColorize;
use pubgrub::range::Range; use pubgrub::{DerivationTree, Derived, External, Map, Range, ReportFormatter, Term};
use pubgrub::report::{DerivationTree, Derived, External, ReportFormatter};
use pubgrub::term::Term;
use pubgrub::type_aliases::Map;
use rustc_hash::FxHashMap; use rustc_hash::FxHashMap;
use distribution_types::IndexLocations; use distribution_types::IndexLocations;

View file

@ -1,7 +1,7 @@
use std::ops::Bound; use std::ops::Bound;
use itertools::Itertools; use itertools::Itertools;
use pubgrub::range::Range; use pubgrub::Range;
use thiserror::Error; use thiserror::Error;
use pep440_rs::{Operator, PreRelease, Version, VersionSpecifier, VersionSpecifiers}; use pep440_rs::{Operator, PreRelease, Version, VersionSpecifier, VersionSpecifiers};

View file

@ -3,7 +3,7 @@ use std::collections::Bound;
use std::ops::Deref; use std::ops::Deref;
use itertools::Itertools; use itertools::Itertools;
use pubgrub::range::Range; use pubgrub::Range;
use distribution_filename::WheelFilename; use distribution_filename::WheelFilename;
use pep440_rs::{Operator, Version, VersionSpecifier, VersionSpecifiers}; use pep440_rs::{Operator, Version, VersionSpecifier, VersionSpecifiers};

View file

@ -1,7 +1,7 @@
use std::cmp::min; use std::cmp::min;
use itertools::Itertools; use itertools::Itertools;
use pubgrub::range::Range; use pubgrub::Range;
use rustc_hash::FxHashMap; use rustc_hash::FxHashMap;
use tokio::sync::mpsc::Sender; use tokio::sync::mpsc::Sender;
use tracing::{debug, trace}; use tracing::{debug, trace};

View file

@ -13,8 +13,7 @@ use dashmap::DashMap;
use either::Either; use either::Either;
use futures::{FutureExt, StreamExt}; use futures::{FutureExt, StreamExt};
use itertools::Itertools; use itertools::Itertools;
use pubgrub::range::Range; use pubgrub::{Incompatibility, Range, State};
use pubgrub::solver::{Incompatibility, State};
use rustc_hash::{FxHashMap, FxHashSet}; use rustc_hash::{FxHashMap, FxHashSet};
use tokio::sync::mpsc::{self, Receiver, Sender}; use tokio::sync::mpsc::{self, Receiver, Sender};
use tokio::sync::oneshot; use tokio::sync::oneshot;
@ -1885,7 +1884,7 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
fn convert_no_solution_err( fn convert_no_solution_err(
&self, &self,
mut err: pubgrub::error::NoSolutionError<UvDependencyProvider>, mut err: pubgrub::NoSolutionError<UvDependencyProvider>,
fork_urls: ForkUrls, fork_urls: ForkUrls,
markers: ResolverMarkers, markers: ResolverMarkers,
visited: &FxHashSet<PackageName>, visited: &FxHashSet<PackageName>,
@ -2245,7 +2244,7 @@ impl ForkState {
let mut edges: FxHashSet<ResolutionDependencyEdge> = FxHashSet::default(); let mut edges: FxHashSet<ResolutionDependencyEdge> = FxHashSet::default();
for (package, self_version) in &solution { for (package, self_version) in &solution {
for id in &self.pubgrub.incompatibilities[package] { for id in &self.pubgrub.incompatibilities[package] {
let pubgrub::solver::Kind::FromDependencyOf( let pubgrub::Kind::FromDependencyOf(
ref self_package, ref self_package,
ref self_range, ref self_range,
ref dependency_package, ref dependency_package,