This file is for instructors and maintainers of the DataFun project series. Students do not need to read this file to complete assignments.
Its purpose is to explain why the repository is structured the way it is, and to document policies that keep projects consistent, repeatable, and low-friction.
This repository is a teaching template, not a production system.
Design priorities are:
Anything that increases confusion, noise, or maintenance burden is intentionally avoided.
All DataFun repositories use the same three-phase workflow:
Commands, ordering, and expectations are intentionally uniform across projects so students can focus on learning Python, not relearning tooling.
This project models modern, professional Python practice using:
uv for Python versioning and dependency managementsrc/ layout for import clarityTools are included to model good practice, regardless of the project focus.
pull requests (PR) may be disabled in downstream repos to reduce noise and confusion.pyproject.toml and .github/dependabot.yml) so behavior is explicit and reproducible.To prevent drift across systems, metadata responsibilities are intentionally separated:
Policy: CITATION.cff is the canonical source of keywords; GitHub topics are a curated subset,
and SE_MANIFEST.toml omits keywords to prevent drift.
Critical blocking issues (for example, getting stuck at the >>> Python prompt)
must appear in the root README.md, not only in documentation.
Changes should be made when they:
Avoid changes that add novelty without instructional value.
This file exists to avoid having to reverse-engineer decisions later.
If you are reading this while teaching: you are encouraged to reuse, adapt, and extend this template as you like.