@@ -68,6 +68,7 @@ class EventType(Enum):
6868 CALLBACK_SUCCEEDED = "CallbackSucceeded"
6969 CALLBACK_FAILED = "CallbackFailed"
7070 CALLBACK_TIMED_OUT = "CallbackTimedOut"
71+ INVOCATION_COMPLETED = "InvocationCompleted"
7172
7273
7374TERMINAL_STATUSES : set [OperationStatus ] = {
@@ -1222,6 +1223,30 @@ def to_dict(self) -> dict[str, Any]:
12221223 return result
12231224
12241225
1226+ @dataclass (frozen = True )
1227+ class InvocationCompletedDetails :
1228+ """Invocation completed event details."""
1229+
1230+ start_timestamp : datetime .datetime
1231+ end_timestamp : datetime .datetime
1232+ request_id : str
1233+
1234+ @classmethod
1235+ def from_dict (cls , data : dict ) -> InvocationCompletedDetails :
1236+ return cls (
1237+ start_timestamp = data ["StartTimestamp" ],
1238+ end_timestamp = data ["EndTimestamp" ],
1239+ request_id = data ["RequestId" ],
1240+ )
1241+
1242+ def to_dict (self ) -> dict [str , Any ]:
1243+ return {
1244+ "StartTimestamp" : self .start_timestamp ,
1245+ "EndTimestamp" : self .end_timestamp ,
1246+ "RequestId" : self .request_id ,
1247+ }
1248+
1249+
12251250# endregion event_structures
12261251
12271252
@@ -1329,6 +1354,7 @@ class Event:
13291354 callback_succeeded_details : CallbackSucceededDetails | None = None
13301355 callback_failed_details : CallbackFailedDetails | None = None
13311356 callback_timed_out_details : CallbackTimedOutDetails | None = None
1357+ invocation_completed_details : InvocationCompletedDetails | None = None
13321358
13331359 @classmethod
13341360 def from_dict (cls , data : dict ) -> Event :
@@ -1447,6 +1473,12 @@ def from_dict(cls, data: dict) -> Event:
14471473 if details_data := data .get ("CallbackTimedOutDetails" ):
14481474 callback_timed_out_details = CallbackTimedOutDetails .from_dict (details_data )
14491475
1476+ invocation_completed_details = None
1477+ if details_data := data .get ("InvocationCompletedDetails" ):
1478+ invocation_completed_details = InvocationCompletedDetails .from_dict (
1479+ details_data
1480+ )
1481+
14501482 return cls (
14511483 event_type = data ["EventType" ],
14521484 event_timestamp = data ["EventTimestamp" ],
@@ -1479,6 +1511,7 @@ def from_dict(cls, data: dict) -> Event:
14791511 callback_succeeded_details = callback_succeeded_details ,
14801512 callback_failed_details = callback_failed_details ,
14811513 callback_timed_out_details = callback_timed_out_details ,
1514+ invocation_completed_details = invocation_completed_details ,
14821515 )
14831516
14841517 def to_dict (self ) -> dict [str , Any ]:
@@ -1563,6 +1596,10 @@ def to_dict(self) -> dict[str, Any]:
15631596 result ["CallbackTimedOutDetails" ] = (
15641597 self .callback_timed_out_details .to_dict ()
15651598 )
1599+ if self .invocation_completed_details is not None :
1600+ result ["InvocationCompletedDetails" ] = (
1601+ self .invocation_completed_details .to_dict ()
1602+ )
15661603 return result
15671604
15681605 # region execution
@@ -2218,6 +2255,30 @@ def create_callback_event(cls, context: EventCreationContext) -> Event:
22182255
22192256 # endregion callback
22202257
2258+ # region invocation_completed
2259+ @classmethod
2260+ def create_invocation_completed (
2261+ cls ,
2262+ event_id : int ,
2263+ event_timestamp : datetime .datetime ,
2264+ start_timestamp : datetime .datetime ,
2265+ end_timestamp : datetime .datetime ,
2266+ request_id : str ,
2267+ ) -> Event :
2268+ """Create invocation completed event."""
2269+ return cls (
2270+ event_type = EventType .INVOCATION_COMPLETED .value ,
2271+ event_timestamp = event_timestamp ,
2272+ event_id = event_id ,
2273+ invocation_completed_details = InvocationCompletedDetails (
2274+ start_timestamp = start_timestamp ,
2275+ end_timestamp = end_timestamp ,
2276+ request_id = request_id ,
2277+ ),
2278+ )
2279+
2280+ # endregion invocation_completed
2281+
22212282 @classmethod
22222283 def create_event_started (cls , context : EventCreationContext ) -> Event :
22232284 """Convert operation to started event."""
0 commit comments