Restrict observed requirements to direct when --no-deps is specified (#3191)

## Summary

This PR avoids: (1) using the lookahead resolver when `--no-deps` is
specified (we'll never use those requirements), and (2) including any
transitive requirements when searching for allowed URLs, etc., when
`--no-deps` is specified.

Closes https://github.com/astral-sh/uv/issues/3183.
This commit is contained in:
Charlie Marsh 2024-04-22 13:17:58 -04:00 committed by GitHub
parent a4f125ca34
commit 792a917a97
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 228 additions and 93 deletions

View file

@ -3,7 +3,7 @@ use rustc_hash::FxHashSet;
use pep508_rs::MarkerEnvironment;
use uv_normalize::PackageName;
use crate::Manifest;
use crate::{DependencyMode, Manifest};
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
@ -42,13 +42,17 @@ impl ResolutionStrategy {
mode: ResolutionMode,
manifest: &Manifest,
markers: &MarkerEnvironment,
dependencies: DependencyMode,
) -> Self {
match mode {
ResolutionMode::Highest => Self::Highest,
ResolutionMode::Lowest => Self::Lowest,
ResolutionMode::LowestDirect => {
Self::LowestDirect(manifest.direct_dependencies(markers).cloned().collect())
}
ResolutionMode::LowestDirect => Self::LowestDirect(
manifest
.user_requirements(markers, dependencies)
.map(|requirement| requirement.name.clone())
.collect(),
),
}
}
}