Mike0021/zonos2
3
1from typing import Callable, Generic, List, TypeVar2 3T = TypeVar("T")4 5 6class Registry(Generic[T]):7 def __init__(self, type: str):8 self._registry = {}9 self._type = type10 11 def register(self, name: str) -> Callable[[T], None]:12 if name in self._registry:13 raise KeyError(f"{self._type} '{name}' is already registered.")14 15 def decorator(item: T) -> None:16 self._registry[name] = item17 18 return decorator19 20 def __getitem__(self, name: str) -> T:21 if name not in self._registry:22 raise KeyError(f"Unsupported {self._type}: {name}")23 return self._registry[name]24 25 def supported_names(self) -> List[str]:26 return list(self._registry.keys())27 