26 lines
901 B
Python
26 lines
901 B
Python
from __future__ import annotations
|
|
|
|
from typing import Dict, Any
|
|
from .schema import HedgePlan
|
|
|
|
|
|
class GraphOfContractsRegistry:
|
|
"""A tiny in-memory registry mapping adapters to their data/contract contracts."""
|
|
|
|
def __init__(self) -> None:
|
|
self._registry: Dict[str, Dict[str, Any]] = {}
|
|
|
|
def register_adapter(self, name: str, contract: Dict[str, Any]) -> None:
|
|
self._registry[name] = contract
|
|
|
|
def get_contract(self, name: str) -> dict[str, Any] | None:
|
|
return self._registry.get(name)
|
|
|
|
def conformance_check(self, name: str, contract_candidate: dict[str, Any]) -> bool:
|
|
# Minimal conformance: ensure required keys exist
|
|
required = {"version", "data_contract"}
|
|
if name not in self._registry:
|
|
return False
|
|
base = self._registry[name]
|
|
return required.issubset(set(base.keys())) and "data_contract" in base
|