Overview of template generated projectΒΆ

cookiecutter generates a boilerplate and setups tooling with focus on monothematic projects.

Generated project consists of:

  1. Basic python package structure:

    • pyproject.toml - central configuration for build system, package metadata, dependencies, and tool configurations (including linters and formatters)

    • a very minimal python code + example test

  2. pre-commit hooks:

    • ruff - fast linter and formatter that replaces the functionality of:

      • black - code formatting

      • flake8 - style and linting

      • pycln - unused imports cleanup

      • isort - import sorting

      • pylint - static code analysis

      • pyupgrade - code modernization for given python version

      • bandit - security issue detection - required for SOC 2 Certification

    • mypy - static type checking

    • jupytext - (optional) syncs jupyter notebooks to plain python files

  3. Sphinx documentation:

    • basic preconfigured documentation template

    • recommended extensions

    • page with list of autogenerated third party python packages list with licenses

  4. Basic script to create venv

  5. Minimal README.md file

  6. Preconfigured semantic versioning with bump2version

  7. Dockerfile for pre-commit image

  8. Gitlab integration (default, optional):

    • linter stage (pre-commit run --all)

    • tests (pytest) + code coverage

    • license checks of installed packages

    • building and hosting documentation on GitLab Pages

    • building package and uploading to private GitLab Package registry

    • security: trivy - required for SOC 2 Certification

    • steps to rebuild linter docker image

  9. GitHub integration (optional):

    • linter stage (pre-commit run --all)

    • tests (pytest) + code coverage

    • license checks of installed packages

    • building and hosting documentation on GitHub Pages (if enabled)

    • testing if package can be build

    • security: trivy - required for SOC 2 Certification, but is reporting only

  10. Other less important files (more configurations, .gitignore etc.)

Other pages contain more details.