Skip to content

Cookiecutter PyPackage 0.5.0: Docs, coverage, and one-command releases

Latest

Choose a tag to compare

@audreyfeldroy audreyfeldroy released this 17 Mar 23:30
v0.5.0
e71078b

Every project you generate from Cookiecutter PyPackage now ships with a documentation site, cross-version test coverage, and a release workflow that handles tagging, GitHub Releases, and PyPI publishing in a single command.

uv tool upgrade cookiecutter-pypackage

What's new

  • Documentation built in. Generated projects include a Zensical docs site with Material theme, light/dark toggle, API autodoc from docstrings, and a GitHub Actions workflow that deploys to GitHub Pages on push to main. Preview locally with just docs-serve. (#903)

  • Coverage across Python versions. CI now runs tests on Python 3.12, 3.13, and 3.14, collects branch coverage from each, and combines it into a single report posted to the workflow summary. Generated projects ship with sensible [tool.coverage] config in pyproject.toml: branch coverage, parallel mode, fail_under = 50, and exclusions for typing-only code. (#904)

  • One-command releases. just release reads the version from pyproject.toml, pulls notes from CHANGELOG/<version>.md, creates an annotated tag, pushes it, and creates a GitHub Release. Three steps instead of five. (#911)

  • Structured issue forms. Bug reports collect version, Python version, and OS through validated fields. Feature requests require a motivation. Every PR prompts contributors to declare AI tool usage. (#909)

  • CodeQL and zizmor security scanning. Generated projects get CodeQL static analysis with security-extended queries and zizmor GitHub Actions auditing. Cache-poisoning prevention and a 7-day Dependabot cooldown protect the supply chain. (#902)

  • Dependabot reaches into the template. Inner template workflows use per-expression Jinja escaping instead of {% raw %} blocks, so Dependabot can parse them as valid YAML and propose action updates. (#905)

What's better

  • Changelog files named by version, not git tag. CHANGELOG/0.5.0.md instead of CHANGELOG/v0.5.0.md, matching pyproject.toml as the source of truth. (#910)

  • Justfile groups and aliases. just --list shows recipes organized by purpose, and common tasks have short aliases (just t for test, just d for docs). Thanks @npikall! (#906)

  • Dev watcher picks up cookiecutter.json changes. The dev.py file watcher now regenerates the project when you edit cookiecutter.json, not just template files.

  • Default author website set to https://audrey.feldroy.com/ so the generated README shows a real example instead of a blank field.

Contributors

@audreyfeldroy (Audrey M. Roy Greenfeld) designed and built this release: the docs system, coverage setup, security scanning, structured issue forms, one-command releases, and the dev watcher improvements.

Thanks to @pydanny (Daniel Roy Greenfeld) for reviewing and merging the release script, and to @npikall (Niko Pikall) for organizing justfile recipes with groups and aliases.