Uv 0.12.0

5 hours ago (github.com)

This is our first breaking release since March. We’re happy to answer any questions folks have about it.

  • The thing where "uv init" now adds this to pyproject.toml is a bit surprising:

      [project.scripts]
      demo-latest = "demo_latest:main"
    

    What's the rationale for that? My expectation is that few projects would need it.

    (I have a GitHub repo that captures differences between uv versions, here's today's upgrade: https://github.com/simonw/uv-init-demos/commit/9111a2bb85741...)

    • It makes `uv run <project-name>` work by default, I expect most projects to need an entry point.

  • Maybe a naive question, but any goal / progress towards an ”it just works” cuda installation? Currently, the only times i feel like i‘m stumbling over an install with uv is when pytorch / cuda is involved.

  • How do you think of uv vs pixi?

    Follow up: has anyone suggested the projects collaborate or eventually converge?

    • Pixi is very focused on the Conda ecosystem and implements a sort of bridge across the Conda and PyPI ecosystems. I am very interested in solving the problems that motivated creation of the Conda ecosystem, but I want to do so by driving forward the PyPI ecosystem so those use-cases can be addressed in _many_ tools instead of just one. This is the main reason you don't see us pursuing Conda package support in uv directly (in the style of Pixi).

      There have been several threads about us collaborating or converging, but there are no concrete plans to do so at this time. We share some Rust crates, e.g., Pixi uses our internals to solve the PyPI-side of their dependencies, and we occasionally fix or change things for each other.

  • Why (keep) the `uv pip` interface?

    • We have the interface because we care a lot about meeting people where they are.

      We keep the interface because we care a lot about long-term support and compatibility. I cannot imagine removing it.

      We generally want to add features to the top-level interface such that people don't need or want to use the pip-interface because the top-level interface does everything you need, but better.

      6 replies →

    • It’s widely used, and there are still a lot of workflows that we hear about from users where they want/need to manually twiddle environments rather than having the “declarative” layer do it for them.

    • I'll confess to using `uv` almost every day for the last year+ - and I've never used anything other than `uv pip install` for package management.

      Is there any compelling reason not to?

  • Bit surprised, and disappointed to not see dynamic field support for the uv build backend in this update. Need it for dynamically getting the version from Git. Is there anything blocking it, or is it just not important enough?

    • Unfortunately dynamic metadata is not efficient for package resolution, so we don't want to encourage it. Instead, we want to design a better workflow for using source control for versioning, but haven't had the time to do so.

      2 replies →

  • Can you stop the --break-system-packages madness?

    • WDYM by madness? I know what the flag is (and what it does), but people have strong opinions in opposite directions about what Python packaging should do around system environments.

    • I think we're doing what we should making isolated environments easy to use. I don't think we should take options away from people that need them.

thoughts on worm safety w.r.t. `exclude-newer`, and the right way to handle unpinned git repo deps?

Are we likely to get an "uv upgrade" command that makes sense sometime?

It's still very obtuse how to get uv to just try and make all my dependencies the highest version possible.

  • Yes! It's in progress — it's already there, just hidden as we iterate on it.

    (but as a note, the initial `uv lock` will already attempt to choose the highest possible versions and `uv lock --upgrade` will do so again, requests for `uv upgrade` are generally centered around changing the constraints in the `pyproject.toml`)