Better error messages on expect failures in resolver (#1583)

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
This commit is contained in:
Shantanu
2024-02-17 04:39:10 -08:00
committed by GitHub
parent bb7c3e6b58
commit 5d58d4fd2e
+18 -8
View File
@@ -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 {
@@ -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 {
@@ -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(