##// END OF EJS Templates
Only trigger async loop runner when needed. Allows running files that...
Dale Jung -
Show More
@@ -2808,15 +2808,25 b' class InteractiveShell(SingletonConfigurable):'
2808 2808
2809 2809 def _run_cell(self, raw_cell, store_history, silent, shell_futures):
2810 2810 """Internal method to run a complete IPython cell."""
2811 return self.loop_runner(
2812 self.run_cell_async(
2813 raw_cell,
2814 store_history=store_history,
2815 silent=silent,
2816 shell_futures=shell_futures,
2817 )
2811 coro = self.run_cell_async(
2812 raw_cell,
2813 store_history=store_history,
2814 silent=silent,
2815 shell_futures=shell_futures,
2818 2816 )
2819 2817
2818 try:
2819 interactivity = coro.send(None)
2820 except StopIteration as exc:
2821 return exc.value
2822
2823 if isinstance(interactivity, ExecutionResult):
2824 return interactivity
2825
2826 if interactivity == 'async':
2827 return self.loop_runner(coro)
2828 return _pseudo_sync_runner(coro)
2829
2820 2830 @asyncio.coroutine
2821 2831 def run_cell_async(self, raw_cell:str, store_history=False, silent=False, shell_futures=True) -> ExecutionResult:
2822 2832 """Run a complete IPython cell asynchronously.
@@ -2965,6 +2975,9 b' class InteractiveShell(SingletonConfigurable):'
2965 2975 interactivity = "none" if silent else self.ast_node_interactivity
2966 2976 if _run_async:
2967 2977 interactivity = 'async'
2978 # yield interactivity so let run_cell decide whether to use
2979 # an async loop_runner
2980 yield interactivity
2968 2981 has_raised = yield from self.run_ast_nodes(code_ast.body, cell_name,
2969 2982 interactivity=interactivity, compiler=compiler, result=result)
2970 2983
General Comments 0
You need to be logged in to leave comments. Login now