A simple Python project template using uv for dependency management.
Install the pinned toolchain, then the project tools and dependencies:
proto use # installs every toolchain pinned in .prototools
task install_tools # project tools + dependencies + git hooksDay to day:
task sync # install the exact deps in the lockfiles (after cloning or pulling)
task upgrade # bump all deps to their latest versions and update the lockfiles| Command | Description |
|---|---|
task install_tools |
Install tools, dependencies and git hooks |
task sync |
Install exact dependencies from the lockfiles |
task upgrade |
Upgrade all dependencies to latest |
task add PACKAGE=x |
Add a runtime dependency |
task add_dev PACKAGE=x |
Add a development dependency |
task format |
Format and fix imports with Ruff |
task lint |
Ruff checks (incl. S security rules) + ty types |
task deadcode |
Detect dead code with Vulture |
task security |
Audit dependencies for known vulnerabilities |
task test |
Run affected tests (testmon cache) |
task test:all |
Run all tests without cache |
task run_ci |
Run the CI pipeline locally |
Every language and tool version lives in .prototools — one file, read by
both proto use locally and moonrepo/setup-toolchain in CI. To upgrade a
language, edit that one line.
- astral-sh/uv - An extremely fast Python package and project manager, written in Rust
- astral-sh/ruff - An extremely fast Python linter and code formatter, written in Rust
- astral-sh/ty - An extremely fast Python type checker, written in Rust
- pytest-dev/pytest - Python testing framework
- jendrikseipp/vulture - Finds unused (dead) Python code