TU Cookbook Python Template
Project Status
WP Cookbook Development
- Phase 1: Developer = Teacher β Student
- Demonstrator (Early 2026)
- Focus on infrastructure and development
- Phase 2: Developer β Teacher β Student
- Focus on easy content creation
Teaching by example
- Good and working code
- Clear and well-designed
- (Reviewed) open source software (pyopensci)
- Best scientific practices
- FAIR data
- citing & attribution
- β¦
Phase 1: Developers
- Code clarity
- Code quality
- Dependencies
- Code testing
- Attribution
- Citing
- Reviewing
- Packaging
- Publication
1. Code clarity
- Notebook is the documentation
- with 3:1 ratio prose vs code (Wagemann et al., 2022)
- Abstraction of superfluous code as custom package
- Type hinting and
"""docstrings""" for custom functions
Tools: pip, (mypy, ty?)
Automation: Responsibility of the cook
1. Code clarity
π tu-cookbook-python/
ββπ Dockerfile
ββπnotebooks/
β βββοΈnotebook-template.ipynb
β ββπ how-to-cite.md
ββπ .gitignore
ββπ docker-compose.yml
ββπ CITATION.cff
ββπ CONTRIBUTING.md
ββπsrc/
β ββπtucookbook/
β βββοΈ__init__.py
ββπ .pre-commit-config.yaml
ββπ CHANGELOG
ββπ .gitlab-ci.yml
ββπ README.md
βββοΈpyproject.toml
ββπ COPYRIGHT.md
ββπ environment.yml
ββπ LICENSE
ββπ myst.yml
2. Code quality
- Code style PEP8
- Type checking
- (Reviewed) open source software (pyopensci)
- Runtime?
Tools: ruff
Automation: Assistance with pre-commit hooks
2. Code quality
π tu-cookbook-python/
ββπ Dockerfile
ββπ notebooks/
β ββπ notebook-template.ipynb
β ββπ how-to-cite.md
ββπ .gitignore
ββπ docker-compose.yml
ββπ CITATION.cff
ββπ CONTRIBUTING.md
ββπ src/
β ββπ tucookbook/
β ββπ __init__.py
βββοΈ.pre-commit-config.yaml
ββπ CHANGELOG
ββπ .gitlab-ci.yml
ββπ README.md
βββοΈpyproject.toml
ββπ COPYRIGHT.md
ββπ environment.yml
ββπ LICENSE
ββπ myst.yml
3. Dependencies
- Prevent package version pinning
- Conda for cross-platform usage (Windows)
- Custom code as installable Python package (toml file)
- Docker
- complex system requirements
- JupyterHub compatibility
Tools: conda, docker
Automation: Assistance with conda and docker-compose
3. Dependencies
π tu-cookbook-python/
βββοΈDockerfile
ββπ notebooks/
β ββπ notebook-template.ipynb
β ββπ how-to-cite.md
ββπ .gitignore
βββοΈdocker-compose.yml
ββπ CITATION.cff
ββπ CONTRIBUTING.md
ββπ src/
β ββπ tucookbook/
β ββπ __init__.py
ββπ .pre-commit-config.yaml
ββπ CHANGELOG
ββπ .gitlab-ci.yml
ββπ README.md
βββοΈpyproject.toml
ββπ COPYRIGHT.md
βββοΈenvironment.yml
ββπ LICENSE
ββπ myst.yml
4. Code testing
myst build --execute --html
- GitLab CI
- Check the README βnightly buildβ badge
Tools: myst, gitlab-ci
Automation: Fully automated check and badge βnightly buildβ
4. Code testing
π tu-cookbook-python/
ββπ Dockerfile
ββπ notebooks/
β ββπ notebook-template.ipynb
β ββπ how-to-cite.md
ββπ .gitignore
ββπ docker-compose.yml
ββπ CITATION.cff
ββπ CONTRIBUTING.md
ββπ src/
β ββπ tucookbook/
β ββπ __init__.py
ββπ .pre-commit-config.yaml
ββπ CHANGELOG
βββοΈ.gitlab-ci.yml
ββπ README.md
ββπ pyproject.toml
ββπ COPYRIGHT.md
ββπ environment.yml
ββπ LICENSE
βββοΈmyst.yml
5. Attribution
- Code license
- Python package metadata (toml)
- Content license
Tools: ?
Automation: Responsibility of the cook
5. Attribution
π tu-cookbook-python/
ββπ Dockerfile
ββπ notebooks/
β ββπ notebook-template.ipynb
β ββπ how-to-cite.md
ββπ .gitignore
ββπ docker-compose.yml
ββπ CITATION.cff
ββπ CONTRIBUTING.md
ββπ src/
β ββπ tucookbook/
β ββπ __init__.py
ββπ .pre-commit-config.yaml
ββπ CHANGELOG
ββπ .gitlab-ci.yml
ββπ README.md
ββπ pyproject.toml
βββοΈCOPYRIGHT.md
ββπ environment.yml
βββοΈLICENSE
ββπ myst.yml
6. Citing
- Cite all third-party work
- Explain how to cite the book
- Zenodo DOI minting?
Tools: CITATION.cff
Automation: Responsibility of the cook
6. Citing
π tu-cookbook-python/
ββπ Dockerfile
ββπ notebooks/
β ββπ notebook-template.ipynb
β βββοΈhow-to-cite.md
ββπ .gitignore
ββπ docker-compose.yml
βββοΈCITATION.cff
ββπ CONTRIBUTING.md
ββπ src/
β ββπ tucookbook/
β ββπ __init__.py
ββπ .pre-commit-config.yaml
ββπ CHANGELOG
ββπ .gitlab-ci.yml
ββπ README.md
ββπ pyproject.toml
ββπ COPYRIGHT.md
ββπ environment.yml
ββπ LICENSE
ββπ myst.yml
7. Reviewing
- GitLab
- Commit standard
- Branching model
- Never push notebooks with executed cells
- Prevent pushing large files (50 Mb)
- Contributing guidelines and changelogs
Tools: git, nbstripout, pre-commit
Automation: Assistance with pre-commit hooks
7. Reviewing
π tu-cookbook-python/
ββπ Dockerfile
ββπ notebooks/
β ββπ notebook-template.ipynb
β ββπ how-to-cite.md
ββπ .gitignore
ββπ docker-compose.yml
ββπ CITATION.cff
βββοΈCONTRIBUTING.md
ββπ src/
β ββπ tucookbook/
β ββπ __init__.py
βββοΈ.pre-commit-config.yaml
βββοΈCHANGELOG
ββπ .gitlab-ci.yml
ββπ README.md
ββπ pyproject.toml
ββπ COPYRIGHT.md
ββπ environment.yml
ββπ LICENSE
ββπ myst.yml
8. Packaging
- Creating an image for the TUWEL JupyterHub
- Creating an image for the dataLAB BinderHub
Tools: docker, gitlab-ci
Automation: Fully automated image push to dataLAB registry
8. Packaging
π tu-cookbook-python/
βββοΈDockerfile
ββπ notebooks/
β ββπ notebook-template.ipynb
β ββπ how-to-cite.md
ββπ .gitignore
ββπ docker-compose.yml
ββπ CITATION.cff
ββπ CONTRIBUTING.md
ββπ src/
β ββπ tucookbook/
β ββπ __init__.py
ββπ .pre-commit-config.yaml
ββπ CHANGELOG
ββπ .gitlab-ci.yml
ββπ README.md
βββοΈpyproject.toml
ββπ COPYRIGHT.md
ββπ environment.yml
ββπ LICENSE
ββπ myst.yml
9. Publication
- Deployment of myst Jupyter book to GitLab pages
- Local testing
myst build --execute --html
Tools: myst, gitlab-ci
Automation: Fully automated myst build and publication on GitLab Pages
9. Publication
π tu-cookbook-python/
ββπ Dockerfile
ββπ notebooks/
β ββπ notebook-template.ipynb
β ββπ how-to-cite.md
ββπ .gitignore
ββπ docker-compose.yml
ββπ CITATION.cff
ββπ CONTRIBUTING.md
ββπ src/
β ββπ tucookbook/
β ββπ __init__.py
ββπ .pre-commit-config.yaml
ββπ CHANGELOG
βββοΈ.gitlab-ci.yml
ββπ README.md
ββπ pyproject.toml
ββπ COPYRIGHT.md
ββπ environment.yml
ββπ LICENSE
βββοΈmyst.yml
Next Steps
Phase 1:
- Templates Cookbook/CI for R (and Julia?)
- The big data issue
Phase 2:
- More teacher assistance
- Content creation best practices