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:

    • setup.py - compatibility for pip install -e ..

    • setup.cfg - package metadata and dependencies.

    • pyproject.toml - all tools configuration (if support is present)

    • a very minimal python code + example test

  2. pre-commit hooks:

    • black, flake8 - enforce code style

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

    • pycln - cleanups unused imports

    • mypy - checks type errors

    • isort - sorts imports

    • pylint - provides static code analysis and enforces coding standard

    • pyupgrade - modernizes code for given python version

    • bandit - checks for security issues - required for SOC 2 Certification

  3. Sphinx documentation:

    • basic preconfigured documentation template

    • recommended extensions

    • page with list of autogenerated thirdparty 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.