idea135-crisisops-open-crisis/crisisops/adapters_registry.py

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"))