from pathlib import Path PLUGIN_DIR = Path(__file__).parent def discover_plugins(): from engine.effects.registry import get_registry 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 hasattr(attr, "name") and hasattr(attr, "process") and attr_name.endswith("Effect") ): plugin = attr() registry.register(plugin) imported[plugin.name] = plugin except Exception: pass return imported