Skip to content

Commit

Permalink
Trim injected python_version marker to (major, minor)
Browse files Browse the repository at this point in the history
  • Loading branch information
charliermarsh committed Mar 12, 2024
1 parent 3bf20f9 commit 731bc82
Showing 1 changed file with 27 additions and 5 deletions.
32 changes: 27 additions & 5 deletions crates/uv-interpreter/src/python_version.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,16 +57,38 @@ impl PythonVersion {
pub fn markers(self, base: &MarkerEnvironment) -> MarkerEnvironment {
let mut markers = base.clone();

// Construct the `python_full_version` and `python_version` markers.
let major = self.release().first().copied().unwrap_or(0);
let minor = self.release().get(1).copied().unwrap_or(0);
let patch = self.release().get(2).copied().unwrap_or(0);

// Ex) `python_full_version == "3.12.0"`
let python_full_version = Version::new([major, minor, patch])
.with_pre(self.0.pre())
.with_post(self.0.post());

// Ex) `python_version == "3.12"`
let python_version = Version::new([major, minor]);

// Ex) `implementation_version == "3.12.0"`
if markers.implementation_name == "cpython" {
markers.implementation_version = self.0.clone();
markers.implementation_version = StringVersion {
string: python_full_version.to_string(),
version: python_full_version.clone(),
};
}

// Ex) `python_full_version == "3.12.0"`
markers.python_full_version = self.0.clone();
markers.python_full_version = StringVersion {
string: python_full_version.to_string(),
version: python_full_version,
};

// Ex) `python_version == "3.12"`
markers.python_version = self.0;
markers.python_version = StringVersion {
string: python_version.to_string(),
version: python_version,
};

markers
}
Expand All @@ -78,12 +100,12 @@ impl PythonVersion {

/// Return the major version of this Python version.
pub fn major(&self) -> u8 {
u8::try_from(self.0.release()[0]).expect("invalid major version")
u8::try_from(self.0.release().first().copied().unwrap_or(0)).expect("invalid major version")
}

/// Return the minor version of this Python version.
pub fn minor(&self) -> u8 {
u8::try_from(self.0.release()[1]).expect("invalid minor version")
u8::try_from(self.0.release().get(1).copied().unwrap_or(0)).expect("invalid minor version")
}

/// Check if this Python version is satisfied by the given interpreter.
Expand Down

0 comments on commit 731bc82

Please sign in to comment.