mirror of
https://github.com/astral-sh/uv.git
synced 2025-09-26 20:19:08 +00:00
Update pubgrub (#5649)
We improved the API structure in pubgrub, and also update to generally keep up with upstream.
This commit is contained in:
parent
2574f5b3fd
commit
981661c4af
13 changed files with 19 additions and 25 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -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",
|
||||||
|
|
|
@ -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" }
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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)
|
||||||
})
|
})
|
||||||
}) =>
|
}) =>
|
||||||
{
|
{
|
||||||
|
|
|
@ -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};
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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};
|
||||||
|
|
|
@ -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};
|
||||||
|
|
|
@ -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};
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue