Iterate node.run(), enqueue events, write results to ctx.
(
self,
ctx: Context,
node_input: Any,
)
| 240 | return ctx |
| 241 | |
| 242 | async def _execute_node( |
| 243 | self, |
| 244 | ctx: Context, |
| 245 | node_input: Any, |
| 246 | ) -> None: |
| 247 | """Iterate node.run(), enqueue events, write results to ctx.""" |
| 248 | from ._errors import NodeInterruptedError |
| 249 | |
| 250 | try: |
| 251 | timeout = self._node.timeout |
| 252 | if timeout is not None: |
| 253 | await self._run_node_loop_with_timeout(ctx, node_input, timeout) |
| 254 | else: |
| 255 | await self._run_node_loop(ctx, node_input) |
| 256 | except NodeInterruptedError: |
| 257 | # A dynamic child interrupted via ctx.run_node(). |
| 258 | # The child's interrupt_ids are already on ctx |
| 259 | # (set by the schedule callback). Nothing more to do — |
| 260 | # the caller reads ctx.interrupt_ids. |
| 261 | pass |
| 262 | |
| 263 | async def _run_node_loop(self, ctx: Context, node_input: Any) -> None: |
| 264 | """Iterate node.run(), track events in context, and enqueue them.""" |
no test coverage detected