Skip to content

Commit 07da48e

Browse files
bollwyvlblink1073
andauthored
Don't pass None kernels to logging configurable in Comm (#1061)
Co-authored-by: Steven Silvester <[email protected]> fixes undefined
1 parent 2c66b2d commit 07da48e

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

ipykernel/comm/comm.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,16 @@ def _default_comm_id(self):
7070

7171
def __init__(self, target_name='', data=None, metadata=None, buffers=None, **kwargs):
7272
# Handle differing arguments between base classes.
73+
had_kernel = 'kernel' in kwargs
7374
kernel = kwargs.pop('kernel', None)
7475
if target_name:
7576
kwargs['target_name'] = target_name
7677
BaseComm.__init__(
7778
self, data=data, metadata=metadata, buffers=buffers, **kwargs
7879
) # type:ignore[call-arg]
79-
kwargs['kernel'] = kernel
80+
# only re-add kernel if explicitly provided
81+
if had_kernel:
82+
kwargs['kernel'] = kernel
8083
traitlets.config.LoggingConfigurable.__init__(self, **kwargs)
8184

8285

ipykernel/tests/test_comm.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22

33
from ipykernel.comm import Comm, CommManager
44
from ipykernel.ipkernel import IPythonKernel
5+
from ipykernel.kernelbase import Kernel
56

67

7-
def test_comm(kernel):
8+
def test_comm(kernel: Kernel) -> None:
89
manager = CommManager(kernel=kernel)
9-
kernel.comm_manager = manager
10+
kernel.comm_manager = manager # type:ignore
1011

1112
c = Comm(kernel=kernel, target_name="bar")
1213
msgs = []
1314

15+
assert kernel is c.kernel # type:ignore
16+
1417
def on_close(msg):
1518
msgs.append(msg)
1619

@@ -28,7 +31,7 @@ def on_message(msg):
2831
assert c.target_name == "bar"
2932

3033

31-
def test_comm_manager(kernel):
34+
def test_comm_manager(kernel: Kernel) -> None:
3235
manager = CommManager(kernel=kernel)
3336
msgs = []
3437

@@ -48,14 +51,19 @@ def on_msg(msg):
4851
manager.register_target("foo", foo)
4952
manager.register_target("fizz", fizz)
5053

51-
kernel.comm_manager = manager
54+
kernel.comm_manager = manager # type:ignore
5255
with unittest.mock.patch.object(Comm, "publish_msg") as publish_msg:
5356
comm = Comm()
5457
comm.on_msg(on_msg)
5558
comm.on_close(on_close)
5659
manager.register_comm(comm)
5760
assert publish_msg.call_count == 1
5861

62+
# make sure that when we don't pass a kernel, the 'default' kernel is taken
63+
Kernel._instance = kernel # type:ignore
64+
assert comm.kernel is kernel # type:ignore
65+
Kernel.clear_instance()
66+
5967
assert manager.get_comm(comm.comm_id) == comm
6068
assert manager.get_comm('foo') is None
6169

0 commit comments

Comments
 (0)