Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.md bij 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.