@@ -237,12 +237,14 @@ def __init__(
237237 lambda_context : LambdaContext | None = None ,
238238 parent_id : str | None = None ,
239239 logger : Logger | None = None ,
240+ non_virtual_parent_id : str | None = None ,
240241 ) -> None :
241242 self .state : ExecutionState = state
242243 self .execution_context : ExecutionContext = execution_context
243244 self .lambda_context = lambda_context
244245 self ._parent_id : str | None = parent_id
245246 self ._step_counter : OrderedCounter = OrderedCounter ()
247+ self ._non_virtual_parent_id = non_virtual_parent_id or parent_id
246248
247249 log_info = LogInfo (
248250 execution_state = state ,
@@ -269,7 +271,9 @@ def from_lambda_context(
269271 parent_id = None ,
270272 )
271273
272- def create_child_context (self , parent_id : str ) -> DurableContext :
274+ def create_child_context (
275+ self , parent_id : str , non_virtual_parent_id = None
276+ ) -> DurableContext :
273277 """Create a child context from the given parent."""
274278 logger .debug ("Creating child context for parent %s" , parent_id )
275279 return DurableContext (
@@ -283,6 +287,7 @@ def create_child_context(self, parent_id: str) -> DurableContext:
283287 parent_id = parent_id ,
284288 )
285289 ),
290+ non_virtual_parent_id = non_virtual_parent_id ,
286291 )
287292
288293 # endregion factories
@@ -347,7 +352,9 @@ def create_callback(
347352 executor : CallbackOperationExecutor = CallbackOperationExecutor (
348353 state = self .state ,
349354 operation_identifier = OperationIdentifier (
350- operation_id = operation_id , parent_id = self ._parent_id , name = name
355+ operation_id = operation_id ,
356+ parent_id = self ._non_virtual_parent_id ,
357+ name = name ,
351358 ),
352359 config = config ,
353360 )
@@ -388,7 +395,7 @@ def invoke(
388395 state = self .state ,
389396 operation_identifier = OperationIdentifier (
390397 operation_id = operation_id ,
391- parent_id = self ._parent_id ,
398+ parent_id = self ._non_virtual_parent_id ,
392399 name = name ,
393400 ),
394401 config = config ,
@@ -409,7 +416,9 @@ def map(
409416
410417 operation_id = self ._create_step_id ()
411418 operation_identifier = OperationIdentifier (
412- operation_id = operation_id , parent_id = self ._parent_id , name = map_name
419+ operation_id = operation_id ,
420+ parent_id = self ._non_virtual_parent_id ,
421+ name = map_name ,
413422 )
414423 map_context = self .create_child_context (parent_id = operation_id )
415424
@@ -454,7 +463,7 @@ def parallel(
454463 operation_id = self ._create_step_id ()
455464 parallel_context = self .create_child_context (parent_id = operation_id )
456465 operation_identifier = OperationIdentifier (
457- operation_id = operation_id , parent_id = self ._parent_id , name = name
466+ operation_id = operation_id , parent_id = self ._non_virtual_parent_id , name = name
458467 )
459468
460469 def parallel_in_child_context () -> BatchResult [T ]:
@@ -515,7 +524,9 @@ def callable_with_child_context():
515524 func = callable_with_child_context ,
516525 state = self .state ,
517526 operation_identifier = OperationIdentifier (
518- operation_id = operation_id , parent_id = self ._parent_id , name = step_name
527+ operation_id = operation_id ,
528+ parent_id = self ._non_virtual_parent_id ,
529+ name = step_name ,
519530 ),
520531 config = config ,
521532 )
@@ -539,7 +550,7 @@ def step(
539550 state = self .state ,
540551 operation_identifier = OperationIdentifier (
541552 operation_id = operation_id ,
542- parent_id = self ._parent_id ,
553+ parent_id = self ._non_virtual_parent_id ,
543554 name = step_name ,
544555 ),
545556 context_logger = self .logger ,
@@ -566,7 +577,7 @@ def wait(self, duration: Duration, name: str | None = None) -> None:
566577 state = self .state ,
567578 operation_identifier = OperationIdentifier (
568579 operation_id = operation_id ,
569- parent_id = self ._parent_id ,
580+ parent_id = self ._non_virtual_parent_id ,
570581 name = name ,
571582 ),
572583 )
@@ -621,7 +632,7 @@ def wait_for_condition(
621632 state = self .state ,
622633 operation_identifier = OperationIdentifier (
623634 operation_id = operation_id ,
624- parent_id = self ._parent_id ,
635+ parent_id = self ._non_virtual_parent_id ,
625636 name = name ,
626637 ),
627638 context_logger = self .logger ,
0 commit comments