- Metadata and dependency information is stored in the pyproject.toml for compatibility with both pip and poetry.
- Flake8, pylint, and isort configurations are defined to be compatible with the black autoformatter.
- Pylint settings are based on the Google Python Style Guide and adapted for black compatibility.
- Linting tools run automatically before each commit using pre-commit, black, and isort.
- Test coverage reports are generated during every commit and pull request using coverage and pytest-cov. All reports are automatically uploaded and archived on codecov.io.
- Unit tests are written using pytest and static type checking is provided by mypy.
- Package releases to PyPI with dynamic versioning provided by bump2version begin automatically whenever a new tag is created in github.
- Docker images are automatically published to Docker Hub during every release. Images are tagged with a semantic version number which agrees with the git tag and the PyPI version number.
- Documentation is built using mkdocs and mkdocstrings. Docs are automatically deployed to github pages during every release.
- Release notes are automatically generated during every release using github actions.