Contributing to Dynantic¶
Thanks for your interest in improving Dynantic! This guide covers how to set up the project, run the test suite, and submit changes.
Development Setup¶
Dynantic uses uv for dependency and environment management.
Integration tests run against LocalStack via Docker Compose:
Running Tests¶
# Unit tests only (fast, no Docker required)
uv run pytest -m unit
# Integration tests (requires LocalStack running)
uv run pytest -m integration
# Everything, with coverage
uv run pytest
Linting & Type Checking¶
All code must pass ruff and mypy --strict before it can be merged:
Installing the pre-commit hooks runs these automatically on every commit:
Commit Messages¶
Dynantic uses Conventional Commits. Releases and the changelog are generated automatically by release-please from your commit messages, so the prefix matters:
feat:— a new feature (minor version bump)fix:— a bug fix (patch version bump)docs:— documentation onlyrefactor:,perf:,test:,chore:— see the changelog sections
Breaking changes: add a ! after the type (feat!:) or a BREAKING CHANGE:
footer.
Pull Requests¶
- Fork the repository and create a feature branch.
- Add or update tests covering your change.
- Make sure
ruff,mypy, and the full test suite pass. - Update the docs (
docs/) when you change public behavior. - Open a PR with a clear description and a conventional-commit title.
Scope & Design Notes¶
Dynantic is synchronous-first and intentionally dependency-light (only
pydantic and boto3). Please avoid adding new runtime dependencies unless
strictly necessary, and keep modules small and focused.