Remove dev dependencies in --all-groups --no-dev (#9300)

## Summary

Closes https://github.com/astral-sh/uv/issues/9297.
This commit is contained in:
Charlie Marsh 2024-11-20 20:06:05 -05:00 committed by GitHub
parent 98c96b718f
commit c6482dd038
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 99 additions and 16 deletions

View file

@ -267,11 +267,32 @@ impl DevGroupsSpecification {
/// Returns `true` if the group is included in the specification.
pub fn contains(&self, group: &GroupName) -> bool {
self.dev.as_ref().map_or(false, |dev| dev.contains(group))
|| self
.groups
.as_ref()
.map_or(false, |groups| groups.contains(group))
if group == &*DEV_DEPENDENCIES {
match self.dev.as_ref() {
None => {}
Some(DevMode::Exclude) => {
// If `--no-dev` was provided, always exclude dev.
return false;
}
Some(DevMode::Only) => {
// If `--only-dev` was provided, always include dev.
return true;
}
Some(DevMode::Include) => {
// If `--no-group dev` was provided, exclude dev.
return match self.groups.as_ref() {
Some(GroupsSpecification::Include { exclude, .. }) => {
!exclude.contains(group)
}
_ => true,
};
}
}
}
self.groups
.as_ref()
.map_or(false, |groups| groups.contains(group))
}
}

View file

@ -1212,7 +1212,10 @@ fn sync_group() -> Result<()> {
requires-python = ">=3.12"
dependencies = ["typing-extensions"]
[tool.uv]
[dependency-groups]
dev = ["iniconfig"]
foo = ["anyio"]
bar = ["requests"]
"#,
@ -1226,9 +1229,10 @@ fn sync_group() -> Result<()> {
----- stdout -----
----- stderr -----
Resolved 9 packages in [TIME]
Prepared 1 package in [TIME]
Installed 1 package in [TIME]
Resolved 10 packages in [TIME]
Prepared 2 packages in [TIME]
Installed 2 packages in [TIME]
+ iniconfig==2.0.0
+ typing-extensions==4.10.0
"###);
@ -1238,7 +1242,7 @@ fn sync_group() -> Result<()> {
----- stdout -----
----- stderr -----
Resolved 9 packages in [TIME]
Resolved 10 packages in [TIME]
Prepared 3 packages in [TIME]
Installed 3 packages in [TIME]
+ anyio==4.3.0
@ -1252,13 +1256,14 @@ fn sync_group() -> Result<()> {
----- stdout -----
----- stderr -----
Resolved 9 packages in [TIME]
Resolved 10 packages in [TIME]
Prepared 4 packages in [TIME]
Uninstalled 3 packages in [TIME]
Uninstalled 4 packages in [TIME]
Installed 4 packages in [TIME]
- anyio==4.3.0
+ certifi==2024.2.2
+ charset-normalizer==3.3.2
- iniconfig==2.0.0
+ requests==2.31.0
- sniffio==1.3.1
- typing-extensions==4.10.0
@ -1271,9 +1276,10 @@ fn sync_group() -> Result<()> {
----- stdout -----
----- stderr -----
Resolved 9 packages in [TIME]
Installed 3 packages in [TIME]
Resolved 10 packages in [TIME]
Installed 4 packages in [TIME]
+ anyio==4.3.0
+ iniconfig==2.0.0
+ sniffio==1.3.1
+ typing-extensions==4.10.0
"###);
@ -1284,8 +1290,8 @@ fn sync_group() -> Result<()> {
----- stdout -----
----- stderr -----
Resolved 9 packages in [TIME]
Audited 8 packages in [TIME]
Resolved 10 packages in [TIME]
Audited 9 packages in [TIME]
"###);
uv_snapshot!(context.filters(), context.sync().arg("--all-groups").arg("--no-group").arg("bar"), @r###"
@ -1294,7 +1300,7 @@ fn sync_group() -> Result<()> {
----- stdout -----
----- stderr -----
Resolved 9 packages in [TIME]
Resolved 10 packages in [TIME]
Uninstalled 4 packages in [TIME]
- certifi==2024.2.2
- charset-normalizer==3.3.2
@ -1302,6 +1308,62 @@ fn sync_group() -> Result<()> {
- urllib3==2.2.1
"###);
uv_snapshot!(context.filters(), context.sync().arg("--all-groups").arg("--no-dev"), @r###"
success: true
exit_code: 0
----- stdout -----
----- stderr -----
Resolved 10 packages in [TIME]
Uninstalled 1 package in [TIME]
Installed 4 packages in [TIME]
+ certifi==2024.2.2
+ charset-normalizer==3.3.2
- iniconfig==2.0.0
+ requests==2.31.0
+ urllib3==2.2.1
"###);
uv_snapshot!(context.filters(), context.sync().arg("--dev"), @r###"
success: true
exit_code: 0
----- stdout -----
----- stderr -----
Resolved 10 packages in [TIME]
Uninstalled 7 packages in [TIME]
Installed 1 package in [TIME]
- anyio==4.3.0
- certifi==2024.2.2
- charset-normalizer==3.3.2
- idna==3.6
+ iniconfig==2.0.0
- requests==2.31.0
- sniffio==1.3.1
- urllib3==2.2.1
"###);
uv_snapshot!(context.filters(), context.sync().arg("--dev").arg("--no-group").arg("dev"), @r###"
success: true
exit_code: 0
----- stdout -----
----- stderr -----
Resolved 10 packages in [TIME]
Uninstalled 1 package in [TIME]
- iniconfig==2.0.0
"###);
uv_snapshot!(context.filters(), context.sync().arg("--group").arg("dev").arg("--no-dev"), @r###"
success: true
exit_code: 0
----- stdout -----
----- stderr -----
Resolved 10 packages in [TIME]
Audited 1 package in [TIME]
"###);
Ok(())
}