From a241bc79b14193ff2b755e2bc1aac8c6bc9a4877 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Thu, 18 Apr 2024 22:04:58 -0400 Subject: [PATCH] Add priorities for editables (#3133) ## Summary We weren't setting a priority for editables, so they were being visited last. I think there's still a problem whereby we're not aggressive enough in visiting recursive extras (and, in fact, that's making it really hard to write a test -- I wrote a test, but the most-reduced case still fails, and I'd need to add a layer of indirection to make it fail-on-main-but-pass-on-this-branch), but that problem likely already existed on main prior to #3087, so I just want to get this quick fix out now. Closes https://github.com/astral-sh/uv/issues/3127. ## Test Plan - `git clone https://github.com/cda-tum/mqt-core.git` - `cargo run venv` - `cargo run pip install 'scikit-build-core[pyproject]>=0.8.1' 'setuptools_scm>=7' 'pybind11>=2.12' --resolution=lowest-direct` - `cargo run pip install --no-build-isolation '-ve.[test,qiskit,evaluation,coverage]' --resolution=lowest-direct` --- crates/uv-resolver/src/resolver/mod.rs | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/crates/uv-resolver/src/resolver/mod.rs b/crates/uv-resolver/src/resolver/mod.rs index addcf6cf1..6f3f0640e 100644 --- a/crates/uv-resolver/src/resolver/mod.rs +++ b/crates/uv-resolver/src/resolver/mod.rs @@ -831,10 +831,17 @@ impl< // Add a dependency on each editable. for (editable, metadata) in self.editables.iter() { - constraints.push( - PubGrubPackage::from_package(metadata.name.clone(), None, &self.urls), - Range::singleton(metadata.version.clone()), - ); + let package = + PubGrubPackage::from_package(metadata.name.clone(), None, &self.urls); + let version = Range::singleton(metadata.version.clone()); + + // Update the package priorities. + priorities.insert(&package, &version); + + // Add the editable as a direct dependency. + constraints.push(package, version); + + // Add a dependency on each extra. for extra in &editable.extras { constraints.push( PubGrubPackage::from_package( @@ -891,7 +898,7 @@ impl< )?; for (dep_package, dep_version) in constraints.iter() { - debug!("Adding transitive dependency for {package}{version}: {dep_package}{dep_version}"); + debug!("Adding transitive dependency for {package}=={version}: {dep_package}{dep_version}"); // Update the package priorities. priorities.insert(dep_package, dep_version); @@ -999,14 +1006,14 @@ impl< self.markers, )?; - for (package, version) in constraints.iter() { - debug!("Adding transitive dependency: {package}{version}"); + for (dep_package, dep_version) in constraints.iter() { + debug!("Adding transitive dependency for {package}=={version}: {dep_package}{dep_version}"); // Update the package priorities. - priorities.insert(package, version); + priorities.insert(dep_package, dep_version); // Emit a request to fetch the metadata for this package. - self.visit_package(package, request_sink).await?; + self.visit_package(dep_package, request_sink).await?; } Ok(Dependencies::Available(constraints.into()))