SnakeForge, the opinionated Python template that gives you what you need, and no more.
GitHubhosted repo and CI/CD workflows foruvmanaged dependencies and virtual environment- Strict
Rufflinting and formatting - Static type testing with
ty, yes we love astral pre-commit hookschecking all this- GitHub Actions CI/CD workflows
- Versioning with
Commitizen - Dynamic project metadata with
hatchandhatchlingbuild backend Markdowndocumentation inspired by FastAPI and Typer
You will need accounts on:
- GitHub to host your repository
- PyPI to publish your project
- CodeCov to check your project's tests and coverage
Make sure the following dependencies are installed:
- Python>=3.12
- Copier with copier_templates_extensions
- Git
- GitHub CLI (gh)
- uv
-
Install the requirement
You can verify all required tools are correctly installed by running:
copier --version git --version gh --version uv --version
-
Generate the Python project
We use Jinja extensions and tasks, so you need to run the command with the
--trustflag.Check tasks and extensions to make sure you trust the repository.
copier copy --trust gh:Kajiih/SnakeForge <path_to_project>
-
Finish the project setup
Follow the instructions displayed at the end of the generation process to enable all features.
💡 Your CI/CD workflow will probably fail until you setup everything correctly and remove the code samples to improve code coverage.
-
Start coding your awesome project!
💡 Most of the time, if you want to update something that depends on an answer from the template (e.g., min python version, project description, etc), you better update the template with the new value so that it changes the value everywhere automatically.
Check how to use specific features in docs.
If you use this template often, try using copier settings to save time during the setup!
In your project's repository, run:
copier update --trust- add license classifiers in
pyproject.tom - Replace
hatchwithuv(when the build backend is feature complete) - use
tyas type checker, yes we love astral.sh stuff..! - use devcontainer
- issue template
- docker setup
- app vs package
- typedsettings and cyclopts with examples
- Changelog
- Add proper testing with this
- Add profiles like this
- Update messages
- code embbedder and print result embedder in precommit hook
- Replace plain tasks by some more practical task runner (invoke, etc)
- Publish github workflow
- Fix codecov test analytics not appearing: issue
- Documentation
- Add analytics
- Add versioning
- (maybe) Add Social cards
Based on
- https://github.com/serious-scaffold/ss-python/tree/main
- https://github.com/audreyfeldroy/cookiecutter-pypackage
- https://github.com/DiamondLightSource/python-copier-template
- https://github.com/pawamoy/copier-uv
- https://github.com/superlinear-ai/substrate
- https://github.com/Tecnativa/doodba-copier-template
- https://github.com/NLeSC/python-template
- https://github.com/browniebroke/pypackage-template