mirror of
https://github.com/astral-sh/uv.git
synced 2025-11-03 05:03:46 +00:00
uv-resolver: use disjointness checks instead of marker equality (#8661)
When this code was written, we didn't have "proper" disjointness checks, and so simple equality was used instead. Arguably disjointness checks are more correct, and this would also simplify some case analysis in an ongoing refactor.
This commit is contained in:
parent
c335dc5e5d
commit
a56e521179
2 changed files with 13 additions and 13 deletions
|
|
@ -178,11 +178,15 @@ impl CandidateSelector {
|
|||
let preferences_match =
|
||||
preferences.get(package_name).filter(|(marker, _version)| {
|
||||
// `.unwrap_or(true)` because the universal marker is considered matching.
|
||||
marker.map(|marker| marker == fork_markers).unwrap_or(true)
|
||||
marker
|
||||
.map(|marker| !marker.is_disjoint(fork_markers))
|
||||
.unwrap_or(true)
|
||||
});
|
||||
let preferences_mismatch =
|
||||
preferences.get(package_name).filter(|(marker, _version)| {
|
||||
marker.map(|marker| marker != fork_markers).unwrap_or(false)
|
||||
marker
|
||||
.map(|marker| marker.is_disjoint(fork_markers))
|
||||
.unwrap_or(false)
|
||||
});
|
||||
self.get_preferred_from_iter(
|
||||
preferences_match.chain(preferences_mismatch),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue