Python project template
.gitea | ||
docs | ||
project_name | ||
tests | ||
.gitignore | ||
ABOUT_THIS_TEMPLATE.md | ||
Containerfile | ||
CONTRIBUTING.md | ||
HISTORY.md | ||
LICENSE | ||
Makefile | ||
MANIFEST.in | ||
mkdocs.yml | ||
README.md | ||
requirements-test.txt | ||
requirements.txt | ||
setup.py |
Python Project Template
A low dependency and really simple to start project template for Python Projects.
See also
- Flask-Project-Template for a full feature Flask project including database, API, admin interface, etc.
HOW TO USE THIS TEMPLATE
- Create a new repository from this template and choose a name for your project
(e.g.
my_awesome_project
- recommendation is to use all lowercase and underscores separation for repo names.) - Wait until the first run of CI finishes (Gitea Actions will process the template and commit to your new repo)
- If you want Automatic Release to PyPI
On the new repositorysettings->secrets
add yourPYPI_API_TOKEN
(get the tokens on PyPI website) - Read the file CONTRIBUTING.md
- Then clone your new project and happy coding!
Note
: WAIT until first CI run on gitea actions before cloning your new project.
What is included on this template?
- 🖼️ Templates for starting multiple application types:
Run
make init
after cloning to generate a new project based on a template. - 📦 A basic setup.py file to provide installation, packaging and distribution for your project.
Template uses setuptools because it's the de-facto standard for Python packages, you can runmake switch-to-poetry
later if you want. - 🤖 A Makefile with the most useful commands to install, test, lint, format and release your project.
- 📃 Documentation structure using mkdocs
- 💬 Auto generation of change log using gitchangelog to keep a HISTORY.md file automatically based on your commit history on every release.
- 🐋 A simple Containerfile to build a container image for your project.
Containerfile
is a more open standard for building container images than Dockerfile, you can use buildah or docker with this file. - 🧪 Testing structure using pytest
- ✅ Code linting using flake8
- 🛳️ Automatic release to PyPI using twine and gitea actions.
- 🎯 Entry points to execute your program using
python -m <project_name>
or$ project_name
with basic CLI argument parsing. - 🔄 Continuous integration using Gitea Actions with jobs to lint, test and release your project on Linux, Mac and Windows environments.
Curious about architectural decisions on this template? read ABOUT_THIS_TEMPLATE.md
project_name
project_description
Install it from PyPI
pip install project_name
Usage
from project_name import BaseClass
from project_name import base_function
BaseClass().base_method()
base_function()
$ python -m project_name
#or
$ project_name
Development
Read the CONTRIBUTING.md file.