From c2e2c39449dbae9aba6f964460cfcf9065067e58 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Fri, 13 Dec 2024 22:53:33 -0600 Subject: [PATCH] Show terms in derivation tree debug output (#9862) --- crates/uv-resolver/src/error.rs | 48 +++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/crates/uv-resolver/src/error.rs b/crates/uv-resolver/src/error.rs index ed76f1db1..01b3688fa 100644 --- a/crates/uv-resolver/src/error.rs +++ b/crates/uv-resolver/src/error.rs @@ -387,35 +387,43 @@ fn display_tree_inner( lines: &mut Vec, depth: usize, ) { + let prefix = " ".repeat(depth).to_string(); match error { DerivationTree::Derived(derived) => { display_tree_inner(&derived.cause1, lines, depth + 1); display_tree_inner(&derived.cause2, lines, depth + 1); - } - DerivationTree::External(external) => { - let prefix = " ".repeat(depth).to_string(); - match external { - External::FromDependencyOf(package, version, dependency, dependency_version) => { - lines.push(format!( - "{prefix}{package}{version} depends on {dependency}{dependency_version}" - )); - } - External::Custom(package, versions, reason) => match reason { - UnavailableReason::Package(_) => { - lines.push(format!("{prefix}{package} {reason}")); + for (package, term) in &derived.terms { + match term { + Term::Positive(versions) => { + lines.push(format!("{prefix}term {package}{versions}")); } - UnavailableReason::Version(_) => { - lines.push(format!("{prefix}{package}{versions} {reason}")); + Term::Negative(versions) => { + lines.push(format!("{prefix}term not {package}{versions}")); } - }, - External::NoVersions(package, versions) => { - lines.push(format!("{prefix}no versions of {package}{versions}")); - } - External::NotRoot(package, versions) => { - lines.push(format!("{prefix}not root {package}{versions}")); } } } + DerivationTree::External(external) => match external { + External::FromDependencyOf(package, version, dependency, dependency_version) => { + lines.push(format!( + "{prefix}{package}{version} depends on {dependency}{dependency_version}" + )); + } + External::Custom(package, versions, reason) => match reason { + UnavailableReason::Package(_) => { + lines.push(format!("{prefix}{package} {reason}")); + } + UnavailableReason::Version(_) => { + lines.push(format!("{prefix}{package}{versions} {reason}")); + } + }, + External::NoVersions(package, versions) => { + lines.push(format!("{prefix}no versions of {package}{versions}")); + } + External::NotRoot(package, versions) => { + lines.push(format!("{prefix}not root {package}{versions}")); + } + }, } }