##// END OF EJS Templates
Fix interact test
Jonathan Frederic -
Show More
@@ -80,7 +80,8 b' def check_widgets(container, **to_check):'
80 80 # build a widget dictionary, so it matches
81 81 widgets = {}
82 82 for w in container.children:
83 widgets[w.description] = w
83 if hasattr(w, 'description'):
84 widgets[w.description] = w
84 85
85 86 for key, d in to_check.items():
86 87 nt.assert_in(key, widgets)
@@ -138,7 +139,7 b' def test_single_value_float():'
138 139 def test_single_value_int():
139 140 for a in (1, 5, -3):
140 141 c = interactive(f, a=a)
141 nt.assert_equal(len(c.children), 1)
142 nt.assert_equal(len(c.children), 2)
142 143 w = c.children[0]
143 144 check_widget(w,
144 145 cls=widgets.IntSlider,
@@ -157,7 +158,7 b' def test_list_tuple_2_int():'
157 158 c = interactive(f, tup=(1,-1))
158 159 for min, max in [ (0,1), (1,10), (1,2), (-5,5), (-20,-19) ]:
159 160 c = interactive(f, tup=(min, max), lis=[min, max])
160 nt.assert_equal(len(c.children), 2)
161 nt.assert_equal(len(c.children), 3)
161 162 d = dict(
162 163 cls=widgets.IntSlider,
163 164 min=min,
@@ -174,7 +175,7 b' def test_list_tuple_3_int():'
174 175 c = interactive(f, tup=(1,2,-1))
175 176 for min, max, step in [ (0,2,1), (1,10,2), (1,100,2), (-5,5,4), (-100,-20,4) ]:
176 177 c = interactive(f, tup=(min, max, step), lis=[min, max, step])
177 nt.assert_equal(len(c.children), 2)
178 nt.assert_equal(len(c.children), 3)
178 179 d = dict(
179 180 cls=widgets.IntSlider,
180 181 min=min,
@@ -191,7 +192,7 b' def test_list_tuple_2_float():'
191 192 c = interactive(f, tup=(0.5,-0.5))
192 193 for min, max in [ (0.5, 1.5), (1.1,10.2), (1,2.2), (-5.,5), (-20,-19.) ]:
193 194 c = interactive(f, tup=(min, max), lis=[min, max])
194 nt.assert_equal(len(c.children), 2)
195 nt.assert_equal(len(c.children), 3)
195 196 d = dict(
196 197 cls=widgets.FloatSlider,
197 198 min=min,
@@ -210,7 +211,7 b' def test_list_tuple_3_float():'
210 211 c = interactive(f, tup=(1,2.,-1.))
211 212 for min, max, step in [ (0.,2,1), (1,10.,2), (1,100,2.), (-5.,5.,4), (-100,-20.,4.) ]:
212 213 c = interactive(f, tup=(min, max, step), lis=[min, max, step])
213 nt.assert_equal(len(c.children), 2)
214 nt.assert_equal(len(c.children), 3)
214 215 d = dict(
215 216 cls=widgets.FloatSlider,
216 217 min=min,
@@ -224,7 +225,7 b' def test_list_tuple_str():'
224 225 values = ['hello', 'there', 'guy']
225 226 first = values[0]
226 227 c = interactive(f, tup=tuple(values), lis=list(values))
227 nt.assert_equal(len(c.children), 2)
228 nt.assert_equal(len(c.children), 3)
228 229 d = dict(
229 230 cls=widgets.Dropdown,
230 231 value=first,
@@ -471,7 +472,7 b' def test_call_decorated_kwargs_on_trait_change():'
471 472
472 473 def test_fixed():
473 474 c = interactive(f, a=widgets.fixed(5), b='text')
474 nt.assert_equal(len(c.children), 1)
475 nt.assert_equal(len(c.children), 2)
475 476 w = c.children[0]
476 477 check_widget(w,
477 478 cls=widgets.Text,
@@ -37,7 +37,11 b' class Output(DOMWidget):'
37 37 def __init__(self, *args, **kwargs):
38 38 super(Output, self).__init__(*args, **kwargs)
39 39 from IPython import get_ipython
40 self._ip = get_ipython()
40 ip = get_ipython()
41 if ip is not None and hasattr(ip, 'kernel'):
42 self._kernel = ip.kernel
43 else:
44 self._kernel = None
41 45
42 46 def clear_output(self, *pargs, **kwargs):
43 47 with self:
@@ -45,37 +49,38 b' class Output(DOMWidget):'
45 49
46 50 def __enter__(self):
47 51 """Called upon entering output widget context manager."""
48 self._flush()
49 kernel = self._ip.kernel
50 session = kernel.session
51 send = session.send
52 self._original_send = send
53 self._session = session
54
55 def send_hook(stream, msg_or_type, content=None, parent=None, ident=None,
56 buffers=None, track=False, header=None, metadata=None):
57
58 # Handle both prebuild messages and unbuilt messages.
59 if isinstance(msg_or_type, (Message, dict)):
60 msg_type = msg_or_type['msg_type']
61 msg = dict(msg_or_type)
62 else:
63 msg_type = msg_or_type
64 msg = session.msg(msg_type, content=content, parent=parent,
65 header=header, metadata=metadata)
66
67 # If this is a message type that we want to forward, forward it.
68 if stream is kernel.iopub_socket and msg_type in ['clear_output', 'stream', 'display_data']:
69 self.send(msg)
70 else:
71 send(stream, msg, ident=ident, buffers=buffers, track=track)
72
73 session.send = send_hook
52 if self._kernel is not None:
53 self._flush()
54 session = self._kernel.session
55 send = session.send
56 self._original_send = send
57 self._session = session
58
59 def send_hook(stream, msg_or_type, content=None, parent=None, ident=None,
60 buffers=None, track=False, header=None, metadata=None):
61
62 # Handle both prebuild messages and unbuilt messages.
63 if isinstance(msg_or_type, (Message, dict)):
64 msg_type = msg_or_type['msg_type']
65 msg = dict(msg_or_type)
66 else:
67 msg_type = msg_or_type
68 msg = session.msg(msg_type, content=content, parent=parent,
69 header=header, metadata=metadata)
70
71 # If this is a message type that we want to forward, forward it.
72 if stream is self._kernel.iopub_socket and msg_type in ['clear_output', 'stream', 'display_data']:
73 self.send(msg)
74 else:
75 send(stream, msg, ident=ident, buffers=buffers, track=track)
76
77 session.send = send_hook
74 78
75 79 def __exit__(self, exception_type, exception_value, traceback):
76 80 """Called upon exiting output widget context manager."""
77 self._flush()
78 self._session.send = self._original_send
81 if self._kernel is not None:
82 self._flush()
83 self._session.send = self._original_send
79 84
80 85 def _flush(self):
81 86 """Flush stdout and stderr buffers."""
General Comments 0
You need to be logged in to leave comments. Login now