Overview¶
Apply a consistent format to your pyproject.toml file with comment support. See
changelog here.
Philosophy¶
This is an opinionated formatter, with the same objectives as black: it offers few configuration settings on purpose. In return you get consistency, predictability, and smaller diffs.
Use¶
Via CLI¶
pyproject-fmt is a CLI tool that needs Python 3.10 or higher to run. Install it into an isolated environment
with pipx or uv; that way you can upgrade pyproject-fmt later without disturbing the rest of your
system. A pip path follows for completeness, though we discourage it:
# install uv per https://docs.astral.sh/uv/#getting-started
uv tool install pyproject-fmt
pyproject-fmt --help
python -m pip install pipx-in-pipx --user
pipx install pyproject-fmt
pyproject-fmt --help
python -m pip install --user pyproject-fmt
pyproject-fmt --help
You can install it into the global Python interpreter (as a user package via the --user flag). Take care if
your Python is managed by the operating system or another package manager: pip may not coordinate with those
tools and can leave your system inconsistent. On this path, make sure pip is new enough per the subsections below.
Via pre-commit hook¶
See pre-commit/pre-commit for instructions, sample .pre-commit-config.yaml:
- repo: https://github.com/tox-dev/pyproject-fmt
# Use the sha / tag you want to point at
# or use `pre-commit autoupdate` to get the latest version
rev: ""
hooks:
- id: pyproject-fmt
Via Python¶
Call pyproject-fmt as a Python module to format TOML from your own code.
from pyproject_fmt import run
# Format a pyproject.toml file and return the exit code
exit_code = run(["path/to/pyproject.toml"])
The run function accepts command-line arguments as a list and returns an exit code (0 for success, non-zero for
failure).
Format pyproject.toml files.
- pyproject_fmt.run(args=None)¶
Run the formatter.
See Configuration for configuration options and command line interface.