From c9e9108eebd461c3d510ebdaf5ea09e68059076f Mon Sep 17 00:00:00 2001 From: David Brochart Date: Fri, 21 Feb 2025 08:56:45 +0100 Subject: [PATCH] Set async event in async context --- ipykernel/kernelapp.py | 2 +- ipykernel/kernelbase.py | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ipykernel/kernelapp.py b/ipykernel/kernelapp.py index f445c486..09c717b9 100644 --- a/ipykernel/kernelapp.py +++ b/ipykernel/kernelapp.py @@ -761,7 +761,7 @@ async def _start(self, backend: str) -> None: def start(self) -> None: """Start the application.""" - backend = "trio" if self.trio_loop else "asyncio" + backend = "trio"# if self.trio_loop else "asyncio" run(partial(self._start, backend), backend=backend) async def _wait_to_enter_eventloop(self) -> None: diff --git a/ipykernel/kernelbase.py b/ipykernel/kernelbase.py index b4f1f4ef..b323abf2 100644 --- a/ipykernel/kernelbase.py +++ b/ipykernel/kernelbase.py @@ -422,6 +422,11 @@ async def shell_main(self, subshell_id: str | None): if subshell_id is None: # Main subshell. await to_thread.run_sync(self.shell_stop.wait) + + if not self._eventloop_set.is_set(): + # Stop the async task that is waiting for the eventloop to be set. + self._eventloop_set.set() + tg.cancel_scope.cancel() async def process_shell(self, socket=None): @@ -573,10 +578,6 @@ async def start(self, *, task_status: TaskStatus = TASK_STATUS_IGNORED) -> None: tg.start_soon(self.shell_main, None) def stop(self): - if not self._eventloop_set.is_set(): - # Stop the async task that is waiting for the eventloop to be set. - self._eventloop_set.set() - self.shell_stop.set() self.control_stop.set()