Update pubgrub (#713)

Easier than i expected: We simply never construct the pubgrub error
variants since we have our own main loop. The `unreachable!()`s can be
removed when never is stabilized
This commit is contained in:
konsti 2023-12-20 23:56:59 +01:00 committed by GitHub
parent e705267dac
commit e60f0ec732
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 34 deletions

2
Cargo.lock generated
View File

@ -2240,7 +2240,7 @@ dependencies = [
[[package]]
name = "pubgrub"
version = "0.2.1"
source = "git+https://github.com/zanieb/pubgrub?rev=8fff95d6a233a9fa4ee5ab5429033f0f0d3ddb20#8fff95d6a233a9fa4ee5ab5429033f0f0d3ddb20"
source = "git+https://github.com/zanieb/pubgrub?rev=f64c499f83e5798a583f9850fac28d2e7bf1dfbf#f64c499f83e5798a583f9850fac28d2e7bf1dfbf"
dependencies = [
"indexmap 2.1.0",
"log",

View File

@ -51,7 +51,7 @@ once_cell = { version = "1.18.0" }
petgraph = { version = "0.6.4" }
platform-info = { version = "2.0.2" }
plist = { version = "1.6.0" }
pubgrub = { git = "https://github.com/zanieb/pubgrub", rev = "8fff95d6a233a9fa4ee5ab5429033f0f0d3ddb20" }
pubgrub = { git = "https://github.com/zanieb/pubgrub", rev = "f64c499f83e5798a583f9850fac28d2e7bf1dfbf" }
pyo3 = { version = "0.20.0" }
pyo3-log = { version = "0.9.0"}
pyproject-toml = { version = "0.8.0" }

View File

@ -1,3 +1,4 @@
use std::convert::Infallible;
use std::fmt::Formatter;
use pubgrub::range::Range;
@ -69,16 +70,6 @@ pub enum ResolveError {
#[error(transparent)]
NoSolution(#[from] NoSolutionError),
#[error("Retrieving dependencies of {package} {version} failed")]
ErrorRetrievingDependencies {
/// Package whose dependencies we want.
package: Box<PubGrubPackage>,
/// Version of the package for which we want the dependencies.
version: Box<PubGrubVersion>,
/// Error raised by the implementer of [DependencyProvider](crate::solver::DependencyProvider).
source: Box<dyn std::error::Error + Send + Sync>,
},
#[error("{package} {version} depends on itself")]
SelfDependency {
/// Package whose dependencies we want.
@ -87,12 +78,6 @@ pub enum ResolveError {
version: Box<PubGrubVersion>,
},
#[error("Decision making failed")]
ErrorChoosingPackageVersion(Box<dyn std::error::Error + Send + Sync>),
#[error("We should cancel")]
ErrorInShouldCancel(Box<dyn std::error::Error + Send + Sync>),
/// Something unexpected happened.
#[error("{0}")]
Failure(String),
@ -104,24 +89,19 @@ impl<T> From<futures::channel::mpsc::TrySendError<T>> for ResolveError {
}
}
impl From<pubgrub::error::PubGrubError<PubGrubPackage, Range<PubGrubVersion>>> for ResolveError {
fn from(value: pubgrub::error::PubGrubError<PubGrubPackage, Range<PubGrubVersion>>) -> Self {
impl From<pubgrub::error::PubGrubError<PubGrubPackage, Range<PubGrubVersion>, Infallible>>
for ResolveError
{
fn from(
value: pubgrub::error::PubGrubError<PubGrubPackage, Range<PubGrubVersion>, Infallible>,
) -> Self {
match value {
pubgrub::error::PubGrubError::ErrorChoosingPackageVersion(inner) => {
ResolveError::ErrorChoosingPackageVersion(inner)
// These are all never type variant that can never match, but never is experimental
pubgrub::error::PubGrubError::ErrorChoosingPackageVersion(_)
| pubgrub::error::PubGrubError::ErrorInShouldCancel(_)
| pubgrub::error::PubGrubError::ErrorRetrievingDependencies { .. } => {
unreachable!()
}
pubgrub::error::PubGrubError::ErrorInShouldCancel(inner) => {
ResolveError::ErrorInShouldCancel(inner)
}
pubgrub::error::PubGrubError::ErrorRetrievingDependencies {
package,
version,
source,
} => ResolveError::ErrorRetrievingDependencies {
package: Box::new(package),
version: Box::new(version),
source,
},
pubgrub::error::PubGrubError::Failure(inner) => ResolveError::Failure(inner),
pubgrub::error::PubGrubError::NoSolution(derivation_tree) => {
ResolveError::NoSolution(NoSolutionError {