From e4980b3c8bbdbf868ba40734b1acdc7e8a188b8c Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 27 Jan 2023 10:20:17 -0600 Subject: [PATCH] Maintenance updates --- ipykernel/eventloops.py | 10 ++-------- ipykernel/inprocess/client.py | 6 +----- ipykernel/kernelapp.py | 6 ++++-- pyproject.toml | 2 +- 4 files changed, 8 insertions(+), 16 deletions(-) diff --git a/ipykernel/eventloops.py b/ipykernel/eventloops.py index c29255073..d7e2a04ee 100644 --- a/ipykernel/eventloops.py +++ b/ipykernel/eventloops.py @@ -9,6 +9,7 @@ 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 @@ -250,12 +251,6 @@ 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) @@ -267,9 +262,8 @@ def __init__(self, app, func): self.func = func def on_timer(self): - loop = asyncio.get_event_loop() try: - loop.run_until_complete(self.func()) + run_sync(self.func)() except Exception: kernel.log.exception("Error in message handler") self.app.after(poll_interval, self.on_timer) diff --git a/ipykernel/inprocess/client.py b/ipykernel/inprocess/client.py index 2d9397271..81bf2be5e 100644 --- a/ipykernel/inprocess/client.py +++ b/ipykernel/inprocess/client.py @@ -15,11 +15,7 @@ from jupyter_client.client import KernelClient from jupyter_client.clientabc import KernelClientABC - -try: - from jupyter_client.utils import run_sync # requires 7.0+ -except ImportError: - run_sync = None # type:ignore +from jupyter_core.utils import run_sync # IPython imports from traitlets import Instance, Type, default diff --git a/ipykernel/kernelapp.py b/ipykernel/kernelapp.py index a98439cfc..af580e496 100644 --- a/ipykernel/kernelapp.py +++ b/ipykernel/kernelapp.py @@ -13,6 +13,7 @@ from functools import partial from io import FileIO, TextIOWrapper from logging import StreamHandler +from typing import Optional import zmq from IPython.core.application import ( # type:ignore[attr-defined] @@ -131,7 +132,7 @@ class IPKernelApp(BaseIPythonApplication, InteractiveShellApp, ConnectionFileMix poller = Any() # don't restrict this even though current pollers are all Threads heartbeat = Instance(Heartbeat, allow_none=True) - context = Any() + context: Optional[zmq.Context] = Any() # type:ignore[assignment] shell_socket = Any() control_socket = Any() debugpy_socket = Any() @@ -403,7 +404,8 @@ def close(self): if socket and not socket.closed: socket.close() self.log.debug("Terminating zmq context") - self.context.term() + if self.context: + self.context.term() self.log.debug("Terminated zmq context") def log_connection_info(self): diff --git a/pyproject.toml b/pyproject.toml index ef9587f89..64b858ff0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,12 +30,12 @@ dependencies = [ "comm>=0.1.1", "traitlets>=5.4.0", "jupyter_client>=6.1.12", + "jupyter_core>=4.12,!=5.0.*", "tornado>=6.1", "matplotlib-inline>=0.1", 'appnope;platform_system=="Darwin"', "pyzmq>=17", "psutil", - "nest_asyncio", "packaging", ]