829682d07c
Feature/DAIP2-2112 implement pre commit hooks * Add pre-commit hooks for local code quality checks Adds .pre-commit-config.yaml with file hygiene hooks (trailing-whitespace, end-of-file-fixer, check-yaml/json, check-merge-conflict, check-added-large-files) plus local hooks for black and mypy on pre-commit and pytest on pre-push. Includes setup documentation and adds pre-commit to dev dependencies. Auto-fixed trailing whitespace and missing newlines caught by the new hooks. * Add sample pre-commit hook for testing purposes * Add test file for pre-commit hook validation * Remove test file for pre-commit hook validation * Merged DEV into feature/DAIP2-2112-implement-pre-commit-hooks--- * Merged DEV into feature/DAIP2-2112-implement-pre-commit-hooks--- * Move to documentation Approved-by: Katon Minhas
1.5 KiB
1.5 KiB
Pre-commit Local Setup (uv)
What is pre-commit?
pre-commit runs checks before each commit (for example: formatting and file sanity checks).
This repository uses pre-commit locally only. Bitbucket Pipelines does not run pre-commit.
Install and set up locally (with uv)
- Install
uv(if not installed):
# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
- Install all dependencies (including pre-commit):
uv sync --group dev
- Install git hooks in this repo:
uv run pre-commit install
How it works
When you run git commit, pre-commit automatically runs these checks on your staged files:
| Hook | What it does | Auto-fix? |
|---|---|---|
trailing-whitespace |
Removes spaces at end of lines | Yes |
end-of-file-fixer |
Ensures files end with a newline | Yes |
check-yaml |
Validates YAML syntax | Manual fix |
check-json |
Validates JSON syntax | Manual fix |
check-merge-conflict |
Detects <<<<<<< conflict markers |
Manual fix |
check-added-large-files |
Blocks files larger than 500KB | Manual fix |
- Pass -> commit goes through
- Fail (auto-fix) -> commit blocked, files fixed, re-stage and commit again
- Fail (manual fix) -> commit blocked, fix the error, re-stage and commit again
Common commands
Run on all files:
uv run pre-commit run --all-files
Run on staged files (happens automatically on commit):
uv run pre-commit run