def test_dynamic_stream_transients(self): # Ensure Stream reset option resets streams to default value # when not triggering global xresets, yresets xresets, yresets = 0, 0 def history_callback(x, y, history=deque(maxlen=10)): global xresets, yresets if x is None: xresets += 1 else: history.append(x) if y is None: yresets += 1 return Curve(list(history)) x = PointerX(transient=True) y = PointerY(transient=True) dmap = DynamicMap(history_callback, kdims=[], streams=[x, y]) # Add stream subscriber mocking plot x.add_subscriber(lambda **kwargs: dmap[()]) y.add_subscriber(lambda **kwargs: dmap[()]) # Update each stream and count when None default appears for i in range(2): x.event(x=i) y.event(y=i) self.assertEqual(xresets, 2) self.assertEqual(yresets, 2)
def test_stream_callback_single_call(self): def history_callback(x, history=deque(maxlen=10)): history.append(x) return Curve(list(history)) stream = PointerX(x=0) dmap = DynamicMap(history_callback, kdims=[], streams=[stream]) plot = bokeh_server_renderer.get_plot(dmap) bokeh_server_renderer(plot) for i in range(20): stream.event(x=i) data = plot.handles['source'].data self.assertEqual(data['x'], np.arange(10)) self.assertEqual(data['y'], np.arange(10, 20))
def test_stream_callback_single_call(self): def history_callback(x, history=deque(maxlen=10)): history.append(x) return Curve(list(history)) stream = PointerX(x=0) dmap = DynamicMap(history_callback, kdims=[], streams=[stream]) plot = plotly_renderer.get_plot(dmap) plotly_renderer(plot) for i in range(20): stream.event(x=i) state = plot.state self.assertEqual(state['data'][0]['x'], np.arange(10)) self.assertEqual(state['data'][0]['y'], np.arange(10, 20))
def test_stream_callback_single_call(self): def history_callback(x, history=deque(maxlen=10)): history.append(x) return Curve(list(history)) stream = PointerX(x=0) dmap = DynamicMap(history_callback, kdims=[], streams=[stream]) plot = plotly_renderer.get_plot(dmap) plotly_renderer(dmap) for i in range(20): stream.event(x=i) state = plot.state self.assertEqual(state['data'][0]['x'], np.arange(10)) self.assertEqual(state['data'][0]['y'], np.arange(10, 20))
def test_stream_callback_single_call(self): def history_callback(x, history=deque(maxlen=10)): history.append(x) return Curve(list(history)) stream = PointerX(x=0) dmap = DynamicMap(history_callback, kdims=[], streams=[stream]) plot = mpl_renderer.get_plot(dmap) mpl_renderer(plot) for i in range(20): plot.state.set_dpi(72) stream.event(x=i) x, y = plot.handles['artist'].get_data() self.assertEqual(x, np.arange(10)) self.assertEqual(y, np.arange(10, 20))
def test_dynamic_callable_disable_callable_memoize(self): # Disabling Callable.memoize means no memoization is applied, # every access to DynamicMap calls callback and adds sample def history_callback(x, history=deque(maxlen=10)): history.append(x) return Curve(list(history)) x = PointerX() callable_obj = Callable(history_callback, memoize=False) dmap = DynamicMap(callable_obj, kdims=[], streams=[x]) # Add stream subscriber mocking plot x.add_subscriber(lambda **kwargs: dmap[()]) for i in range(2): x.event(x=1) self.assertEqual(dmap[()], Curve([1, 1, 1])) for i in range(2): x.event(x=2) self.assertEqual(dmap[()], Curve([1, 1, 1, 2, 2, 2]))
def test_dynamic_callable_memoize(self): # Always memoized only one of each held def history_callback(x, history=deque(maxlen=10)): history.append(x) return Curve(list(history)) x = PointerX() dmap = DynamicMap(history_callback, kdims=[], streams=[x]) # Add stream subscriber mocking plot x.add_subscriber(lambda **kwargs: dmap[()]) for i in range(2): x.event(x=1) self.assertEqual(dmap[()], Curve([1])) for i in range(2): x.event(x=2) self.assertEqual(dmap[()], Curve([1, 2]))
def test_dynamic_callable_stream_transient(self): # Enable transient stream meaning memoization only happens when # stream is inactive, should have sample for each call to # stream.update def history_callback(x, history=deque(maxlen=10)): if x is not None: history.append(x) return Curve(list(history)) x = PointerX(transient=True) dmap = DynamicMap(history_callback, kdims=[], streams=[x]) # Add stream subscriber mocking plot x.add_subscriber(lambda **kwargs: dmap[()]) for i in range(2): x.event(x=1) self.assertEqual(dmap[()], Curve([1, 1])) for i in range(2): x.event(x=2) self.assertEqual(dmap[()], Curve([1, 1, 2, 2]))