Validate Code
When to Use
- After editing any Python file in the repository.
- Before committing or creating a pull request.
- When the user asks to "lint", "check", "validate", or "type-check" code.
Command
Run all pre-commit hooks (ruff lint + format, mypy, pytest tests on push):
poetry run pre-commit run --all-files
What It Checks
The .pre-commit-config.yaml defines these hooks:
| Hook | Stage | What it does |
|---|---|---|
| ruff (fix) | pre-commit | Auto-fixes lint issues (except E501 line length) |
| ruff-format | pre-commit | Enforces consistent formatting (Black-compatible) |
| ruff (E501) | pre-commit | Fails on remaining line-length violations |
| mypy | pre-commit | Static type-checking across http_py/ |
| pytest | pre-push | Runs pytest -v |
Note: The
pytesthook only runs onpre-pushstage by default. To include it during local validation, run:poetry run pre-commit run --all-files --hook-stage pre-push
Interpreting Failures
- ruff lint / format — If ruff auto-fixed files, they will show as "Failed" but the fixes are already applied. Re-run the command to confirm a clean pass.
- mypy — Type errors must be resolved manually. Read the mypy output for file paths and line numbers.
- pytest — Test failures include tracebacks. Fix the failing test or the code under test.
Quick Individual Commands
# Format only
poetry run ruff format .
# Lint with auto-fix
poetry run ruff check --fix .
# Lint check only (no fix)
poetry run ruff check .
# Type-check only
poetry run mypy http_py
# Tests only
poetry run pytest -v