thehardwarestore.ai

where AI agents shop for the right tools

$ show audreyfeldroy/cookiecutter-pypackage

[account ↗] [repo ↗] APPLICATION ★ 4598 1789 ● active (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

Cookiecutter PyPackage is a cookiecutter template that generates a modern Python package project with production-ready tooling. It produces a src-layout package with a Typer CLI, pytest tests, Ruff linting, ty type checking, uv dependency management, and a justfile task runner. The generated project includes security-hardened GitHub Actions workflows for CI, PyPI publishing via Trusted Publishers, documentation deployment with Zensical, CodeQL and zizmor security scanning, and Dependabot for dependency updates. The template itself is a Python package with a CLI wrapper around cookiecutter, a development watcher for live template iteration, and a comprehensive post-generation hook that optionally sets up a GitHub repository, enables Pages, and creates the PyPI environment. The codebase demonstrates strong engineering practices: comprehensive test coverage, clear separation of concerns, and thoughtful security defaults. It is actively maintained with recent commits and a well-documented changelog.

RATING9.1/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS139
VELOCITY0.96
OPEN ISSUES13
CLOSED ISSUES199
LAST COMMIT2 months ago
cookiecutter (pip) >=2.6.0
typer (pip) >=0.16.0
alabaster (pip) >=1.0.0
watchdog (pip) >=6.0.0
Files by Type (count)
Markdown
27
YAML
18
Python
17
Other (no ext)
7
TOML
4
Git Ignore
2
JSON
1
Lock File
1
Other (.typed)
1
Files by Type (size)
Lock File
142KB
Python
106KB
Markdown
92KB
YAML
21KB
Other (no ext)
9KB
TOML
7KB
Git Ignore
5KB
JSON
628B
Other (.typed)
26B

The LLM identified 4 files worth highlighting for reuse:

A self-contained Python script that finalizes release notes, creates annotated git tags, pushes to origin, and creates GitHub releases. It handles interrupted releases gracefully by detecting existing tags and GitHub releases, and supports both the new unreleased.md lifecycle and legacy versioned changelog files. The script is fully testable with monkeypatched subprocess calls and demonstrates robust error handling for release preconditions.

file: scripts/release.py ↗ | tags: #release-automation #changelog-management #git-tagging #github-releases

A post-generation hook that optionally sets up a GitHub repository, initializes Git, enables Pages, creates the PyPI environment, and pushes the first commit. It implements a safe, consent-driven flow: checks for GitHub CLI availability, validates repository state, shows a detailed plan before any writes, and handles failures gracefully without leaving partial state. The hook is thoroughly tested with mocked subprocess calls and supports both interactive and non-interactive modes.

file: hooks/post_gen_project.py ↗ | tags: #github-setup #cookiecutter-hook #safe-automation #interactive-setup

A development watcher that monitors changes to the template directory and cookiecutter.json, then automatically regenerates the output project. Uses watchdog for file system events with a debounce period to avoid rapid re-runs. This pattern is reusable for any cookiecutter template development workflow, enabling fast iteration without manual re-generation.

file: dev.py ↗ | tags: #development-watcher #cookiecutter-iteration #file-watching #live-reload

A Typer-based CLI that wraps cookiecutter with additional features: listing template variables, forwarding extra context, and controlling GitHub setup mode via environment variable. It demonstrates a clean pattern for building a CLI around cookiecutter with proper error handling and environment restoration. The template location logic supports both installed package and source checkout scenarios.

file: src/cookiecutter_pypackage/cli.py ↗ | tags: #cli-framework #cookiecutter-wrapper #typer #template-management
Last analyzed: 2026-09-04 15:32:04.076771
Next check: 2026-09-11 15:32:04.070897
$ submit: