Cookiecutter template for a Python package, built with popular develop tools and conform to best practice.
- Documentation: https://waynerv.github.io/cookiecutter-pypackage
This tool will create Python project with the following features:
- Poetry: Manage dependency, build and release
- Mkdocs: Writing your docs in markdown style, alternative to Sphinx
- Sphinx: Writing your docs in RST style, alternative to Mkdocs
- Testing with Pytest (unittest is still supported out of the box)
- Code coverage report and endorsed by Codecov
- Tox: Test your code against environment matrix, lint and artifact check ; slightly moving to nox
- Format with Black and Isort
- Lint code with Flake8 and Flake8-docstrings
- Lint YAML files with yamllint
- Lint python files with pylint
- Documentation linter darglint
- Security oriented linter bandit
- Misspelling linter codespell
- Check static type with Mypy (optional)
- Pre-commit hooks: Formatting/linting anytime when commit your code
- Mkdocstrings: Auto API doc generation
- Command line interface using Click (optional)
- commitizen: Pre-configured version bumping with a single command
- Continuous Integration/Deployment by GitHub actions, includes:
- publish dev build/official release to TestPyPI/PyPI automatically when CI success
- publish documents automatically when CI success
- extract changelog from CHANGELOG and integrate with release notes automatically
- Host your documentation from GitHub Pages with zero-config
- Nox to automate environment in place of tox
Install the latest Cookiecutter if you haven't installed it yet (this requires Cookiecutter 1.4.0 or higher):
pip install -U cookiecutter
Generate a Python package project:
cookiecutter https://github.com/gpongelli/cookiecutter-pypackage.git
Then follow Tutorial to finish other configurations.
This repo is forked from waynerv/cookiecutter-pypackage, forked from zillionare/python-project-wizard, which originally forked from audreyfeldroy/cookiecutter-pypackage