Contents
This is a modern Cookiecutter template that can be used to initiate a Python project with all the necessary tools for development, testing, and deployment. It supports the following features:
- Poetry for dependency management
- CI/CD with GitHub Actions
- Pre-commit hooks with pre-commit
- Code quality with:
- Checks dependencies for known security vulnerabilities with Safety
- All development tasks (lint, format, test, etc) wrapped up in a python CLI by duty
- Publishing to Pypi by creating a new release on GitHub
- Testing and coverage with pytest and codecov
- Documentation with MkDocs
- Compatibility testing for multiple versions of Python with Tox
- Auto-generated
CHANGELOG.md
from git commits (using Angular message style) commitizen - Makefile for convenience
Documentation - Example - PyPi
Install cookiecutter
On your local machine, navigate to the directory in which you want to create a project directory, and run the following commands:pip install cookiecutter
cookiecutter https://github.com/jexio/fulmo-cookiecutter-poetry.git
Github repository
Create a repository on GitHub, and then run the following commands, replacing `{project-name}`, with the name that you gave the Github repository and `{github_username}` with your Github username.cd <project_name>
git init -b main
git add .
git commit -m "Init commit"
git remote add origin git@github.com:<github_username>/<project_name>.git
git push -u origin main
Creating an environment
Finally, install the environment and the pre-commit hooks withmake install
CI/CD and Docs
You are now ready to start development on your project! The CI/CD
pipeline will be triggered when you open a pull request, merge to main,
or when you create a new release.
To finalize the set-up for publishing to PyPi, see here
For activating the automatic documentation with MkDocs, see here
To enable the code coverage reports, see here
This cookiecutter was built for learning purpose and inspired by:
- fedejaure/cookiecutter-modern-pypackage: Cookiecutter template for a modern Python package.
- pawamoy/copier-pdm: Copier template for Python projects managed by PDM.
- fpgmaas/cookiecutter-poetry: This is a modern Cookiecutter template that can be used to initiate a Python project with all the necessary tools for development, testing, and deployment.
- hypermodern-python: Hypermodern Python article series.