cookiecutter gh:a1d4r/python-project-template --checkout mainIn this cookiecutter 🍪 template we combine state-of-the-art libraries and best development practices for Python.
- Supports Python 3.9 - 3.13
- uvas a package manager.
- Automatic codestyle with ruff formatter
- Linting with ruff
- Type checks with mypy, security checks withsafety.
- Dependencies check with deptry
- Testing with pytestandcoverage.
- Ready-to-use pre-commithooks with code-formatting.
- Ready-to-use .editorconfig,.dockerignore, and.gitignore.
- Github Actionswith linters and tests in the workflow.
- Gitlab CIwith linters and tests in the pipeline. Click here for a detailed overview.
- Ready-to-use Makefilewith formatting, linting, and testing. More details in makefile-usage.
- Dockerfile for your package.
- docker-compose.yml for local development in Docker.
To begin using the template consider updating cookiecutter
pip install -U cookiecutterthen go to a directory where you want to create your project and run:
cookiecutter gh:a1d4r/python-project-template --checkout mainTemplate generator will ask you to fill some variables.
The input variables, with their default values:
| Parameter | Default value | Description | 
|---|---|---|
| project_name | python-project | Check the availability of possible name before creating the project. | 
| package_name | based on the project_name | Name of the python package with source code | 
| git_platform | github | Git platform (Github/Gitlab) | 
| username | username | User or organization name for Git platform | 
| git_repo_url | based on git_platform,project_nameandusername | URL to the git repository | 
| python_version | 3.9 | Python version. One of 3.9,3.10,3.11,3.12,3.13. It is used for builds, CI and formatters. | 
| line_length | 88 | The max length per line. Must be between 50 and 300. | 
| install_pydantic | true | If pydanticwithmypyplugin should be installed | 
All input values will be saved in the cookiecutter-config-file.yml file so that you won't lose them. 😉
Your project will contain README.md file with instructions for development, deployment, etc. You can
read the project README.md template
before.
By running make install
After you create a project, it will appear in your directory, and will display a message about how to initialize the project.
By running make pre-commit-install. Make sure to set up git first via git init.
Makefile
contains a lot of functions
for faster development.
1. Download uv
To download and install uv run:
make uv-install2. Install all dependencies and pre-commit hooks
Install requirements:
make installPre-commit hooks coulb be installed after git init via
make pre-commit-install3. Codestyle
Automatic formatting uses ruff formatter
make codestyle
# or use synonym
make formatCodestyle checks only, without rewriting files:
make check-codestyleUpdate all libraries to the latest version using one command
make update4. Code security
This command identifies security issues with Safety
make check-safety5. Type checks
Run mypy static type checker
make mypy6. Tests with coverage
Run pytest
make test7. All linters
Of course there is a command to rule run all linters in one:
make lint8. Docker
Run with docker compose
make docker-up9. Cleanup
Delete cache and build files:
make cleanupThis template was initially forked from the following template: