Source code for fastiot.util.object_helper

from typing import Dict, Type, Union, List

from pydantic import BaseModel

from fastiot import logging
from fastiot.core.data_models import FastIoTData


[docs]def parse_object(dic: Dict, data_model: Type[Union[Type[FastIoTData], BaseModel]]) -> \ Union[Type[Union[FastIoTData, BaseModel]], None]: """ This function will help you convert a dictionary to an instance, of which the class inherits FastIoTData or BaseModel. .. code:: python my_dict = {'name': 'test_dict', 'value': 123} obj = parse_object(my_dict, MyDataModel) >>> MyDataModel(name='test_dict', value=123) """ if issubclass(data_model, FastIoTData) or issubclass(data_model, BaseModel): return data_model.parse_obj(dic) logging.error('Please use the Data Model, which inherits FastIoTData or BaseModel') return None
[docs]def parse_object_list(dict_list: List[Dict], data_model: Type[Union[FastIoTData, BaseModel]]) -> \ Union[List[Type[Union[FastIoTData, BaseModel]]], None]: """ This function helps you to convert a list of dictionaries to a list of instance, of which the class inherits FastIoTData or BaseModel .. code:: python my_dict_list = [{'name': 'test_dict_1', 'value': 123}, {'name': 'test_dict_2', 'value': 23}] obj_list = parse_object_list(my_dict_list, MyDataModel) >>> [MyDataModel(name='test_dict_1', value=123), MyDataModel(name='test_dict_2', value=23)] """ data_model_list = [parse_object(dict_data, data_model) for dict_data in dict_list] return data_model_list