コードフォーマット機能が実験的にuvに導入
(pydevtools.com)- 新しいuvバージョンで コードフォーマット 機能が実験的に提供される
uv formatコマンドは Ruffのフォーマッタ を内部的に使用してPythonコードを一貫したスタイルに整える- 従来のように別個のツールを使わず、uvだけで手軽にコード整理作業 が可能
- ユーザーは追加引数を通じて フォーマット動作を細かく調整 できる
- まだ 実験的な機能 のため、コマンド方式やエラー処理などが変更される可能性がある
概要
uvの最新リリース(0.8.13)は、Python開発者が長く待ち望んでいた実験的コマンド uv format を導入した。この機能により、プロジェクト内で別途フォーマットツールを管理しなくても、uvだけでコードスタイルの整理 を行える。
uv formatとは?
uv formatコマンドは uvインターフェースを通じてPythonコードのフォーマット を提供する- 内部的には Ruffフォーマッタ を呼び出してコードを自動的に一貫性のある形に整える
開発者向けメモ
Charlie Marsh(uv開発者)はHacker Newsで次のように説明している。
Ruffとuvが統合されるわけではなく、依然として別個のツールである
単に、ユーザーがフォーマッタを別ツールとして意識せずに利用できるよう体験を向上させることが目的である
Rustエコシステムにおけるcargo fmtとrustfmtの関係に近い
使い方
- uv 0.8.13以上のバージョンを使用する必要がある
- プロジェクトルートで
uv formatコマンドを実行すると、ruff format を実行するのと同じ効果がある - 実行方法はuvのコマンドインターフェースに従う
追加引数の受け渡し
uv format -- [追加引数]の形で Ruffに渡す詳細オプション を設定できる- uvの使いやすさとRuffの細かな設定を同時に活用できる
実験段階の案内
- 現在の機能は 実験的な段階 にあり、今後コマンド方式やプロジェクト構造との統合方法が変わる可能性がある
- エラー処理や出力形式なども継続的に改善される予定である
- ユーザーフィードバックを反映して機能が進化していく見込みである
まとめ
- Pythonプロジェクトで 手軽かつ一貫性のあるコードスタイリング が必要な場合、
uv formatを積極的に試してみる価値がある - 実験的導入 であるだけに、実際に使ったうえでフィードバックを提供すれば、今後のuvの発展に貢献できる
1件のコメント
Hacker News の意見
ruffはtyと統合されたほうがよい気がする。uvはパッケージやプロジェクト管理に集中するのが筋で、コードスタイルの編集にまで関与すべきではないと思う。uvがコードファイルを変更する唯一のケースは、依存関係の更新(PEP 723)のときだけであるべきだと考えるruffとuvは統合されるわけではなく、今後も別個のツールのままだという点を明確にしたい。これは、フォーマッターを別途気にしたくないユーザーによりシンプルな体験を提供するためのものだ。RustのCargoでcargo fmtが内部的にrustfmtを実行するのと似た構成であるcargo fmtがあるのと同じやり方をなぞっているだけだtyもuvに統合されることがあるならどうなるのかも気になる。いずれもastral.sh発である以上、それがビジョンなのかもしれないが、まだtyは十分に成熟していないuv lintのようなオプションを導入して内部的にtyを実行するようにするのが論理的な進化だと思う。理想を言えば、1つの標準コマンドまたは一連のコマンドでPythonプロジェクトの準備(フォーマット、lint、テスト、デプロイ)を行えるようになるとよい。おそらくそれがここに込められたビジョンなのだろうuv run --no-projectとuv run --activeなど)。むやみに新機能を増やすよりも、既存ツールとドキュメントの改善にもっと集中してほしいuvx ruff formatは1語長いだけなのだから問題ない」という意見にはあまり同意できない。むしろ実際に何のフォーマッターが動くのか不明確になったり、ruffが自動でインストールされるのか、従来どおりツールをダウンロードしてキャッシュするのかが、かえって分かりにくくなる可能性があるuv <機能>という単純なメンタルモデルはチームにとって大きな助けになる。他のフォーマッターとも連携できるようになればよいし、もしSQL/dbtモデルのフォーマットまで対応してくれたら言うことはない。まずは使ってみて可能性を確かめたいjust formatでPython/SQL/Bash/TypeScriptをまとめてフォーマットできるuv formatは、実質的にはuv run --with ruff ruffのショートカットだuv fmtという名前にして、uv vetのようなものもロードマップに加えるとよいと思うuv formatは単にruff formatのフロントエンドに近いだけで、新しいフォーマッターが追加されるわけではない