Skip to content

Commit 10cdc28

Browse files
committed
Preserve simplified markers when reading locks
1 parent 888d3a7 commit 10cdc28

3 files changed

Lines changed: 16 additions & 7 deletions

File tree

crates/uv-distribution-types/src/requires_python.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,11 @@ impl SimplifiedMarkerTree {
612612
pub fn as_simplified_marker_tree(self) -> MarkerTree {
613613
self.0
614614
}
615+
616+
/// Combine this simplified marker with another via a conjunction.
617+
pub fn and(&mut self, marker: Self) {
618+
self.0.and(marker.0);
619+
}
615620
}
616621

617622
#[cfg(test)]

crates/uv-resolver/src/lock/mod.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2711,7 +2711,10 @@ impl TryFrom<LockWire> for Lock {
27112711
.map(|simplified_marker| simplified_marker.into_marker(&wire.requires_python))
27122712
.map(UniversalMarker::from_combined)
27132713
.collect::<Vec<_>>();
2714-
let environment = fork_markers_union(&fork_markers, &wire.requires_python);
2714+
let environment = SimplifiedMarkerTree::new(
2715+
&wire.requires_python,
2716+
fork_markers_union(&fork_markers, &wire.requires_python),
2717+
);
27152718
let packages = wire
27162719
.packages
27172720
.into_iter()
@@ -3804,7 +3807,7 @@ impl PackageWire {
38043807
fn unwire(
38053808
self,
38063809
requires_python: &RequiresPython,
3807-
environment: MarkerTree,
3810+
environment: SimplifiedMarkerTree,
38083811
unambiguous_package_ids: &FxHashMap<PackageName, PackageId>,
38093812
) -> Result<Package, LockError> {
38103813
// Consistency check
@@ -5598,15 +5601,16 @@ impl DependencyWire {
55985601
fn unwire(
55995602
self,
56005603
requires_python: &RequiresPython,
5601-
environment: MarkerTree,
5604+
environment: SimplifiedMarkerTree,
56025605
unambiguous_package_ids: &FxHashMap<PackageName, PackageId>,
56035606
) -> Result<Dependency, LockError> {
5604-
let mut complexified_marker = self.marker.into_marker(requires_python);
5605-
complexified_marker.and(environment);
5607+
let mut simplified_marker = self.marker;
5608+
simplified_marker.and(environment);
5609+
let complexified_marker = simplified_marker.into_marker(requires_python);
56065610
Ok(Dependency {
56075611
package_id: self.package_id.unwire(unambiguous_package_ids)?,
56085612
extra: self.extra,
5609-
simplified_marker: SimplifiedMarkerTree::new(requires_python, complexified_marker),
5613+
simplified_marker,
56105614
complexified_marker: UniversalMarker::from_combined(complexified_marker),
56115615
})
56125616
}

crates/uv/tests/lock/lock.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32658,7 +32658,7 @@ fn windows_arm() -> Result<()> {
3265832658
version = "0.1.0"
3265932659
source = { virtual = "." }
3266032660
dependencies = [
32661-
{ name = "pywin32", marker = "platform_machine == 'AMD64' and sys_platform == 'win32'" },
32661+
{ name = "pywin32", marker = "sys_platform == 'win32'" },
3266232662
]
3266332663

3266432664
[package.metadata]

0 commit comments

Comments
 (0)