Canonical baseline files for professional Python repositories.
This repository stores reusable project files, configuration files, workflow files, and documentation scaffolding for professional course, tooling, and software engineering repositories.
The template layers are additive. Later layers override earlier layers when a repository profile needs a more specific version of the same file.
Common additive layers include:
ALL
ALL-PY
ALL-PY-SRC
ALL-PY-SRC-PYPI
Nothing is required to use the template files manually. Copy and adapt files as needed.
For managed updates, the pup-up command can fetch files from this repository
and apply the appropriate layered baseline to a target repository.
# dry run: show what would change
uvx pup-up
# same, but force the latest pup-up version
uvx pup-up@latest
# see the differences
uvx pup-up --diff
# actually add and overwrite the files listed (CAUTION: DESTRUCTIVE)
uvx pup-up --writeOpen a machine terminal where you want the project:
git clone https://github.com/pup-pack/templates
cd templates
code .# Update GitHub Actions and pin all action references to immutable SHAs
uvx gha-tools autoupdate --pin=all --write .github/workflows
uvx gha-tools autoupdate --pin=all --write ALL/.github/workflows
uvx gha-tools autoupdate --pin=all --write ALL-PY/.github/workflows
uvx gha-tools autoupdate --pin=all --write ALL-PY-SRC/.github/workflows
uvx gha-tools autoupdate --pin=all --write ALL-PY-SRC-PYPI/.github/workflows
# Then audit the resulting GitHub configuration for security findings
uvx zizmor@latest .github/
uvx zizmor@latest ALL/.github/
uvx zizmor@latest ALL-PY/.github/
uvx zizmor@latest ALL-PY-SRC/.github/
uvx zizmor@latest ALL-PY-SRC-PYPI/.github/
uvx zizmor@latest --fix=all .github/
uvx zizmor@latest --fix=all ALL/.github/
uvx zizmor@latest --fix=all ALL-PY/.github/
uvx zizmor@latest --fix=all ALL-PY-SRC/.github/
uvx zizmor@latest --fix=all ALL-PY-SRC-PYPI/.github/# save progress
git add -A
git commit -m "update"
git push -u origin main