From 15e05acc4ff7f3e8773d49f37f0ace7e82b97c36 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 2 Feb 2023 10:14:48 -0600 Subject: [PATCH] restore nest-asyncio for tk loop --- ipykernel/eventloops.py | 10 ++++++++-- pyproject.toml | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ipykernel/eventloops.py b/ipykernel/eventloops.py index b5c65dbc1..412a246fe 100644 --- a/ipykernel/eventloops.py +++ b/ipykernel/eventloops.py @@ -9,7 +9,6 @@ from functools import partial import zmq -from jupyter_core.utils import run_sync from packaging.version import Version as V # noqa from traitlets.config.application import Application @@ -251,6 +250,12 @@ def process_stream_events(stream, *a, **kw): app.mainloop() else: + import asyncio + + import nest_asyncio + + nest_asyncio.apply() + doi = kernel.do_one_iteration # Tk uses milliseconds poll_interval = int(1000 * kernel._poll_interval) @@ -262,8 +267,9 @@ def __init__(self, app, func): self.func = func def on_timer(self): + loop = asyncio.get_event_loop() try: - run_sync(self.func)() + loop.run_until_complete(self.func()) except Exception: kernel.log.exception("Error in message handler") self.app.after(poll_interval, self.on_timer) diff --git a/pyproject.toml b/pyproject.toml index 4e0ae62c2..e72440360 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,8 @@ dependencies = [ "traitlets>=5.4.0", "jupyter_client>=6.1.12", "jupyter_core>=4.12,!=5.0.*", + # For tk event loop support only. + "nest_asyncio", "tornado>=6.1", "matplotlib-inline>=0.1", 'appnope;platform_system=="Darwin"',