from pathlib import Path PLUGIN_DIR = Path(__file__).parent def discover_plugins(): from engine.effects.registry import get_registry from engine.effects.types import EffectPlugin registry = get_registry() imported = {} for file_path in PLUGIN_DIR.glob("*.py"): if file_path.name.startswith("_"): continue module_name = file_path.stem if module_name in ("base", "types"): continue try: module = __import__(f"effects_plugins.{module_name}", fromlist=[""]) for attr_name in dir(module): attr = getattr(module, attr_name) if ( isinstance(attr, type) and issubclass(attr, EffectPlugin) and attr is not EffectPlugin and attr_name.endswith("Effect") ): plugin = attr() if not isinstance(plugin, EffectPlugin): continue registry.register(plugin) imported[plugin.name] = plugin except Exception: pass return imported