This document describes local checks, dependency management, and release-related contributor workflows.
Install development dependencies:
pip install -e .[dev]Run the full local check suite:
make ciRun individual checks when needed:
make pydocstyle
make flake8
make pylint
make isort
make mypy
make testGenerate a local coverage report:
make coveragepyproject.toml is the single source of truth for all dependency declarations:
- Runtime deps (
project.dependencies) use>=X.Y,<(X+1).0— flexible for library consumers, capped at the next major version to prevent surprise breakage. - Dev deps (
project.optional-dependencies.dev,.release) are pinned to exact versions (==X.Y.Z) so CI builds are reproducible and Dependabot can detect and propose updates.
- Dependabot monitors
pyproject.tomlfor outdated==pins and creates a PR bumping them. - CI runs against the updated pins. You review and merge.
| Task | Normally handled by CI | Manual equivalent |
|---|---|---|
| Run linting and tests | .github/workflows/ci.yml |
make ci |
| Build distributions | .github/workflows/publish.yml |
make build |
| Publish distributions | .github/workflows/publish.yml via pypa/gh-action-pypi-publish |
make pypi |
make pypi is a manual/local fallback using Twine. Normal release publishing is handled in CI.