From 214494149c71712dc2a191dbb420723b6dd96f1f Mon Sep 17 00:00:00 2001 From: Aria Desires Date: Thu, 23 Jan 2025 11:35:47 -0500 Subject: [PATCH] fix `--only-group` in `uv pip` interface (#10902) This was an oversight in the implementation, thankfully it appears to be a simple fix? (My only hesitation is this implementation essentially claims that --only-group is defacto incompatible with --extra and I *think* that's the case but I'm not certain.) --- crates/uv-requirements/src/source_tree.rs | 25 ++++++++++++++--------- crates/uv/tests/it/pip_compile.rs | 4 +--- crates/uv/tests/it/pip_install.rs | 7 +++---- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/crates/uv-requirements/src/source_tree.rs b/crates/uv-requirements/src/source_tree.rs index 33be2c1f3..e50d81be6 100644 --- a/crates/uv-requirements/src/source_tree.rs +++ b/crates/uv-requirements/src/source_tree.rs @@ -98,16 +98,21 @@ impl<'a, Context: BuildContext> SourceTreeResolver<'a, Context> { .cloned() .collect::>(); - // Flatten any transitive extras. - let mut requirements = - FlatRequiresDist::from_requirements(metadata.requires_dist, &metadata.name) - .into_iter() - .map(|requirement| Requirement { - origin: Some(origin.clone()), - marker: requirement.marker.simplify_extras(&extras), - ..requirement - }) - .collect::>(); + let mut requirements = Vec::new(); + + // Flatten any transitive extras and include dependencies + // (unless something like --only-group was passed) + if self.groups.prod() { + requirements.extend( + FlatRequiresDist::from_requirements(metadata.requires_dist, &metadata.name) + .into_iter() + .map(|requirement| Requirement { + origin: Some(origin.clone()), + marker: requirement.marker.simplify_extras(&extras), + ..requirement + }), + ); + } // Apply dependency-groups for (group_name, group) in &metadata.dependency_groups { diff --git a/crates/uv/tests/it/pip_compile.rs b/crates/uv/tests/it/pip_compile.rs index 48bc2658a..d316a69af 100644 --- a/crates/uv/tests/it/pip_compile.rs +++ b/crates/uv/tests/it/pip_compile.rs @@ -14481,11 +14481,9 @@ fn dependency_group() -> Result<()> { # This file was autogenerated by uv via the following command: # uv pip compile --cache-dir [CACHE_DIR] pyproject.toml --only-group bar iniconfig==2.0.0 - typing-extensions==4.10.0 - # via project (pyproject.toml) ----- stderr ----- - Resolved 2 packages in [TIME] + Resolved 1 package in [TIME] "###); context = new_context()?; diff --git a/crates/uv/tests/it/pip_install.rs b/crates/uv/tests/it/pip_install.rs index 9cffa5115..404d87db3 100644 --- a/crates/uv/tests/it/pip_install.rs +++ b/crates/uv/tests/it/pip_install.rs @@ -8425,11 +8425,10 @@ fn dependency_group() -> Result<()> { ----- stdout ----- ----- stderr ----- - Resolved 2 packages in [TIME] - Prepared 2 packages in [TIME] - Installed 2 packages in [TIME] + Resolved 1 package in [TIME] + Prepared 1 package in [TIME] + Installed 1 package in [TIME] + iniconfig==2.0.0 - + typing-extensions==4.10.0 "###); context = new_context()?;