38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
"""Registry for crisis adapters (toy MVP)."""
|
|
from __future__ import annotations
|
|
from typing import Dict, Any, Optional
|
|
|
|
|
|
class Adapter:
|
|
name: str
|
|
|
|
def __init__(self, name: str):
|
|
self.name = name
|
|
|
|
def schema(self) -> Dict[str, Any]:
|
|
return {"adapter": self.name, "version": "0.1.0"}
|
|
|
|
def adapt(self, data: Dict[str, Any]) -> Dict[str, Any]:
|
|
# Placeholder; real adapters translate domain data into standardized signals
|
|
return {"adapted": True, **data}
|
|
|
|
|
|
class AdaptersRegistry:
|
|
def __init__(self) -> None:
|
|
self._registry: Dict[str, Adapter] = {}
|
|
|
|
def register(self, adapter: Adapter) -> None:
|
|
self._registry[adapter.name] = adapter
|
|
|
|
def get(self, name: str) -> Optional[Adapter]:
|
|
return self._registry.get(name)
|
|
|
|
def list_adapters(self) -> Dict[str, Adapter]:
|
|
return dict(self._registry)
|
|
|
|
|
|
# Lightweight default registry with two toy adapters registered at import time
|
|
registry = AdaptersRegistry()
|
|
registry.register(Adapter("inventory_portal"))
|
|
registry.register(Adapter("gis_dispatch"))
|