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`
This commit is contained in:
Charlie Marsh 2024-04-18 22:04:58 -04:00 committed by GitHub
parent 2e88bb6f1b
commit a241bc79b1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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()))