Contributing to behave-gen
July 26, 2026 ยท View on GitHub
Thanks for your interest in contributing! This guide covers setup, common commands, and the release process.
Setup
git clone https://github.com/MathiasPaulenko/behave-gen.git
cd behave-gen
make dev
pre-commit install
Development commands
| Command | Description |
|---|---|
make help | Show all available targets. |
make dev | Install with dev extras. |
make lint | Run ruff check + mypy --strict. |
make lint-fix | Auto-fix lint issues. |
make format | Format the code with ruff format. |
make format-check | Verify formatting without changes. |
make test | Run the test suite. |
make test-cov | Run tests with coverage (fail under 80%). |
make build | Build sdist + wheel into ref/output/dist/. |
make clean | Remove build artifacts and caches. |
Pre-PR checklist
Before opening a pull request, make sure all of the following pass:
-
make lint(ruff check + mypy --strict) -
make format-check(ruff format --check) -
make test-covpasses with >= 80% coverage (configured inpyproject.toml) - New behavior is covered by tests
-
CHANGELOG.mdupdated under[Unreleased]
Release process
Releases are automated via the release.yml GitHub Actions workflow:
- Bump the version in
pyproject.toml. - Move the
[Unreleased]section inCHANGELOG.mdto the new version. - Commit and push to
main. - The workflow detects the version bump, creates a git tag, builds the distributions, publishes to PyPI via Trusted Publishing (OIDC), and creates a GitHub Release with auto-generated notes.
Code style
- Python >=3.11,
from __future__ import annotationsin every module. rufffor linting and formatting (line length 100).mypy --strictwith no errors.- Frozen dataclasses where possible.
- Public API documented with docstrings (Google style).