Respect Requires-Python in universal resolution (#3998)

## Summary

Closes #3982.
This commit is contained in:
Charlie Marsh 2024-06-04 09:56:08 -04:00 committed by GitHub
parent 63c84ed4a6
commit 6afb659c9a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 419 additions and 17 deletions

View file

@ -306,11 +306,12 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
let mut resolutions = vec![];
debug!(
"Solving with target Python version {}",
self.python_requirement
.target()
.unwrap_or(self.python_requirement.installed())
"Solving with installed Python version: {}",
self.python_requirement.installed()
);
if let Some(target) = self.python_requirement.target() {
debug!("Solving with target Python version: {}", target);
}
'FORK: while let Some(mut state) = forked_states.pop() {
loop {
@ -713,7 +714,7 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
// The version is incompatible due to its Python requirement.
if let Some(requires_python) = metadata.requires_python.as_ref() {
if let Some(target) = self.python_requirement.target() {
if !requires_python.contains(target) {
if !target.subset_of(requires_python) {
return Ok(Some(ResolverVersion::Unavailable(
version.clone(),
UnavailableVersion::IncompatibleDist(IncompatibleDist::Source(
@ -725,9 +726,7 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
)));
}
}
let installed = self.python_requirement.installed();
if !requires_python.contains(installed) {
if !requires_python.contains(self.python_requirement.installed()) {
return Ok(Some(ResolverVersion::Unavailable(
version.clone(),
UnavailableVersion::IncompatibleDist(IncompatibleDist::Source(