Hoofdstuk 5 — Projecttemplates, cookiecutter en packaging basics
Let op: De tekst is in het Nederlands; shell‑commando’s en bestandsstructuren zijn in het Engels.
Doel van dit hoofdstuk:
- Snel starten met consistente projecttemplates (Cookiecutter).
- Basis van Python‑packages (src‑layout, pyproject.toml, installable packages).
- Distributie en versiebeheer op hoofdlijnen.
Aanbevolen voorkennis: Hoofdstuk 1–4.
5.1 Waarom templates?
- Consistentie: dezelfde structuur en tooling voor alle projecten.
- Snelheid: minder opzetwerk, meer focus op inhoud.
- Kwaliteit: ingebouwde linters, tests, CI‑skelet.
5.2 Cookiecutter gebruiken
Installeer Cookiecutter en genereer een project:
pip install cookiecutter
cookiecutter https://github.com/cookiecutter/cookiecutter-pypackage
# of een data‑science template, bijv. (voorbeeld):
# cookiecutter https://github.com/drivendata/cookiecutter-data-science
Je beantwoordt prompts; daarna krijg je een projectmap met best practices.
5.3 src‑layout en pyproject.toml
Moderne packaging gebruikt pyproject.toml en een src/‑layout.
project/
src/
mypkg/
__init__.py
core.py
tests/
pyproject.toml
Voorbeeld pyproject.toml (poetry/pep517‑achtig):
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "mypkg"
version = "0.1.0"
authors = [{name = "Jij", email = "jij@example.com"}]
dependencies = [
"numpy",
"pandas",
]
Installeer lokaal in editable mode:
pip install -e .
5.4 Versiebeheer en releases (kort)
- Houd een
CHANGELOG.mdbij met semantische versies (MAJOR.MINOR.PATCH). - Automatiseer releases (GitHub Releases/Actions) en tags (
git tag v0.1.0). - Publiceren naar PyPI kan met
twine(buiten scope voor volledige flow).
5.5 Data‑science templates: extra overwegingen
- Mappen voor
data/(raw/processed),notebooks/,reports/,src/. - Voorgeconfigureerde linting (ruff/flake8), formatting (black), en pre‑commit hooks.
- CI‑workflow voor basischecks en (optioneel) tests.
5.6 Samenvatting
Templates en packaging geven je een vliegende start en betere onderhoudbaarheid. Combineer dit met Git‑workflows (Hoofdstuk 4) en de tools uit Deel III–V voor robuuste, herhaalbare data‑projecten.