mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-07 21:35:00 +00:00
Make target Python version an optional field (#4000)
## Summary Instead of checking if the target and installed version are the same, we model the data such that the target version is only present if it was specified by the user. This also means that we correctly say "requested version" even if the two happen to be the same.
This commit is contained in:
parent
037e7e345c
commit
77e93157fb
9 changed files with 61 additions and 35 deletions
|
@ -308,7 +308,9 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
|
|||
|
||||
debug!(
|
||||
"Solving with target Python version {}",
|
||||
self.python_requirement.target()
|
||||
self.python_requirement
|
||||
.target()
|
||||
.unwrap_or(self.python_requirement.installed())
|
||||
);
|
||||
|
||||
'FORK: while let Some(mut state) = forked_states.pop() {
|
||||
|
@ -715,9 +717,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() {
|
||||
let installed = self.python_requirement.installed();
|
||||
let target = self.python_requirement.target();
|
||||
if target != installed {
|
||||
if let Some(target) = self.python_requirement.target() {
|
||||
if !requires_python.contains(target) {
|
||||
return Ok(Some(ResolverVersion::Unavailable(
|
||||
version.clone(),
|
||||
|
@ -730,6 +730,8 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
|
|||
)));
|
||||
}
|
||||
}
|
||||
|
||||
let installed = self.python_requirement.installed();
|
||||
if !requires_python.contains(installed) {
|
||||
return Ok(Some(ResolverVersion::Unavailable(
|
||||
version.clone(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue