from __future__ import annotations from dataclasses import dataclass, field from typing import Dict, Optional @dataclass class AdaptorContract: name: str version: str description: str @dataclass class GoCRegistry: contracts: Dict[str, AdaptorContract] = field(default_factory=dict) def register(self, name: str, version: str, description: str) -> AdaptorContract: c = AdaptorContract(name, version, description) self.contracts[f"{name}:{version}"] = c return c def get(self, name: str, version: str) -> Optional[AdaptorContract]: return self.contracts.get(f"{name}:{version}")