fulmo-cookiecutter-poetry 0.4.2
A python cookiecutter application to create a new python project that uses poetry to manage its dependencies.
License: MIT
Requires Python: >=3.10,<4.0

<p align="center">
  <img width="100" src="https://raw.githubusercontent.com/jexio/fulmo-cookiecutter-poetry/main/docs/static/cookiecutter.svg">
</p style = "margin-bottom: 2rem;">

---

[![Release](https://img.shields.io/github/v/release/jexio/fulmo-cookiecutter-poetry)](https://pypi.org/project/fulmo-cookiecutter-poetry/)
[![Build status](https://img.shields.io/github/actions/workflow/status/jexio/fulmo-cookiecutter-poetry/main.yml?branch=main)](https://github.com/jexio/fulmo-cookiecutter-poetry/actions/workflows/main.yml?query=branch%3Amain)
[![Supported Python versions](https://img.shields.io/pypi/pyversions/fulmo-cookiecutter-poetry)](https://pypi.org/project/fulmo-cookiecutter-poetry/)
[![Documentation Coverage](https://raw.githubusercontent.com/jexio/fulmo-cookiecutter-poetry/main/docs/static/interrogate_badge.svg)](https://interrogate.readthedocs.io/)
[![Maintainability Index](https://raw.githubusercontent.com/jexio/fulmo-cookiecutter-poetry/main/docs/static/wily_badge.svg)](https://wily.readthedocs.io/en/latest/)
[![Docs](https://img.shields.io/badge/docs-gh--pages-blue)](https://jexio.github.io/fulmo-cookiecutter-poetry/)
[![License](https://img.shields.io/github/license/jexio/fulmo-cookiecutter-poetry)](https://img.shields.io/github/license/jexio/fulmo-cookiecutter-poetry)

**Contents**
- [Features](#features)
- [Quick start](#quickstart)
- [Credits](#credits)
<br>

## 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](https://python-poetry.org/) for dependency management
- CI/CD with [GitHub Actions](https://github.com/features/actions/)
- Pre-commit hooks with [pre-commit](https://pre-commit.com/)
- Code quality with:
  - [black](https://pypi.org/project/black/)
  - [isort](https://github.com/timothycrosley/isort/)
  - [ruff](https://github.com/charliermarsh/ruff/)
  - [mypy](https://mypy.readthedocs.io/en/stable/)
  - [interrogate](https://interrogate.readthedocs.io/en/latest/)
- Checks dependencies for known security vulnerabilities with [Safety](https://github.com/pyupio/safety/)
- All development tasks (lint, format, test, etc) wrapped up in a python CLI by [duty](https://pawamoy.github.io/duty/)
- Publishing to [Pypi](https://pypi.org) by creating a new release on GitHub
- Testing and coverage with [pytest](https://docs.pytest.org/en/7.1.x/) and [codecov](https://about.codecov.io/)
- Documentation with [MkDocs](https://www.mkdocs.org/)
- Compatibility testing for multiple versions of Python with [Tox](https://tox.wiki/en/latest/)
- Auto-generated `CHANGELOG.md` from git commits (using Angular message style) [commitizen](https://commitizen-tools.github.io/commitizen/)
- Makefile for convenience

---
<p align="center">
  <a href="https://jexio.github.io/fulmo-cookiecutter-poetry/">Documentation</a> - <a href="https://github.com/jexio/fulmo-cookiecutter-poetry-example">Example</a> -
  <a href="https://pypi.org/project/fulmo-cookiecutter-poetry/">PyPi</a>
</p>

---


## Quickstart

<details>
<summary><b>Install cookiecutter</b></summary>
On your local machine, navigate to the directory in which you want to
create a project directory, and run the following commands:

``` bash
pip install cookiecutter
cookiecutter https://github.com/jexio/fulmo-cookiecutter-poetry.git
```
</details>

<details>
<summary><b>Github repository</b></summary>
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.

``` bash
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
```
</details>

<details>
<summary><b>Creating an environment</b></summary>
Finally, install the environment and the pre-commit hooks with

 ```bash
 make install
 ```
</details>


<details>
<summary><b>CI/CD and Docs</b></summary>

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.
<br>
To finalize the set-up for publishing to PyPi, see [here](https://jexio.github.io/fulmo-cookiecutter-poetry/features/publishing/#set-up-for-pypi/)
<br>
For activating the automatic documentation with MkDocs, see [here](https://jexio.github.io/fulmo-cookiecutter-poetry/features/mkdocs/#enabling-the-documentation-on-github/)
<br>
To enable the code coverage reports, see [here](https://jexio.github.io/fulmo-cookiecutter-poetry/features/codecov/)
</details>

## Credits

This cookiecutter was built for learning purpose and inspired by:

* [fedejaure/cookiecutter-modern-pypackage][fedejaure/cookiecutter-modern-pypackage]: Cookiecutter template for a modern Python package.
* [pawamoy/copier-pdm][pawamoy/copier-pdm]: Copier template for Python projects managed by PDM.
* [fpgmaas/cookiecutter-poetry][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]: Hypermodern Python article series.


[fedejaure/cookiecutter-modern-pypackage]: https://github.com/fedejaure/cookiecutter-modern-pypackage
[pawamoy/copier-pdm]: https://github.com/pawamoy/copier-pdm
[fpgmaas/cookiecutter-poetry]: https://github.com/fpgmaas/cookiecutter-poetry
[hypermodern-python]: https://cjolowicz.github.io/posts/hypermodern-python-01-setup/