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

プリセットファイルの位置をユーザーディレクトリに変更 #1493

Merged
merged 8 commits into from
Dec 1, 2024

Conversation

takana-v
Copy link
Member

内容

プリセットファイル(presets.yaml)の位置を、エンジン直下からユーザーディレクトリに変更します。
これにより、全ユーザー向けにインストールした時など、エンジン直下へのファイル書き込み権限が無い時にエラーが発生することを防ぎます。

関連 Issue

close #1479

ref #1491
ref #1478
ref #1323 (comment)

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

その他

ユーザーが古いバージョンのVOICEVOXをアンインストールする時にpresets.yamlが削除される気がしたので、マイグレーション処理は入れていません。
必要であれば追加したいと思います。

@takana-v takana-v requested a review from a team as a code owner November 28, 2024 12:48
@takana-v takana-v requested review from Hiroshiba and Copilot and removed request for a team November 28, 2024 12:48

Choose a reason for hiding this comment

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

Copilot reviewed 5 out of 5 changed files in this pull request and generated no suggestions.

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です!!!

presets.yamlの場所が変わるという破壊的変更になりますが、 @takana-v さんのおっしゃる通り再インストール時に消える場合が多そうな気がしています。
・・・・・・・が、例えばサードパーティソフトウェアが利用していて、アップデートの際に気をつけている場合などは問題になる気がしますね。。。。

ちょっともしよかったらなのですが、Pythonでマイグレーションがどれぐらい心地よく書けるかのチェックも兼ねて、マイグレーションするのはどうでしょうか。
後でマイグレーションが必要になった時に自信を持ってできそうだなーと。
あまり興味なければこちらで書こうと思います!

多分やり方は簡単で、PresetManager内の処理をちょっと書き足せば終わり?
ユーザーディレクトリのプリセットがなく、エンジンディレクトリのプリセットファイルがあればデータをコピーすればよさそう。
エンジンディレクトリのプリセットファイルは消して良さそうだけど、これもエラーになっちゃいそうなので放置しても良さそう。
まあでも悪さしそうだし、tryで囲みつつrmしてみるのもよさそう。

プルリクいただいててお願いしちゃって申し訳ないです 🙇
微妙だったら結構遠慮なくおっしゃっていただければ・・・!!!

README.md Outdated Show resolved Hide resolved
@takana-v takana-v requested a review from Copilot November 29, 2024 10:02

Choose a reason for hiding this comment

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

Copilot reviewed 6 out of 6 changed files in this pull request and generated no suggestions.

Comments skipped due to low confidence (2)

voicevox_engine/preset/preset_manager.py:47

  • The error message 'Failed to migrate preset file.' is unclear. Consider providing more context, such as 'Failed to migrate preset file from engine directory to user directory.'
warnings.warn("Failed to migrate preset file.", stacklevel=1)

voicevox_engine/preset/preset_manager.py:41

  • The new migration logic for moving 'presets.yaml' from the engine directory to the user directory is not covered by tests. Ensure there is a test case that verifies this behavior.
if not self.preset_path.exists():
Copy link
Member Author

@takana-v takana-v left a comment

Choose a reason for hiding this comment

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

ユーザーディレクトリにファイルが無く、エンジン直下にファイルがある時に、ファイルをmoveする処理を追加しました。

test/unit/preset/test_preset.py Outdated Show resolved Hide resolved
old_preset_path = engine_root() / "presets.yaml"
if old_preset_path.exists():
try:
shutil.move(old_preset_path, self.preset_path)
Copy link
Member Author

Choose a reason for hiding this comment

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

shutil.moveについて以前に言及があったので、リンクを貼っておきます。
#630 (comment)

Choose a reason for hiding this comment

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

Copilot reviewed 6 out of 7 changed files in this pull request and generated no suggestions.

Files not reviewed (1)
  • README.md: Evaluated as low risk
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 です!!

@takana-v takana-v requested a review from Copilot December 1, 2024 09:57

Choose a reason for hiding this comment

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

Copilot reviewed 6 out of 7 changed files in this pull request and generated no suggestions.

Files not reviewed (1)
  • tools/make_docs.py: Evaluated as low risk
Comments skipped due to low confidence (1)

voicevox_engine/preset/preset_manager.py:48

  • The error message 'プリセットファイルのマイグレーションに失敗しました' is unclear. Consider providing more details about the failure, such as the reason or the file path.
warnings.warn("プリセットファイルのマイグレーションに失敗しました", stacklevel=1)
@takana-v takana-v requested a review from Hiroshiba December 1, 2024 10:01
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!!

@Hiroshiba
Copy link
Member

破壊的変更なので、リリースノートで案内しようと思います。
snsでの案内をしても良いのですが、対象が少ないことと、そもそも届かない確率の方が高そうなので避けたいと思います。

もしプリセット使ってるアプリがあればご連絡したいですね…!

@Hiroshiba Hiroshiba merged commit 805a5cc into VOICEVOX:master Dec 1, 2024
4 checks passed
@takana-v takana-v deleted the change-preset-path branch December 1, 2024 10:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants