Welcome to python-template-project#
A feature-rich Python project template with auto-generated CLI, GUI and parameterized configuration.
This template provides a solid foundation for your next Python project, incorporating best practices for testing, automation, and distribution. It streamlines the development process with a comprehensive set of pre-configured tools and workflows, allowing you to focus on writing code.
How to use this template#
Getting started on developing your own project based on this template
DO NOT FORK This project is meant to be used from Use this template feature.
-
Create a new repository using GitHub template
Click on Use this template. -
Give a name to your project
For example:my-python-project
(Hyphens may be used as project name; they are converted during renaming internally to underscores for packages.) -
Set write permissions
Go to:Repository -> Settings -> Actions -> General -> Workflow permissions
Select:Read and write permissions, then click Save. -
Trigger rename workflow
Navigate toActionstab โ Select Rename Action โ Run workflow on themainbranch. -
Wait for the workflow to finish
-
Clone the repository
Run:
bash git clone [your-github-url] -
Open the project in your IDE
-
Install dependencies and create virtual environment Run:
bash
make install
-
Configure your IDE Set
.venvas the local Python virtual environment. -
Adjust project metadata Modify
pyproject.toml(e.g., project description, authors, license, etc.) -
Clean up template scripts Delete the files:
rename_project.ymlrename_project.sh
-
Format your codebase Run:
bash make fmtThis will auto-format your files and reorder imports (based on any name changes).
-
Enable pre-commit hooks Run:
bash uv run pre-commit install -
Add repository to ReadTheDocs Visit: https://app.readthedocs.org/dashboard/import/
-
Configure PyPI publishing
- Generate a PyPI API token from your PyPI account.
- Go to GitHub โ Settings โ Secrets and variables โ Actions.
- Add the secret as
PYPI_API_TOKEN.
-
Release your first version Run:
bash make release
Feature overview#
- ๐ฆ Package Management: Utilizes uv, an extremely fast Python package manager, with dependencies managed in
pyproject.toml. - โ Code Formatting and Linting: Pre-commit hook with the RUFF auto-formatter to ensure consistent code style.
- ๐งช Testing: Unit testing framework with pytest.
- ๐ Code coverage reports using codecov
- ๐ CI/CD: GitHub Actions for automated builds (Windows, macOS), unit tests, and code checks.
- ๐พ Automated Builds: GitHub pipeline for automatically building a Windows executable and a macOS installer.
- ๐ฌ Parameter-Driven Automation:
- Automatic generation of a configuration file from parameter definitions.
- Automatic generation of a Command-Line Interface (CLI) from the same parameters.
- Automatic generation of CLI API documentation.
- Automatic generation of change log using gitchangelog to keep a HISTORY.md file up to date.
- ๐ Documentation: Configuration for publishing documentation on Read the Docs using mkdocs .
- ๐ผ๏ธ Minimalist GUI: Comes with a basic GUI based on tkinker that includes an auto-generated settings menu based on your defined parameters.
- ๐ฅ๏ธ Workflow Automation: A
Makefileis included to simplify and automate common development tasks. - ๐ณ๏ธ Release pipeline: Automated releases unsing the Makefile
make releasecommand, which creates a new tag and pushes it to the remote repo. Thereleasepipeline will automatically create a new release on GitHub and trigger a release on [PyPI](https://pypi.org.- setuptools is used to package the project and manage dependencies.
- setuptools-scm is used to automatically generate the
_version.pyfile from thepyproject.tomlfile.
Installation#
Get an impression of how your own project could be installed and look like.
Download from PyPI.
๐พ For more installation options see install.
pip install python-template-project
Run GUI from command line
python-template-project-gui
Run application from command line using CLI
python -m python_template_project.cli [OPTIONS] path/to/file
python-template-project-cli [OPTIONS] path/to/file
Troubleshooting#
Problems with release pipeline#
If you get this error below:
/home/runner/work/_temp/xxxx_xxx.sh: line 1: .github/release_message.sh: Permission denied
You have to run these commands in your IDE Terminal or the git bash and then push the changes.
git update-index --chmod=+x ./.github/release_message.sh