/cookiecutter-modern-pypackage

Cookiecutter ๐Ÿช template for a modern Python package ๐Ÿ๐Ÿ“ฆ.

Primary LanguagePythonMIT LicenseMIT

Cookiecutter Modern PyPackage ๐Ÿ๐Ÿ“ฆ

GitHub release (latest SemVer) Python Version Tests Read the Docs License

Black pre-commit Contributor Covenant

Cookiecutter ๐Ÿช template for a modern Python package ๐Ÿ๐Ÿ“ฆ.

๐Ÿš€ Features

  • Dependency tracking: ๐Ÿ“ฆ Utilizes Poetry for efficient package management.
  • Testing setup: ๐Ÿงช Includes Pytest for comprehensive and reliable testing.
  • Continuous Integration: ๐Ÿ”„ Github Actions integration for seamless CI testing.
  • Linting: ๐Ÿงน Enhanced code quality with Ruff.
  • Docstring: ๐Ÿ“š Follows the Google Python Style Guide for clear and consistent documentation.
  • Static type checking: ๐Ÿ” Ensured by Mypy.
  • Formatting: โœจ Consistent code formatting with Black and Isort.
  • Security checks: ๐Ÿ” Uses Safety to identify and address known vulnerabilities.
  • Git hooks: ๐ŸŽฃ Managed by pre-commit for streamlined development workflows.
  • Development tasks CLI: ๐Ÿ› ๏ธ All-in-one Python CLI provided by invoke.
  • Multiple Python environments testing: ๐Ÿฅ Supported by Nox.
  • Documentation: ๐Ÿ“– Utilizes Sphinx for clear and comprehensive documentation, ready for Read the Docs.
  • Command line interface: ๐Ÿ’ป Optional integration with Typer.
  • Automated dependency updates: ๐Ÿค– Enabled by Dependabot.
  • Coverage reports: ๐Ÿ“Š Integrated with Codecov.
  • Automated releases: ๐Ÿšข Push a new tag to trigger releases to PyPI and TestPyPI.
  • GitHub community health files (optional):

โšก๏ธ Quickstart

Get started with your modern Python package in just a few steps:

1. Install Cookiecutter

If you haven't installed Cookiecutter yet, make sure to have version 1.4.0 or higher:

pip install -U cookiecutter

2. Generate your Python Package

Run Cookiecutter using the latest release

cookiecutter gh:fedejaure/cookiecutter-modern-pypackage --checkout v3.0.1

3. Set up Your Project

Follow these steps to complete the setup:

  • Create a new GitHub repository and push your generated project there.

  • Install the development requirements into a virtual environment:

    poetry install
  • Install pre-commit hooks:

    poetry run inv install-hooks
  • Configure Codecov repository settings. (Codecov App, CODECOV_TOKEN)

  • Add your repository to your Read the Docs account and enable the Read the Docs service hook.

  • Configure PyPI and TestPyPI tokens. (PYPI_TOKEN, TEST_PYPI_TOKEN)

  • Release your package by pushing a new tag.

Tip

For more details, see the tutorial.

๐Ÿ“ Credits

This cookiecutter was built for learning purpose and inspired by: