Source code for honeybee_energy.dictutil
# coding=utf-8
"""Utilities to convertint any dictionary to Python objects.
Note that importing this module will import almost all modules within the
library in order to be able to re-serialize almost any dictionary produced
from the library.
"""
from honeybee_energy.programtype import ProgramType
from honeybee_energy.constructionset import ConstructionSet
from honeybee_energy.material.dictutil import dict_to_material, MATERIAL_TYPES
from honeybee_energy.construction.dictutil import dict_to_construction, \
CONSTRUCTION_TYPES
from honeybee_energy.schedule.dictutil import dict_to_schedule, SCHEDULE_TYPES
from honeybee_energy.load.dictutil import dict_to_load, LOAD_TYPES
from honeybee_energy.simulation.dictutil import dict_to_simulation, SIMULATION_TYPES
[docs]
def dict_to_object(honeybee_energy_dict, raise_exception=True):
"""Re-serialize a dictionary of almost any object within honeybee_energy.
This includes any Material, Construction, ConstructionSet, Schedule, Load,
ProgramType, or Simulation object.
Args:
honeybee_energy_dict: A dictionary of any Honeybee energy object. Note
that this should be a non-abridged dictionary to be valid.
raise_exception: Boolean to note whether an exception should be raised
if the object is not identified as a part of honeybee_energy.
Default: True.
Returns:
A Python object derived from the input honeybee_energy_dict.
"""
try: # get the type key from the dictionary
obj_type = honeybee_energy_dict['type']
except KeyError:
raise ValueError('Honeybee_energy dictionary lacks required "type" key.')
if obj_type == 'ProgramType':
return ProgramType.from_dict(honeybee_energy_dict)
elif obj_type == 'ConstructionSet':
return ConstructionSet.from_dict(honeybee_energy_dict)
elif obj_type in SCHEDULE_TYPES:
return dict_to_schedule(honeybee_energy_dict)
elif obj_type in CONSTRUCTION_TYPES:
return dict_to_construction(honeybee_energy_dict)
elif obj_type in MATERIAL_TYPES:
return dict_to_material(honeybee_energy_dict)
elif obj_type in LOAD_TYPES:
return dict_to_load(honeybee_energy_dict)
elif obj_type in SIMULATION_TYPES:
return dict_to_simulation(honeybee_energy_dict)
elif raise_exception:
raise ValueError(
'{} is not a recognized honeybee energy object'.format(obj_type)
)