@@ -333,6 +333,47 @@ def to_dict(self) -> MutableMapping[str, Any]:
333333
334334 return result
335335
336+ @classmethod
337+ def from_dict (cls , data : MutableMapping [str , Any ]) -> OperationUpdate :
338+ """Create OperationUpdate from dictionary data."""
339+ error = ErrorObject .from_dict (data ["Error" ]) if data .get ("Error" ) else None
340+
341+ context_options = None
342+ if context_data := data .get ("ContextOptions" ):
343+ context_options = ContextOptions .from_dict (context_data )
344+
345+ step_options = None
346+ if step_data := data .get ("StepOptions" ):
347+ step_options = StepOptions .from_dict (step_data )
348+
349+ wait_options = None
350+ if wait_data := data .get ("WaitOptions" ):
351+ wait_options = WaitOptions .from_dict (wait_data )
352+
353+ callback_options = None
354+ if callback_data := data .get ("CallbackOptions" ):
355+ callback_options = CallbackOptions .from_dict (callback_data )
356+
357+ invoke_options = None
358+ if invoke_data := data .get ("InvokeOptions" ):
359+ invoke_options = InvokeOptions .from_dict (invoke_data )
360+
361+ return cls (
362+ operation_id = data ["Id" ],
363+ operation_type = OperationType (data ["Type" ]),
364+ action = OperationAction (data ["Action" ]),
365+ parent_id = data .get ("ParentId" ),
366+ name = data .get ("Name" ),
367+ sub_type = OperationSubType (data ["SubType" ]) if data .get ("SubType" ) else None ,
368+ payload = data .get ("Payload" ),
369+ error = error ,
370+ context_options = context_options ,
371+ step_options = step_options ,
372+ wait_options = wait_options ,
373+ callback_options = callback_options ,
374+ invoke_options = invoke_options ,
375+ )
376+
336377 @classmethod
337378 def create_callback (
338379 cls , identifier : OperationIdentifier , callback_options : CallbackOptions
0 commit comments