Skip to content

Add linter: toml-tidy#1149

Open
AndrewDongminYoo wants to merge 2 commits into
trunk-io:mainfrom
AndrewDongminYoo:feat/toml-tidy
Open

Add linter: toml-tidy#1149
AndrewDongminYoo wants to merge 2 commits into
trunk-io:mainfrom
AndrewDongminYoo:feat/toml-tidy

Conversation

@AndrewDongminYoo

Copy link
Copy Markdown
Contributor

What

Adds toml-tidy as a TOML formatter: it sorts keys within each table (and sibling table declarations) while preserving table hierarchy, comments, and source formatting via tomlkit.

Why

It complements the existing taplo integration (whitespace/style formatting) rather than replacing it — the relationship mirrors prettier + sort-package-json for package.json, which this repo already ships. Sorted TOML keeps files like pyproject.toml diff-friendly and merge-conflict-resistant.

Definition notes

  • runtime: python / PyPI package, following the black/isort pattern — no binary downloads to maintain.
  • suggest_if: never — key sorting is an opinionated choice, so it stays opt-in.
  • affects_cache: [pyproject.toml] — per-file defaults live in [tool.toml-tidy].
  • toml-tidy requires Python >= 3.12 (newer than the default hermetic runtime), so the linter README documents enabling python@3.12.2, and the test pins it via preCheck — same pattern as ktlint's jdk pin.

Testing

  • npm test linters/toml-tidy — passes; fmt snapshot generated for known_good_version 0.2.0. The fixture exercises key sorting with comment attachment, natural numeric ordering (item2 < item10), sibling-table sorting, and array-of-tables element-order preservation.
  • npm test tests/repo_tests/readme_inclusion.test.ts — passes (README table updated).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant