Linting and Formatting
Running the Formatter
Run before opening a PR:
Tools invoked: black, isort, pylint, ruff, mypy.
Import Ordering
After editing imports in any Python files, always run uv run isort on those
files before committing:
Setting Up the Linting Group
Inside the container:
This installs ruff, black, isort, pylint — the same tools used by
tools/autoformat.sh and CI's linting job.
Code Style Rules
- Type hints: required on all public API functions. Use
X | None, notOptional[X]. - Docstrings: Google-style on all public classes and functions.
- Naming: follow Python conventions —
snake_casefor functions and variables,PascalCasefor classes. - Line length: 119 characters (configured in
pyproject.toml). - No bare
except: always catch specific exception types.


