uv を使っているプロジェクトの pyproject.tomlで [tool.uv.workspace] という指定があった。これ、なんだろう?ということで調べてみた。
uv にはワークスペース機能がある
一つのライブラリの中で、複数のuvプロジェクトを作って管理できる。依存ライブラリを一つのリポジトリに入れて、管理できる、らしい。
私がみた記載の例
[tool.uv.workspace] members = ["hogehoge/fugafuga"]
これは以下を指す様子。
hogehoge/fugafugaというサブプロジェクトがワークスペースのメンバーとして登録されている- このサブプロジェクトは独自の
pyproject.tomlを持っている。(はず) - ルートと
hogehoge/fugafugaで依存関係のロックファイル(uv.lock)を共有する
感想
なるほどなー。 そういえば、最近、モノレポが流行ってるような気もするし、そういう流れも影響を受けているのだろうか。
最近、LlamaIndexを改めて触っているが、LlamaIndexはモノレポだったな、と思ったので、uvを使ってるかを調べてみました。(AIに調べさせた)
すると以下の記事スレッドがヒットしました。
まとめると、以下です。
- LlamaIndexは、以前はPoetry + Pantsを使用していた。今はuv + 独自ツール(LlamaDev)に移行している。
- LlamaIndexのリポジトリではuvのワークスペースは使えなかった。理由は、uvのワークスペースは、全ての依存関係が互いにパッケージバージョンを合意する必要があるため。
なるほどなー。アプリケーションサービスとかだと合意できそうですが、大きなライブラリ・フレームワークだと難しいんでしょうね。