2222
2323logger = logging .getLogger (__name__ )
2424
25+ type ReplayChildren = bool
26+ type OperationPayload = str
27+ type TimeoutSeconds = int
28+
2529
2630# region model
2731class OperationAction (Enum ):
@@ -49,7 +53,24 @@ class OperationType(Enum):
4953 STEP = "STEP"
5054 WAIT = "WAIT"
5155 CALLBACK = "CALLBACK"
52- INVOKE = "INVOKE"
56+ CHAINED_INVOKE = "CHAINED_INVOKE"
57+
58+
59+ class CallbackTimeoutType (Enum ):
60+ TIMEOUT = "Callback.Timeout"
61+ HEARTBEAT = "Callback.Heartbeat"
62+
63+
64+ class ChainedInvokeFailedToStartType (Enum ):
65+ FAILED_TO_START = "ChainedInvoke.FailedToStart"
66+
67+
68+ class ChainedInvokeTimeoutType (Enum ):
69+ TIMEOUT = "ChainedInvoke.Timeout"
70+
71+
72+ class ChainedInvokeStopType (Enum ):
73+ STOPPED = "ChainedInvoke.Stopped"
5374
5475
5576class OperationSubType (Enum ):
@@ -77,8 +98,8 @@ def from_dict(cls, data: MutableMapping[str, Any]) -> ExecutionDetails:
7798
7899@dataclass (frozen = True )
79100class ContextDetails :
80- replay_children : bool = False
81- result : str | None = None
101+ replay_children : ReplayChildren = False
102+ result : OperationPayload | None = None
82103 error : ErrorObject | None = None
83104
84105 @classmethod
@@ -150,7 +171,7 @@ def to_callable_runtime_error(self) -> CallableRuntimeError:
150171class StepDetails :
151172 attempt : int = 0
152173 next_attempt_timestamp : datetime .datetime | None = None
153- result : str | None = None
174+ result : OperationPayload | None = None
154175 error : ErrorObject | None = None
155176
156177 @classmethod
@@ -190,16 +211,14 @@ def from_dict(cls, data: MutableMapping[str, Any]) -> CallbackDetails:
190211
191212
192213@dataclass (frozen = True )
193- class InvokeDetails :
194- durable_execution_arn : str
214+ class ChainedInvokeDetails :
195215 result : str | None = None
196216 error : ErrorObject | None = None
197217
198218 @classmethod
199- def from_dict (cls , data : MutableMapping [str , Any ]) -> InvokeDetails :
219+ def from_dict (cls , data : MutableMapping [str , Any ]) -> ChainedInvokeDetails :
200220 error_raw = data .get ("Error" )
201221 return cls (
202- durable_execution_arn = data ["DurableExecutionArn" ],
203222 result = data .get ("Result" ),
204223 error = ErrorObject .from_dict (error_raw ) if error_raw else None ,
205224 )
@@ -233,7 +252,7 @@ def to_dict(self) -> MutableMapping[str, Any]:
233252
234253@dataclass (frozen = True )
235254class CallbackOptions :
236- timeout_seconds : int = 0
255+ timeout_seconds : TimeoutSeconds = 0
237256 heartbeat_timeout_seconds : int = 0
238257
239258 @classmethod
@@ -251,26 +270,28 @@ def to_dict(self) -> MutableMapping[str, Any]:
251270
252271
253272@dataclass (frozen = True )
254- class InvokeOptions :
273+ class ChainedInvokeOptions :
255274 function_name : str
256- timeout_seconds : int = 0
275+ timeout_seconds : TimeoutSeconds = 0
257276
258277 @classmethod
259- def from_dict (cls , data : MutableMapping [str , Any ]) -> InvokeOptions :
278+ def from_dict (cls , data : MutableMapping [str , Any ]) -> ChainedInvokeOptions :
260279 return cls (
261280 function_name = data ["FunctionName" ],
262281 timeout_seconds = data .get ("TimeoutSeconds" , 0 ),
263282 )
264283
265284 def to_dict (self ) -> MutableMapping [str , Any ]:
266- result : MutableMapping [str , Any ] = {"FunctionName" : self .function_name }
267- result ["TimeoutSeconds" ] = self .timeout_seconds
285+ result : MutableMapping [str , Any ] = {
286+ "FunctionName" : self .function_name ,
287+ "TimeoutSeconds" : self .timeout_seconds ,
288+ }
268289 return result
269290
270291
271292@dataclass (frozen = True )
272293class ContextOptions :
273- replay_children : bool = False
294+ replay_children : ReplayChildren = False
274295
275296 @classmethod
276297 def from_dict (cls , data : MutableMapping [str , Any ]) -> ContextOptions :
@@ -299,7 +320,7 @@ class OperationUpdate:
299320 step_options : StepOptions | None = None
300321 wait_options : WaitOptions | None = None
301322 callback_options : CallbackOptions | None = None
302- invoke_options : InvokeOptions | None = None
323+ chained_invoke_options : ChainedInvokeOptions | None = None
303324
304325 def to_dict (self ) -> MutableMapping [str , Any ]:
305326 result : MutableMapping [str , Any ] = {
@@ -326,8 +347,8 @@ def to_dict(self) -> MutableMapping[str, Any]:
326347 result ["WaitOptions" ] = self .wait_options .to_dict ()
327348 if self .callback_options :
328349 result ["CallbackOptions" ] = self .callback_options .to_dict ()
329- if self .invoke_options :
330- result ["InvokeOptions " ] = self .invoke_options .to_dict ()
350+ if self .chained_invoke_options :
351+ result ["ChainedInvokeOptions " ] = self .chained_invoke_options .to_dict ()
331352
332353 return result
333354
@@ -352,9 +373,9 @@ def from_dict(cls, data: MutableMapping[str, Any]) -> OperationUpdate:
352373 if callback_data := data .get ("CallbackOptions" ):
353374 callback_options = CallbackOptions .from_dict (callback_data )
354375
355- invoke_options = None
356- if invoke_data := data .get ("InvokeOptions " ):
357- invoke_options = InvokeOptions .from_dict (invoke_data )
376+ chained_invoke_options = None
377+ if invoke_data := data .get ("ChainedInvokeOptions " ):
378+ chained_invoke_options = ChainedInvokeOptions .from_dict (invoke_data )
358379
359380 return cls (
360381 operation_id = data ["Id" ],
@@ -369,7 +390,7 @@ def from_dict(cls, data: MutableMapping[str, Any]) -> OperationUpdate:
369390 step_options = step_options ,
370391 wait_options = wait_options ,
371392 callback_options = callback_options ,
372- invoke_options = invoke_options ,
393+ chained_invoke_options = chained_invoke_options ,
373394 )
374395
375396 @classmethod
@@ -537,18 +558,18 @@ def create_invoke_start(
537558 cls ,
538559 identifier : OperationIdentifier ,
539560 payload : str ,
540- invoke_options : InvokeOptions ,
561+ chained_invoke_options : ChainedInvokeOptions ,
541562 ) -> OperationUpdate :
542563 """Create an instance of OperationUpdate for type: INVOKE, action: START."""
543564 return cls (
544565 operation_id = identifier .operation_id ,
545566 parent_id = identifier .parent_id ,
546- operation_type = OperationType .INVOKE ,
567+ operation_type = OperationType .CHAINED_INVOKE ,
547568 sub_type = OperationSubType .INVOKE ,
548569 action = OperationAction .START ,
549570 name = identifier .name ,
550571 payload = payload ,
551- invoke_options = invoke_options ,
572+ chained_invoke_options = chained_invoke_options ,
552573 )
553574
554575 # endregion invoke
@@ -657,7 +678,7 @@ class Operation:
657678 step_details : StepDetails | None = None
658679 wait_details : WaitDetails | None = None
659680 callback_details : CallbackDetails | None = None
660- invoke_details : InvokeDetails | None = None
681+ chained_invoke_details : ChainedInvokeDetails | None = None
661682
662683 @classmethod
663684 def from_dict (cls , data : MutableMapping [str , Any ]) -> Operation :
@@ -696,9 +717,11 @@ def from_dict(cls, data: MutableMapping[str, Any]) -> Operation:
696717 if callback_details_input := data .get ("CallbackDetails" ):
697718 callback_details = CallbackDetails .from_dict (callback_details_input )
698719
699- invoke_details = None
700- if invoke_details_input := data .get ("InvokeDetails" ):
701- invoke_details = InvokeDetails .from_dict (invoke_details_input )
720+ chained_invoke_details = None
721+ if chained_invoke_details := data .get ("chained_invoke_details" ):
722+ chained_invoke_details = ChainedInvokeDetails .from_dict (
723+ chained_invoke_details
724+ )
702725
703726 return cls (
704727 operation_id = data ["Id" ],
@@ -714,7 +737,7 @@ def from_dict(cls, data: MutableMapping[str, Any]) -> Operation:
714737 step_details = step_details ,
715738 wait_details = wait_details ,
716739 callback_details = callback_details ,
717- invoke_details = invoke_details ,
740+ chained_invoke_details = chained_invoke_details ,
718741 )
719742
720743 def to_dict (self ) -> MutableMapping [str , Any ]:
@@ -763,15 +786,13 @@ def to_dict(self) -> MutableMapping[str, Any]:
763786 if self .callback_details .error :
764787 callback_dict ["Error" ] = self .callback_details .error .to_dict ()
765788 result ["CallbackDetails" ] = callback_dict
766- if self .invoke_details :
767- invoke_dict : MutableMapping [str , Any ] = {
768- "DurableExecutionArn" : self .invoke_details .durable_execution_arn
769- }
770- if self .invoke_details .result :
771- invoke_dict ["Result" ] = self .invoke_details .result
772- if self .invoke_details .error :
773- invoke_dict ["Error" ] = self .invoke_details .error .to_dict ()
774- result ["InvokeDetails" ] = invoke_dict
789+ if self .chained_invoke_details :
790+ invoke_dict : MutableMapping [str , Any ] = {}
791+ if self .chained_invoke_details .result :
792+ invoke_dict ["Result" ] = self .chained_invoke_details .result
793+ if self .chained_invoke_details .error :
794+ invoke_dict ["Error" ] = self .chained_invoke_details .error .to_dict ()
795+ result ["ChainedInvokeDetails" ] = invoke_dict
775796 return result
776797
777798
0 commit comments