Tools¶
Tools employed by generated projects. Most are installed automatically – via the dev extra, pre-commit or nox session venvs – and don’t require manual setup.
Core¶
- Copier
Renders and updates the project from this template, tracking answers in
.copier-answers.yml. Requirescopier-template-extensions.
- uv (optional)
Speeds up virtual environment creation and installs, provisions the
venv_pythonversion automatically. The tooling falls back tovenv+pipwithout it.
- nox
Runs isolated sessions for tests, linting and docs, defined in
noxfile.py.
- pre-commit
Manages the git hooks configured in
.pre-commit-config.yaml.
- towncrier
Builds
CHANGELOG.mdfrom news fragments.
- direnv (optional)
Sets up and activates the development environment on shell entry via
.envrc.example.
make(optional)Convenience wrapper around the above, see
Makefile.
Formatting and fixes¶
Run as pre-commit hooks:
- black
Code formatting. blacken-docs additionally formats Python snippets in the documentation.
- isort
Import sorting.
- pyupgrade
Syntax upgrades to
python_requires.
- salt-rewrite
Salt-specific docstring and test suite fixups.
- pre-commit-hooks, remove-import-headers
Basic file hygiene.
Linting and analysis¶
- pylint
Code and test suite linting (
noxlint-*sessions, configured in.pylintrc).
- bandit
Security checks.
- actionlint
GitHub Actions workflow linting, including shellcheck for embedded shell scripts.
- ty
Static type checking, only generated when
typingis enabled.- Project-local hooks in
.pre-commit-hooks Autogenerated module docs and CLI example checks.
Testing¶
- pytest
Test runner, extended by pytest-salt-factories (including its
dockerextra whentest_containersis enabled) and pytest-instafail.
- coverage
Code coverage, configured in
.coveragerc.
Documentation¶
- Sphinx
Documentation builder, using the furo theme and several extensions, notably myst-parser (Markdown support). The
docs-devsession serves live-reloading docs via sphinx-autobuild.
Packaging¶
- setuptools
Build backend, deriving the package version from git tags via setuptools-scm.
- build
Used by the release workflows to build the sdist and wheel.