33 lines
894 B
Python
33 lines
894 B
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from typing import Dict
|
|
|
|
|
|
@dataclass
|
|
class AdapterEntry:
|
|
name: str
|
|
version: str
|
|
contract: dict
|
|
|
|
|
|
class GraphOfContracts:
|
|
def __init__(self) -> None:
|
|
self._adapters: Dict[str, AdapterEntry] = {}
|
|
self._contracts: Dict[str, dict] = {}
|
|
|
|
def register_adapter(self, name: str, version: str, contract: dict) -> AdapterEntry:
|
|
entry = AdapterEntry(name=name, version=version, contract=contract)
|
|
self._adapters[name] = entry
|
|
self._contracts[name] = contract
|
|
return entry
|
|
|
|
def get_adapter(self, name: str) -> AdapterEntry | None:
|
|
return self._adapters.get(name)
|
|
|
|
def list_adapters(self) -> list[AdapterEntry]:
|
|
return list(self._adapters.values())
|
|
|
|
def get_contract(self, name: str) -> dict | None:
|
|
return self._contracts.get(name)
|