Overview
Contents
- Features
- Quick start
- Credits
Features¶
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:
- black
- isort
- ruff
- mypy
- interrogate
- 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
Quickstart¶
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](https://jexio.github.io/fulmo-cookiecutter-poetry/features/publishing/#set-up-for-pypi/)
For activating the automatic documentation with MkDocs, see [here](https://jexio.github.io/fulmo-cookiecutter-poetry/features/mkdocs/#enabling-the-documentation-on-github/)
To enable the code coverage reports, see [here](https://jexio.github.io/fulmo-cookiecutter-poetry/features/codecov/)
Credits¶
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.