Source code for ladybug_geometry.dictutil

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

Note that importing this module will import almost all modules within the
Ladybug_geometry library in order to be able to re-serialize almost any
dictionary produced from the library.
"""
from __future__ import division

from ladybug_geometry.geometry2d import Vector2D, Point2D, Ray2D, \
    LineSegment2D, Arc2D, Polyline2D, Polygon2D, Mesh2D
from ladybug_geometry.geometry3d import Vector3D, Point3D, Ray3D, LineSegment3D, \
    Arc3D, Polyline3D, Polyface3D, Mesh3D, Plane, Face3D, Sphere, Cone, Cylinder


[docs] def geometry_dict_to_object(ladybug_geom_dict, raise_exception=True): """ Args: ladybug_geom_dict (dict): A dictionary of any Ladybug 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_geometry. Default: True. Returns: A Python object derived from the input ladybug_geom_dict. """ lbt_types = { 'Vector2D': Vector2D, 'Point2D': Point2D, 'Ray2D': Ray2D, 'LineSegment2D': LineSegment2D, 'Arc2D': Arc2D, 'Polyline2D': Polyline2D, 'Polygon2D': Polygon2D, 'Mesh2D': Mesh2D, 'Vector3D': Vector3D, 'Point3D': Point3D, 'Ray3D': Ray3D, 'LineSegment3D': LineSegment3D, 'Arc3D': Arc3D, 'Polyline3D': Polyline3D, 'Mesh3D': Mesh3D, 'Plane': Plane, 'Polyface3D': Polyface3D, 'Face3D': Face3D, 'Sphere': Sphere, 'Cone': Cone, 'Cylinder': Cylinder } # Get the ladybug_geometry object 'Type' try: obj_type = ladybug_geom_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(ladybug_geom_dict) except KeyError: if raise_exception: raise ValueError( '{} is not a recognized ladybug geometry type'.format(obj_type)) else: return None