Skip to content

Commit 9e4b842

Browse files
Add some misc. touch-ups in resolver (#9954)
1 parent 85e17dd commit 9e4b842

File tree

4 files changed

+13
-18
lines changed

4 files changed

+13
-18
lines changed

crates/uv-resolver/src/graph_ops.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ pub(crate) fn simplify_conflict_markers(
192192

193193
let mut inferences: FxHashMap<NodeIndex, Vec<FxHashSet<Inference>>> = FxHashMap::default();
194194
for (node_id, sets) in activated {
195-
let mut new_sets = vec![];
195+
let mut new_sets = Vec::with_capacity(sets.len());
196196
for set in sets {
197197
let mut new_set = FxHashSet::default();
198198
for item in set {

crates/uv-resolver/src/pubgrub/package.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -155,15 +155,15 @@ impl PubGrubPackage {
155155

156156
/// Returns the marker expression associated with this PubGrub package, if
157157
/// it has one.
158-
pub(crate) fn marker(&self) -> Option<MarkerTree> {
158+
pub(crate) fn marker(&self) -> MarkerTree {
159159
match &**self {
160160
// A root can never be a dependency of another package, and a `Python` pubgrub
161161
// package is never returned by `get_dependencies`. So these cases never occur.
162-
PubGrubPackageInner::Root(_) | PubGrubPackageInner::Python(_) => None,
162+
PubGrubPackageInner::Root(_) | PubGrubPackageInner::Python(_) => MarkerTree::TRUE,
163163
PubGrubPackageInner::Package { marker, .. }
164164
| PubGrubPackageInner::Extra { marker, .. }
165-
| PubGrubPackageInner::Dev { marker, .. } => Some(*marker),
166-
PubGrubPackageInner::Marker { marker, .. } => Some(*marker),
165+
| PubGrubPackageInner::Dev { marker, .. } => *marker,
166+
PubGrubPackageInner::Marker { marker, .. } => *marker,
167167
}
168168
}
169169

crates/uv-resolver/src/resolver/environment.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ impl<'d> ForkingPossibility<'d> {
435435
env: &ResolverEnvironment,
436436
dep: &'d PubGrubDependency,
437437
) -> ForkingPossibility<'d> {
438-
let marker = dep.package.marker().unwrap_or(MarkerTree::TRUE);
438+
let marker = dep.package.marker();
439439
if !env.included_by_marker(marker) {
440440
ForkingPossibility::DependencyAlwaysExcluded
441441
} else if marker.is_true() {
@@ -506,7 +506,7 @@ impl<'d> Forker<'d> {
506506
/// Returns true if the dependency represented by this forker may be
507507
/// included in the given resolver environment.
508508
pub(crate) fn included(&self, env: &ResolverEnvironment) -> bool {
509-
let marker = self.package.marker().unwrap_or(MarkerTree::TRUE);
509+
let marker = self.package.marker();
510510
env.included_by_marker(marker)
511511
}
512512
}

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

+6-11
Original file line numberDiff line numberDiff line change
@@ -3053,16 +3053,13 @@ impl Forks {
30533053
// For example, given `requires-python = ">=3.7"` and `uv ; python_version >= "3.8"`,
30543054
// where uv itself only supports Python 3.8 and later, we need to fork to ensure
30553055
// that the resolution can find a solution.
3056-
if !dep
3057-
.package
3058-
.marker()
3059-
.and_then(marker::requires_python)
3060-
.is_some_and(|bound| python_requirement.raises(&bound))
3056+
if marker::requires_python(dep.package.marker())
3057+
.is_none_or(|bound| !python_requirement.raises(&bound))
30613058
{
30623059
let dep = deps.pop().unwrap();
3063-
let markers = dep.package.marker().unwrap_or(MarkerTree::TRUE);
3060+
let marker = dep.package.marker();
30643061
for fork in &mut forks {
3065-
if fork.env.included_by_marker(markers) {
3062+
if fork.env.included_by_marker(marker) {
30663063
fork.add_dependency(dep.clone());
30673064
}
30683065
}
@@ -3249,10 +3246,8 @@ impl Fork {
32493246
fn set_env(&mut self, env: ResolverEnvironment) {
32503247
self.env = env;
32513248
self.dependencies.retain(|dep| {
3252-
let Some(markers) = dep.package.marker() else {
3253-
return true;
3254-
};
3255-
if self.env.included_by_marker(markers) {
3249+
let marker = dep.package.marker();
3250+
if self.env.included_by_marker(marker) {
32563251
return true;
32573252
}
32583253
if let Some(conflicting_item) = dep.package.conflicting_item() {

0 commit comments

Comments
 (0)