Source code for ladybug_display.dictutil

# coding=utf-8
"""Utilities to convert any Ladybug Display dictionary to Python objects."""

from ladybug_display.geometry2d import DisplayVector2D, DisplayPoint2D, \
    DisplayRay2D, DisplayLineSegment2D, DisplayPolyline2D, DisplayArc2D, \
    DisplayPolygon2D, DisplayMesh2D
from ladybug_display.geometry3d import DisplayVector3D, DisplayPoint3D, \
    DisplayRay3D, DisplayPlane, DisplayLineSegment3D, DisplayPolyline3D, DisplayArc3D, \
    DisplayFace3D, DisplayMesh3D, DisplayPolyface3D, DisplaySphere, DisplayCone, \
    DisplayCylinder, DisplayText3D


[docs]def dict_to_object(display_dict, raise_exception=True): """ Args: display_dict (dict): A dictionary of any Ladybug Display geometry object. raise_exception (bool): Boolean to note whether an exception should be raised if the object is not identified as a part of ladybug_display. (Default: True). Returns: A Python object derived from the input display_dict. """ lbt_types = { 'DisplayVector2D': DisplayVector2D, 'DisplayPoint2D': DisplayPoint2D, 'DisplayRay2D': DisplayRay2D, 'DisplayLineSegment2D': DisplayLineSegment2D, 'DisplayArc2D': DisplayArc2D, 'DisplayPolyline2D': DisplayPolyline2D, 'DisplayPolygon2D': DisplayPolygon2D, 'DisplayMesh2D': DisplayMesh2D, 'DisplayVector3D': DisplayVector3D, 'DisplayPoint3D': DisplayPoint3D, 'DisplayRay3D': DisplayRay3D, 'DisplayLineSegment3D': DisplayLineSegment3D, 'DisplayArc3D': DisplayArc3D, 'DisplayPolyline3D': DisplayPolyline3D, 'DisplayMesh3D': DisplayMesh3D, 'DisplayPlane': DisplayPlane, 'DisplayPolyface3D': DisplayPolyface3D, 'DisplayFace3D': DisplayFace3D, 'DisplaySphere': DisplaySphere, 'DisplayCone': DisplayCone, 'DisplayCylinder': DisplayCylinder, 'DisplayText3D': DisplayText3D } # Get the ladybug_geometry object 'Type' try: obj_type = display_dict['type'] except KeyError: raise ValueError('Ladybug dictionary lacks required "type" key.') # Build a new Ladybug Python Object based on the "Type" try: lbt_class = lbt_types[obj_type] return lbt_class.from_dict(display_dict) except KeyError: if raise_exception: raise ValueError( '{} is not a recognized ladybug display type'.format(obj_type)) else: return None