Quality Gates

Updated Jul 27, 2026

Generated projects use make all as the standard local quality gate. It runs these targets in order:

  • build: create the local virtual environment and install development dependencies with uv sync --group dev.
  • check-fmt: check Ruff formatting for Python sources and, when Rust is enabled, cargo fmt for the Rust extension.
  • lint: run lint-python and, when Rust is enabled, lint-rust.
  • typecheck: run ty check.
  • test: run pytest and, when Rust is enabled, Rust tests.
  • audit: run pip-audit and, when Rust is enabled, cargo audit.

The lint-python target runs Ruff, then Interrogate over $(PYTHON_TARGETS) to enforce 100% docstring coverage for the Python targets (the threshold is pinned in [tool.interrogate] in pyproject.toml), then Pylint via a PyPy-backed runner. The Pylint runner is installed through uv tool run from the pinned pylint-pypy-shim repository.

Pytest discovery is limited to the top-level tests/ tree. Keep generated project unit tests there rather than in package module directories or unittests/ subdirectories, because CI coverage runs through xdist-backed SlipCover support.

When the Rust extension is enabled, lint-rust runs:

  • cargo doc with warnings denied;
  • cargo clippy with the generated Clippy configuration; and
  • Whitaker with whitaker --all.

The generated Makefile installs Whitaker on demand before local Rust linting when it is not already available.