Hypermodern Python Cookiecutter¶
Cookiecutter template for a Python package based on the Hypermodern Python article series.
Usage¶
$ cookiecutter gh:cjolowicz/cookiecutter-hypermodern-python \
--checkout="2020.4.15.1"
Features¶
Packaging and dependency management with Poetry
Test automation with Nox
Continuous integration with GitHub Actions
Documentation with Sphinx and Read the Docs
Automated release notes with Release Drafter
Testing with pytest
Code coverage with Coverage.py
Coverage reporting with Codecov
Command-line interface with Click
Linting with Flake8 and various awesome plugins
Runtime type-checking with Typeguard
Git hook management with pre-commit
Checked documentation examples with xdoctest
API documentation with autodoc, napoleon, and sphinx-autodoc-typehints
The template supports Python 3.6, 3.7, and 3.8.
FAQ¶
What is this project about?
The mission of this project is to enable current best practises 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:
Keep a 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 from 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 outdated visions of the future.