lukin0110 / poetry-copier

A copier template for scaffolding Python packages and apps (FastAPI and Gradio) using Poetry as package manager

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

License: GNU Affero General Public License v3.0 CI GitHub Repo stars

Poetry Copier

A copier template for scaffolding Python packages and apps (FastAPI and Gradio) using Poetry as package manager and Development Containers as reproducible development environment.

This template is a loose port of the Radix Poetry Cookiecutter and comes with the same LICENSE.

πŸ’» Demo

Check out the following demos for examples of scaffolded projects using this template:

πŸŽ‰ Features

πŸš€ Using

  1. Install the latest copier in your Python environment (please use python>=3.8):
    pip install "copier>=9.2.0"
  2. Create a new repository and clone it locally.
  3. Run copier in your cloned directory:
    copier copy --vcs-ref=v0.3.1 git@github.com:lukin0110/poetry-copier.git .

Updating a project

copier update --vcs-ref=HEAD --defaults

More information on how to update a project and resolve conflicts can be found in the Copier documentation.

πŸ’­ Rationale

This template aims to provide a minimal, but fully functional, project structure for any python project. Focus on what matters: coding!

Setting up a project can be tedious and requires a lot of "plumbing" to get CI/CD right, to get pyproject.toml right, to get the Dockerfile right, etc.

The use of Docker in conjunction with Development Containers are key in this template to provide a smooth development experience. It's possible to develop without a Development Container and use Poetry with virtual environments straight away, however this template is optimized to provide a working development environment with development containers.

Note

This template is not a good fit if you don't want to work with Docker and/or Development Containers.

🎯 Goals

  • Reduce project setup
  • Provide dev/prod parity
  • IDE idependent. However, with a strong focus on VSCode since it integrates nicely with GitHub, Development Containers and GitHub Copilot
  • Provide a minimal workable setup
  • Don't enforce application or package architecture
  • Include the usual suspects of every project: CI/CD, linting, testing, package manager, development container, etc

πŸ‘·πŸΌ Troubleshooting: docs/troubleshooting.md

🎨 Technical design: docs/design.md

πŸ› οΈ Open an issue if you have any questions or suggestions

About

A copier template for scaffolding Python packages and apps (FastAPI and Gradio) using Poetry as package manager

License:GNU Affero General Public License v3.0


Languages

Language:Jinja 57.3%Language:Python 41.7%Language:Dockerfile 1.0%