apply a consistent format to tox.ini files
pip install tox-ini-fmt
See pre-commit for instructions
Sample .pre-commit-config.yaml:
- repo: https://github.com/tox-dev/tox-ini-fmt
rev: "1.3.1"
hooks:
- id: tox-ini-fmt
args: ["-p", "fix_lint,type"]Consult the help for the latest usage:
$ tox-ini-fmt --help
usage: tox-ini-fmt [-h] [-s] [-p toxenv] tox_ini
positional arguments:
tox_ini tox ini file to format
optional arguments:
-h, --help show this help message and exit
-s, --stdout print the formatted text to the stdout (instead of update in-place)
-p toxenv tox environments that pin to the start of the envlist (comma separated)- Format any other section beside
tox/testenv:*(other than put this sections to the end of the file)
booleanfields are normalized totrueorfalse- all fields are stripped of white space on both end
- values that contain a list are split one value per line (PR/merge friendly)
- indent multi-line values by four spaces, and start on new line
- substitutions within multi-line (excluding
commands) are moved to the start of the list (order kept)
Applies the following section order:
toxtestenvtestenv:*-py/pypyenvs are ordered in decreasing order by python version, then apply the order defined withinenvlistpart oftoxsection, you can pin tox elements to the start by using the-pflag- any other section defined within the file
Order by:
envlist- multi-line, start withpyenvs in decreasing python order, then same withpypy, then everything elseisolated_build-booleanfieldskipsdist-booleanfieldskip_missing_interpreters-booleanfieldminversion
Order by:
descriptionpassenv- multi-line, one environment name to pass per line, sorted by namesetenv- multi-line, one environment name-value to set per line in format ofkey=value, sorted by key+valuebasepythonskip_install-booleanfieldusedevelop-booleanfielddeps- multi-line, order by package name (but keep dependencies with package names separate at end), normalize format to remove extra spacesextras- multi-line, one extra env per lineparallel_show_output-booleanfieldcommands- one command per line, commands that wrap over multiple lines are indented with line two or later by extra four spaces