72 lines
3.0 KiB
Markdown
72 lines
3.0 KiB
Markdown
|
|
# Python Project Template
|
|
|
|
A low dependency and really simple to start project template for Python Projects.
|
|
|
|
See also
|
|
- [Flask-Project-Template](https://git.disi.dev/Templates/Flask/) for a full feature Flask project including database, API, admin interface, etc.
|
|
|
|
### HOW TO USE THIS TEMPLATE
|
|
|
|
1. 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.)
|
|
2. Wait until the first run of CI finishes (Gitea Actions will process the template and commit to your new repo)
|
|
3. If you want Automatic Release to [PyPI](https://pypi.org)
|
|
On the new repository `settings->secrets` add your `PYPI_API_TOKEN` (get the tokens on PyPI website)
|
|
4. Read the file [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
5. 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](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 run `make switch-to-poetry` later if you want.
|
|
- 🤖 A [Makefile](Makefile) with the most useful commands to install, test, lint, format and release your project.
|
|
- 📃 Documentation structure using [mkdocs](http://www.mkdocs.org)
|
|
- 💬 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](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](https://docs.pytest.org/en/latest/)
|
|
- ✅ Code linting using [flake8](https://flake8.pycqa.org/en/latest/)
|
|
- 🛳️ Automatic release to [PyPI](https://pypi.org) using [twine](https://twine.readthedocs.io/en/latest/) 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](.gitea/workflows/) 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](ABOUT_THIS_TEMPLATE.md)
|
|
|
|
<!-- DELETE THE LINES ABOVE THIS AND WRITE YOUR PROJECT README BELOW -->
|
|
|
|
---
|
|
# project_name
|
|
|
|
project_description
|
|
|
|
## Install it from PyPI
|
|
|
|
```bash
|
|
pip install project_name
|
|
```
|
|
|
|
## Usage
|
|
|
|
```py
|
|
from project_name import BaseClass
|
|
from project_name import base_function
|
|
|
|
BaseClass().base_method()
|
|
base_function()
|
|
```
|
|
|
|
```bash
|
|
$ python -m project_name
|
|
#or
|
|
$ project_name
|
|
```
|
|
|
|
## Development
|
|
|
|
Read the [CONTRIBUTING.md](CONTRIBUTING.md) file.
|