Source code for pynxxas.models.convert

from typing import Type, Generator
import pydantic

from . import xdi
from . import nexus
from .. import XdiModel
from .. import NxXasModel


[docs] def convert_model( instance: pydantic.BaseModel, model_type: Type[pydantic.BaseModel] ) -> Generator[pydantic.BaseModel, None, None]: if isinstance(instance, model_type): yield instance mod_from = _CONVERT_MODULE.get(type(instance)) mod_to = _CONVERT_MODULE.get(model_type) if mod_from is None or mod_to is None: raise NotImplementedError( f"Conversion from {type(instance).__name__} to {model_type.__name__} is not implemented" ) for nxxas_model in mod_from.to_nxxas(instance): yield from mod_to.from_nxxas(nxxas_model)
_CONVERT_MODULE = {XdiModel: xdi, NxXasModel: nexus}