Files
EvoSynth/jailbreak_toolbox/core/registry.py
T
dongdongunique f3af94df0b first commit
2025-12-10 00:54:02 +08:00

34 lines
1.1 KiB
Python

from typing import Any, Callable, Dict, Type, List
class Registry:
def __init__(self, name: str):
self._name = name
self._registry: Dict[str, Any] = {}
def register(self, name: str) -> Callable:
def decorator(cls: Type) -> Type:
if name in self._registry:
print(f"Warning: '{name}' is being overwritten in the {self._name} registry.")
self._registry[name] = cls
return cls
return decorator
def get(self, name: str) -> Any:
if name not in self._registry:
available = list(self._registry.keys())
raise ValueError(f"'{name}' not found in {self._name} registry. Available: {available}")
return self._registry[name]
def list(self) -> List[str]:
return list(self._registry.keys())
# --- 全局注册表实例 ---
attack_registry = Registry("Attacks")
model_registry = Registry("Models")
dataset_registry = Registry("Datasets")
evaluator_registry = Registry("Evaluators")
# --- 策略专属注册表 ---
judge_registry = Registry("Judges")
advancer_registry = Registry("Advancers")
propagator_registry = Registry("Propagators")