The template sets up a simple continuous integration-pipeline for Python 3.14.
For every push and pull request, linting, format checking, static type checking, and tests are invoked:
- Ruff: Linting, Formatting
- MyPy: Code checking
- Tests: PyTest (with coverage)
The test summary and coverage are reported as an artifact.
For every push and pull request to the main/master and dev branches, a documentation is built using sphinx and deployed to a respective separate branch "gh-docs-<dev/main/master>".
Deployment to PyPI and TestPyPI is optional (see below).
- Either set up an environment with Python 3.14 or change the respective version strings (Look for regex: "3.?14") where adequate
- On your repository under Settings/Branches, check that merging only passes if all checks from linting, tests, etc. pass
- Replace
myappwith the name of your app on all files andAUTHORwith your name
If you want to enable automatic deployment to PyPI, proceed with the following steps:
- Versioning is performed via setuptools-scm which reads the package versions from metadata, e.g., from your git commits. Please read up on it before issuing a public release on PyPI.
- Set up your PyPI and TestPyPI Trusted Publisher Management publishers.
Note that your project name must match the value you entered in theproject.name-field in thepyproject.toml - Uncomment the respective lines in the .github/workflows/check_and_deploy.yml file.
Once you enable it, the default configuration is to publish to TestPyPI from themain,master, andtesting/deploymentbranches, and to PyPI once you perform a published release on GitHub.
Copyright 2026 Josef Mayr
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.