78 lines
3.7 KiB
Markdown
78 lines
3.7 KiB
Markdown
|
|
# Python Project Template
|
|
|
|
A low dependency and really simple to start project template for Python Projects.
|
|
|
|
See also
|
|
- [Flask-Project-Template](https://github.com/rochacbruno/flask-project-template/) for a full feature Flask project including database, API, admin interface, etc.
|
|
- [FastAPI-Project-Template](https://github.com/rochacbruno/fastapi-project-template/) The base to start an openapi project featuring: SQLModel, Typer, FastAPI, JWT Token Auth, Interactive Shell, Management Commands.
|
|
|
|
### HOW TO USE THIS TEMPLATE
|
|
|
|
1. Choose a name for your project
|
|
(e.g. `my_awesome_project` recommendation is to use all lowercase and underscores separation for repo names.)
|
|
2. Replace all text instances of "project_name" in this repo with your new name
|
|
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 github actions before cloning your new project.
|
|
|
|
### What is included on this template?
|
|
|
|
- 🖼️ Templates for starting multiple application types:
|
|
* **Basic low dependency** Python program (default) [use this template](https://github.com/rochacbruno/python-project-template/generate)
|
|
* **Flask** with database, admin interface, restapi and authentication [use this template](https://github.com/rochacbruno/flask-project-template/generate).
|
|
**or 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 github actions.
|
|
- 🎯 Entry points to execute your program using `python -m <project_name>` or `$ project_name` with basic CLI argument parsing.
|
|
- 🔄 Continuous integration using [Github 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)
|
|
> If you want to contribute to this template please open an [issue](https://github.com/rochacbruno/python-project-template/issues) or fork and send a PULL REQUEST.
|
|
|
|
[❤️ Sponsor this project](https://github.com/sponsors/rochacbruno/)
|
|
|
|
<!-- 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.
|