in azure/functions/_durable_functions.py [0:0]
def _deserialize_custom_object(obj: dict) -> object:
"""Deserialize a user-defined object from JSON.
Deserializes a dictionary encoding a custom object,
if it contains class metadata suggesting that it should be
decoded further.
Parameters:
----------
obj: dict
Dictionary object that potentially encodes a custom class
Returns:
--------
object
Either the original `obj` dictionary or the custom object it encoded
Exceptions
----------
TypeError
If the decoded object does not contain a `from_json` function
"""
if ("__class__" in obj) and ("__module__" in obj) and ("__data__" in obj):
class_name = obj.pop("__class__")
module_name = obj.pop("__module__")
obj_data = obj.pop("__data__")
# Importing the clas
module = import_module(module_name)
class_ = getattr(module, class_name)
if not hasattr(class_, "from_json"):
raise TypeError(f"class {type(obj)} does not expose a `from_json` "
"function")
# Initialize the object using its `from_json` deserializer
obj = class_.from_json(obj_data)
return obj