模块管理优化

This commit is contained in:
liuwei
2025-03-20 10:50:19 +08:00
parent d27d8c1a39
commit a5a596d10b

View File

@@ -139,10 +139,10 @@ class PluginManager:
plugin_class = None plugin_class = None
for name, obj in inspect.getmembers(module): for name, obj in inspect.getmembers(module):
if (inspect.isclass(obj) and if (inspect.isclass(obj) and
issubclass(obj, PluginInterface) and issubclass(obj, PluginInterface) and
obj != PluginInterface and obj != PluginInterface and
obj != MessagePluginInterface and obj != MessagePluginInterface and
obj != ScheduledPluginInterface): obj != ScheduledPluginInterface):
plugin_class = obj plugin_class = obj
break break
@@ -407,31 +407,31 @@ class PluginManager:
return success return success
def find_plugin_by_name(self, plugin_name: str) -> Tuple[Optional[str], Optional[PluginInterface]]: def find_plugin_by_name(self, plugin_name: str) -> Tuple[Optional[str], Optional[PluginInterface]]:
""" """
根据插件名称或模块名查找插件 根据插件名称或模块名查找插件
Args: Args:
plugin_name: 插件名称或模块名 plugin_name: 插件名称或模块名
Returns: Returns:
(插件显示名称, 插件实例) 元组,未找到返回 (None, None) (插件显示名称, 插件实例) 元组,未找到返回 (None, None)
""" """
# 直接通过显示名称查找 # 直接通过显示名称查找
if plugin_name in self.plugins: if plugin_name in self.plugins:
return plugin_name, self.plugins[plugin_name] return plugin_name, self.plugins[plugin_name]
# 通过模块名查找 # 通过模块名查找
if plugin_name in self.module_to_plugin: if plugin_name in self.module_to_plugin:
display_name = self.module_to_plugin[plugin_name] display_name = self.module_to_plugin[plugin_name]
return display_name, self.plugins.get(display_name) return display_name, self.plugins.get(display_name)
# 遍历所有插件查找匹配的模块名 # 遍历所有插件查找匹配的模块名
for name, plugin in self.plugins.items(): for name, plugin in self.plugins.items():
try: try:
module_name = plugin.__class__.__module__.split('.')[-2] module_name = plugin.__class__.__module__.split('.')[-2]
if module_name == plugin_name: if module_name == plugin_name:
return name, plugin return name, plugin
except (IndexError, AttributeError): except (IndexError, AttributeError):
continue continue
return None, None return None, None