uv-resolver: use named fields for some PubGrubPackage variants
I'm planning to add another field here (markers), which puts a lot of stress on the positional approach. So let's just switch over to named fields.
This commit is contained in:
committed by
Andrew Gallant
parent
44fe0f6749
commit
eac8221718
@@ -53,7 +53,12 @@ impl BatchPrefetcher {
|
||||
index: &InMemoryIndex,
|
||||
selector: &CandidateSelector,
|
||||
) -> anyhow::Result<(), ResolveError> {
|
||||
let PubGrubPackage::Package(package_name, None, None) = &next else {
|
||||
let PubGrubPackage::Package {
|
||||
name,
|
||||
extra: None,
|
||||
url: None,
|
||||
} = &next
|
||||
else {
|
||||
return Ok(());
|
||||
};
|
||||
|
||||
@@ -66,7 +71,7 @@ impl BatchPrefetcher {
|
||||
// This is immediate, we already fetched the version map.
|
||||
let versions_response = index
|
||||
.packages()
|
||||
.wait_blocking(package_name)
|
||||
.wait_blocking(name)
|
||||
.ok_or(ResolveError::Unregistered)?;
|
||||
|
||||
let VersionsResponse::Found(ref version_map) = *versions_response else {
|
||||
@@ -85,7 +90,7 @@ impl BatchPrefetcher {
|
||||
previous,
|
||||
} => {
|
||||
if let Some(candidate) =
|
||||
selector.select_no_preference(package_name, &compatible, version_map)
|
||||
selector.select_no_preference(name, &compatible, version_map)
|
||||
{
|
||||
let compatible = compatible.intersection(
|
||||
&Range::singleton(candidate.version().clone()).complement(),
|
||||
@@ -103,13 +108,13 @@ impl BatchPrefetcher {
|
||||
}
|
||||
}
|
||||
BatchPrefetchStrategy::InOrder { previous } => {
|
||||
let range = if selector.use_highest_version(package_name) {
|
||||
let range = if selector.use_highest_version(name) {
|
||||
Range::strictly_lower_than(previous)
|
||||
} else {
|
||||
Range::strictly_higher_than(previous)
|
||||
};
|
||||
if let Some(candidate) =
|
||||
selector.select_no_preference(package_name, &range, version_map)
|
||||
selector.select_no_preference(name, &range, version_map)
|
||||
{
|
||||
phase = BatchPrefetchStrategy::InOrder {
|
||||
previous: candidate.version().clone(),
|
||||
@@ -148,7 +153,7 @@ impl BatchPrefetcher {
|
||||
}
|
||||
}
|
||||
|
||||
debug!("Prefetching {prefetch_count} {package_name} versions");
|
||||
debug!("Prefetching {prefetch_count} {name} versions");
|
||||
|
||||
self.last_prefetch.insert(next.clone(), num_tried);
|
||||
Ok(())
|
||||
@@ -157,7 +162,7 @@ impl BatchPrefetcher {
|
||||
/// Each time we tried a version for a package, we register that here.
|
||||
pub(crate) fn version_tried(&mut self, package: PubGrubPackage) {
|
||||
// Only track base packages, no virtual packages from extras.
|
||||
if matches!(package, PubGrubPackage::Package(_, Some(_), _)) {
|
||||
if matches!(package, PubGrubPackage::Package { extra: Some(_), .. }) {
|
||||
return;
|
||||
}
|
||||
*self.tried_versions.entry(package).or_default() += 1;
|
||||
|
||||
Reference in New Issue
Block a user