From 59dead72011cb7e42afbf22271f047b2640ffdaf Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Wed, 4 Sep 2024 10:41:59 -0400 Subject: [PATCH] Fix handling of inline optional dependencies in `uv add` (#7023) ## Summary We had test coverage for this, but I missed that the output was incorrect. --- crates/uv-workspace/src/pyproject_mut.rs | 2 +- crates/uv/tests/edit.rs | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/crates/uv-workspace/src/pyproject_mut.rs b/crates/uv-workspace/src/pyproject_mut.rs index 8e31d9d92..f2eafb327 100644 --- a/crates/uv-workspace/src/pyproject_mut.rs +++ b/crates/uv-workspace/src/pyproject_mut.rs @@ -305,7 +305,7 @@ impl PyProjectTomlMut { .doc()? .entry("optional-dependencies") .or_insert(Item::Table(Table::new())) - .as_table_mut() + .as_table_like_mut() .ok_or(Error::MalformedDependencies)?; let group = optional_dependencies diff --git a/crates/uv/tests/edit.rs b/crates/uv/tests/edit.rs index 095f916ef..8121e93b2 100644 --- a/crates/uv/tests/edit.rs +++ b/crates/uv/tests/edit.rs @@ -1394,13 +1394,16 @@ fn add_remove_inline_optional() -> Result<()> { "#})?; uv_snapshot!(context.filters(), context.add().arg("typing-extensions").arg("--optional=types"), @r###" - success: false - exit_code: 2 + success: true + exit_code: 0 ----- stdout ----- ----- stderr ----- Resolved 5 packages in [TIME] - error: Dependencies in `pyproject.toml` are malformed + Prepared 2 packages in [TIME] + Installed 2 packages in [TIME] + + project==0.1.0 (from file://[TEMP_DIR]/) + + typing-extensions==4.10.0 "###); let pyproject_toml = fs_err::read_to_string(context.temp_dir.join("pyproject.toml"))?; @@ -1418,7 +1421,7 @@ fn add_remove_inline_optional() -> Result<()> { optional-dependencies = { io = [ "anyio==3.7.0", ], types = [ - "typing-extensions", + "typing-extensions>=4.10.0", ] } [build-system] @@ -1436,11 +1439,13 @@ fn add_remove_inline_optional() -> Result<()> { ----- stderr ----- Resolved 4 packages in [TIME] Prepared 4 packages in [TIME] + Uninstalled 2 packages in [TIME] Installed 4 packages in [TIME] + anyio==3.7.0 + idna==3.6 - + project==0.1.0 (from file://[TEMP_DIR]/) + ~ project==0.1.0 (from file://[TEMP_DIR]/) + sniffio==1.3.1 + - typing-extensions==4.10.0 "###); let pyproject_toml = fs_err::read_to_string(context.temp_dir.join("pyproject.toml"))?;