This file documents teaching intent, operational scope, and maintenance guidance.
This repository provides infrastructure for Data Analytics Python projects:
- Privacy-safe diagnostics
- Path normalization
- Standardized logging
- CI/CD validation
- Versioned documentation
- PyPI distribution
It exists to:
- Reduce debugging time
- Normalize environments
- Make execution visible and auditable
- Model professional Python practices
This repository includes additional features that many project repos will NOT need.
- PyPI packaging and release workflow
- Dynamic versioning (SCM tags)
- Project documentation
- CI enforcing formatting, linting, typing, and tests
- Pre-commit quality gates
- Typed package marker (
py.typed)
When adapting this repository, start here:
Defines:
- Python version
- Dependencies
- Tool configuration (ruff, pyright, deptry, bandit)
- Packaging metadata
Defines:
- Local quality gates
- What CI enforces
- What checks must pass before submission
We want failures to first fail in pre-commit. If pre-commit passes, the GitHub actions CD/CD should pass.
GitHub actions workflows.
- Makes execution observable
- Helps illustrate program flow
- Enables verification of execution
- Builds professional habits
- Prevents leaking home directories
- Makes logs shareable
- Avoids operating system assumptions
- Shell differences explain many issues
- OS/version visibility helps with debugging
- Uses heuristics only (privacy-safe)
Useful indicators.
Usually means:
- Logger not initialized
- Function not called
- Script not executed
Often indicates:
- Formatting has not been normalized
- Line endings differ
- Either pre-commit has not been run or pre-commit checks do not all pass.
- Solution: run the following commands and fix issues until all checks pass.
git add -A
uv run pre-commit run --all-files
git add -A- Python version changes affect CI, tooling, and docs
- Update pyproject.toml first
- Ruff, Pyright, and uv evolve quickly
- Prefer pinning major versions
- Line endings
- Shell detection
- Path separators
These are expected and handled by design.