This is my modern python boilerplate. The goal is to provide a good starting point to develop new python project with most up-to-date tooling, structure and good practices.
Creator and Maintainer: Corentin Meyer, PhD in Biomedical AI [email protected]
This project use UV and Make, they should be installed.
A global Makefile to run all the commands. You can run make help to see all the available commands.
- Python Management
- UV for python version management
.python-version - UV for dependency management
pyproject.toml - src/package structure
- Usage of Project Script to directly call the package like
$ modern_python_boilerplate
- UV for python version management
- Continuous Integration
make allci- Ruff for linting
make check - Ruff for formatting
make format - Ty for type checking
make type - Pytest for testing
make test - Pytest-cov for testing coverage
make cov - Pre-commit hooks to make some checks and formatting code before commits
make commit
- Ruff for linting
- Documentation
- Mkdocs for documentation building with Markdown
make doc - Automatic build of the API Reference page
- Pre-configured GitHub Action / Gitlab CI for publishing the documentation on Github pages / Gitlab page
- Mkdocs for documentation building with Markdown
- Running, Publishing and Deploying
- Build the pacakge with UV
make build - Publish to PyPi with Twine
make publish - Dockerfile to run in a container
make dockerbuildandmake dockerrun - DevContainer pre-configured.
.devcontainer/devcontainer.json, working with PyCharm
- Build the pacakge with UV
- Delete this README.md to replace by you package one.
- Replace all occurrence of
modern_python_boilerplateandmodern-python-boilerplateandModernPythonBoilerplateby your pacakge name. Including folder names in src/. - Get familiar with
make help, it will show you all the available commands.
This is my package. It does some cool stuff.
From PyPi: pip install my_package
From source: pip install -e .
Example 1: my_package --help
Creator and Maintainer: [Your Name, Your Title](your website) [email protected]