Source code for honeybee_radiance.lightsource.dictutil
# coding=utf-8
"""Utilities to convert light source dictionaries to Python objects."""
from honeybee_radiance.lightsource.sunpath import Sunpath
from honeybee_radiance.lightsource.ground import Ground
from honeybee_radiance.lightsource.sky.certainirradiance import CertainIrradiance
from honeybee_radiance.lightsource.sky.cie import CIE
from honeybee_radiance.lightsource.sky.climatebased import ClimateBased
from honeybee_radiance.lightsource.sky.hemisphere import Hemisphere
from honeybee_radiance.lightsource.sky.skydome import SkyDome
from honeybee_radiance.lightsource.sky.skymatrix import SkyMatrix
from honeybee_radiance.lightsource.sky.sunmatrix import SunMatrix
LIGHT_SOURCE_TYPES = {
'Sunpath': Sunpath,
'Ground': Ground,
'CertainIrradiance': CertainIrradiance,
'CIE': CIE,
'ClimateBased': ClimateBased,
'Hemisphere': Hemisphere,
'SkyDome': SkyDome,
'SkyMatrix': SkyMatrix,
'SunMatrix': SunMatrix
}
[docs]
def dict_to_light_source(light_source_dict, raise_exception=True):
"""Get a Python object of any light source from a dictionary.
Args:
light_source_dict: A dictionary of any Honeybee Radiance light source. 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 light source. Default: True.
Returns:
A Python object derived from the input light_source_dict.
"""
try: # get the type key from the dictionary
light_type = light_source_dict['type']
except KeyError:
raise ValueError('Light source dictionary lacks required "type" key.')
try:
return LIGHT_SOURCE_TYPES[light_type].from_dict(light_source_dict)
except KeyError:
if raise_exception:
raise ValueError(
'{} is not a recognized radiance Light Source type'.format(light_type))