Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Python Project Template

Starter template for python projects

Features

  • environment management with Conda
  • project metadata and dependency management with Poetry
  • preconfigured continuous integration tasks
    • code formatting with isort and Black
    • code linting with isort, Black, Flake8, Bandit and Mypy
    • unit tests with pytest
    • pre-commit hooks
    • CICD pipelines with GitHub Actions
  • application
    • logging with standard logging and python-json-logger
    • configuration with standard configparser, python-dotenv and pydantic
    • command line with Typer
    • web service with FastAPI, Uvicorn and Gunicorn
  • deployment with Docker images
    • development image based on python:latest
    • lightweight production image based on python:slim using multi-stage build
  • Make formula for common development tasks
    • install dependencies
    • run continuous integration tasks
    • run application
    • build Docker images

Usage

Clone this repository or use it as a template to generate a new repository.

Update the project name and metadata in pyproject.toml and configs/main.ini.

External dependencies

Create environment

Use Conda to create a virtual environment and activate it for the project.

PROJECT_NAME = python-project-template
PYTHON_VERSION = 3.7

conda create --name $PROJECT_NAME --yes python=$PYTHON_VERSION
conda activate $PROJECT_NAME

Install dependencies

Install Poetry with pip. Then install project dependencies with Poetry.

make deps-install

Use Poetry to add project and development dependencies into pyproject.toml.

NOTE: Poetry must be included as a development dependency to prevent Poetry from uninstalling itself and its dependencies.

# development dependency
poetry add --dev poetry

# project dependency
poetry add pydantic

Tools

You can’t perform that action at this time.