Skip to content

MultifokalHirn/python_template_repo

Repository files navigation

Tests Coverage GitHub last commit GitHub issues GitHub tag (latest SemVer)

Python Project Template

This is my personal template repository for python projects containing everything needed to start developing.

py3 pdm pytest ruff mypy

pyproject precommit visualstudiocode templates

make ghactions conventionalcommits

Demo

asciicast

Quickstart

git clone https://github.com/MultifokalHirn/python_template_repo.git
cd python_template_repo/

make bootstrap     # sets up virtual environment and installs pdm
make dev           # sets up dev environment and installs dependencies
make ci            # runs formatter, linter, typechecker, and tests

See CONTRIBUTING.md for information on how to setup and contribute to this project.

Features

  • pyproject.toml with pdm as dependency manager
  • Coverage Reporting and automated badge generation
  • Makefile with targets for common tasks like setting up the dev environment, running tests, and formatting code
  • Dev packages configured out of the box (in pyproject.toml)
  • pre-commit hooks in .pre-commit-config.yaml
  • Templates for Issues and PRs on GitHub
  • Github Actions for testing and linting
  • Dependabot config for automated dependency updates
  • Configuration for VSCode in .vscode/

Roadmap

Demo Project

  • create demo project to showcase best practices and features

Improve Documentation

  • document project structure
  • document pyenv
  • expand list of tools I have tried and decided against

Ideas for v2 Release

  • set up tox for testing with multiple python versions
  • set up Dockerfile
  • docker-compose for easy setup of dev environment
  • set up devcontainer
  • set up commitizen
  • set up semantic-release
  • set up github actions for semantic versioning

"Why don't you use X?"

This template is meant to be a starting point for my own projects and may not follow other people's preferred setups.

Depending on the tool of configuration detail, I either actively decided against something or I have not yet tried them.

If you have any suggestions for improvements, or tools to check out, please file an issue.

Tried and Decided Against

  • black - I like configuring stuff
  • flake8 - replaced by ruff
  • autopep8 - replaced by ruff
  • isort - replaced by ruff
  • poetry - using pdm instead because of bad experience with poetry

Currently in Evaluation

  • tox
  • readthedocs

Troubleshooting

In this section, you will find some common issues you might encounter and how to resolve them. If you are experiencing any issues that are not covered here, please file an issue.

I does not work! I tried everything

Well, have you tried turning it off and on again?

License

This project is authored by Lennard Wolf and open sourced under MIT license, see LICENSE for details.

License