Contributing

Local development workflow

pip install -e ".[test]"
ruff check src tests
pytest

Pull request expectations

  • Add regression tests for bug fixes.

  • Keep APIs documented with docstrings.

  • Update docs/README when behavior or setup changes.

  • Ensure CI passes before merge.

Protected main workflow

main is protected. Do not push feature work directly to main. Use a short-lived branch and open a pull request:

git switch -c feature/my-change
# edit files, add tests/docs
ruff check src tests
pytest
git push -u origin feature/my-change

Then open a pull request against main. Before merge:

  • Required CI checks must pass, including lint, tests, coverage, and docs.

  • At least one approving review is required.

  • Requested code-owner review should be resolved before merging.

  • Stale approvals should be refreshed after meaningful new commits.

  • All review conversations should be resolved.

Code owners

The repository uses .github/CODEOWNERS to request owner review automatically. If a change touches any file, GitHub asks the listed owner to review the pull request. This supports the branch ruleset option Require review from Code Owners.

Branch protection settings

  • Require passing CI checks on pull requests.

  • Require at least one approving review.

  • Require review from Code Owners.

  • Require branches to be up to date before merging.

  • Require conversation resolution before merging.

  • Disallow direct pushes to main.

  • Block force pushes and branch deletion for main.