Pin a compatible hook revision
Hook revisions MUST be pinned to a tag that exists in the hook repository
and MUST be new enough to parse the project’s target-version.
Recorded Ruff pin v0.16.6
Why
Ruff 0.8.0 rejects this guide’s Ruff configuration outright —
unknown variant py314, expected one of py37 ... py313 — and Mypy 1.13.0 cannot
parse a t-string, reporting invalid syntax; you likely need to run mypy using Python 3.14 or newer. A stale pin is not a conservative choice; it is a
lint stage that never runs.
Do / recorded pin
rev: v0.16.6
hooks:
- id: ruff-check
args: [--fix]
- id: ruff-format Ruff entry quoted from the guide.
Don't / incompatible pin
rev: v0.8.0
hooks:
- id: ruff Illustrative counterexample using the incompatible revision described in the guide.
Both Ruff examples use https://github.com/astral-sh/ruff-pre-commit.
The guide records the failure messages; this site build does not rerun Ruff or Mypy.
Complete configuration from the guide
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.16.6
hooks:
- id: ruff-check
args: [--fix]
- id: ruff-format
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v2.3.1
hooks:
- id: mypy
args: [--strict]
- repo: https://github.com/semgrep/semgrep
rev: v1.176.0
hooks:
- id: semgrep
args: [--config=p/python, --config=p/security-audit, --error]
- repo: https://github.com/jendrikseipp/vulture
rev: v2.16
hooks:
- id: vulture
args: [src/, --min-confidence=90]