|
1 | 1 | """Visitor that sets command context during payload traversal.""" |
2 | 2 |
|
3 | 3 | import contextvars |
| 4 | +import sys |
4 | 5 | from contextlib import contextmanager |
5 | 6 | from dataclasses import dataclass |
6 | 7 | from typing import Any, Iterator, Optional, Type |
@@ -51,103 +52,103 @@ class CommandAwarePayloadVisitor(PayloadVisitor): |
51 | 52 | async def _visit_coresdk_workflow_commands_ScheduleActivity( |
52 | 53 | self, fs: VisitorFunctions, o: ScheduleActivity |
53 | 54 | ) -> None: |
54 | | - with current_command(CommandType.COMMAND_TYPE_SCHEDULE_ACTIVITY_TASK, o.seq): |
55 | | - await super()._visit_coresdk_workflow_commands_ScheduleActivity(fs, o) |
| 55 | + await self._visit_with_context( |
| 56 | + CommandType.COMMAND_TYPE_SCHEDULE_ACTIVITY_TASK, o.seq, fs, o |
| 57 | + ) |
56 | 58 |
|
57 | 59 | async def _visit_coresdk_workflow_commands_ScheduleLocalActivity( |
58 | 60 | self, fs: VisitorFunctions, o: ScheduleLocalActivity |
59 | 61 | ) -> None: |
60 | | - with current_command(CommandType.COMMAND_TYPE_SCHEDULE_ACTIVITY_TASK, o.seq): |
61 | | - await super()._visit_coresdk_workflow_commands_ScheduleLocalActivity(fs, o) |
| 62 | + await self._visit_with_context( |
| 63 | + CommandType.COMMAND_TYPE_SCHEDULE_ACTIVITY_TASK, o.seq, fs, o |
| 64 | + ) |
62 | 65 |
|
63 | 66 | async def _visit_coresdk_workflow_commands_StartChildWorkflowExecution( |
64 | 67 | self, fs: VisitorFunctions, o: StartChildWorkflowExecution |
65 | 68 | ) -> None: |
66 | | - with current_command( |
67 | | - CommandType.COMMAND_TYPE_START_CHILD_WORKFLOW_EXECUTION, o.seq |
68 | | - ): |
69 | | - await super()._visit_coresdk_workflow_commands_StartChildWorkflowExecution( |
70 | | - fs, o |
71 | | - ) |
| 69 | + await self._visit_with_context( |
| 70 | + CommandType.COMMAND_TYPE_START_CHILD_WORKFLOW_EXECUTION, o.seq, fs, o |
| 71 | + ) |
72 | 72 |
|
73 | 73 | async def _visit_coresdk_workflow_commands_SignalExternalWorkflowExecution( |
74 | 74 | self, fs: VisitorFunctions, o: SignalExternalWorkflowExecution |
75 | 75 | ) -> None: |
76 | | - with current_command( |
77 | | - CommandType.COMMAND_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION, o.seq |
78 | | - ): |
79 | | - await super()._visit_coresdk_workflow_commands_SignalExternalWorkflowExecution( |
80 | | - fs, o |
81 | | - ) |
| 76 | + await self._visit_with_context( |
| 77 | + CommandType.COMMAND_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION, o.seq, fs, o |
| 78 | + ) |
82 | 79 |
|
83 | 80 | async def _visit_coresdk_workflow_commands_ScheduleNexusOperation( |
84 | 81 | self, fs: VisitorFunctions, o: ScheduleNexusOperation |
85 | 82 | ) -> None: |
86 | | - with current_command(CommandType.COMMAND_TYPE_SCHEDULE_NEXUS_OPERATION, o.seq): |
87 | | - await super()._visit_coresdk_workflow_commands_ScheduleNexusOperation(fs, o) |
| 83 | + await self._visit_with_context( |
| 84 | + CommandType.COMMAND_TYPE_SCHEDULE_NEXUS_OPERATION, o.seq, fs, o |
| 85 | + ) |
88 | 86 |
|
89 | 87 | # Workflow activation jobs with payloads |
90 | 88 | async def _visit_coresdk_workflow_activation_ResolveActivity( |
91 | 89 | self, fs: VisitorFunctions, o: ResolveActivity |
92 | 90 | ) -> None: |
93 | | - with current_command(CommandType.COMMAND_TYPE_SCHEDULE_ACTIVITY_TASK, o.seq): |
94 | | - await super()._visit_coresdk_workflow_activation_ResolveActivity(fs, o) |
| 91 | + await self._visit_with_context( |
| 92 | + CommandType.COMMAND_TYPE_SCHEDULE_ACTIVITY_TASK, o.seq, fs, o |
| 93 | + ) |
95 | 94 |
|
96 | 95 | async def _visit_coresdk_workflow_activation_ResolveChildWorkflowExecutionStart( |
97 | 96 | self, fs: VisitorFunctions, o: ResolveChildWorkflowExecutionStart |
98 | 97 | ) -> None: |
99 | | - with current_command( |
100 | | - CommandType.COMMAND_TYPE_START_CHILD_WORKFLOW_EXECUTION, o.seq |
101 | | - ): |
102 | | - await super()._visit_coresdk_workflow_activation_ResolveChildWorkflowExecutionStart( |
103 | | - fs, o |
104 | | - ) |
| 98 | + await self._visit_with_context( |
| 99 | + CommandType.COMMAND_TYPE_START_CHILD_WORKFLOW_EXECUTION, o.seq, fs, o |
| 100 | + ) |
105 | 101 |
|
106 | 102 | async def _visit_coresdk_workflow_activation_ResolveChildWorkflowExecution( |
107 | 103 | self, fs: VisitorFunctions, o: ResolveChildWorkflowExecution |
108 | 104 | ) -> None: |
109 | | - with current_command( |
110 | | - CommandType.COMMAND_TYPE_START_CHILD_WORKFLOW_EXECUTION, o.seq |
111 | | - ): |
112 | | - await super()._visit_coresdk_workflow_activation_ResolveChildWorkflowExecution( |
113 | | - fs, o |
114 | | - ) |
| 105 | + await self._visit_with_context( |
| 106 | + CommandType.COMMAND_TYPE_START_CHILD_WORKFLOW_EXECUTION, o.seq, fs, o |
| 107 | + ) |
115 | 108 |
|
116 | 109 | async def _visit_coresdk_workflow_activation_ResolveSignalExternalWorkflow( |
117 | 110 | self, fs: VisitorFunctions, o: ResolveSignalExternalWorkflow |
118 | 111 | ) -> None: |
119 | | - with current_command( |
120 | | - CommandType.COMMAND_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION, o.seq |
121 | | - ): |
122 | | - await super()._visit_coresdk_workflow_activation_ResolveSignalExternalWorkflow( |
123 | | - fs, o |
124 | | - ) |
| 112 | + await self._visit_with_context( |
| 113 | + CommandType.COMMAND_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION, o.seq, fs, o |
| 114 | + ) |
125 | 115 |
|
126 | 116 | async def _visit_coresdk_workflow_activation_ResolveRequestCancelExternalWorkflow( |
127 | 117 | self, fs: VisitorFunctions, o: ResolveRequestCancelExternalWorkflow |
128 | 118 | ) -> None: |
129 | | - with current_command( |
130 | | - CommandType.COMMAND_TYPE_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION, o.seq |
131 | | - ): |
132 | | - await super()._visit_coresdk_workflow_activation_ResolveRequestCancelExternalWorkflow( |
133 | | - fs, o |
134 | | - ) |
| 119 | + await self._visit_with_context( |
| 120 | + CommandType.COMMAND_TYPE_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION, |
| 121 | + o.seq, |
| 122 | + fs, |
| 123 | + o, |
| 124 | + ) |
135 | 125 |
|
136 | 126 | async def _visit_coresdk_workflow_activation_ResolveNexusOperationStart( |
137 | 127 | self, fs: VisitorFunctions, o: ResolveNexusOperationStart |
138 | 128 | ) -> None: |
139 | | - with current_command(CommandType.COMMAND_TYPE_SCHEDULE_NEXUS_OPERATION, o.seq): |
140 | | - await super()._visit_coresdk_workflow_activation_ResolveNexusOperationStart( |
141 | | - fs, o |
142 | | - ) |
| 129 | + await self._visit_with_context( |
| 130 | + CommandType.COMMAND_TYPE_SCHEDULE_NEXUS_OPERATION, o.seq, fs, o |
| 131 | + ) |
143 | 132 |
|
144 | 133 | async def _visit_coresdk_workflow_activation_ResolveNexusOperation( |
145 | 134 | self, fs: VisitorFunctions, o: ResolveNexusOperation |
146 | 135 | ) -> None: |
147 | | - with current_command(CommandType.COMMAND_TYPE_SCHEDULE_NEXUS_OPERATION, o.seq): |
148 | | - await super()._visit_coresdk_workflow_activation_ResolveNexusOperation( |
149 | | - fs, o |
150 | | - ) |
| 136 | + await self._visit_with_context( |
| 137 | + CommandType.COMMAND_TYPE_SCHEDULE_NEXUS_OPERATION, o.seq, fs, o |
| 138 | + ) |
| 139 | + |
| 140 | + async def _visit_with_context( |
| 141 | + self, |
| 142 | + command_type: CommandType.ValueType, |
| 143 | + seq: int, |
| 144 | + fs: VisitorFunctions, |
| 145 | + o: Any, |
| 146 | + ) -> None: |
| 147 | + """Helper to call parent method with command context.""" |
| 148 | + method_name = sys._getframe(1).f_code.co_name |
| 149 | + parent_method = getattr(super(), method_name) |
| 150 | + with current_command(command_type, seq): |
| 151 | + await parent_method(fs, o) |
151 | 152 |
|
152 | 153 |
|
153 | 154 | def _get_workflow_command_protos_with_seq() -> Iterator[Type[Any]]: |
|
0 commit comments