def test_bokeh_pane(document, comm): div = Div() pane = Pane(div) # Create pane row = pane._get_root(document, comm=comm) assert isinstance(row, BkRow) assert len(row.children) == 1 model = row.children[0] assert row.ref['id'] in pane._callbacks assert get_div(model) is div assert pane._models[row.ref['id']] is model # Replace Pane.object div2 = Div() pane.object = div2 new_model = row.children[0] assert get_div(new_model) is div2 assert row.ref['id'] in pane._callbacks assert pane._models[row.ref['id']] is new_model # Cleanup pane._cleanup(row) assert pane._callbacks == {} assert pane._models == {}
def test_plotly_pane_single_trace(document, comm): trace = go.Scatter(x=[0, 1], y=[2, 3], uid='Test') pane = Pane(trace, layout={'width': 350}) # Create pane row = pane._get_root(document, comm=comm) assert isinstance(row, BkRow) assert len(row.children) == 1 model = row.children[0] assert isinstance(model, PlotlyPlot) assert model.ref['id'] in pane._callbacks assert len(model.data['data']) == 1 assert model.data['data'][0]['type'] == 'scatter' assert model.data['data'][0]['x'] == [0, 1] assert model.data['data'][0]['y'] == [2, 3] assert model.data['layout'] == {'width': 350} assert len(model.data_sources) == 1 assert model.data_sources[0].data == {} # Replace Pane.object new_trace = go.Bar(x=[2, 3], y=[4, 5]) pane.object = new_trace assert row.children[0] is model assert len(model.data['data']) == 1 assert model.data['data'][0]['type'] == 'bar' assert model.data['data'][0]['x'] == [2, 3] assert model.data['data'][0]['y'] == [4, 5] assert model.data['layout'] == {'width': 350} assert len(model.data_sources) == 1 assert model.data_sources[0].data == {} assert model.ref['id'] in pane._callbacks # Cleanup pane._cleanup(model) assert pane._callbacks == {}
def test_markdown_pane(document, comm): pane = Pane("**Markdown**") # Create pane row = pane._get_root(document, comm=comm) assert isinstance(row, BkRow) assert len(row.children) == 1 model = row.children[0] assert row.ref['id'] in pane._callbacks assert pane._models[row.ref['id']] is model div = get_div(model) assert div.text == "<p><strong>Markdown</strong></p>" # Replace Pane.object pane.object = "*Markdown*" model = row.children[0] assert div is get_div(model) assert row.ref['id'] in pane._callbacks assert pane._models[row.ref['id']] is model assert div.text == "<p><em>Markdown</em></p>" # Cleanup pane._cleanup(row) assert pane._callbacks == {} assert pane._models == {}
def test_holoviews_pane_mpl_renderer(document, comm): curve = hv.Curve([1, 2, 3]) pane = Pane(curve) # Create pane row = pane._get_root(document, comm=comm) assert isinstance(row, BkRow) assert len(row.children) == 1 assert len(pane._callbacks) == 1 model = row.children[0] assert pane._models[row.ref['id']] is model div = get_div(model) assert '<img' in div.text # Replace Pane.object scatter = hv.Scatter([1, 2, 3]) pane.object = scatter model = row.children[0] div2 = get_div(model) assert div2.text != div.text # Cleanup pane._cleanup(row) assert pane._callbacks == {} assert pane._models == {}
def test_vega_pane(document, comm): pane = Pane(vega_example) # Create pane row = pane._get_root(document, comm=comm) assert isinstance(row, BkRow) assert len(row.children) == 1 model = row.children[0] assert isinstance(model, VegaPlot) expected = dict(vega_example, data={}) assert model.data == expected cds_data = model.data_sources['data'].data assert np.array_equal(cds_data['x'], np.array(['A', 'B', 'C', 'D', 'E'])) assert np.array_equal(cds_data['y'], np.array([5, 3, 6, 7, 2])) point_example = dict(vega_example, mark='point') point_example['data']['values'][0]['x'] = 'C' pane.object = point_example point_example['data'].pop('values') assert model.data == point_example cds_data = model.data_sources['data'].data assert np.array_equal(cds_data['x'], np.array(['C', 'B', 'C', 'D', 'E'])) assert np.array_equal(cds_data['y'], np.array([5, 3, 6, 7, 2])) pane._cleanup(row) assert pane._callbacks == {}
def test_altair_pane(document, comm): pane = Pane(altair_example()) # Create pane model = pane._get_root(document, comm=comm) assert isinstance(model, VegaPlot) expected = dict(vega_example, data={}) assert model.data == expected cds_data = model.data_sources['data'].data assert np.array_equal(cds_data['x'], np.array(['A', 'B', 'C', 'D', 'E'])) assert np.array_equal(cds_data['y'], np.array([5, 3, 6, 7, 2])) chart = altair_example() chart.mark = 'point' chart.data.values[0]['x'] = 'C' pane.object = chart point_example = dict(vega_example, mark='point') assert model.data == point_example cds_data = model.data_sources['data'].data assert np.array_equal(cds_data['x'], np.array(['C', 'B', 'C', 'D', 'E'])) assert np.array_equal(cds_data['y'], np.array([5, 3, 6, 7, 2])) pane._cleanup(model) assert pane._models == {}
def test_matplotlib_pane(document, comm): pane = Pane(mpl_figure()) # Create pane row = pane._get_root(document, comm=comm) assert isinstance(row, BkRow) assert len(row.children) == 1 assert row.ref['id'] in pane._callbacks model = row.children[0] div = get_div(model) assert '<img' in div.text text = div.text assert pane._models[row.ref['id']] is model # Replace Pane.object pane.object = mpl_figure() model = row.children[0] div2 = get_div(model) assert div is div2 assert div.text != text assert row.ref['id'] in pane._callbacks assert pane._models[row.ref['id']] is model # Cleanup pane._cleanup(row) assert pane._callbacks == {} assert pane._models == {}
def test_plotly_pane_single_trace(document, comm): trace = go.Scatter(x=[0, 1], y=[2, 3], uid='Test') pane = Pane({'data': [trace], 'layout': {'width': 350}}) # Create pane model = pane.get_root(document, comm=comm) assert isinstance(model, PlotlyPlot) assert pane._models[model.ref['id']][0] is model assert len(model.data) == 1 assert model.data[0]['type'] == 'scatter' assert model.data[0]['x'] == [0, 1] assert model.data[0]['y'] == [2, 3] assert model.layout == {'width': 350} assert len(model.data_sources) == 1 assert model.data_sources[0].data == {} # Replace Pane.object new_trace = go.Bar(x=[2, 3], y=[4, 5]) pane.object = {'data': new_trace, 'layout': {'width': 350}} assert len(model.data) == 1 assert model.data[0]['type'] == 'bar' assert model.data[0]['x'] == [2, 3] assert model.data[0]['y'] == [4, 5] assert model.layout == {'width': 350} assert len(model.data_sources) == 1 assert model.data_sources[0].data == {} assert pane._models[model.ref['id']][0] is model # Cleanup pane._cleanup(model) assert pane._models == {}
def test_matplotlib_pane(document, comm): pane = Pane(mpl_figure()) # Create pane row = pane._get_root(document, comm=comm) assert isinstance(row, BkRow) assert len(row.children) == 1 assert len(pane._callbacks) == 1 model = row.children[0] assert isinstance(model, BkWidgetBox) div = model.children[0] assert isinstance(div, Div) assert '<img' in div.text text = div.text # Replace Pane.object pane.object = mpl_figure() model = row.children[0] assert isinstance(model, BkWidgetBox) div2 = model.children[0] assert div is div2 assert div.text != text # Cleanup pane._cleanup(model) assert pane._callbacks == {}
def test_vega_pane(document, comm): pane = Pane(vega_example) # Create pane model = pane.get_root(document, comm=comm) assert isinstance(model, VegaPlot) expected = dict(vega_example, data={}) assert dict(model.data, **blank_schema) == dict(expected, **blank_schema) cds_data = model.data_sources['data'].data assert np.array_equal(cds_data['x'], np.array(['A', 'B', 'C', 'D', 'E'])) assert np.array_equal(cds_data['y'], np.array([5, 3, 6, 7, 2])) point_example = dict(vega_example, mark='point') point_example['data']['values'][0]['x'] = 'C' pane.object = point_example point_example['data'].pop('values') assert model.data == point_example cds_data = model.data_sources['data'].data assert np.array_equal(cds_data['x'], np.array(['C', 'B', 'C', 'D', 'E'])) assert np.array_equal(cds_data['y'], np.array([5, 3, 6, 7, 2])) pane._cleanup(model) assert pane._models == {}
def test_holoviews_pane_bokeh_renderer(document, comm): curve = hv.Curve([1, 2, 3]) pane = Pane(curve) # Create pane row = pane.get_root(document, comm=comm) assert isinstance(row, BkRow) assert len(row.children) == 1 model = row.children[0] assert isinstance(model, Figure) assert pane._models[row.ref['id']][0] is model renderers = [r for r in model.renderers if isinstance(r, GlyphRenderer)] assert len(renderers) == 1 assert isinstance(renderers[0].glyph, Line) # Replace Pane.object scatter = hv.Scatter([1, 2, 3]) pane.object = scatter model = row.children[0] assert isinstance(model, Figure) renderers = [r for r in model.renderers if isinstance(r, GlyphRenderer)] assert len(renderers) == 1 assert isinstance(renderers[0].glyph, Scatter) assert pane._models[row.ref['id']][0] is model # Cleanup pane._cleanup(row) assert pane._models == {}
def test_altair_pane(document, comm): pane = Pane(altair_example()) # Create pane model = pane.get_root(document, comm=comm) assert isinstance(model, VegaPlot) expected = dict(vega_example, data={}) if altair_version >= '4.0.0': expected['config'] = vega4_config assert dict(model.data, **blank_schema) == dict(expected, **blank_schema) cds_data = model.data_sources['data'].data assert np.array_equal(cds_data['x'], np.array(['A', 'B', 'C', 'D', 'E'])) assert np.array_equal(cds_data['y'], np.array([5, 3, 6, 7, 2])) chart = altair_example() chart.mark = 'point' chart.data.values[0]['x'] = 'C' pane.object = chart point_example = dict(vega_example, mark='point') if altair_version >= '4.0.0': point_example['config'] = vega4_config assert dict(model.data, **blank_schema) == dict(point_example, **blank_schema) cds_data = model.data_sources['data'].data assert np.array_equal(cds_data['x'], np.array(['C', 'B', 'C', 'D', 'E'])) assert np.array_equal(cds_data['y'], np.array([5, 3, 6, 7, 2])) pane._cleanup(model) assert pane._models == {}
def test_pydeck_pane_deck(document, comm): deck = pydeck.Deck(tooltip=True, mapbox_key='ABC') pane = Pane(deck) # Create pane model = pane.get_root(document, comm=comm) assert isinstance(model, DeckGLPlot) assert pane._models[model.ref["id"]][0] is model assert model.data == { 'description': None, 'mapStyle': 'mapbox://styles/mapbox/dark-v9', 'views': [{'@@type': 'MapView', 'controller': True}] } assert model.mapbox_api_key == deck.mapbox_key assert model.tooltip == deck.deck_widget.tooltip # Replace Pane.object new_deck = pydeck.Deck(tooltip=False) pane.object = new_deck assert pane._models[model.ref["id"]][0] is model assert model.tooltip == new_deck.deck_widget.tooltip # Cleanup pane._cleanup(model) assert pane._models == {}
def test_plotly_pane_numpy_to_cds_traces(document, comm): trace = go.Scatter(x=np.array([1, 2]), y=np.array([2, 3])) pane = Pane(trace, layout={'width': 350}) # Create pane row = pane._get_root(document, comm=comm) assert isinstance(row, BkRow) assert len(row.children) == 1 model = row.children[0] assert isinstance(model, PlotlyPlot) assert row.ref['id'] in pane._callbacks assert len(model.data['data']) == 1 assert model.data['data'][0]['type'] == 'scatter' assert 'x' not in model.data['data'][0] assert 'y' not in model.data['data'][0] assert model.data['layout'] == {'width': 350} assert len(model.data_sources) == 1 cds = model.data_sources[0] assert np.array_equal(cds.data['x'], np.array([1, 2])) assert np.array_equal(cds.data['y'], np.array([2, 3])) # Replace Pane.object new_trace = [ go.Scatter(x=np.array([5, 6]), y=np.array([6, 7])), go.Bar(x=np.array([2, 3]), y=np.array([4, 5])) ] pane.object = new_trace assert row.children[0] is model assert len(model.data['data']) == 2 assert model.data['data'][0]['type'] == 'scatter' assert 'x' not in model.data['data'][0] assert 'y' not in model.data['data'][0] assert model.data['data'][1]['type'] == 'bar' assert 'x' not in model.data['data'][1] assert 'y' not in model.data['data'][1] assert model.data['layout'] == {'width': 350} assert len(model.data_sources) == 2 cds = model.data_sources[0] assert np.array_equal(cds.data['x'], np.array([5, 6])) assert np.array_equal(cds.data['y'], np.array([6, 7])) cds2 = model.data_sources[1] assert np.array_equal(cds2.data['x'], np.array([2, 3])) assert np.array_equal(cds2.data['y'], np.array([4, 5])) assert row.ref['id'] in pane._callbacks # Cleanup pane._cleanup(row, True) assert pane._callbacks == {}
def test_markdown_pane(document, comm): pane = Pane("**Markdown**") # Create pane model = pane.get_root(document, comm=comm) assert pane._models[model.ref['id']][0] is model assert model.text.endswith("<p><strong>Markdown</strong></p>") # Replace Pane.object pane.object = "*Markdown*" assert pane._models[model.ref['id']][0] is model assert model.text.endswith("<p><em>Markdown</em></p>") # Cleanup pane._cleanup(model) assert pane._models == {}
def test_markdown_pane(document, comm): pane = Pane("**Markdown**") # Create pane model = pane.get_root(document, comm=comm) assert pane._models[model.ref['id']][0] is model assert model.text.endswith("<p><strong>Markdown</strong></p>") # Replace Pane.object pane.object = "*Markdown*" assert pane._models[model.ref['id']][0] is model assert model.text.endswith("<p><em>Markdown</em></p>") # Cleanup pane._cleanup(model) assert pane._models == {}
def test_matplotlib_pane(document, comm): pane = Pane(mpl_figure()) # Create pane model = pane.get_root(document, comm=comm) assert model.text.startswith('<img') text = model.text assert pane._models[model.ref['id']][0] is model # Replace Pane.object pane.object = mpl_figure() assert model.text != text assert pane._models[model.ref['id']][0] is model # Cleanup pane._cleanup(model) assert pane._models == {}
def test_plotly_pane_numpy_to_cds_traces(document, comm): trace = go.Scatter(x=np.array([1, 2]), y=np.array([2, 3])) pane = Pane({'data': [trace], 'layout': {'width': 350}}) # Create pane model = pane.get_root(document, comm=comm) assert isinstance(model, PlotlyPlot) assert len(model.data) == 1 assert model.data[0]['type'] == 'scatter' assert 'x' not in model.data[0] assert 'y' not in model.data[0] assert model.layout == {'width': 350} assert len(model.data_sources) == 1 cds = model.data_sources[0] assert np.array_equal(cds.data['x'][0], np.array([1, 2])) assert np.array_equal(cds.data['y'][0], np.array([2, 3])) # Replace Pane.object new_trace = [ go.Scatter(x=np.array([5, 6]), y=np.array([6, 7])), go.Bar(x=np.array([2, 3]), y=np.array([4, 5])) ] pane.object = {'data': new_trace, 'layout': {'width': 350}} assert len(model.data) == 2 assert model.data[0]['type'] == 'scatter' assert 'x' not in model.data[0] assert 'y' not in model.data[0] assert model.data[1]['type'] == 'bar' assert 'x' not in model.data[1] assert 'y' not in model.data[1] assert model.layout == {'width': 350} assert len(model.data_sources) == 2 cds = model.data_sources[0] assert np.array_equal(cds.data['x'][0], np.array([5, 6])) assert np.array_equal(cds.data['y'][0], np.array([6, 7])) cds2 = model.data_sources[1] assert np.array_equal(cds2.data['x'][0], np.array([2, 3])) assert np.array_equal(cds2.data['y'][0], np.array([4, 5])) # Cleanup pane._cleanup(model) assert pane._models == {}
def test_holoviews_pane_mpl_renderer(document, comm): curve = hv.Curve([1, 2, 3]) pane = Pane(curve) # Create pane row = pane.get_root(document, comm=comm) assert isinstance(row, BkRow) assert len(row.children) == 1 model = row.children[0] assert pane._models[row.ref['id']][0] is model assert model.text.startswith('<img src=') # Replace Pane.object scatter = hv.Scatter([1, 2, 3]) pane.object = scatter new_model = row.children[0] assert model.text != new_model.text # Cleanup pane._cleanup(row) assert pane._models == {}
def test_html_pane(document, comm): pane = Pane("<h1>Test</h1>") # Create pane row = pane._get_root(document, comm=comm) assert isinstance(row, BkRow) assert len(row.children) == 1 model = row.children[0] assert model.ref['id'] in pane._callbacks div = get_div(model) assert div.text == "<h1>Test</h1>" # Replace Pane.object pane.object = "<h2>Test</h2>" model = row.children[0] assert div is get_div(model) assert model.ref['id'] in pane._callbacks assert div.text == "<h2>Test</h2>" # Cleanup pane._cleanup(model) assert pane._callbacks == {}