MCPcopy Index your code
hub / github.com/audreyfeldroy/cookiecutter-pypackage

github.com/audreyfeldroy/cookiecutter-pypackage @v0.5.0 sqlite

repository ↗ · DeepWiki ↗ · release v0.5.0 ↗
33 symbols 78 edges 16 files 21 documented · 64%
README

Cookiecutter PyPackage

PyPI version PyPI downloads

Cookiecutter template for a Python package with production-ready CI and automated PyPI publishing.

uvx cookiecutter-pypackage

What you get

Tooling

Tool
Package manager uv Fast, handles venvs automatically
Task runner just just qa formats, lints, type-checks, and tests
Linting ruff Format + lint in one tool
Type checking ty All rules enabled, watch mode with just type-check-watch
Testing pytest Python 3.12, 3.13, 3.14
CLI framework Typer Entry point + __main__.py included
Docs Zensical + mkdocstrings Auto-deployed to GitHub Pages, API docs from docstrings

CI/CD (GitHub Actions, security-hardened)

Workflow Trigger What happens
CI Push, PRs Lint, type check, test across 3 Python versions
Publish v* tag Build, Sigstore attestation, PyPI via Trusted Publishers (no tokens)
Docs Push to main Build and deploy to GitHub Pages
Dependabot Weekly PRs to update SHA-pinned actions

All actions pinned by SHA, minimal permissions, no persisted credentials.

Quickstart

Install uv, then:

uvx cookiecutter-pypackage

You'll be prompted for your package name, GitHub username, and a few other values (full list). Then push to GitHub and follow the tutorial to enable Pages and set up PyPI publishing.

Without uvx

uv venv
source .venv/bin/activate
uv pip install cookiecutter
cookiecutter gh:audreyfeldroy/cookiecutter-pypackage

Documentation

audreyfeldroy.github.io/cookiecutter-pypackage

Alternatives

This template is opinionated. If it doesn't fit:

Pull requests welcome if they're small, atomic, and improve the template.


Discord | MIT license

Core symbols most depended-on inside this repo

_run
called by 3
{{cookiecutter.pypi_package_name}}/scripts/release.py
_run
called by 3
scripts/release.py
main
called by 1
{{cookiecutter.pypi_package_name}}/scripts/release.py
main
called by 1
scripts/release.py
on_any_event
called by 0
dev.py
main
called by 0
{{cookiecutter.pypi_package_name}}/src/{{cookiecutter.project_slug}}/cli.py
do_something_useful
called by 0
{{cookiecutter.pypi_package_name}}/src/{{cookiecutter.project_slug}}/utils.py
main
called by 0
src/cookiecutter_pypackage/cli.py

Shape

Function 30
Method 2
Class 1

Languages

Python100%

Modules by API surface

tests/test_bake_project.py12 symbols
tests/test_cli.py7 symbols
tests/test_readme_author.py3 symbols
dev.py3 symbols
{{cookiecutter.pypi_package_name}}/scripts/release.py2 symbols
scripts/release.py2 symbols
{{cookiecutter.pypi_package_name}}/tests/test_{{cookiecutter.project_slug}}.py1 symbols
{{cookiecutter.pypi_package_name}}/src/{{cookiecutter.project_slug}}/utils.py1 symbols
{{cookiecutter.pypi_package_name}}/src/{{cookiecutter.project_slug}}/cli.py1 symbols
src/cookiecutter_pypackage/cli.py1 symbols

Dependencies from manifests, versioned

alabaster1.0.0 · 1×
cookiecutter2.6.0 · 1×
rich
typer0.16.0 · 1×
watchdog6.0.0 · 1×

For agents

$ claude mcp add cookiecutter-pypackage \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact