Source code for pynxxas.io
"""File formats
"""
from typing import Generator
import pydantic
from . import xdi
from . import nexus
from .. import models
from .url_utils import UrlType
[docs]
def load_models(url: UrlType) -> Generator[pydantic.BaseModel, None, None]:
if xdi.is_xdi_file(url):
yield from xdi.load_xdi_file(url)
elif nexus.is_nexus_file(url):
yield from nexus.load_nexus_file(url)
else:
raise NotImplementedError(f"File format not supported: {url}")
[docs]
def save_model(model_instance: pydantic.BaseModel, url: UrlType) -> None:
if isinstance(model_instance, models.NxXasModel):
nexus.save_nexus_file(model_instance, url)
elif isinstance(model_instance, models.XdiModel):
xdi.save_xdi_file(model_instance, url)
else:
raise NotImplementedError(
f"Saving of {type(model_instance).__name__} not implemented"
)