Remove Python from available versions (#3996)

## Summary

I believe this is no longer necessary. Part of the problem here is that
we can't _know_ the full set of available Python versions, especially
once we start resolving against a `Requires-Python` rather than a fixed
set of two versions.
This commit is contained in:
Charlie Marsh 2024-06-03 16:11:45 -04:00 committed by GitHub
parent 10cd6b94c9
commit ef43bcb233
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 8 additions and 25 deletions

View file

@ -1,6 +1,5 @@
use std::collections::{BTreeMap, BTreeSet}; use std::collections::{BTreeMap, BTreeSet};
use std::fmt::Formatter; use std::fmt::Formatter;
use std::ops::Deref;
use std::sync::Arc; use std::sync::Arc;
use indexmap::IndexMap; use indexmap::IndexMap;
@ -16,7 +15,7 @@ use uv_normalize::PackageName;
use crate::candidate_selector::CandidateSelector; use crate::candidate_selector::CandidateSelector;
use crate::dependency_provider::UvDependencyProvider; use crate::dependency_provider::UvDependencyProvider;
use crate::pubgrub::{PubGrubPackage, PubGrubPackageInner, PubGrubPython, PubGrubReportFormatter}; use crate::pubgrub::{PubGrubPackage, PubGrubPackageInner, PubGrubReportFormatter};
use crate::python_requirement::PythonRequirement; use crate::python_requirement::PythonRequirement;
use crate::resolver::{ use crate::resolver::{
FxOnceMap, IncompletePackage, UnavailablePackage, UnavailableReason, VersionsResponse, FxOnceMap, IncompletePackage, UnavailablePackage, UnavailableReason, VersionsResponse,
@ -225,7 +224,6 @@ impl NoSolutionError {
#[must_use] #[must_use]
pub(crate) fn with_available_versions( pub(crate) fn with_available_versions(
mut self, mut self,
python_requirement: &PythonRequirement,
visited: &FxHashSet<PackageName>, visited: &FxHashSet<PackageName>,
package_versions: &FxOnceMap<PackageName, Arc<VersionsResponse>>, package_versions: &FxOnceMap<PackageName, Arc<VersionsResponse>>,
) -> Self { ) -> Self {
@ -233,18 +231,7 @@ impl NoSolutionError {
for package in self.derivation_tree.packages() { for package in self.derivation_tree.packages() {
match &**package { match &**package {
PubGrubPackageInner::Root(_) => {} PubGrubPackageInner::Root(_) => {}
PubGrubPackageInner::Python(PubGrubPython::Installed) => { PubGrubPackageInner::Python(_) => {}
available_versions.insert(
package.clone(),
BTreeSet::from([python_requirement.installed().deref().clone()]),
);
}
PubGrubPackageInner::Python(PubGrubPython::Target) => {
available_versions.insert(
package.clone(),
BTreeSet::from([python_requirement.target().deref().clone()]),
);
}
PubGrubPackageInner::Extra { .. } => {} PubGrubPackageInner::Extra { .. } => {}
PubGrubPackageInner::Package { name, .. } => { PubGrubPackageInner::Package { name, .. } => {
// Avoid including available versions for packages that exist in the derivation // Avoid including available versions for packages that exist in the derivation

View file

@ -260,16 +260,12 @@ impl<Provider: ResolverProvider, InstalledPackages: InstalledPackagesProvider>
// Add version information to improve unsat error messages. // Add version information to improve unsat error messages.
Err(if let ResolveError::NoSolution(err) = err { Err(if let ResolveError::NoSolution(err) = err {
ResolveError::NoSolution( ResolveError::NoSolution(
err.with_available_versions( err.with_available_versions(&visited, state.index.packages())
&state.python_requirement, .with_selector(state.selector.clone())
&visited, .with_python_requirement(&state.python_requirement)
state.index.packages(), .with_index_locations(provider.index_locations())
) .with_unavailable_packages(&state.unavailable_packages)
.with_selector(state.selector.clone()) .with_incomplete_packages(&state.incomplete_packages),
.with_python_requirement(&state.python_requirement)
.with_index_locations(provider.index_locations())
.with_unavailable_packages(&state.unavailable_packages)
.with_incomplete_packages(&state.incomplete_packages),
) )
} else { } else {
err err