Thanks for contributing!
- Fork & clone:
git clone https://github.com/LukasNiessen/ArchUnitPython.git - Install:
pip install -e ".[dev]" - Test:
pytest - Lint:
ruff check src/ - Type check:
mypy src/archunitpython/
- Code Style: Run
ruff checkandruff formatbefore committing - Commits: Use Conventional Commits (see below)
- PRs: Use feature branches, clear descriptions, ensure CI passes
- Tests: Maintain high coverage
We use Conventional Commits to automate versioning and changelog generation via semantic-release. Your commit messages determine the next version number:
| Commit prefix | Version bump | Example |
|---|---|---|
fix: |
Patch (0.1.0 -> 0.1.1) | fix: handle empty project in graph extraction |
feat: |
Minor (0.1.0 -> 0.2.0) | feat: add support for namespace packages |
feat!: or BREAKING CHANGE: in footer |
Major (0.1.0 -> 1.0.0) | feat!: remove deprecated API |
Other prefixes like chore:, docs:, refactor:, test:, ci: do not trigger a release.
Releases are fully automated. When a PR is merged to main:
- CI runs lint + type checking + tests (across Python 3.10-3.13)
- If CI passes, semantic-release analyzes commit messages since the last release
- If there are
fix:orfeat:commits, it automatically:- Bumps the version in
pyproject.toml - Updates
CHANGELOG.md - Publishes to PyPI
- Creates a GitHub release with release notes
- Bumps the version in
No manual version bumping or publishing is needed.
Documentation is automatically generated from Python docstrings using pdoc and deployed to GitHub Pages.
# Install pdoc
pip install pdoc
# Generate docs
pdoc src/archunitpython/ -o docs/
# Serve locally with live reload
pdoc src/archunitpython/- Add docstrings to all public APIs
- Use Google-style docstring format
- Include code examples in docstrings where helpful
- Keep docstrings concise but informative
- Documentation is automatically deployed to GitHub Pages on push to
main - Configuration is in
.github/workflows/docs.yaml
Bugs: Include environment, expected/actual behavior, steps, errors Features: Check existing issues, provide use case
Be respectful and inclusive. Happy coding!