1- [ ![ gh: JnyJny /python-package-cookiecutter] [ python-package-cookiecutter-badge ]] [ python-package-cookiecutter ] [ ![ releases] [ release-badge ]] [ releases ] [ ![ test-status] [ test-status-badge ]] [ testing-workflow ]
1+ [ ![ gh: JnyJny /python-package-cookiecutter] [ python-package-cookiecutter-badge ]] [ python-package-cookiecutter ]
2+ [ ![ releases] [ release-badge ]] [ releases ]
3+ [ ![ test-status] [ test-status-badge ]] [ testing-workflow ]
24
35# Python Package Cookiecutter Template
46
@@ -16,27 +18,97 @@ automatically configured to deploy to GitHub Pages using
1618base files to help provide a great GitHub experience for you and
1719people that interact with your project repository.
1820
19- ## TL;DR - Create Your New Project
21+ ## Why Use This Template?
22+
23+ ### ** Zero Configuration Required**
24+ - ** Complete CI/CD pipeline** with GitHub Actions for testing, building, and publishing
25+ - ** Automated PyPI publishing** with trusted publishing (no API tokens needed)
26+ - ** Documentation** auto-deployed to GitHub Pages
27+ - ** Quality tools pre-configured** : ruff, ty, pytest, coverage reporting
28+
29+ ### ** Python Ecosystem**
30+ - ** [ uv] [ uv ] ** for lightning-fast dependency management and Python version control
31+ - ** [ Typer] [ typer ] ** CLI framework with rich help and autocompletion
32+ - ** [ Loguru] [ loguru ] ** for beautiful, structured logging
33+ - ** [ Pydantic Settings] [ pydantic-settings ] ** for configuration management
34+ - ** [ MkDocs] [ mkdocs ] ** with multiple theme options for documentation
35+
36+ ### ** Package Structure**
37+ - ** src/ layout** following Python packaging best practices
38+ - ** Comprehensive testing** setup with pytest and coverage
39+ - ** Multiple build backends** (uv or hatch)
40+ - ** Semantic versioning** with automated changelog generation
41+ - ** Cross-platform testing** (Linux, macOS, Windows)
42+
43+ ### ** Seamless Workflow**
44+ ``` mermaid
45+ flowchart LR
46+ Code[Write Code] --> Test[poe qc] --> Release[poe publish] --> Live[Live on PyPI]
47+ ```
2048
21- ### With uvx
49+ ## Quick Start
50+
51+ ### Create Your Project
2252
2353``` console
54+ # With uvx (recommended)
2455uvx cookiecutter gh:JnyJny/python-package-cookiecutter
25- ```
2656
27- ### With pip
28- ``` console
57+ # Or with pip
2958pip install cookiecutter
3059cookiecutter gh:JnyJny/python-package-cookiecutter
3160```
3261
33- ### Get To Work!
34- ```
62+ ### Start Developing
63+
64+ ``` console
3565cd your-new-project
36- poe --help
66+ poe --help # See all available tasks
67+ poe qc # Run quality checks
68+ poe test # Run tests
69+ poe publish_patch # Release to PyPI
3770```
3871
39- ## Build Features
72+ ** That's it!** Your package is now live on PyPI with documentation deployed to
73+ GitHub Pages.
74+
75+ ## Table of Contents
76+
77+ - [ Prerequisites] ( #prerequisites )
78+ - [ Project Setup Process] ( #project-setup-process )
79+ - [ Package Features] ( #package-features )
80+ - [ Code Features] ( #code-features )
81+ - [ Quality of Life Features] ( #quality-of-life-features )
82+ - [ GitHub Integrations] ( #github-integrations )
83+ - [ Documentation with MkDocs] ( #documentation-with-mkdocs )
84+ - [ Development Workflows] ( #development-workflows )
85+ - [ Example Development Workflow] ( #example-development-workflow )
86+ - [ GitHub Actions Workflow] ( #github-actions-workflow )
87+ - [ Default Poe Tasks] ( #default-poe-tasks )
88+ - [ Things You Will Want to Change] ( #things-you-will-want-to-change )
89+ - [ Example Package Tree] ( #example-package-tree )
90+
91+ ---
92+
93+ ## Prerequisites
94+
95+ ### User Accounts
96+ - GitHub account _ optional_ but recommended.
97+ - PyPI account _ optional_ but recommended.
98+
99+ ### Tools You Need To Make This Work
100+
101+ | Tool | Required | Optional | Use |
102+ | ------| ----------| ----------| -----|
103+ | [ cookiecutter] [ cookiecutter ] | ✅ | | Creates projects from templates.|
104+ | [ git] [ git ] | ✅ | | Version control system. |
105+ | [ uv] [ uv ] | ✅ | | Manage python, virtual environments and your project!|
106+ | [ direnv] [ direnv ] | | ✅ | Automatically activate and deactivate virtual environments.|
107+ | [ gh] [ gh ] | | ✅ | GitHub CLI tool for working with repositories.|
108+
109+ ## Project Setup Process
110+
111+ When you run the cookiecutter template, it automatically:
40112
41113- Choose from a [ plethora] [ plethora ] of Open Source licenses.
42114- Automatically detects GitHub user name and email address (if configured).
@@ -49,15 +121,15 @@ poe --help
49121- Optionally creates an upstream repository and pushes (GitHub only, requires [ gh] [ gh ] ).
50122- Automatically enables GitHub Pages for MkDocs documentation deployment.
51123
52- ## So Many Package Features
124+ ## Package Features
53125
54126### Code Features
55127- Python ` src ` style project designed to be managed with [ uv] [ uv ] .
56128- Includes a command line interface built with [ typer] [ typer ] .
57129 - Application settings optionally managed with [ pydantic-settings] [ pydantic-settings ] .
58130 - Preconfigured with a ` self ` subcommand like all the cool kids.
59131- Logging handled by [ loguru] [ loguru ] with optional logging to a file.
60- - Package is also callable via ` python -m <package> ` magic.
132+ - Package command line interface via ` python -m <package> ` magic.
61133- Package documentation built with [ MkDocs] [ mkdocs ] .
62134- Automatic API documentation generation from docstrings.
63135
@@ -81,7 +153,7 @@ poe --help
81153- Themed MkDocs workflow with search and API documentation.
82154- Automatic GitHub release generation with release notes.
83155
84- #### GitHub Actions Workflow
156+ ### GitHub Actions Workflow
85157
86158The template includes a comprehensive CI/CD pipeline triggered by semantic version tags:
87159
@@ -172,7 +244,7 @@ following:
172244$
173245```
174246
175- ### Example Package Tree
247+ ## Example Package Tree
176248
177249``` console
178250$ cd < YOUR_PACKAGE_NAME_HERE>
@@ -241,7 +313,7 @@ for use without having to use `uv run` to preface the command. Check
241313out ` poe ` !
242314
243315
244- ## Default Poe Tasks
316+ ## Default Poe Tasks
245317
246318``` console
247319$ poe
@@ -296,7 +368,7 @@ Generated projects include a complete documentation setup using
296368### Theme Options
297369Choose from five MkDocs themes during project generation:
298370
299- - ** Material** - Modern Material Design with dark/light mode, advanced navigation.
371+ - ** Material** - Material Design with dark/light mode, advanced navigation.
300372- ** Read the Docs** - Classic documentation style, clean and familiar.
301373- ** MkDocs** - Default lightweight theme, simple and fast.
302374- ** Bootstrap** - Responsive Bootstrap-based theme, mobile-friendly.
@@ -306,7 +378,7 @@ Choose from five MkDocs themes during project generation:
306378- ** Auto-generated API documentation** from your code's docstrings.
307379- ** Search functionality** with highlighting.
308380- ** Automated deployment** to GitHub Pages via GitHub Actions.
309- - ** Professional structure** with getting started, user guide, and API reference.
381+ - ** Complete structure** with getting started, user guide, and API reference.
310382- ** Theme-optimized configuration** with appropriate plugins and extensions.
311383
312384### Automatic Deployment
@@ -333,7 +405,9 @@ docs/
333405The documentation is automatically customized with your project name,
334406GitHub username, and other template values.
335407
336- ## Example Development Workflow
408+ ## Development Workflows
409+
410+ ### Example Development Workflow
337411
338412This is roughly how I write code and how I would use the generated package.
339413
@@ -360,7 +434,7 @@ flowchart TD
360434 Major --> Tag
361435
362436 Tag --> CI[GitHub Actions<br/>CI/CD Pipeline]
363- CI --> Success[✅ Published to PyPI<br/>📚 Docs Deployed<br/>🎉 GitHub Release]
437+ CI --> Success[Published to PyPI<br/>Docs Deployed<br/>GitHub Release]
364438
365439 Success --> Edit
366440
0 commit comments