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...

I don't. Formatting and linting does not belong into a package manager.

Why not?

That's how Rust's Cargo and Elixir's Mix both work.

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.