Commit ccc19f1
committed
Add dbconnect formatting-preserving pyproject.toml merge
Fourth in the stacked dbconnect series.
merge.go rewrites only the env-owned sections of a pyproject.toml and
preserves every other byte (comments, ordering, whitespace, CRLF). It
updates requires-python and the databricks-connect pin in place, and
maintains a marker-bracketed managed [tool.uv] constraint block. The
operation is idempotent: feeding its own output back in is byte-identical.
RenderFreshPyproject produces a complete managed file for a greenfield
project.
Two correctness properties this file has to get right, both covered by
tests that parse the result as TOML rather than asserting on strings:
- When the user's pyproject.toml already has a [tool.uv] table with a
non-constraint key, the managed constraint-dependencies nests header-less
inside that table instead of emitting a second [tool.uv] header (two
headers for one table is invalid TOML that uv rejects).
- Single- vs multi-line constraint-dependencies detection tracks real
bracket depth outside strings and comments, so an opening line that
contains a "]" inside an element (e.g. "requests[security]~=2.0") or a
trailing comment is not misread as single-line and mis-stripped.
Depends on the constraints PR for the Constraints type. Still dormant.
Co-authored-by: Isaac1 parent d867d1f commit ccc19f1
2 files changed
Lines changed: 767 additions & 0 deletions
0 commit comments