Skip to content

Cookiecutter template for a cutting-edge Python package: Hatch, ruff, mypy, GitHub Actions and more!

License

Notifications You must be signed in to change notification settings

Aviksaikat/cookiecutter-hatch-pypackage

Repository files navigation

Cookiecutter Hatch PyPackage

Cookiecutter template for a cutting-edge Python package: Hatch, ruff, mypy, GitHub Actions and more!

Details License - MIT GitHub Sponsors
Features Hatch project linting - Ruff types - mypy test - pytest Github Actions linting - precommit docs - mkdocs

✨ Features

  • Lightweight starter
  • Hatch package management
  • hatch-vcs: determine the package version automatically from git tags, e.g. v0.9
  • Linting and formatting with ruff which replaces isort, flake8, black, etc.
  • Type checking with mypy
  • Check unused, missing and transitive dependencies with deptry
  • Unit tests with pytest with optional asyncio setup.
  • Automate and standardize testing with Hatch-env-matrices
  • Documentation with Material for MkDocs and docstring reference support with mkdocstrings.
  • Ready-to-use GitHub Actions pipelines with dependabot, release-drafter, labeler, publish to PYPI workflows, publish to test PYPI workflows & more.
  • hatch-pip-compile: experimental support for lock-files,
  • pyproject.toml: all package, build and tool configuration in one file,
  • coverage: tool for measuring code coverage of Python programs with pytest integration,
  • pre-commit: pre-commit git hooks that make your life easier,
  • Markdown: instead of reStructuredText, Markdown is used consistently for all text files,
  • EditorConfig: maintain consistent coding styles for multiple developers,
  • src-layout: the actual Python package is kept under a src folder avoiding many common errors.

💫 Quickstart

Generate the project:

This project will use pipx to install hatch in an isolated enviroment. Make sure you have pipx installed before running the following command.

cookiecutter https://github.com/Aviksaikat/cookiecutter-hatch-pypackage

The generator will automatically call hatch env create & git init at the end.

Then, for the GitHub Actions pipelines to work correctly, you should:

  • Enable the GitHub repository in Codecov.
  • Set CODECOV_TOKEN in your GitHub repository secrets. You can find in the Codecov settings of the corresponding project.
  • Enable GitHub Pages using the GitHub Actions source.
  • Option to publish to Test PyPI for testing.
  • Configure the Trusted Publisher method on PyPI: it's a modern and secure method to push your package to PyPI.

With cruft

cruft is a layer above Cookiecutter allowing you to update your project from the template after it has been generated.

cruft create https://github.com/Aviksaikat/cookiecutter-hatch-pypackage

Demo

License

This project is licensed under the terms of the MIT license.