-
Notifications
You must be signed in to change notification settings - Fork 122
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
Pydanticをv2に上げる #695
Pydanticをv2に上げる #695
Conversation
@@ -183,7 +183,7 @@ class AudioQuery: | |||
output_stereo: bool | |||
"""音声データをステレオ出力するか否か。""" | |||
|
|||
kana: Optional[str] | |||
kana: Optional[str] # FIXME: requiredになっている(他の`Optional`も同様) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
「: Optional[...]
はrequiredになる(=None
と指定する必要が出てくる)ようになる」とのことだったので対応しようとしたが、@pydantic.dataclasses.dataclass
はそもそも元々この指定でオプショナルになるようにはなってなかったらしい。( = dataclasses.field(default=None)
とちゃんと指定する必要がある)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
kana: Optional[str] # FIXME: requiredになっている(他の`Optional`も同様) | |
kana: Optional[str] = None |
でも良さそう?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
確かにclass末尾にあるAudioQuery::kana
はそれで大丈夫ですね。ただclassの真ん中に挟まっている他のOptional
はそれだと駄目だったと思います(標準ライブラリのdataclassと同様)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
あーー 確かにです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これ勘違いしていました。BaseModel
とは異なり、 dataclasses.field(default=None)
でもclassの末尾に持って来る必要があります (逆に末尾なら= None
でもOK)。標準ライブラリのdataclassesの制約のようです。
❯ python
Python 3.8.15 (default, Nov 6 2022, 22:50:15)
[GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dataclasses
>>> from typing import Optional
>>> @dataclasses.dataclass
... class S:
... a: Optional[int] = dataclasses.field(default=None)
... b: int
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/home/ryo/.pyenv/versions/3.8.15/lib/python3.8/dataclasses.py", line 1019, in dataclass
return wrap(cls)
File "/home/ryo/.pyenv/versions/3.8.15/lib/python3.8/dataclasses.py", line 1011, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash, frozen)
File "/home/ryo/.pyenv/versions/3.8.15/lib/python3.8/dataclasses.py", line 925, in _process_class
_init_fn(flds,
File "/home/ryo/.pyenv/versions/3.8.15/lib/python3.8/dataclasses.py", line 502, in _init_fn
raise TypeError(f'non-default argument {f.name!r} '
TypeError: non-default argument 'b' follows default argument
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!!
= None
でちゃんと動くなら良さそう感。(別PRでもこのPRでも)
0.14→0.15のchangelog的なものに入れたいので、別PRにしようと思います。 |
大変失礼致します。
そこで質問です。 |
すみません、とりいそぎ結論から書くと厳しいのではないかと思います。release-0.15ブランチは現在最低限のメンテナンスのみがされております。 現在2月を目標としてバージョン0.16をリリースする予定です。0.16は、現在のmainブランチのものをそのまま出す予定になります。 #704 とともにマイグレーションガイドも書く予定ですが、0.15(=0.14)から500個近いプルリエスト分の整理をするのにちょっと時間がかかると思います。 なお現在VOICEVOX/voicevox_project#24が(ほぼほぼ)完了したことにより、誰でもmainブランチを利用してずんだもん達を利用できるようにはなったと思います。 ただドキュメント自体もちょっと未完成ではあります。今ある0.16(予定)のドキュメントは次の通りです。
おおざっぱに書くと、mainブランチのダウンローダーの説明( (ちょっと後で続きを書こうと思います) |
この表示を見て思い出しました。0.15.0-preview.16には既に本PRは入っていますね。 というのも、非っ常ーーーにわかりにくいのですが、バージョンの関係は今こうなっています。
そして現0.15系列はソング用内部APIの変更のみであるため、実質的に0.14系と変わりません。そのため0.15.7よりも0.15.0-preview.16の方が実質的には「後」とも言えると思います。 ただいずれにしろ、今0.15.0-preview.16を使って頂くくらいなら0.16予定のmainブランチを使って頂ける方がよいのではないかとは思ってます。 |
もし0.16予定のmainブランチをお使いになる場合ですが、0.16には次のものが必要です。
1.ですが、VOICEVOX CORE Python APIのwhlはまだビルドされていません。ただこのリポジトリをフォークし、その 例として、これが私(qryxip)のリポジトリでビルドしたものです。 ちなみに手元でビルドする方法としては、多分あまり親切に書かれていないと思うので説明すると以下のようになります。 ビルド方法まずpyproject.tomlがあるのはcrates/voicevox_core_python_apiなので、そこに ❯ cd ./crates/voicevox_core_python_api
❯ poetry sync --no-root --with dev そうするとPoetryのvenvにMaturinが入るのでそれでwhlをビルドします。 ❯ # poetry runでも可
❯ . <(poetry env activate)
❯ maturin build --locked --release whlは{リポジトリのルート}/target/wheelsに作られます。 ❯ ls -l ../../target/wheels またcrates/voicevox_core_python_api/README.mdにある通り、 2.は先述した通りです。ダウンローダーでダウンロードできます。 3.はVOICEVOX/voicevox_vvmにあるものです。こちらもダウンローダーでダウンロードできます。 4.は0.14および0.15と同じです。こちらもダウンローダーでダウンロードできます。 5.はダウンローダーでダウンロードできるやつはちょっと古い可能性があるので、その場合ONNX Runtime 1.17用のものを自前で用意する必要があります。 |
丁寧にありがとうございます!すごく理解出来ました! |
あ、次の2点を失念しておりました。
|
内容
Pydanticをv2に上げます。
マイグレーションガイド
関連 Issue
#545
その他