Hypermodern Python Cookiecutter¶
Cookiecutter template for a Python package based on the Hypermodern Python article series.
Usage¶
$ cookiecutter gh:cjolowicz/cookiecutter-hypermodern-python \
--checkout="2021.11.26"
Features¶
Packaging and dependency management with Poetry
Test automation with Nox
Linting with pre-commit and Flake8
Continuous integration with GitHub Actions
Documentation with Sphinx and Read the Docs using the furo theme
Automated release notes with Release Drafter
Automated dependency updates with Dependabot
Testing with pytest
Code coverage with Coverage.py
Coverage reporting with Codecov
Command-line interface with Click
Static type-checking with mypy
Runtime type-checking with Typeguard
Automated Python syntax upgrades with pyupgrade
Check documentation examples with xdoctest
Generate command-line reference with sphinx-click
Manage project labels with GitHub Labeler
The template supports Python 3.7, 3.8, 3.9, and 3.10.
FAQ¶
What is this project about?¶
The mission of this project is to enable current best practices through modern Python tooling.
What makes this project different from other Python templates?¶
This is a general-purpose template for Python libraries and applications.
Our goals are:
Focus on simplicity and minimalism
Promote code quality through automation
Provide reliable and repeatable processes
The project template is centered around the following tools:
Poetry for packaging and dependency management
Nox for automation of checks and other development tasks
GitHub Actions for continuous integration and delivery
Why is this Python template called “hypermodern”?¶
Hypermodernism is a school of chess that dates back to more than a century ago. If this setup ever goes out of fashion, I can pretend it was my secret plan from the start. All images on the associated blog show past visions of the future.