From 8f90fa6b69c392a474c1336febdd067fabad522d Mon Sep 17 00:00:00 2001 From: tarepan Date: Tue, 9 Apr 2024 21:49:54 +0900 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86:=20=E3=83=97=E3=83=AA?= =?UTF-8?q?=E3=82=BB=E3=83=83=E3=83=88=E3=81=AE=20public=20=E3=83=A1?= =?UTF-8?q?=E3=82=BD=E3=83=83=E3=83=89=E5=91=BC=E3=81=B3=E5=87=BA=E3=81=97?= =?UTF-8?q?=E3=81=AB=E3=82=88=E3=82=8B=E5=86=85=E9=83=A8=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E3=82=92=20private=20=E3=81=B8=E5=A4=89=E6=9B=B4=20(#1163)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: プリセットマネージャー関数名と実装の簡略化 * fix: placeholder 関数の型違いを修正 * revert: メソッド名変更を取り消し --- test/preset/test_preset.py | 6 +- voicevox_engine/preset/PresetManager.py | 76 +++++++------------------ 2 files changed, 24 insertions(+), 58 deletions(-) diff --git a/test/preset/test_preset.py b/test/preset/test_preset.py index 4a3b61609..88223fc5f 100644 --- a/test/preset/test_preset.py +++ b/test/preset/test_preset.py @@ -179,7 +179,7 @@ def test_add_preset_write_failure(self) -> None: } ) preset_manager.load_presets() - preset_manager.load_presets = lambda: [] # type:ignore[method-assign] + preset_manager._refresh_cache = lambda: None # type:ignore[method-assign] preset_manager.preset_path = "" # type: ignore[assignment] with self.assertRaises( PresetError, msg="プリセットの設定ファイルに書き込み失敗しました" @@ -278,7 +278,7 @@ def test_update_preset_write_failure(self) -> None: } ) preset_manager.load_presets() - preset_manager.load_presets = lambda: [] # type:ignore[method-assign] + preset_manager._refresh_cache = lambda: None # type:ignore[method-assign] preset_manager.preset_path = "" # type: ignore[assignment] with self.assertRaises( PresetError, msg="プリセットの設定ファイルに書き込み失敗しました" @@ -318,7 +318,7 @@ def test_delete_preset_write_failure(self) -> None: copyfile(presets_test_1_yaml_path, temp_path) preset_manager = PresetManager(preset_path=temp_path) preset_manager.load_presets() - preset_manager.load_presets = lambda: [] # type:ignore[method-assign] + preset_manager._refresh_cache = lambda: None # type:ignore[method-assign] preset_manager.preset_path = "" # type: ignore[assignment] with self.assertRaises( PresetError, msg="プリセットの設定ファイルに書き込み失敗しました" diff --git a/voicevox_engine/preset/PresetManager.py b/voicevox_engine/preset/PresetManager.py index c554e3e46..2b5c24e65 100644 --- a/voicevox_engine/preset/PresetManager.py +++ b/voicevox_engine/preset/PresetManager.py @@ -17,31 +17,20 @@ class PresetManager: """ def __init__(self, preset_path: Path): - """ - Parameters - ---------- - preset_path : Path - プリセット情報を一元管理するYAMLファイルへのパス - """ - self.presets: list[Preset] = [] + """プリセットの設定ファイルへのパスからプリセットマネージャーを生成する""" + self.presets: list[Preset] = [] # 全プリセットのキャッシュ self.last_modified_time = 0.0 self.preset_path = preset_path - def load_presets(self) -> list[Preset]: - """ - 既存プリセットの読み込み - Returns - ------- - ret: list[Preset] - 読み込まれたプリセットのリスト - """ + def _refresh_cache(self) -> None: + """プリセットの設定ファイルの最新状態をキャッシュへ反映する""" # データベース更新の確認(タイムスタンプベース) try: _last_modified_time = self.preset_path.stat().st_mtime if _last_modified_time == self.last_modified_time: - # 更新無し、キャッシュを返す - return self.presets + # 更新無し + return except OSError: raise PresetError("プリセットの設定ファイルが見つかりません") @@ -61,26 +50,15 @@ def load_presets(self) -> list[Preset]: ): raise PresetError("プリセットのidに重複があります") + # キャッシュを更新する self.presets = _presets self.last_modified_time = _last_modified_time - return self.presets - def add_preset(self, preset: Preset) -> int: - """ - 新規プリセットの追加 - Parameters - ---------- - preset : Preset - 新規プリセット - Returns - ------- - ret: int - 追加されたプリセットのID - """ + """新規プリセットを追加し、その ID を取得する。""" # データベース更新の反映 - self.load_presets() + self._refresh_cache() # 新規プリセットID の発行。IDが0未満、または存在するIDなら新規IDを発行 if preset.id < 0 or preset.id in {preset.id for preset in self.presets}: @@ -100,21 +78,19 @@ def add_preset(self, preset: Preset) -> int: return preset.id + def load_presets(self) -> list[Preset]: + """全てのプリセットを取得する""" + + # データベース更新の反映 + self._refresh_cache() + + return self.presets + def update_preset(self, preset: Preset) -> int: - """ - 既存プリセットの更新 - Parameters - ---------- - preset : Preset - 新しい既存プリセット - Returns - ------- - ret: int - 更新されたプリセットのID - """ + """指定されたプリセットを更新し、その ID を取得する。""" # データベース更新の反映 - self.load_presets() + self._refresh_cache() # 対象プリセットの検索 prev_preset: tuple[int, Preset | None] = (-1, None) @@ -139,20 +115,10 @@ def update_preset(self, preset: Preset) -> int: return preset.id def delete_preset(self, id: int) -> int: - """ - 指定したIDのプリセットの削除 - Parameters - ---------- - id: int - 削除対象プリセットのID - Returns - ------- - ret: int - 削除されたプリセットのID - """ + """ID で指定されたプリセットを削除し、その ID を取得する。""" # データベース更新の反映 - self.load_presets() + self._refresh_cache() # 対象プリセットの検索 buf = None