def value_from_storage_dict( cls, storage_dict, klass, args_for_class, whitelist_map, descent_path, ): # Handle case where daemon_type used to be an enum (e.g. DaemonType.SCHEDULER) daemon_type = unpack_inner_value( storage_dict.get("daemon_type"), whitelist_map, descent_path=f"{descent_path}.daemon_type", ) return DaemonHeartbeat( timestamp=cast(float, storage_dict.get("timestamp")), daemon_type=(daemon_type.value if isinstance( daemon_type, DaemonType) else daemon_type), daemon_id=cast(str, storage_dict.get("daemon_id")), errors=[ unpack_inner_value( storage_dict.get("error"), whitelist_map, descent_path=f"{descent_path}.error", ) ] # error was replaced with errors if storage_dict.get("error") else unpack_inner_value( storage_dict.get("errors"), whitelist_map, descent_path=f"{descent_path}.errors", ), )
def value_from_storage_dict( cls, storage_dict, klass, args_for_class, whitelist_map, descent_path, ): # unpack all stored fields unpacked_dict = { key: unpack_inner_value(value, whitelist_map, f"{descent_path}.{key}") for key, value in storage_dict.items() } # called by the serdes layer, delegates to helper method with expanded kwargs return pipeline_run_from_storage(**unpacked_dict)