Source code for honeybee_radiance.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_radiance.putil import dict_to_primitive
from honeybee_radiance.modifierset import ModifierSet
from honeybee_radiance.sensorgrid import SensorGrid
from honeybee_radiance.view import View
from honeybee_radiance.lightsource.dictutil import dict_to_light_source, \
    LIGHT_SOURCE_TYPES


[docs]def dict_to_object(honeybee_radiance_dict, raise_exception=True): """Re-serialize a dictionary of almost any object within honeybee_radiance. This includes any Modifier, ModifierSet, LightSource, SensorGrid or View object. Args: honeybee_radiance_dict: A dictionary of any Honeybee radiance object. Note that this should be a non-abridged dictionary to be valid. raise_exception: Boolean to note whether an excpetion should be raised if the object is not identified as a part of honeybee_radiance. Default: True. Returns: A Python object derived from the input honeybee_radiance_dict. """ try: # get the type key from the dictionary obj_type = honeybee_radiance_dict['type'] except KeyError: raise ValueError('Honeybee_radiance dictionary lacks required "type" key.') if obj_type == 'ModifierSet': return ModifierSet.from_dict(honeybee_radiance_dict) elif obj_type == 'SensorGrid': return SensorGrid.from_dict(honeybee_radiance_dict) elif obj_type == 'View': return View.from_dict(honeybee_radiance_dict) elif obj_type in LIGHT_SOURCE_TYPES: return dict_to_light_source(honeybee_radiance_dict) else: try: return dict_to_primitive(honeybee_radiance_dict) except (NotImplementedError, ValueError): if raise_exception: raise ValueError( '{} is not a recognized honeybee radiance object'.format(obj_type))