Source code for profile_photo.utils.json_util
from __future__ import annotations
from json import load
from pathlib import Path
from dataclass_wizard.abstractions import W
from ..models import Params
[docs]def load_to_model(model_cls: type[W], data: W | dict | str | Path, param: Params | str) -> W:
"""Load `data` as an instance of a model class `model_cls`."""
if isinstance(data, model_cls):
return data
if isinstance(data, dict):
return model_cls.from_dict(data)
if isinstance(data, Path):
with open(data) as in_file:
return model_cls.from_dict(load(in_file))
if isinstance(data, str):
return model_cls.from_json(data)
raise ValueError(f'Invalid type ({type(data)}) for `{param}`') from None