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. Requires copier-template-extensions.

uv (optional)

Speeds up virtual environment creation and installs, provisions the venv_python version automatically. The tooling falls back to venv + pip without 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.md from 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 (nox lint-* 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 typing is 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 docker extra when test_containers is 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-dev session 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.