Refactor PluginService to use type hints for

plugins
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-12-06 10:44:06 -03:00
commit 5bbb343681

View file

@ -1,9 +1,10 @@
import importlib import importlib
import inspect import inspect
import os import os
from typing import TYPE_CHECKING, Union
from langflow.services.base import Service from langflow.services.base import Service
from langflow.services.plugins.base import BasePlugin from langflow.services.plugins.base import BasePlugin
from typing import TYPE_CHECKING, Union
if TYPE_CHECKING: if TYPE_CHECKING:
from langflow.services.settings.service import SettingsService from langflow.services.settings.service import SettingsService
@ -13,7 +14,7 @@ class PluginService(Service):
name = "plugin_service" name = "plugin_service"
def __init__(self, settings_service: "SettingsService"): def __init__(self, settings_service: "SettingsService"):
self.plugins = {} self.plugins: dict[str, BasePlugin] = {}
plugin_dir = settings_service.settings.PLUGIN_DIR plugin_dir = settings_service.settings.PLUGIN_DIR
self.plugin_dir = plugin_dir or os.path.dirname(__file__) self.plugin_dir = plugin_dir or os.path.dirname(__file__)
@ -26,11 +27,7 @@ class PluginService(Service):
mod = importlib.import_module(module_path) mod = importlib.import_module(module_path)
for attr_name in dir(mod): for attr_name in dir(mod):
attr = getattr(mod, attr_name) attr = getattr(mod, attr_name)
if ( if inspect.isclass(attr) and issubclass(attr, BasePlugin) and attr is not BasePlugin:
inspect.isclass(attr)
and issubclass(attr, BasePlugin)
and attr is not BasePlugin
):
self.register_plugin(plugin_name, attr()) self.register_plugin(plugin_name, attr())
def register_plugin(self, plugin_name, plugin_instance): def register_plugin(self, plugin_name, plugin_instance):