mirror of
https://github.com/astral-sh/uv.git
synced 2025-09-07 11:10:34 +00:00
uv-resolver: refactor how we deal with requires-python
This commit refactors how deal with `requires-python` so that instead of simplifying markers of dependencies inside the resolver, we do it at the edges of our system. When writing markers to output, we simplify when there's an obvious `requires-python` context. And when reading markers as input, we complexity markers with the relevant `requires-python` constraint.
This commit is contained in:
parent
94a0a0f2ee
commit
4ff057e108
12 changed files with 544 additions and 164 deletions
|
@ -1,4 +1,5 @@
|
|||
use pep440_rs::Version;
|
||||
use pep508_rs::MarkerTree;
|
||||
use uv_python::{Interpreter, PythonVersion};
|
||||
|
||||
use crate::{RequiresPython, RequiresPythonRange};
|
||||
|
@ -89,6 +90,22 @@ impl PythonRequirement {
|
|||
pub fn source(&self) -> PythonRequirementSource {
|
||||
self.source
|
||||
}
|
||||
|
||||
/// A wrapper around `RequiresPython::simplify_markers`. See its docs for
|
||||
/// more info.
|
||||
///
|
||||
/// When this `PythonRequirement` isn't `RequiresPython`, the given markers
|
||||
/// are returned unchanged.
|
||||
pub(crate) fn simplify_markers(&self, marker: MarkerTree) -> MarkerTree {
|
||||
self.target.simplify_markers(marker)
|
||||
}
|
||||
|
||||
/// Return a [`MarkerTree`] representing the Python requirement.
|
||||
///
|
||||
/// See: [`RequiresPython::to_marker_tree`]
|
||||
pub fn to_marker_tree(&self) -> MarkerTree {
|
||||
self.target.to_marker_tree()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, Eq, PartialEq, PartialOrd, Hash, Ord)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue