Jace's Python Template
This is a cookiecutter template for a typical Python library following modern packaging conventions. It utilizes popular libraries alongside Make and Graphviz to fully automate all development and deployment tasks. Check out the live demo: jacebrowning/template-python-demo
Features
- Preconfigured setup for Travis CI, Coveralls, and Scrutinizer
pyproject.toml
for managing dependencies and package metadataMakefile
for automating common development tasks:- Installing dependencies with
poetry
- Automatic formatting with
isort
andblack
- Static analysis with
pylint
- Type checking with
mypy
- Docstring styling with
pydocstyle
- Running tests with
pytest
- Building documentation with
mkdocs
- Publishing to PyPI using
poetry
- Installing dependencies with
- Tooling to launch an IPython session with automatic reloading enabled
If you are instead looking for a Python application template, check out one of the sibling projects:
Examples
Here are a few sample projects based on this template:
- jacebrowning/minilog
- theovoss/Chess
- sprout42/StarStruct
- MichiganLabs/flask-gcm
- flask-restful/flask-restful
Usage
Install cookiecutter
and generate a project:
$ pip install cookiecutter
$ cookiecutter gh:jacebrowning/template-python -f
Cookiecutter will ask you for some basic info (your name, project name, python package name, etc.) and generate a base Python project for you.
If you still need to use legacy Python or nose
as the test runner, older versions of this template are available on branches:
$ cookiecutter gh:jacebrowning/template-python -f --checkout=python2
$ cookiecutter gh:jacebrowning/template-python -f --checkout=nose
Updates
Run the update tool, which is generated inside each project:
$ bin/update