pyqres.core.registry 源代码
from typing import Dict, Type
[文档]
class OperationRegistry:
"""Central registry for all Operation subclasses."""
_registry: Dict[str, Type] = {}
[文档]
@classmethod
def auto_register(cls, node_cls):
cls._registry[node_cls.__name__] = node_cls
return node_cls
[文档]
@classmethod
def register(cls, name: str = None):
def decorator(node_cls):
key = name or node_cls.__name__
cls._registry[key] = node_cls
return node_cls
return decorator
[文档]
@classmethod
def get_class(cls, name: str):
if name not in cls._registry:
raise ValueError(f"Operation '{name}' not registered")
return cls._registry[name]
[文档]
@classmethod
def has_class(cls, name: str) -> bool:
return name in cls._registry
[文档]
@classmethod
def remove_class(cls, name: str):
if name in cls._registry:
del cls._registry[name]
[文档]
@classmethod
def all_names(cls):
return list(cls._registry.keys())
# Backward compat alias
NodeRegistry = OperationRegistry