Skip to content

Commit

Permalink
Better error messages on expect failures in resolver (#1583)
Browse files Browse the repository at this point in the history
I ran into some (tricky to reproduce) panics while using uv, would be
useful to have a better error message to track down the source of the
problem
  • Loading branch information
hauntsaninja authored Feb 17, 2024
1 parent bb7c3e6 commit 5d58d4f
Showing 1 changed file with 18 additions and 8 deletions.
26 changes: 18 additions & 8 deletions crates/uv-resolver/src/resolution.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,9 @@ impl ResolutionGraph {
if !metadata.provides_extras.contains(extra) {
let pinned_package = pins
.get(package_name, version)
.expect("Every package should be pinned")
.unwrap_or_else(|| {
panic!("Every package should be pinned: {package_name:?}")
})
.clone();

diagnostics.push(Diagnostic::MissingExtra {
Expand All @@ -130,14 +132,19 @@ impl ResolutionGraph {
});
}
} else {
let metadata = distributions
.get(&dist.package_id())
.expect("Every package should have metadata");
let metadata = distributions.get(&dist.package_id()).unwrap_or_else(|| {
panic!(
"Every package should have metadata: {:?}",
dist.package_id()
)
});

if !metadata.provides_extras.contains(extra) {
let pinned_package = pins
.get(package_name, version)
.expect("Every package should be pinned")
.unwrap_or_else(|| {
panic!("Every package should be pinned: {package_name:?}")
})
.clone();

diagnostics.push(Diagnostic::MissingExtra {
Expand All @@ -150,9 +157,12 @@ impl ResolutionGraph {
PubGrubPackage::Package(package_name, Some(extra), Some(url)) => {
// Validate that the `extra` exists.
let dist = PubGrubDistribution::from_url(package_name, url);
let metadata = distributions
.get(&dist.package_id())
.expect("Every package should have metadata");
let metadata = distributions.get(&dist.package_id()).unwrap_or_else(|| {
panic!(
"Every package should have metadata: {:?}",
dist.package_id()
)
});

if !metadata.provides_extras.contains(extra) {
let url = redirects.get(url).map_or_else(
Expand Down

0 comments on commit 5d58d4f

Please sign in to comment.