- Linter:
- Gebruik
ruffals linter en formatter (geschreven in Rust, supersnel). - Formatter:
ruff formatis de standaard formatter. Laat je editor automatisch formatteren bij opslaan.
- Gebruik
- Type Checking:
- Gebruik
mypyvoor type checking. - Let op: De mypy-daemon is traag; gebruik de CLI (
mypy .) in CI/CD of handmatig.
- Gebruik
- Docstrings & Documentatie:
- Gebruik Sphinx-style docstrings voor alle publieke functies, klassen en modules.
- Genereer documentatie met Sphinx indien gewenst.
- Package Management:
- Gebruik
uvals package manager voor dependency management en virtuele omgevingen. - Alle tools en dependencies worden beheerd via
pyproject.toml.
- Gebruik
- Testing:
- Gebruik
pytestvoor alle unittests en integratietests. - Tests staan in de
tests/-directory en dekken zowel de engine als de API.
- Gebruik
- CI/CD:
- Linting, type checking en tests worden automatisch uitgevoerd in de CI/CD pipeline.
- Gebruik
mypyvia de CLI in CI, niet als daemon.
- Git:
- Run
scripts/precommit.sh(bash) ofscripts\precommit.Ps1(PS) voor commit hooks. - Houd duidelijke commit messages aan, bij voorkeur in de vorm van
feat: [description]offix: [description].
- Run
- Code moet altijd ruff-clean zijn (geen linter errors/warnings).
- Alle publieke functies en klassen hebben een duidelijke docstring.
- Type hints zijn verplicht voor alle functie-argumenten en return types.
- Elke nieuwe feature of bugfix krijgt een of meer pytest-tests.
- Voeg dependencies alleen toe via
pyproject.tomlen installeer metuv. - Gebruik geen print-debugging in productiecode; gebruik logging indien nodig.
- Houd de codebase Python 3.12+ compatible.
Gebruik consistente, betekenisvolle branchnamen. Richtlijnen:
feature/<onderwerp>– nieuwe functionaliteitfix/<issue-of-bug>– bugfixes (niet-urgent)hotfix/<korte-omschrijving>-YYYY-MM-DD– urgente productiefix (infra/helm e.d.)docs/<onderwerp>– documentatie-updatestests/<onderwerp>– test(s) en testinfrastructuurrelease/vX.Y.Z– release-voorbereiding
PR-regels:
- PR’s naar
mainalleen vanuitdevelopmentofstaging(of een explicietehotfix/*indien noodzakelijk). - Vereist: groene CI (lint, typecheck, tests) vóór merge.
- Infra/Helm wijzigingen altijd via een aparte
hotfix/*offix/*branch met duidelijke titel en beschrijving.
Voorbeeld workflow voor contributors:
- Fork & clone de repo.
- Installeer dependencies met
uv venv && uv syncof direct viauv pip install [package] - Codeer je feature/fix, commit met duidelijke boodschap.
- Run lokaal:
ruff check .ruff format .mypy .pytest
- Voeg docstrings toe waar nodig, en hanteer de Google-stijl voor Docstrings.
- Maak een pull request.