Update Wall-X to 1.1.0 (#104)

This commit is contained in:
Starrick Liu
2026-06-15 11:40:00 +08:00
committed by GitHub
parent e23a586846
commit 72834e7de5
200 changed files with 33916 additions and 16771 deletions
+64
View File
@@ -0,0 +1,64 @@
"""Decorator-based model adapter registry."""
from __future__ import annotations
from typing import Dict, Type
# Global registry mapping model_type string -> adapter class
_MODEL_REGISTRY: Dict[str, Type] = {}
def register_model(model_type: str):
"""Decorator to register an adapter class for a given model_type.
Can be stacked to register the same class for multiple model_types:
@register_model("qwen2_5")
class QActAdapter: ...
"""
def decorator(cls):
if model_type in _MODEL_REGISTRY:
existing = _MODEL_REGISTRY[model_type]
if existing is not cls:
raise ValueError(
f"model_type '{model_type}' already registered to "
f"{existing.__name__}, cannot re-register to {cls.__name__}"
)
_MODEL_REGISTRY[model_type] = cls
return cls
return decorator
def get_adapter(model_type: str, **kwargs):
"""Instantiate the adapter registered for model_type.
Args:
model_type: Registered model type string (e.g. "qwen2_5").
**kwargs: Passed to the adapter constructor.
Returns:
An adapter instance.
Raises:
KeyError: If model_type is not registered.
"""
if model_type not in _MODEL_REGISTRY:
available = ", ".join(sorted(_MODEL_REGISTRY.keys())) or "(none)"
raise KeyError(
f"Unknown model_type '{model_type}'. "
f"Available: {available}. "
f"Did you forget to import the adapter module?"
)
return _MODEL_REGISTRY[model_type](**kwargs)
def list_registered_models() -> list:
"""Return sorted list of registered model_type strings."""
return sorted(_MODEL_REGISTRY.keys())
def clear_registry():
"""Clear all registrations. Intended for testing only."""
_MODEL_REGISTRY.clear()