↪️
uv Publishがmetadataが何たらで失敗した
tl;dr
build設定をこのように書く
pyproject.toml
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
以下は気になった人向けの記録
前提
Pythonのパッケージ管理ツールとしてRyeを愛用していたが、機会がありuvで開発していた。タスクランナーがないこと以外は概ね最高。
uv のパッケージ公開事情
公式を見るとわかる通り、uvだとpypiへの登録がめちゃくちゃ便利。uv build
してuv publish
するだけ。
だけ、だと思ったらuv publish
で400エラーが出てハマった。
Upload failed with status code 400 Bad Request. Server says: 400 license-file introduced in metadata version 2.4, not 2.1. See https://packaging.python.org/specifications/core-metadata for more information.
publish失敗の理由
小一時間Build設定をいじってもダメで、uvのissueで事例を見つけた。
具体的にはビルドで使っているsetuptools
のバグらしい。uv側ではどうしようもないので見守るしかない。
回避策
回避策は他のビルドツールを使うことらしく、この例ではHatchを使っていて、私もこれで成功した。
Discussion