44from ipywidgets import Widget
55import ipywidgets .widgets .widget
66
7- import comm
8- from ipykernel .comm import Comm
7+ # The new comm package is not available in our Python 3.7 CI (older ipykernel version)
8+ try :
9+ import comm
10+ NEW_COMM_PACKAGE = True
11+ except ImportError :
12+ NEW_COMM_PACKAGE = False
13+
14+ import ipykernel .comm
915
1016
1117class DummyComm ():
1218 comm_id = 'a-b-c-d'
1319 kernel = 'Truthy'
1420
1521 def __init__ (self , * args , ** kwargs ):
16- super ().__init__ (* args , ** kwargs )
22+ super ().__init__ ()
1723 self .messages = []
1824
1925 def open (self , * args , ** kwargs ):
@@ -40,12 +46,24 @@ def dummy_get_comm_manager(**kwargs):
4046_widget_attrs = {}
4147undefined = object ()
4248
43- orig_create_comm = comm .create_comm
44- orig_get_comm_manager = comm .get_comm_manager
49+ if NEW_COMM_PACKAGE :
50+ orig_comm = ipykernel .comm .comm .BaseComm
51+ else :
52+ orig_comm = ipykernel .comm .Comm
53+ orig_create_comm = None
54+ orig_get_comm_manager = None
55+
56+ if NEW_COMM_PACKAGE :
57+ orig_create_comm = comm .create_comm
58+ orig_get_comm_manager = comm .get_comm_manager
4559
4660def setup_test_comm ():
47- comm .create_comm = dummy_create_comm
48- comm .get_comm_manager = dummy_get_comm_manager
61+ if NEW_COMM_PACKAGE :
62+ comm .create_comm = dummy_create_comm
63+ comm .get_comm_manager = dummy_get_comm_manager
64+ ipykernel .comm .comm .BaseComm = DummyComm
65+ else :
66+ ipykernel .comm .Comm = DummyComm
4967 Widget .comm .klass = DummyComm
5068 ipywidgets .widgets .widget .Comm = DummyComm
5169 _widget_attrs ['_repr_mimebundle_' ] = Widget ._repr_mimebundle_
@@ -54,10 +72,14 @@ def raise_not_implemented(*args, **kwargs):
5472 Widget ._repr_mimebundle_ = raise_not_implemented
5573
5674def teardown_test_comm ():
57- comm .create_comm = orig_create_comm
58- comm .get_comm_manager = orig_get_comm_manager
59- Widget .comm .klass = Comm
60- ipywidgets .widgets .widget .Comm = Comm
75+ if NEW_COMM_PACKAGE :
76+ comm .create_comm = orig_create_comm
77+ comm .get_comm_manager = orig_get_comm_manager
78+ ipykernel .comm .comm .BaseComm = orig_comm
79+ else :
80+ ipykernel .comm .Comm = orig_comm
81+ Widget .comm .klass = orig_comm
82+ ipywidgets .widgets .widget .Comm = orig_comm
6183 for attr , value in _widget_attrs .items ():
6284 if value is undefined :
6385 delattr (Widget , attr )
0 commit comments