-
Notifications
You must be signed in to change notification settings - Fork 198
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
ユーザー辞書のインポート、エクスポートをUIに追加 #676
Conversation
テストの追加の必要がないことと、そのほかの不具合がないことが自分が見た中ではないことを確認しました。 |
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.
遅くなって申し訳ありません。
コメントを追加しておきました。
少し考えてみたのですが、辞書のコストが
個人的にはpriorityに紐づくcostの変更を行う可能性はほぼ無いと思うため、 |
@takana-v 様 自分の方で検証を行って確かめました。まず Traceback (most recent call last):
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 373, in run_asgi
result = await app(self.scope, self.receive, self.send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 75, in __call__
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\fastapi\applications.py", line 208, in __call__
await super().__call__(scope, receive, send)
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\starlette\applications.py", line 112, in
__call__
await self.middleware_stack(scope, receive, send)
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\starlette\middleware\errors.py", line 181, in __call__
raise exc
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\starlette\middleware\errors.py", line 159, in __call__
await self.app(scope, receive, _send)
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\starlette\middleware\base.py", line 53, in __call__
async with anyio.create_task_group() as task_group:
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 662, in __aexit__
raise exceptions[0]
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\starlette\middleware\base.py", line 30, in coro
await self.app(scope, request.receive, send_stream.send)
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\starlette\middleware\cors.py", line 92, in __call__
await self.simple_response(scope, receive, send, request_headers=headers)
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\starlette\middleware\cors.py", line 147,
in simple_response
await self.app(scope, receive, send)
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\starlette\exceptions.py", line 82, in __call__
raise exc
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\starlette\exceptions.py", line 71, in __call__
await self.app(scope, receive, sender)
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\starlette\routing.py", line 656, in __call__
await route.handle(scope, receive, send)
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\starlette\routing.py", line 259, in handle
await self.app(scope, receive, send)
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\starlette\routing.py", line 61, in app
response = await func(request)
^^^^^^^^^^^^^^^^^^^
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\fastapi\routing.py", line 226, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\fastapi\routing.py", line 161, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\starlette\concurrency.py", line 39, in run_in_threadpool
return await anyio.to_thread.run_sync(func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\anyio\to_thread.py", line 31, in run_sync return await get_asynclib().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 937, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "C:\Users\user_name\Desktop\python\voicevox_engine\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 867, in run
result = context.run(func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user_name\Desktop\python\voicevox_engine\run.py", line 1105, in setting_post
parse_dict(user_dictionary_file.file), override=allow_override
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user_name\Desktop\python\voicevox_engine\voicevox_engine\user_dict.py", line 129, in parse_dict
word["priority"] = cost2priority(word["context_id"], word["cost"])
~~~~^^^^^^^^
KeyError: 'cost' |
テストが落ちているみたいですね。 |
@Hiroshiba 様 |
@My-MC |
あ、 |
あ、ちょっと記述ミスをしていました。 |
なるほどわかりました。もしかしたら認識の行き違いが発生してるかもしれないのですが、 @Hiroshiba 様はどうですか。 |
先ほどの@My-MC さんのコメントで気付きましたが、私の方に認識ミスが発生してましたね...申し訳ありません。 |
いくつか観点がありそうなのでまとめてみます。 ・ ・JavaScriptを書かないといけなくなる ・ |
これなんですが使用上formで違うURL(エンドポイント)を使う場合、そのページにリダイレクトするのと、HTMLのコードが繰り返しの多い見ずらいコードになってしまいます。またそもそもbodyにそもままファイルを送っても処理ができません。実際にどちらも検証をし、確認しました。 ですので個人的には |
検証してみました。たしかにHTMLのformだけで 良い方法があれば無理に 内部的には保存ボタンを押した時点で辞書を更新しているのですが、ユーザーの方が「エンジン起動時に一緒にインポートする辞書を保存した」のだと勘違いしちゃいそうだなと。 |
`parse_dict`関数を削除
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.
トースト良いですね!!
まだちょっとユーザーに混乱されそうなUIになっちゃっていそうなのでコメントしてみました。
今年に入り新しい環境でご助言をいただいてから時間が開いてしまい申し訳ありません。 |
@My-MC コード読ませていただきました! すごくいい感じだと思います!!! |
辞書の保存のModalにも対応しました。機能の実装はこれですべてだと思います。レビューお願いします。 |
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!!
ちょっとUIの細かいところだけ勝手に調整してコミットさせていただきました!!
ブートストラップのトーストの使い方の正しい方法は多分こっちだと思うのでそれも変えさせていただきました!
設定UIが今生HTMLになってるので、Vuejsに変えられればと思ってissue立ててみました! |
多分問題ないと思うのでマージさせていただきます!! |
内容
ユーザー辞書のインポート、エクスポートをUIに追加します。
UIはSettingのUIに追加する形にして、JavaScriptはかかないようにしました。またread_dict
関数のパーズ処理を違う関数に切り出し、利用するようにしました。理由といたしましては、物理ファイルのようにpathlibが使えないためデータを渡してあげる感じになりました。実際にファイルのエクスポート、インポート、overrideも行えることを確認しました。
関連 Issue
スクリーンショット・動画など
その他
遅くなってしまい申し訳ございませんでした。