Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

依存パッケージ更新についての情報 #1465

Closed
sabonerune opened this issue Aug 28, 2024 · 3 comments · Fixed by #1466
Closed

依存パッケージ更新についての情報 #1465

sabonerune opened this issue Aug 28, 2024 · 3 comments · Fixed by #1466
Labels
機能向上 状態:実装者募集 実装者を募集している状態

Comments

@sabonerune
Copy link
Contributor

sabonerune commented Aug 28, 2024

内容

前回の更新から時間がたっているのでIssueを立てました。
ref: 判断等メモ.md#ライブラリのアップデート頻度

Pros 良くなる点

  • 脆弱性の修正
    既にログが消えてしまっていますが手元で確認したところurllib3 authlib anyio jinja2 cryptography certifi requests zipp setuptoolsで脆弱性が報告されています。
  • バグの修正
  • パフォーマンスの向上

Cons 悪くなる点

  • 更新の手間

実現方法

poetry update
いくつかのパッケージはpoetry add PACKAGE@VERSIONで対応する。
その他コードを修正する必要がある更新があるかもしれない。

VOICEVOXのバージョン

0.20.0

その他

Pythonのバージョンについて

Python 3.11.9が最後のbugfixなので更新してもいいかも。
(手元のWindows環境では特に問題はない)

Numpy v2に関して

v2になったが廃止されたのは元々非推奨だったものなので大体のパッケージは大丈夫のはず。
ただしpyworldに問題がある。

pyopenjtalk

リビルトする必要がある。
一度pyopenjtalkとキャッシュ等を削除して再度インストールという作業が必要。

pyworld

pyopenjtalk同様リビルドする必要がある。

しかしpypiにWindows用のwheelがアップロードされているためWindows環境では基本的にそれがインストールされてしまう。
そのwheelはNumpy2のABIと互換性がない。
requirements.txtで--no-binaryを指定する方法はないはず。

対応するとしたらgitからインストールする?
Python 3.12用のwheelは用意されていないので更新することでも対応できるが影響範囲が大きすぎる…

soxr

0.4.0でNumpy2サポート

FastAPI関係

uvicorn

v0.30.3でKeyboardInterruptが抑制されるようになったため例外を捕捉するコードが不要になった。

voicevox_engine/run.py

Lines 411 to 415 in 378b51e

try:
uvicorn.run(app, host=args.host, port=args.port)
except KeyboardInterrupt:
print("`KeyboardInterrupt` の検出によりエンジンを停止しました。")
pass

-    try:
-        uvicorn.run(app, host=args.host, port=args.port)
-    except KeyboardInterrupt:
-        print("`KeyboardInterrupt` の検出によりエンジンを停止しました。")
-        pass
+    uvicorn.run(app, host=args.host, port=args.port)

https://www.uvicorn.org/release-notes/#0303-2024-07-20

Starlette

バージョンを固定するべきではないとFastAPIのドキュメントにあった。
https://fastapi.tiangolo.com/deployment/versions/#about-starlette

starlette = "^0.37.0"

-starlette = "^0.37.0"
+starlette = "*"

個人的に気になったこと

pip-licenses

バージョンが何故か4.4.0で固定されている。
特別な意図がなければ^4.4.0にするか^5.0.0に更新してもいい気がする。

poetry

1.8.3がリリース。
問題がなければ更新してもよさそう。


  • Pythonのバージョン
  • Numpy2周り
  • pip-licenses
  • poetry

について判断をいただけたら幸いです。

@Hiroshiba
Copy link
Member

忘れていました、issue作成ありがとうございます!!

Pythonのバージョン

3.11.9へのアップデートはしなくてもいいと思いますが、逆にしても大丈夫だと思います!

Numpy2周り

結構影響範囲がでかいのでもう少し様子見をしたい、という気持ちが若干だけあります!
他のライブラリに依存したくなった時にできない可能性とかあるかもなと。
まあでもsoundfileとsoxrが対応しているなら大丈夫そう!
(soundfileは対応未対応どっちなんだろう・・・?)

それとは別にpyworldのwheel周りで問題が発生するのはちょっと厄介ですねぇ。
issue報告して何かしらアクションがないか確かめてみてもいいかも?
python 3.12でもnumpy1でwheel作ったりされそうだなと。
アクションなかったらフォークしてメンテですかねぇ。

まーnumpy2への大きなモチベが無いので、とりあえずnumpy2アップデートは、今期は見送りが丸いのかもですね!!

Starlette
バージョンを固定するべきではないとFastAPIのドキュメントにあった。

なるほどです。
まあ必ず一緒にアップデートすればピン止めしても大丈夫だと思いますが、特にピン留めしたい理由もないからコメントつけて*にしちゃって良さそう!

pip-licenses

メジャーバージョンだけ固定したいけど、マイナバージョン以下は確かに固定じゃなくても良さそう!

poetry

こちらも問題なさそうであればアップデートして良いと思います!


調査本当にありがとうございます!!!
よかったらプルリクエストもお待ちしてます!!!

@Hiroshiba Hiroshiba added the 状態:実装者募集 実装者を募集している状態 label Aug 29, 2024
@sabonerune
Copy link
Contributor Author

(soundfileは対応未対応どっちなんだろう・・・?)

soundfileは恐らく影響を受けていないと思います。
(軽く動かしたが問題無さそう?)

影響を大きく受けるのはNumpyのC-APIを使っているパッケージでsoundfileはNumpyのPythonAPIしか使っていないため影響はないと思います。

@Hiroshiba
Copy link
Member

ほーーーー なるほどです!!!
ちょっと敬遠してたのですが、そろそろnumpy 2に依存しても良いかもと思えてきました!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
機能向上 状態:実装者募集 実装者を募集している状態
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants