Source code for nirs4all.controllers.registry

"""
OperatorRegistry.py
A registry for operator controllers in the nirs4all pipeline.
"""

from typing import Type
from .controller import OperatorController

CONTROLLER_REGISTRY = []
[docs] def register_controller(operator_cls: Type[OperatorController]): """Decorator to register a controller class.""" global CONTROLLER_REGISTRY if not issubclass(operator_cls, OperatorController): raise TypeError(f"Operator class {operator_cls.__name__} must inherit from OperatorController") # Check if controller is already registered (avoid duplicates) if any(c.__name__ == operator_cls.__name__ and c.__module__ == operator_cls.__module__ for c in CONTROLLER_REGISTRY): # print(f"Controller {operator_cls.__name__} already registered, skipping...") return operator_cls # print(f"Registering controller: {operator_cls.__name__}") CONTROLLER_REGISTRY.append(operator_cls) CONTROLLER_REGISTRY.sort(key=lambda c: c.priority) # print(f"Registry now has {len(CONTROLLER_REGISTRY)} controllers: {[c.__name__ for c in CONTROLLER_REGISTRY]}") return operator_cls
[docs] def reset_registry(): """Reset the controller registry.""" global CONTROLLER_REGISTRY CONTROLLER_REGISTRY = []
# print("Controller registry has been reset.")