uv's speed wins Python, but its upgrade and outdated-package UX lags pnpm and Poetry
Astral’s uv has displaced a stack of Python tooling on the strength of raw speed, but a Loopwerk post argues the maintenance-phase ergonomics fall well short of pnpm and Poetry. There’s no first-class uv outdated command; users reach for uv tree --outdated --depth 1, which dumps the whole top-level tree rather than just stale packages. Bulk upgrades go through uv lock --upgrade, and targeted upgrades require repeating --upgrade-package for each name instead of accepting a list.
The sharper complaint is the default version constraint. uv add writes lower bounds only (pydantic>=2.13.4), so a blanket upgrade can silently pull in every breaking major release across the transitive graph. pnpm and Poetry write caret-style constraints that keep updates inside the current major by default, which the author considers the safer baseline for application projects.
An appended correction softens the piece: uv pip list --outdated already filters to stale packages (it just lives under the pip-compat namespace), and add-bounds = "major" can be set once in pyproject.toml to make safer constraints the default. The author also concedes the no-upper-bound default is correct for libraries published to PyPI and that the critique applies to applications, where pinning costs nothing and avoids surprise major bumps.
Read the full article
Continue reading at Hacker News →This is an AI-generated summary. Read the original for the full story.