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

FastAPI 0.103.2に更新 #766

Merged
merged 7 commits into from
Oct 17, 2023
Merged

Conversation

aoirint
Copy link
Member

@aoirint aoirint commented Oct 17, 2023

内容

FastAPIを最新の0.103.2に更新します。

変更点

このPR後にpoetry updateを実行した場合、FastAPI >=0.103.2, <0.104.0, httpx >=0.25.0, <0.26.0の範囲で更新されます(^0.x.yと記述した場合の仕様。Poetryのバージョン制約記法ドキュメント)。

FastAPI側の主な変更点

  • FastAPI 0.87.0Starlette 0.21.0)で、fastapi.testclient.TestClient(= starlette.testclient.TestClient)がrequestsベースからhttpxベースに変更されました
    • VOICEVOX ENGINEの既存の依存関係にhttpxは含まれておらず、TestClientを使ったテストが実行できなかったため、このPRで追加しました
  • FastAPI 0.89.0で、型ヒントをつけることで@app.getなどのアノテーションからresponse_modelパラメータを削除できるようになりました
  • FastAPI 0.95.2で、依存ライブラリStarlette 0.27.0に更新されました
  • FastAPI 0.100.0で、Pydantic V2がサポートされました
    • FastAPI側でPydantic V1との互換性が維持されており、Pydantic V1のまま動作します。このPRでは、Pydantic V1に留まっています。
    • Pydantic V1は現在もV2と並行してメンテナンスされています。
    • 時期は不明ですが、どちらかのV1メンテナンスがいずれ終了すると思われるため、V2への移行が必要です(BaseModel.parse_obj, BaseModel.parse_obj_as, BaseModel.dict, BaseModel.jsonなどのAPIが非推奨になっています)。
  • セキュリティ修正(FastAPIのリリースノート

関連 Issue

スクリーンショット・動画など

その他

@aoirint aoirint requested a review from a team as a code owner October 17, 2023 07:18
@aoirint aoirint requested review from y-chan and removed request for a team October 17, 2023 07:18
@github-actions
Copy link

github-actions bot commented Oct 17, 2023

Coverage Result

Resultを開く
Name Stmts Miss Cover
run.py 453 305 coverage-33%
voicevox_engine/init.py 1 0 coverage-100%
voicevox_engine/acoustic_feature_extractor.py 75 0 coverage-100%
voicevox_engine/cancellable_engine.py 91 71 coverage-22%
voicevox_engine/dev/core/init.py 2 0 coverage-100%
voicevox_engine/dev/core/mock.py 27 12 coverage-56%
voicevox_engine/dev/synthesis_engine/init.py 2 0 coverage-100%
voicevox_engine/dev/synthesis_engine/mock.py 36 2 coverage-94%
voicevox_engine/downloadable_library.py 93 5 coverage-95%
voicevox_engine/engine_manifest/EngineManifest.py 34 0 coverage-100%
voicevox_engine/engine_manifest/EngineManifestLoader.py 12 0 coverage-100%
voicevox_engine/engine_manifest/init.py 3 0 coverage-100%
voicevox_engine/full_context_label.py 162 3 coverage-98%
voicevox_engine/kana_parser.py 86 1 coverage-99%
voicevox_engine/metas/Metas.py 33 0 coverage-100%
voicevox_engine/metas/MetasStore.py 29 12 coverage-59%
voicevox_engine/metas/init.py 2 0 coverage-100%
voicevox_engine/model.py 160 9 coverage-94%
voicevox_engine/mora_list.py 4 0 coverage-100%
voicevox_engine/morphing.py 70 46 coverage-34%
voicevox_engine/part_of_speech_data.py 5 0 coverage-100%
voicevox_engine/preset/Preset.py 12 0 coverage-100%
voicevox_engine/preset/PresetError.py 2 0 coverage-100%
voicevox_engine/preset/PresetManager.py 81 2 coverage-98%
voicevox_engine/preset/init.py 4 0 coverage-100%
voicevox_engine/setting/Setting.py 11 0 coverage-100%
voicevox_engine/setting/SettingLoader.py 19 0 coverage-100%
voicevox_engine/setting/init.py 3 0 coverage-100%
voicevox_engine/synthesis_engine/init.py 5 0 coverage-100%
voicevox_engine/synthesis_engine/core_wrapper.py 201 146 coverage-27%
voicevox_engine/synthesis_engine/make_synthesis_engines.py 59 30 coverage-49%
voicevox_engine/synthesis_engine/synthesis_engine.py 130 11 coverage-92%
voicevox_engine/synthesis_engine/synthesis_engine_base.py 67 9 coverage-87%
voicevox_engine/user_dict.py 144 11 coverage-92%
voicevox_engine/utility/init.py 5 0 coverage-100%
voicevox_engine/utility/connect_base64_waves.py 37 0 coverage-100%
voicevox_engine/utility/core_version_utility.py 8 1 coverage-88%
voicevox_engine/utility/mutex_utility.py 10 0 coverage-100%
voicevox_engine/utility/path_utility.py 26 8 coverage-69%
TOTAL 2204 684 coverage-69%

@aoirint aoirint mentioned this pull request Oct 17, 2023
@aoirint
Copy link
Member Author

aoirint commented Oct 17, 2023

mypyを実行するとエラーが出て型チェックが中断されるようになったので、mypyを更新するプルリクエストを作りました(メジャーバージョンアップが入るのと、CIは通るので分けましたが、分けないでもよかったかもです...)。

エラーの内容

***\Lib\site-packages\fastapi\openapi\models.py:281: error: INTERNAL ERROR -- Please try using mypy master on GitHub:
https://mypy.readthedocs.io/en/stable/common_issues.html#using-a-development-mypy-build
If this issue continues with mypy master, please report a bug at https://github.com/python/mypy/issues
version: 0.991
***\Lib\site-packages\fastapi\openapi\models.py:281: : note: please use --show-traceback to print a traceback when reporting a bug

@Hiroshiba Hiroshiba requested review from Hiroshiba and removed request for y-chan October 17, 2023 08:39
Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!!

もしかしてもしかしたらなにか変化があるかもなので、一度preview releaseを作ってみようと思います。
https://github.com/VOICEVOX/voicevox_engine/releases/tag/0.15.0-preview.7

Pydantic v2でRust化したとかで速くなったんですね。
もしかしたら恩恵あるかもなので、ついでに更新しちゃっても面白いかもですね!

@Hiroshiba
Copy link
Member

poetryのcontent-hashが衝突していたので勝手ながらコンフリクト解消させていただきました。
マージします!

@Hiroshiba Hiroshiba merged commit 43cba4c into VOICEVOX:master Oct 17, 2023
3 checks passed
@aoirint aoirint deleted the patch-fastapi-0.103 branch October 17, 2023 08:45
takana-v pushed a commit to voicevox-bridge/bridge-plugin that referenced this pull request Nov 28, 2023
Co-authored-by: Hiroshiba <hihokaruta@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants