idea172-bevault-verifiable-.../idea172_bevault_verifiable_.../registry.py

48 lines
1.4 KiB
Python

"""Graph-of-Contracts (GoC) registry and minimal adapters registry.
This is a lightweight, production-oriented scaffold for the MVP.
"""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Dict, Optional
from .core import HedgeDelta
# Import adapters to ensure their classes are discoverable when registry loads
from .adapters.price_feed import PriceFeedAdapter
from .adapters.broker import BrokerAdapter
@dataclass
class GoCRegistry:
"""Registry for adapters and data contracts (toy GoC)."""
adapters: Dict[str, object] = field(default_factory=dict)
def __post_init__(self):
# Initialize to an empty mapping if not provided
if self.adapters is None:
self.adapters = {}
def register_adapter(self, adapter) -> None:
self.adapters[adapter.name] = adapter
def get_adapter(self, name: str) -> Optional[object]:
return self.adapters.get(name)
class GraphOfContracts:
"""Lightweight catalog for contract versions and replay metadata."""
def __init__(self) -> None:
self.contracts: Dict[str, str] = {}
def register_contract(self, name: str, version: str) -> None:
self.contracts[name] = version
def get_contract(self, name: str) -> Optional[str]:
return self.contracts.get(name)
def list_contracts(self):
return list(self.contracts.items())
__all__ = ["GoCRegistry", "GraphOfContracts"]