Thanks for considering a contribution to postmark-python.
git clone https://github.com/ActiveCampaign/postmark-python.git
cd postmark-python
poetry install
poetry run pre-commit install-
Fork the repository and create a feature branch off
main. -
Make your change, keeping it scoped to a single concern.
-
Add or update tests under
tests/— the suite follows a one-file-per-feature layout (e.g.test_templates.py,test_bounces.py) that mirrorspostmark/models/. -
Run the full check suite locally before opening a PR:
poetry run pytest poetry run ruff check poetry run ruff format --check poetry run mypy postmark/ poetry run pre-commit run --all-files
CI enforces a minimum test coverage of 85% (
--cov-fail-under=85), so new code needs tests to match. -
Update
CHANGELOG.mdunder anUnreleasedheading (Keep a Changelog format). -
Open a pull request describing the change and why it's needed.
Please open a GitHub issue using the appropriate template. For security vulnerabilities, follow the process in SECURITY.md instead of filing a public issue.
- Formatting and linting are enforced by
ruff(see[tool.ruff]inpyproject.toml). - Type hints are required;
mypy postmark/must pass cleanly. - Request/response schemas use Pydantic v2 models under
postmark/models/<feature>/schemas.py.