https://github.com/bosd/uv-forge
A Copier template for forging modern, opinionated Python projects (uv, Ruff, mypy/ty, nox, hardened CI).
https://github.com/bosd/uv-forge
cookiecutter-template copier copier-template hypermodern mypyc project-template python ruff template tox ty uv zizmor
Last synced: 7 days ago
JSON representation
A Copier template for forging modern, opinionated Python projects (uv, Ruff, mypy/ty, nox, hardened CI).
- Host: GitHub
- URL: https://github.com/bosd/uv-forge
- Owner: bosd
- License: mit
- Created: 2026-05-22T08:18:22.000Z (21 days ago)
- Default Branch: main
- Last Pushed: 2026-05-22T15:46:08.000Z (20 days ago)
- Last Synced: 2026-05-22T16:08:17.345Z (20 days ago)
- Topics: cookiecutter-template, copier, copier-template, hypermodern, mypyc, project-template, python, ruff, template, tox, ty, uv, zizmor
- Language: Jinja
- Homepage: https://uv-forge.readthedocs.io/en/latest/index.html
- Size: 2 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
# uv-forge
[](https://uv-forge.readthedocs.io/en/latest/?badge=latest)
[](https://github.com/bosd/uv-forge/actions/workflows/ci.yml)
[](https://github.com/bosd/uv-forge/blob/main/LICENSE)
A [Copier] template for forging modern, opinionated Python projects at high speed —
[uv] for everything, [Ruff], strict [mypy] (plus [ty]), [nox], 100% coverage, and a
hardened, SHA-pinned GitHub Actions setup with SLSA build provenance.
> Successor to [cookiecutter-uv-hypermodern-python][cc]. Unlike cookiecutter, Copier supports
> in-place updates (`copier update`), so generated projects can pull in template improvements later.
## Usage
```console
uvx --with jinja2-time copier copy --trust gh:bosd/uv-forge path/to/your-project
```
`jinja2-time` is needed for the `copyright_year` default; `--trust` is required because the template
uses a Jinja extension.
### Update an existing project
```console
cd your-project
uvx --with jinja2-time copier update --trust
```
## Options
| Question | Choices | Default | Effect |
| ----------- | ----------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `extension` | `none`, `mypyc` | `none` | `none` → pure-Python (hatchling). `mypyc` → compiled wheels (setuptools + mypyc + cibuildwheel). _(Rust/PyO3 planned.)_ |
| `docs_host` | `readthedocs`, `github-pages` | `readthedocs` | Read the Docs config, or a GitHub Pages build+deploy workflow. |
| `license` | MIT, Apache-2.0, GPL-3.0 | MIT | Project license. |
Plus the usual `project_name`, `package_name`, `author`, `email`, `github_user`, `version`,
`development_status`.
## What you get
- **uv** project management, **Ruff** lint+format, **mypy --strict**, **ty** (secondary), **pydoclint**.
- **nox** sessions (tests, mypy, ty, typeguard, xdoctest, docs); **pytest** with xdist + randomly; 100% coverage gate.
- **Sphinx** docs (shibuya theme) + a **non-blocking, weekly** link checker.
- **Hardened CI**: every action SHA-pinned, least-privilege permissions, `persist-credentials: false`,
**zizmor** + **actionlint** pre-commit hooks.
- **Release**: trusted PyPI publishing (OIDC), Sigstore signing, and SLSA build-provenance attestations.
## Origins
uv-forge is an ultramodern evolution of the **Hypermodern Python** lineage:
- [Hypermodern Python][hmp article] — Claudio Jolowicz's article series that defined the approach,
and its template [cjolowicz/cookiecutter-hypermodern-python][hmp].
- [bosd/cookiecutter-uv-hypermodern-python][cc] — a fork that moved the stack to **uv**.
- **uv-forge** — the maintained **Copier** successor: the same quality-first philosophy with the
modern Astral toolchain (uv, Ruff, ty), in-place `copier update`, and hardened CI.
Thanks to Claudio Jolowicz and the hypermodern-python community.
## License
MIT
[copier]: https://copier.readthedocs.io/
[uv]: https://docs.astral.sh/uv/
[ruff]: https://docs.astral.sh/ruff/
[mypy]: https://mypy.readthedocs.io/
[ty]: https://github.com/astral-sh/ty
[nox]: https://nox.thea.codes/
[cc]: https://github.com/bosd/cookiecutter-uv-hypermodern-python
[hmp]: https://github.com/cjolowicz/cookiecutter-hypermodern-python
[hmp article]: https://blog.claudiojolowicz.com/posts/hypermodern-python-01-setup/