ReMe/experiencemaker/utils/registry.py
2025-06-13 10:53:17 +08:00

27 lines
764 B
Python

from typing import List
from loguru import logger
class Registry(object):
def __init__(self):
self._registry = {}
def register(self, name: str = None):
def decorator(cls):
class_name = name if name is not None else cls.__name__
if class_name in self._registry:
logger.warning(f"name={class_name} is already registered, will be overwritten.")
self._registry[class_name] = cls
return cls
return decorator
def __getitem__(self, name: str):
if name not in self._registry:
raise KeyError(f"name={name} is not registered!")
return self._registry[name]
def list_all(self) -> List[str]:
return sorted(self._registry.keys())