signalvault-verifiable-priv.../signalvault/registry.py

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