Last updated:
0 purchases
pyprojectsort 0.3.0
pyprojectsort
Formatter for pyproject.toml files.
This package enforces consistent formatting of pyproject.toml files, reducing merge request conflicts and saving time otherwise spent on manual formatting. It also contributes to a cleaner git history and more readable code; enhancing overall project organisation and maintainability. Experience a streamlined workflow, reduced errors, and improved code readability with pyprojectsort.
Features
Alphanumerically sorts pyproject.toml by:
section
section key
list value
Reformats pyproject.toml to a standardised style
line per list value
double quotations
trailing commas
indentation
end of file newline
Installation
pyprojectsort is available via PyPI:
pip install pyprojectsort
Using pyprojectsort with pre-commit
To use as an automated git hook, add this to your .pre-commit-config.yaml:
- repo: https://github.com/kieran-ryan/pyprojectsort
rev: v0.2.2
hooks:
- id: pyprojectsort
Examples
With the following pyproject.toml:
[tool.ruff]
ignore = ["G004",
"T201",
"ANN"
]
[project]
name = 'pyprojectsort'
authors = [
{ name = "Kieran Ryan" },
"Author Name <[email protected]>",
{name="Author name"}
]
[tool.radon]
show_mi = true
exclude = "tests/*,venv/*"
total_average = true
show_complexity = true
[build-system]
build-backend = "flit.buildapi"
requires = ["flit"]
Run the package from within its directory:
pyprojectsort
The configuration will be reformatted as follows:
[build-system]
build-backend = "flit.buildapi"
requires = [
"flit",
]
[project]
authors = [
"Author Name <[email protected]>",
{ name = "Author Name" },
{ name = "Kieran Ryan" },
]
name = "pyprojectsort"
[tool.radon]
exclude = "tests/*,venv/*"
show_complexity = true
show_mi = true
total_average = true
[tool.ruff]
ignore = [
"ANN",
"G004",
"T201",
]
The pyproject file path can alternatively be specified:
pyprojectsort ../pyproject.toml
Check formatting
The --check option can be used to determine whether your file would be reformatted.
pyprojectsort --check
If the file needs reformatting, the program exits with an error code. This is useful for pipeline integration as it prevents writing back changes so that a clean repository is maintained for subsequent jobs.
The --diff option provides similar functionality but also displays any changes that would be made.
pyprojectsort --diff
The diff of an alphabetically reordered array will appear as follows:
@@ -6,8 +6,8 @@
[project]
authors = [
+ { name = "Author Name" },
{ name = "Kieran Ryan" },
- { name = "Author Name" },
]
License
pyprojectsort is licensed under the MIT License.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.