from autogencap.actor_runtime import IRuntime from autogencap.constants import ZMQ_Runtime from autogencap.DebugLog import Error from autogencap.zmq_runtime import ZMQRuntime class RuntimeFactory: _supported_runtimes = {} """ Factory class for creating a runtime instance. """ @staticmethod def get_runtime(runtime_type: str = ZMQ_Runtime) -> IRuntime: """ Creates a runtime instance based on the runtime type. :param runtime_type: The type of runtime to create. :return: The runtime instance. """ if runtime_type in RuntimeFactory._supported_runtimes: return RuntimeFactory._supported_runtimes[runtime_type] else: not_found = f"Runtime type not found: {runtime_type}" Error("RuntimeFactory", not_found) raise ValueError(not_found) @staticmethod def register_runtime(runtime_type: str, runtime: IRuntime): """ Registers a runtime instance. :param runtime: The runtime instance. """ RuntimeFactory._supported_runtimes[runtime_type] = runtime @classmethod def _initialize(cls): """ Static initialization method. """ cls.register_runtime(ZMQ_Runtime, ZMQRuntime()) # Static initialization RuntimeFactory._initialize()