Python boilerplate
Project description
Python boilerplate
Table of Contents
Prerequisites
- Python >=3.11 <3.12 (tested with 3.11.5)
- pre-commit
- poetry >=1.2.2 <1.7 (tested with 1.6.1)
- docker (optional)
Installation
-
Clone the git repository
git clone https://github.com/smarlhens/python-boilerplate.git
-
Go into the project directory
cd python-boilerplate/
-
Checkout working branch
git checkout <branch>
-
Enable pre-commit hooks
pre-commit install
What's in the box ?
Poetry
Poetry is a tool for dependency management and packaging in Python. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.
pyproject.toml file (pyproject.toml
): orchestrate your project and its dependencies
poetry.lock file (poetry.lock
): ensure that the package versions are consistent for everyone
working on your project
For more configuration options and details, see the configuration docs.
pre-commit
pre-commit is a framework for managing and maintaining multi-language pre-commit hooks.
.pre-commit-config.yaml file (.pre-commit-config.yaml
): describes what repositories and
hooks are installed
For more configuration options and details, see the configuration docs.
ruff
ruff is an extremely fast Python linter, written in Rust.
Rules are defined in the pyproject.toml
.
For more configuration options and details, see the configuration docs.
mypy
mypy is an optional static type checker for Python that aims to combine the benefits of dynamic (or "duck") typing and static typing.
Rules are defined in the pyproject.toml
.
For more configuration options and details, see the configuration docs.
black
black is an uncompromising code formatter.
Rules are defined in the pyproject.toml
.
For more configuration options and details, see the configuration docs.
bandit
bandit is a tool designed to find common security issues in Python code.
Rules are defined in the pyproject.toml
.
For more configuration options and details, see the configuration docs.
docformatter
docformatter is a tool designed to format docstrings to follow PEP 257.
Options are defined in the .pre-commit-config.yaml
.
Testing
We are using pytest & pytest-cov to write tests.
To run tests:
poetry run pytest tests
Output
collected 1 item
tests/test_myapplication.py::test_hello_world PASSED
To run tests with coverage:
poetry run pytest tests --cov=src
Output
collected 1 item
tests/test_myapplication.py::test_hello_world PASSED
---------- coverage: platform linux, python 3.10.4-final-0 -----------
Name Stmts Miss Cover
---------------------------------------------------
src/myapplication/__init__.py 1 0 100%
src/myapplication/main.py 6 2 67%
---------------------------------------------------
TOTAL 7 2 71%
Docker
Build
To build the docker production
image using Dockerfile
:
docker build . -t my-python-application:latest
To build the docker development
image using Dockerfile
:
docker build . --target development -t my-python-application:dev
Run
To run the python app example inside Docker:
docker run -it --rm my-python-application:latest # or :dev for development
Output
Hello World
Execute command inside container
docker run -it --rm my-python-application:latest bash
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for python_boilerplate123123-0.1.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0e3cc11ab49ff8ca1a6836b65500e241d360441c8b5dd6c328155c41039a85a |
|
MD5 | bbb79a4551e02d23f94db858fe3ec1a9 |
|
BLAKE2b-256 | ba122d7ca70397d169a7433af7b49d3a3b25794049a6f406912d05827847ee6b |
Hashes for python_boilerplate123123-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5af2d88dae9b5367229dfba0009b62465a7bdd58c25fab54dfa7ad55e12881f |
|
MD5 | be94f63add5bb28600a3070757f4d27a |
|
BLAKE2b-256 | 4588e9808deb6f6f62e1b096a5980fda492c443a294d19ddb664678d5990ba12 |