# 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 [codecov](https://about.codecov.io/sign-up/) Reports and Automatic Release to [PyPI](https://pypi.org) On the new repository `settings->secrets` add your `PYPI_API_TOKEN` and `CODECOV_TOKEN` (get the tokens on respective websites) 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/) - ๐Ÿ“Š Code coverage reports using [codecov](https://about.codecov.io/sign-up/) - ๐Ÿ›ณ๏ธ 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 ` 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/) --- # project_name [![codecov](https://codecov.io/gh/author_name/project_urlname/branch/main/graph/badge.svg?token=project_urlname_token_here)](https://codecov.io/gh/author_name/project_urlname) [![CI](https://github.com/author_name/project_urlname/actions/workflows/main.yml/badge.svg)](https://github.com/author_name/project_urlname/actions/workflows/main.yml) 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.