From 5887a643f4c39538ba06682a2718733df499bcb5 Mon Sep 17 00:00:00 2001 From: Tobias Krabel Date: Thu, 4 May 2023 18:40:05 +0200 Subject: [PATCH 1/2] patch iopub to use correct parent header --- ipykernel/comm/comm.py | 9 ++++++++- ipykernel/control.py | 7 +++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ipykernel/comm/comm.py b/ipykernel/comm/comm.py index cbb3ecfa7..4ff785b26 100644 --- a/ipykernel/comm/comm.py +++ b/ipykernel/comm/comm.py @@ -3,6 +3,7 @@ # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. +import threading import uuid from typing import Optional from warnings import warn @@ -13,6 +14,7 @@ from ipykernel.jsonutil import json_clean from ipykernel.kernelbase import Kernel +from ipykernel.control import CONTROL_THREAD_NAME # this is the class that will be created if we do comm.create_comm @@ -30,6 +32,11 @@ def publish_msg(self, msg_type, data=None, metadata=None, buffers=None, **keys): metadata = {} if metadata is None else metadata content = json_clean(dict(data=data, comm_id=self.comm_id, **keys)) + if threading.current_thread().name == CONTROL_THREAD_NAME: + channel_from_which_to_get_parent_header = "control" + else: + channel_from_which_to_get_parent_header = "shell" + if self.kernel is None: self.kernel = Kernel.instance() @@ -38,7 +45,7 @@ def publish_msg(self, msg_type, data=None, metadata=None, buffers=None, **keys): msg_type, content, metadata=json_clean(metadata), - parent=self.kernel.get_parent("shell"), + parent=self.kernel.get_parent(channel_from_which_to_get_parent_header), ident=self.topic, buffers=buffers, ) diff --git a/ipykernel/control.py b/ipykernel/control.py index d78a4ebe1..fdcbcc9ed 100644 --- a/ipykernel/control.py +++ b/ipykernel/control.py @@ -4,19 +4,22 @@ from tornado.ioloop import IOLoop +CONTROL_THREAD_NAME = "Control" + + class ControlThread(Thread): """A thread for a control channel.""" def __init__(self, **kwargs): """Initialize the thread.""" - Thread.__init__(self, name="Control", **kwargs) + Thread.__init__(self, name=CONTROL_THREAD_NAME, **kwargs) self.io_loop = IOLoop(make_current=False) self.pydev_do_not_trace = True self.is_pydev_daemon_thread = True def run(self): """Run the thread.""" - self.name = "Control" + self.name = CONTROL_THREAD_NAME try: self.io_loop.start() finally: From 63c368c9461fb364f30c5a1a1054db178c90064e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 4 May 2023 16:45:13 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- ipykernel/comm/comm.py | 2 +- ipykernel/control.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/ipykernel/comm/comm.py b/ipykernel/comm/comm.py index 4ff785b26..6825c054d 100644 --- a/ipykernel/comm/comm.py +++ b/ipykernel/comm/comm.py @@ -12,9 +12,9 @@ import traitlets.config from traitlets import Bool, Bytes, Instance, Unicode, default +from ipykernel.control import CONTROL_THREAD_NAME from ipykernel.jsonutil import json_clean from ipykernel.kernelbase import Kernel -from ipykernel.control import CONTROL_THREAD_NAME # this is the class that will be created if we do comm.create_comm diff --git a/ipykernel/control.py b/ipykernel/control.py index fdcbcc9ed..0ee0fad05 100644 --- a/ipykernel/control.py +++ b/ipykernel/control.py @@ -3,7 +3,6 @@ from tornado.ioloop import IOLoop - CONTROL_THREAD_NAME = "Control"