python-reflexion/02-plugins/demo.py
2025-10-21 20:38:10 +02:00

33 lines
834 B
Python

from base import Plugin
from collections.abc import Sequence
def load_plugins() -> Sequence[Plugin]:
from importlib import import_module
import yaml
with open('config.yml') as config_file:
config = yaml.load(config_file, Loader=yaml.Loader)
plugins = []
for plugin_def in config['plugins']:
plugin_name = plugin_def['name']
plugin_config = plugin_def['config']
module_name, class_name = plugin_name.split(':')
module = import_module(module_name)
plugin_class = getattr(module, class_name)
plugin = plugin_class(**plugin_config)
plugins.append(plugin)
return plugins
def fire_hook(plugins: Sequence[Plugin]):
for plugin in plugins:
plugin.hook()
if __name__ == '__main__':
plugins = load_plugins()
fire_hook(plugins)