Files
doczyai-pipelines/documentation/PRE-COMMIT-SETUP.md
T
Sujit Deokar 829682d07c Merged in feature/DAIP2-2112-implement-pre-commit-hooks--- (pull request #924)
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
2026-03-25 14:49:14 +00:00

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)

  1. 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
  1. Install all dependencies (including pre-commit):
uv sync --group dev
  1. 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