Report Python versions in pyvenv.cfg version mismatch (#13027)
When working on #13025 I noticed this message was lacking versions, which seems frustrating if you're debugging things. I refactored the general `matches_interpreter` utilities that were added in https://github.com/astral-sh/uv/pull/12884 into a more purpose-fit function that returns an `Option` with the versions if there's a mismatch.
This commit is contained in:
@@ -318,31 +318,37 @@ impl Interpreter {
|
||||
&self.markers.python_full_version().version
|
||||
}
|
||||
|
||||
/// Returns the full minor Python version.
|
||||
/// Returns the Python version up to the minor component.
|
||||
#[inline]
|
||||
pub fn python_minor_version(&self) -> Version {
|
||||
Version::new(self.python_version().release().iter().take(2).copied())
|
||||
}
|
||||
|
||||
/// Return the major version of this Python version.
|
||||
/// Returns the Python version up to the patch component.
|
||||
#[inline]
|
||||
pub fn python_patch_version(&self) -> Version {
|
||||
Version::new(self.python_version().release().iter().take(3).copied())
|
||||
}
|
||||
|
||||
/// Return the major version component of this Python version.
|
||||
pub fn python_major(&self) -> u8 {
|
||||
let major = self.markers.python_full_version().version.release()[0];
|
||||
u8::try_from(major).expect("invalid major version")
|
||||
}
|
||||
|
||||
/// Return the minor version of this Python version.
|
||||
/// Return the minor version component of this Python version.
|
||||
pub fn python_minor(&self) -> u8 {
|
||||
let minor = self.markers.python_full_version().version.release()[1];
|
||||
u8::try_from(minor).expect("invalid minor version")
|
||||
}
|
||||
|
||||
/// Return the patch version of this Python version.
|
||||
/// Return the patch version component of this Python version.
|
||||
pub fn python_patch(&self) -> u8 {
|
||||
let minor = self.markers.python_full_version().version.release()[2];
|
||||
u8::try_from(minor).expect("invalid patch version")
|
||||
}
|
||||
|
||||
/// Returns the Python version as a simple tuple.
|
||||
/// Returns the Python version as a simple tuple, e.g., `(3, 12)`.
|
||||
pub fn python_tuple(&self) -> (u8, u8) {
|
||||
(self.python_major(), self.python_minor())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user