Use uv
as our backend dependency manager¶
Context and Problem Statement¶
We need a modern Python package management tool that is:
- Much faster than pip and pip-tools.
- Able to handle lock files and virtual environments cleanly.
- Better at resolving complex dependency trees reproducibly.
Considered Options¶
- pip + virtualenv
- pipenv
- poetry
- pdm
- uv
Decision Outcome¶
uv (by Astral) was selected for its speed, strict reproducibility, and modern tooling ergonomics.
It significantly improves dependency resolution times and offers a seamless developer experience.
Unlike traditional tools like pip, uv performs rapid dependency resolution and installs, while producing lock files that ensure consistency across platforms and environments.
Consequences¶
- ✅ Extremely fast dependency resolution and installation (Rust based).
- ✅ Modern, opinionated tooling with strong defaults.
- ✅ Simplifies management of virtual environments and lock files.
- ✅ Support for workspace packages, to allow for easier monorepo setups.
- ❌ Less mature ecosystem and community support (as of 2025, growing fast!).
- ❌ Requires team familiarity with new workflows.