Contributing¶
Set up the environment¶
Prozor uses uv and a project-local .venv:
uv sync --group dev --group docs
.venv/bin/pre-commit install --hook-type pre-commit --hook-type pre-push
Quality gates¶
make format # apply Ruff formatting and safe lint fixes
make lint # Ruff checks
make typecheck # standard Pyright strict
make imports # directed matching/inference boundary
make test # pytest with branch coverage
make docs # strict MkDocs build
make build # wheel/sdist plus metadata validation
make check # every merge-blocking gate
All Python commands use .venv/bin. Runtime dependencies, development tools,
and documentation tools must remain in their corresponding pyproject.toml
sections; the repository commits no uv.lock.
Code expectations¶
- Fully annotate source and tests; strict Pyright must remain at zero errors.
- Keep public APIs minimal. Other packages import them only from
prozor.api; inside prozor, import from defining modules. - Preserve nested and overlapping matches across both backends.
- Keep ordering and protein inference deterministic.
- Keep
matching/andinference/independent; compose them in consumers. - Add focused tests for behavioral changes and run
make checkbefore review.
See AGENTS.md
for the complete project conventions and dependency boundaries.