From 693e61073a283c6136461697c943f640cc24f43b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 16 Oct 2024 20:51:10 +0530 Subject: [PATCH] Fix reloading of tts config not working till viewer restarted --- src/calibre/gui2/tts/types.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/tts/types.py b/src/calibre/gui2/tts/types.py index ca5c7d0ec2..547d4fef67 100644 --- a/src/calibre/gui2/tts/types.py +++ b/src/calibre/gui2/tts/types.py @@ -16,11 +16,13 @@ from calibre.utils.localization import canonicalize_lang CONFIG_NAME = 'tts' TTS_EMBEDED_CONFIG = 'tts-embedded' +conf_cache = {} # for some reason LRU cache doesn't work for this -@lru_cache(2) def load_config(config_name=CONFIG_NAME) -> JSONConfig: - return JSONConfig(config_name) + if (ans := conf_cache.get(config_name)) is None: + ans = conf_cache[config_name] = JSONConfig(config_name) + return ans class TrackingCapability(Enum): @@ -158,8 +160,9 @@ class EngineSpecificSettings(NamedTuple): @classmethod def create_from_config(cls, engine_name: str, config_name: str = CONFIG_NAME) -> 'EngineSpecificSettings': - prefs = load_config(config_name).get('engines', {}).get(engine_name, {}) - return cls.create_from_prefs(engine_name, prefs) + prefs = load_config(config_name) + val = prefs.get('engines', {}).get(engine_name, {}) + return cls.create_from_prefs(engine_name, val) @property def as_dict(self) -> dict[str, object]: @@ -183,7 +186,7 @@ class EngineSpecificSettings(NamedTuple): return ans def save_to_config(self, prefs:JSONConfig | None = None, config_name: str = CONFIG_NAME): - prefs = prefs or load_config(config_name) + prefs = load_config(config_name) if prefs is None else prefs val = self.as_dict engines = prefs.get('engines', {}) if not val: