# Contribution guidelines


## Code style

We defined to use the following formats:
- Whitespace Formatting by [Black](https://github.com/psf/black)
- Docstrings Style see the examples provided by [sphinx napoleon](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html) Types in the docstrings are optional but should be consistent per module.
- Import Order by [isort](https://pycqa.github.io/isort/)
- Strict Typing of function headers see the examples provided by the [mypy](https://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html) documentation.

## Language

We decided to use english on everything close to code but will write longer texts that are not close to the code in german.

## Pre-Commit installation

- clone the project
- install the following python package:
  - `pre-commit`

- execute the command `pre-commit install` to insert the git githook into your local repository.
  - for more information read [Python Pre-Commit](https://pre-commit.com/)
  - the following code format rules are so enforced:
    - Whitespace formatierung:
      - Python-[Black](https://github.com/psf/black)
      - leading whitespace in all files
      - Auto format: yaml, toml, ini
    - Import norm by:
      - [isort](https://pycqa.github.io/isort/)
      - absolut module path
    - Validierung:
      - yaml, toml, json, xml
      - Secret detection
      - python normen ([pep8](https://peps.python.org/pep-0008/)) with [flake8](https://flake8.pycqa.org/en/latest/)
      - type checking with ([mypy](https://github.com/python/mypy))
