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