Allow package lookups across multiple indexes via explicit opt-in (#2815)

## Summary

This partially revives https://github.com/astral-sh/uv/pull/2135 (with
some modifications) to enable users to opt-in to looking for packages
across multiple indexes.

The behavior is such that, in version selection, we take _any_
compatible version from a "higher-priority" index over the compatible
versions of a "lower-priority" index, even if that means we might accept
an "older" version.

Closes https://github.com/astral-sh/uv/issues/2775.
This commit is contained in:
Charlie Marsh 2024-04-03 19:23:37 -04:00 committed by GitHub
parent e0d55ef496
commit 34341bd6e9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
23 changed files with 351 additions and 106 deletions

View file

@ -174,16 +174,10 @@ impl VersionMap {
}
/// Return the [`Hashes`] for the given version, if any.
pub(crate) fn hashes(&self, version: &Version) -> Vec<Hashes> {
pub(crate) fn hashes(&self, version: &Version) -> Option<Vec<Hashes>> {
match self.inner {
VersionMapInner::Eager(ref map) => map
.get(version)
.map(|file| file.hashes().to_vec())
.unwrap_or_default(),
VersionMapInner::Lazy(ref lazy) => lazy
.get(version)
.map(|file| file.hashes().to_vec())
.unwrap_or_default(),
VersionMapInner::Eager(ref map) => map.get(version).map(|file| file.hashes().to_vec()),
VersionMapInner::Lazy(ref lazy) => lazy.get(version).map(|file| file.hashes().to_vec()),
}
}