News for hackers. Stuff that matters.
Re:Bringing uv and ty together by assumed_throwaw on Saturday October 24, 2026 @04:40AM (#50219320)
I love Astral’s tools, but I wonder why the CLI feels so fragmented.

- Now, ty is integrated into uv, while ty is technically being part of ruff [1], but ruff is not integrated into uv.

- The formatter is part of ruff, but uv also have an undocumented "format" command, which does not produce the same results.

- Actually, ruff is integrated into uv, but you must call it through "uv tool run ruff".

I guess I'd like "uv format" and "uv lint" to become the standard commands.

[1] https://github.com/zed-extensions/pyrefly/issues/26#issuecom...

Re:Bringing uv and ty together by 7bit on Saturday October 24, 2026 @05:18AM (#50219504)
I don't. Formatting and linting does not belong into a package manager.
Re:Bringing uv and ty together by bmitc on Saturday October 24, 2026 @05:28AM (#50219545)
That's how Rust's Cargo and Elixir's Mix both work.
Re:Bringing uv and ty together by hobofan on Saturday October 24, 2026 @06:57AM (#50220077)
For cargo, not quite.

rustfmt is what implements Rust formating. However rustfmt is also distributed via rustup (Rust's toolchain manager). There it is also exposed under the alias cargo-fmt, which makes it work as cargo subcommand `cargo fmt` (a mechanism that's available to any crate). So it's technically not "part of cargo".

Of course the nature of all of this is a bit different, as Rust maintains cargo, rustfmt and a lot more dev tooling as part of it's official teams in comparison to other language ecosystems, where focus is on the compiler only.

Re:Bringing uv and ty together by bmitc on Saturday October 24, 2026 @01:28PM (#50223314)
From a user's point of view and an operational standpoint, that is how they work. Mix is the same way in terms of calling tools as subcommands. But it doesn't matter. You get a default experience with `cargo` and `mix` driving everything.
Re:Bringing uv and ty together by jojva on Saturday October 24, 2026 @09:25AM (#50221033)
Why not?
Re:Bringing uv and ty together by froh on Saturday October 24, 2026 @03:12PM (#50224150)
because a package manager manages packages, while a formatter formats source code and a type checker checks types.

the type check is background process for lsp and a quality gate in your process.

formatting likewise with a stronger Fokus on pre-commit

packaging (and build for packaging) may or may not be gated with the former two but it's a (pre)release and deployment activity.

Re:Bringing uv and ty together by rented_mule on Saturday October 24, 2026 @09:03PM (#50227156)
The very first line of https://docs.astral.sh/uv/ states that uv is more than a package manager: "An extremely fast Python package and project manager, written in Rust."
Re:Bringing uv and ty together by npc99 on Sunday October 25, 2026 @09:31AM (#50231389)
what is a "project manager" in this context?

I think it's safe to say most of us who use `uv` use it as a package manager.

Re:Bringing uv and ty together by rented_mule on Sunday October 25, 2026 @11:51AM (#50232880)
Here is some of what Astral has to say about it: https://docs.astral.sh/uv/concepts/projects/
Re:Bringing uv and ty together by froh on Sunday October 25, 2026 @11:29AM (#50232618)
upstream has created hatchling for the other part of uv indeed
Re:Bringing uv and ty together by f17428d27584 on Saturday October 24, 2026 @12:42PM (#50222939)
uv manages the entire project. It is not just a different pip.
Re:Bringing uv and ty together by skribanto on Saturday October 24, 2026 @06:48PM (#50226211)
The use case in the article though is type checking standalone scripts with declared dependencies. So it kind of needs some kind of package management + type checking utility at the same time.
Re:Bringing uv and ty together by woodruffw on Saturday October 24, 2026 @06:59PM (#50226303)
> I guess I'd like "uv format" and "uv lint" to become the standard commands.

Note that `uv format` does exist (in an experimental state) and does what you expect w/r/t invoking Ruff. And `uv check` is the equivalent for ty.

(ty is "part of" Ruff in the sense that it shares a lot of the same machinery, so the two are closely joined in terms of source trees. But it's an entirely separate binary from Ruff's.)