Skip to content

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

License

Notifications You must be signed in to change notification settings

lukin0110/poetry-copier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.4.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