Live data from Hacker News

Uv is fantastic, but its package management UX is a mess

loopwerk.io

111–120 of 161 posts

Re: Uv is fantastic, but its package management UX is a mess

#112
UX issues are the least important; it's just a matter of minutes for AI to improve, but you need to report it on GitHub.

The "unsafe version" is an unreasonable accusation. Do people really believe in semantic versioning—that not bumping the major version means it's safe? It also creates hard-to-resolve compatibility problems, causing more issues than it solves. Not capping dependency versions has basically become the consensus.

Re: Uv is fantastic, but its package management UX is a mess

#113
I hate the state of python packages ecosystem. The other day I wanted to install isd on Ubuntu.

Isd requires uv.

uv? Not installed. Ok, pip install uv. No way, "externally managed" whatever that means.

Ok, install venv. Then install uv. Then install isd. All messages are cryptic, some exceptions were thrown on console for quite vanilla default cases.

Re: Uv is fantastic, but its package management UX is a mess

#114
I would argue the current defaults for uv are the correct ones. Unless you have actually verified that said library follows semvar, and you know the library will break your code in the next major release, you should never use upper bounds. You should be using CI to manage updates of lock files (e.g. dependabot, renovate), and not blindly updating lock files. Similarly, you should care about your dependency tree, and not just direct dependencies. I feel the author thinks Python behaves the same way as the npm ecosystem, and thinks the same lessons apply.

Re: Uv is fantastic, but its package management UX is a mess

#115
post #81

Earlier quoted context omitted.

And then you look it up once, and now you know what it means forever. By contrast, the former expression is much wider with more going on, and furthermore you can't skim past it being sure nothing funny is going on because it may or may not be a range compatible with the latter form.

No. I have look it up years ago, and I don't remember all combination of `=` vs `^` vs `~` across all languages and package managers

To make it even more interesting, in npm ^ works differently depending on what version you are on

Re: Uv is fantastic, but its package management UX is a mess

#116
Hard agree with this article. I love uv for so many things, but updating dependencies to latest versions that are compatible with everything else in the project is so much more painful in uv than in poetry. The fact that half the functionality is hidden behind `uv pip ...` or is incredibly odd as these days most people would never otherwise need `uv pip` at all.

Possibly the most frustrating hidden command is `uv pip show {package}` - a) why is it hidden inside the pip subcommand, and b) why is it missing the package's homepage that you get from `pip show {package}`? Given that actually upgrading stuff with `uv` often means going off and finding version numbers yourself, removing the homepage URL from the show output just feels spiteful.

Re: Uv is fantastic, but its package management UX is a mess

#117
post #70

UV has done so much for Python but I did fight it a bit today. I was trying to centralize the management of a script that appears in a few different repos, and has invariably drifted in its implementation in multiple way over time. My idea was uv run --with $package main --help I was looking for an easy way to automatically 1. Install it if it doesn’t exist and run 2. Don’t install it if it’s running the latest versi…

You might wanna check out https://copier.readthedocs.io/en/stable/ Dunno if it's your exact use case but it's been amazing for keeping a polyrepo microservice ecosystem in sync.

I’m familiar! I recently built something with projen. Projen is quite cool because you can mark templates as “managed,” which means they’re read only in the repo. Establishes a contract of “any edit to this file will be lost”

Re: Uv is fantastic, but its package management UX is a mess

#118

> Poetry does the same by default, using a format like >=1.23.4, What??? I understood the first format instantly, but had no idea what the second meant until the author explained it.

And then you look it up once, and now you know what it means forever. By contrast, the former expression is much wider with more going on, and furthermore you can't skim past it being sure nothing funny is going on because it may or may not be a range compatible with the latter form.

Also worth mentioning that a carat doesn't require quoting in your shell so you can type `uv add something^1.5` which is a hell of a lot easier to write than `uv add "something>=1.5,<2.0"`.

Re: Uv is fantastic, but its package management UX is a mess

#119

I was really surprise by the recommendation to use "uv tree --outdated --depth 1" to list outdated deps. I personally use "uv pip list --outdated" since it has been introduced. I agree that this is such an important command that it deserves its own top-level subcommand, though.

Author here. It wasn't a recommendation, it was just the only way I knew how to. "uv pip list --outdated" indeed has much better output, thanks!

Though this makes me wonder why are there 2 ways of viewing outdated packages, with wildly different output? The UX is mess...

Post reply on HN