My personal template for Python projects.
- uv dependency management and an
uv_buildpackage backend - A generated
pyproject.tomlwith package metadata, dependency groups, project links, and tool configuration - just recipes for environment setup, checks, tests, coverage, formatting, builds, and documentation
- Code quality checks with ruff, pyrefly, Codespell, Rattle, and pre-commit
- pytest and coverage, with local tests across the selected Python version range
- GitHub Actions workflows for linting, tests, and PyPI publishing
- GitHub repository creation through GitHub CLI
- Read the Docs setup using Sphinx, Furo, MyST, and generated API documentation
- Destination-aware defaults using prior answers, Git configuration, and the detected GitHub identity
- README badges and license selection using choosealicense.com text
- Python 3.12+
- sprout
- Git
- GitHub CLI (optional)
Create a project directly:
sprout new "https://github.com/zigai/python-project-template.git" /path/to/your/projectOr add the template for reuse:
sprout add zigai/python-project-template --name python
sprout new python /path/to/your/projectyour-project/
├── your_package/
│ ├── __init__.py
│ └── py.typed
├── .github/workflows/ # optional selected workflows
├── .python-version # default local Python version
├── .python-versions # local test matrix Python versions
├── .editorconfig
├── .pre-commit-config.yaml
├── pyproject.toml
├── README.md
├── CONTRIBUTING.md
├── docs/ # optional Read the Docs site
├── .readthedocs.yaml # optional Read the Docs config
├── Justfile
├── LICENSE # omitted when no license is selected
└── .gitignore