Preserve end-of-line comment whitespace when editing pyproject.toml#16734
Preserve end-of-line comment whitespace when editing pyproject.toml#16734konstin merged 4 commits intoastral-sh:mainfrom
pyproject.toml#16734Conversation
1093a2d to
f28a03b
Compare
CodSpeed Performance ReportMerging #16734 will not alter performanceComparing Summary
|
This is cool 👀 |
| if let Some(padding) = comment.padding.as_deref() { | ||
| prefix.push_str(padding); | ||
| } else { | ||
| prefix.push(' '); |
There was a problem hiding this comment.
Does this mean we're inserting a whitespace when there was non before?
If we want to store padding specifically for end-of-line comments, we can store the data in the CommentType::EndOfLine variant and avoid the Option<T>.
There was a problem hiding this comment.
Ah good catch, I've refactored this to carry padding on the variant instead (and thus, no longer default if there's no padding).
571cf3a to
78332f8
Compare
|
|
||
| let serialized = doc.to_string(); | ||
|
|
||
| assert!( |
There was a problem hiding this comment.
For these it doesn't matter, but anything more complex I recommend snapshots, they are easier to maintain if we ever want to change the style
| let comment_type = if (*prev_line_was_empty) || (*prev_line_was_comment) { | ||
|
|
||
| if let Some(index) = line.find('#') { | ||
| let comment_text = line[index..].trim().to_string(); |
There was a problem hiding this comment.
Sorry for coming up with this only now, but can we make those safer by using e.g. split_once? Indexing can panic, and it's easy to get logic such as this wrong, so we try to use non-indexing versions where they aren't too inconvenient or too slow.
pyproject.toml
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [astral-sh/uv](https://github.com/astral-sh/uv) | patch | `0.9.10` -> `0.9.11` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>astral-sh/uv (astral-sh/uv)</summary> ### [`v0.9.11`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0911) [Compare Source](astral-sh/uv@0.9.10...0.9.11) Released on 2025-11-20. ##### Python - Add CPython 3.15.0a2 See the [`python-build-standalone` release notes](https://github.com/astral-sh/python-build-standalone/releases/tag/20251120) for details. ##### Enhancements - Add SBOM support to `uv export` ([#​16523](astral-sh/uv#16523)) - Publish to `crates.io` ([#​16770](astral-sh/uv#16770)) ##### Preview features - Add `uv workspace list --paths` ([#​16776](astral-sh/uv#16776)) - Fix the preview warning on `uv workspace dir` ([#​16775](astral-sh/uv#16775)) ##### Bug fixes - Fix `uv init` author serialization via `toml_edit` inline tables ([#​16778](astral-sh/uv#16778)) - Fix status messages without TTY ([#​16785](astral-sh/uv#16785)) - Preserve end-of-line comment whitespace when editing `pyproject.toml` ([#​16734](astral-sh/uv#16734)) - Disable `always-authenticate` when running under Dependabot ([#​16773](astral-sh/uv#16773)) ##### Documentation - Document the new behavior for free-threaded python versions ([#​16781](astral-sh/uv#16781)) - Improve note about build system in publish guide ([#​16788](astral-sh/uv#16788)) - Move do not upload publish note out of the guide into concepts ([#​16789](astral-sh/uv#16789)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNzMuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE3My4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Resolves #16719
uv addcollapses multiple spaces before inline comments in[project.dependencies], causing unrelated diffs and moving comments onto the wrong columns. This diff captures the exact whitespace padding that preceded each end-of-line comment when parsing the array and reuses it when formatting.