From 1483408acb809bc197304cb373d5fcfca32b16b5 Mon Sep 17 00:00:00 2001 From: Matthias Bussonnier Date: Mon, 6 Sep 2021 14:48:53 -0700 Subject: [PATCH] Don't assume kernels have loops. In particular the in-process kernels don't. This does not fix all the issues in particular the quit() and exit() autocaller that become no-op, but that's another story --- ipykernel/zmqshell.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ipykernel/zmqshell.py b/ipykernel/zmqshell.py index c60fe6014..a53dfbe2c 100644 --- a/ipykernel/zmqshell.py +++ b/ipykernel/zmqshell.py @@ -464,8 +464,9 @@ def _default_exiter(self): def _update_exit_now(self, change): """stop eventloop when exit_now fires""" if change['new']: - loop = self.kernel.io_loop - loop.call_later(0.1, loop.stop) + if hasattr(self.kernel, 'io_loop'): + loop = self.kernel.io_loop + loop.call_later(0.1, loop.stop) if self.kernel.eventloop: exit_hook = getattr(self.kernel.eventloop, 'exit_hook', None) if exit_hook: