GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — Fix uv sources unwind on dotted/sub-table spellings (#544, #524) by mikolalysenko · Pull Request #545 · SocketDev/socket-patch Conversation
|
| Issue | Test | Without fix | With fix |
|---|---|---|---|
| #544 | vendor::pypi_uv::tests::revert_round_trips_dotted_sources_under_tool_uv |
drift warning | ok |
| #544 | …revert_round_trips_dotted_sources_path_key |
drift | ok |
| #544 | …revert_round_trips_dotted_uv_sources_under_tool (follow-up comment's [tool] + uv.sources) |
drift | ok |
| #544 | …revert_round_trips_root_dotted_tool_uv_sources |
drift | ok |
| #544 | …revert_round_trips_dotted_sources_crlf |
drift | ok |
| #544 | …revert_round_trips_dotted_override_under_tool (transitive) |
drift ×2 | ok |
| #544 | e2e e2e_vendor_pypi_build::uv_vendor_revert_dotted_sources_key, …_dotted_sources_url_key (real uv 0.8.17, plus uv lock --check after revert) |
vendor_lock_entry_drifted |
ok |
| #524 | …revert_drops_header_made_explicit_over_sub_tables (+ _override, _crlf) |
header residue | ok |
| #524 | patch::redirect::upstream::uv::tests::restore_drops_sources_header_made_explicit_over_sub_tables (+ _transitive, _crlf) |
header residue | ok |
| #524 | e2e e2e_vendor_pypi_build::uv_vendor_revert_sub_table_sources (real uv 0.8.17) |
[tool.uv.sources]\n\n residue |
ok |
| control | revert_keeps_user_authored_sources_header, restore_keeps_user_sources_spellings |
– | ok |
Commands run locally on bec2311:
cargo clippy --workspace --all-features -- -D warnings: cleancargo test --workspace --all-features --no-fail-fast: all pass except 12 permission-injection tests (chmod/set_permissions read-only fixtures in covgap_commands_vendor, in_process_redirect, repair, and core copy_tree/vlt_heal/pypi_poetry/pypi_requirements). Those can't fail as intended because the sandbox runs as root. None of them is in a file this PR touches, and CI runs as non-root.cargo test -p socket-patch-cli --all-features --test e2e_vendor_pypi_build -- --include-ignored (uv 0.8.17): every uv test passes, including the 3 new ones. Re-run on f1a45b0: 23/23 pass.cargo test -p socket-patch-cli --all-features --test e2e_redirect_uv_build -- --include-ignored (uv 0.8.17): 16/16 pass (also on f1a45b0).🤖 Generated with Claude Code
https://claude.ai/code/session_013Lodu4CMs7Cfqq8pEzPXpb
Note
Medium Risk
Changes pyproject/uv.lock revert and hosted rollback logic for dependency wiring; mistakes could leave projects pointed at vendored wheels or corrupt TOML layout, though heavily regression-tested.
Overview
Fixes vendor revert and hosted metadata restore for uv projects that express [tool.uv] sources with dotted keys or sub-table-only parents (#544, #524).
Vendored path: wiring now records each added pyproject.toml line exactly as toml_edit rendered it (e.g. sources.six = … vs six = …), so revert splices match and no longer flag socket-patch’s own line as drift. Implicit parents that only existed via [tool.uv.sources.<pkg>] sub-tables are treated as “ours,” so revert also drops headers the wire step introduced.
Hosted restore: after removing hosted source entries, [tool.uv.sources] / [tool.uv] are made implicit again when they only contain sub-tables, restoring the original sub-table-only spelling.
TOML surgery: remove_table_if_empty no longer strips blank lines that belong to the next section header (fixes spacing when removing an empty [tool.uv.sources] above sub-tables).
Coverage adds unit tests across pypi_uv, upstream uv restore, and toml_surgery, plus three real-uv e2e round-trip tests (dotted keys, dotted url key, sub-table sources).
Reviewed by Cursor Bugbot for commit f1a45b0. Configure here.
Generated by Claude Code
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Assisted-by: Claude Code:claude-opus-5-5
Vendored revert and remove now find the sources and override lines they wrote even when the project spells [tool.uv] sources as dotted keys, so a revert no longer reports its own line as drift and leaves pyproject.toml routed to the vendored wheel while uv.lock is restored (which broke uv sync --locked). (#544) When a project only has [tool.uv.sources.<pkg>] sub-tables, the scan has to print an explicit [tool.uv.sources] header. Vendored revert and hosted rollback/remove now drop that header again, so an unwind leaves pyproject.toml byte-identical. (#524) Assisted-by: Claude Code:claude-opus-5-5
|
BugBot review Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Stale Bugbot comment from a previous run.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
[agent] Ready for review at Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
[agent] Labeled Ready for review at Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Reviewed No actionable correctness/security regressions found in the rendered-line ledger recording or implicit-header cleanup. Normalizing both sides with rustfmt confirms the surrounding 124-file churn is formatting-only; reviewed the four semantic files. Validation: core |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
An earlier cargo fmt --all run reformatted 124 files this fix doesn't touch. Restore them to main so the PR only carries the uv sources change and its tests. Assisted-by: Claude Code:claude-opus-5-5
Assisted-by: Claude Code:claude-opus-5-5
|
BugBot review Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
[agent] Thanks for the review. The 124 files of formatting-only churn it flagged came from my Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit f1a45b0. Configure here.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Final incremental review of Validation carried forward: 130 uv unit tests, 8 TOML surgery tests, 3 real-uv tests, plus #543’s 55 discovery tests and 33 vendor rescan tests passed on the reviewed component heads. These were not rerun for the final formatting/merge-only update. The failed PDM CI job is blocked by an external patch API HTTP 504, confirmed in its uploaded scan output. Recommendation: merge once the failed CI check has been rerun successfully. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
[agent] Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
Vendored uv revert and remove half-revert a project whose sources use dotted keys under [tool.uv]: uv.lock is restored but thesources.<pkg> line stays, so uv sync --locked fails (vendor --revert exits 0)
uv rollback, remove and vendor --revert leave an empty [tool.uv.sources] header behind when the project's sources are written as [tool.uv.sources.<name>] sub-tables
There was an error while loading. Please reload this page.