mirror of
https://github.com/astral-sh/uv.git
synced 2025-10-29 03:02:55 +00:00
Consider editable dependencies to be 'direct' (#2114)
Closes https://github.com/astral-sh/uv/issues/2112.
This commit is contained in:
parent
c9ffe976f9
commit
72dc72496f
4 changed files with 82 additions and 28 deletions
|
|
@ -1,8 +1,10 @@
|
|||
use rustc_hash::FxHashSet;
|
||||
|
||||
use pep508_rs::{Requirement, VersionOrUrl};
|
||||
use pep508_rs::VersionOrUrl;
|
||||
use uv_normalize::PackageName;
|
||||
|
||||
use crate::Manifest;
|
||||
|
||||
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
|
||||
#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
|
||||
pub enum PreReleaseMode {
|
||||
|
|
@ -48,21 +50,23 @@ pub(crate) enum PreReleaseStrategy {
|
|||
}
|
||||
|
||||
impl PreReleaseStrategy {
|
||||
pub(crate) fn from_mode(
|
||||
mode: PreReleaseMode,
|
||||
requirements: &[Requirement],
|
||||
constraints: &[Requirement],
|
||||
overrides: &[Requirement],
|
||||
) -> Self {
|
||||
pub(crate) fn from_mode(mode: PreReleaseMode, manifest: &Manifest) -> Self {
|
||||
match mode {
|
||||
PreReleaseMode::Disallow => Self::Disallow,
|
||||
PreReleaseMode::Allow => Self::Allow,
|
||||
PreReleaseMode::IfNecessary => Self::IfNecessary,
|
||||
PreReleaseMode::Explicit => Self::Explicit(
|
||||
requirements
|
||||
manifest
|
||||
.requirements
|
||||
.iter()
|
||||
.chain(constraints.iter())
|
||||
.chain(overrides.iter())
|
||||
.chain(manifest.constraints.iter())
|
||||
.chain(manifest.overrides.iter())
|
||||
.chain(
|
||||
manifest
|
||||
.editables
|
||||
.iter()
|
||||
.flat_map(|(_editable, metadata)| metadata.requires_dist.iter()),
|
||||
)
|
||||
.filter(|requirement| {
|
||||
let Some(version_or_url) = &requirement.version_or_url else {
|
||||
return false;
|
||||
|
|
@ -81,10 +85,17 @@ impl PreReleaseStrategy {
|
|||
.collect(),
|
||||
),
|
||||
PreReleaseMode::IfNecessaryOrExplicit => Self::IfNecessaryOrExplicit(
|
||||
requirements
|
||||
manifest
|
||||
.requirements
|
||||
.iter()
|
||||
.chain(constraints.iter())
|
||||
.chain(overrides.iter())
|
||||
.chain(manifest.constraints.iter())
|
||||
.chain(manifest.overrides.iter())
|
||||
.chain(
|
||||
manifest
|
||||
.editables
|
||||
.iter()
|
||||
.flat_map(|(_editable, metadata)| metadata.requires_dist.iter()),
|
||||
)
|
||||
.filter(|requirement| {
|
||||
let Some(version_or_url) = &requirement.version_or_url else {
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue