diff --git a/src/calibre/ai/__init__.py b/src/calibre/ai/__init__.py index 2cef259b77..e87116bb1e 100644 --- a/src/calibre/ai/__init__.py +++ b/src/calibre/ai/__init__.py @@ -146,3 +146,7 @@ class AICapabilities(Flag): @property def supports_text_to_image(self) -> bool: return AICapabilities.text_to_image in self + + @property + def purpose(self) -> str: + return 'AICapabilities.'+'|'.join(sorted(x.name for x in self)) diff --git a/src/calibre/ai/config.py b/src/calibre/ai/config.py index 78564863e8..992c6a1de1 100644 --- a/src/calibre/ai/config.py +++ b/src/calibre/ai/config.py @@ -68,7 +68,7 @@ class ConfigureAI(QWidget): return False p.save_settings(w) pmap = prefs()['purpose_map'] - pmap[str(self.purpose)] = p.name + pmap[self.purpose.purpose] = p.name prefs().set('purpose_map', pmap) return True diff --git a/src/calibre/ai/prefs.py b/src/calibre/ai/prefs.py index 23893c37d4..8330e3c9a6 100644 --- a/src/calibre/ai/prefs.py +++ b/src/calibre/ai/prefs.py @@ -42,7 +42,7 @@ def plugins_for_purpose(purpose: AICapabilities) -> Iterator[AIProviderPlugin]: def plugin_for_purpose(purpose: AICapabilities) -> AIProviderPlugin | None: compatible_plugins = {p.name: p for p in plugins_for_purpose(purpose)} - q = prefs()['purpose_map'].get(str(purpose), '') + q = prefs()['purpose_map'].get(purpose.purpose, '') if ans := compatible_plugins.get(q): return ans if compatible_plugins: