Source code for sim_panel.schema.registry

from __future__ import annotations

from dataclasses import dataclass
from typing import Dict, Type

from pydantic import BaseModel

from sim_panel.schema.versions.v0_1_0 import EventV0_1_0, SCHEMA_VERSION as V0_1_0


[docs] @dataclass(frozen=True) class SchemaSpec: version: str model: Type[BaseModel]
_REGISTRY: Dict[str, SchemaSpec] = { V0_1_0: SchemaSpec(version=V0_1_0, model=EventV0_1_0), }
[docs] def get_schema(version: str) -> SchemaSpec: try: return _REGISTRY[version] except KeyError as e: known = ", ".join(sorted(_REGISTRY.keys())) raise ValueError(f"Unknown schema_version={version!r}. Known: {known}") from e