33 lines
896 B
Python
33 lines
896 B
Python
from __future__ import annotations
|
|
from dataclasses import dataclass
|
|
from typing import Dict, Any
|
|
|
|
|
|
@dataclass
|
|
class LocalProblem:
|
|
asset_id: str
|
|
payload: Dict[str, Any]
|
|
|
|
|
|
@dataclass
|
|
class ContractDefinition:
|
|
name: str
|
|
version: str
|
|
schema: Dict[str, Any]
|
|
|
|
|
|
class ContractRegistry:
|
|
"""Lightweight, in-memory, versioned contract registry used by tests."""
|
|
|
|
def __init__(self) -> None:
|
|
self._store: Dict[str, Dict[str, ContractDefinition]] = {}
|
|
|
|
def add_contract(self, name: str, version: str, schema: Dict[str, Any]) -> None:
|
|
self._store.setdefault(name, {})[version] = ContractDefinition(name, version, schema)
|
|
|
|
def get_contract(self, name: str, version: str) -> ContractDefinition | None:
|
|
return self._store.get(name, {}).get(version)
|
|
|
|
def list_contracts(self) -> Dict[str, Dict[str, ContractDefinition]]:
|
|
return self._store
|