deltaforge-real-time-cross-.../deltaforge_skeleton/goc_registry.py

33 lines
982 B
Python

from __future__ import annotations
from dataclasses import dataclass, field
from typing import Dict, Optional
@dataclass
class GoCContract:
name: str
version: str
schema: dict = field(default_factory=dict)
@dataclass
class GoCRegistry:
"""Lightweight Graph-of-Contracts registry for GoC interoperability.
This is intentionally minimal: it stores versioned contract schemas for adapters
and primitives. Producers can register contracts, and consumers can fetch them
by (name, version).
"""
contracts: Dict[str, GoCContract] = field(default_factory=dict)
def register(self, name: str, version: str, schema: Optional[dict] = None) -> str:
key = f"{name}:{version}"
self.contracts[key] = GoCContract(name=name, version=version, schema=(schema or {}))
return key
def get_contract(self, name: str, version: str) -> Optional[GoCContract]:
key = f"{name}:{version}"
return self.contracts.get(key)