From ca2ae36064506c1ed1511533371ae0dc1a5efc09 Mon Sep 17 00:00:00 2001 From: RK Date: Mon, 1 Feb 2021 11:15:41 +0000 Subject: [PATCH] Issue #12786: Implement hook for Comm messages --- ipykernel/ipkernel.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/ipykernel/ipkernel.py b/ipykernel/ipkernel.py index bb50c04cc..4c594c3df 100644 --- a/ipykernel/ipkernel.py +++ b/ipykernel/ipkernel.py @@ -74,6 +74,8 @@ def _user_ns_changed(self, change): _sys_raw_input = Any() _sys_eval_input = Any() + comm_msg_types = [ 'comm_open', 'comm_msg', 'comm_close' ] + def __init__(self, **kwargs): super(IPythonKernel, self).__init__(**kwargs) @@ -102,8 +104,7 @@ def __init__(self, **kwargs): self.comm_manager = CommManager(parent=self, kernel=self) self.shell.configurables.append(self.comm_manager) - comm_msg_types = [ 'comm_open', 'comm_msg', 'comm_close' ] - for msg_type in comm_msg_types: + for msg_type in self.comm_msg_types: self.shell_handlers[msg_type] = getattr(self.comm_manager, msg_type) if _use_appnope() and self._darwin_app_nap: @@ -583,6 +584,16 @@ def do_clear(self): self.shell.reset(False) return dict(status='ok') + def should_dispatch_immediately(self, msg): + try: + msg_type = msg['header']['msg_type'] + if msg_type in self.comm_msg_types: + return True + except ValueError: + pass + + return False + # This exists only for backwards compatibility - use IPythonKernel instead