23 lines
716 B
Python
23 lines
716 B
Python
"""In-memory contract registry for versioned data contracts."""
|
|
from __future__ import annotations
|
|
|
|
from typing import Dict, Tuple, Any
|
|
|
|
|
|
class ContractRegistry:
|
|
def __init__(self) -> None:
|
|
# key: (name, version) -> contract_schema (any JSON-serializable contract descriptor)
|
|
self._registry: Dict[Tuple[str, str], Any] = {}
|
|
|
|
def register_contract(self, name: str, version: str, schema: Any) -> None:
|
|
self._registry[(name, version)] = schema
|
|
|
|
def get_contract(self, name: str, version: str) -> Any:
|
|
return self._registry.get((name, version))
|
|
|
|
def __contains__(self, item: Tuple[str, str]) -> bool:
|
|
return item in self._registry
|
|
|
|
|
|
__all__ = ["ContractRegistry"]
|