예제 #1
0
 def _figure_data(self, plot, fmt='html', doc=None, **kwargs):
     model = plot.state
     doc = Document() if doc is None else doc
     for m in model.references():
         m._document = None
     doc.add_root(model)
     comm_id = plot.comm.id if plot.comm else None
     # Bokeh raises warnings about duplicate tools and empty subplots
     # but at the holoviews level these are not issues
     logger = logging.getLogger(bokeh.core.validation.check.__file__)
     logger.disabled = True
     try:
         if bokeh_version > '0.12.9':
             js, div, _ = notebook_content(model, comm_id)
             html = NOTEBOOK_DIV.format(plot_script=js, plot_div=div)
             div = encode_utf8(html)
             doc.hold()
         else:
             div = notebook_div(model, comm_id)
     except:
         logger.disabled = False
         raise
     logger.disabled = False
     plot.document = doc
     return div
예제 #2
0
    def test_notebook_content(self, mock_standalone_docs_json_and_render_items):
        (docs_json, render_items) = ("DOC_JSON", [dict(docid="foo", elementid="bar", modelid="bat")])
        mock_standalone_docs_json_and_render_items.return_value = (docs_json, render_items)

        expected_script = DOC_JS.render(docs_json=serialize_json(docs_json),
                                        render_items=serialize_json(render_items))
        expected_div = PLOT_DIV.render(elementid=render_items[0]['elementid'])

        (script, div, _) = embed.notebook_content(_embed_test_plot)

        self.assertEqual(script, expected_script)
        self.assertEqual(div, expected_div)
예제 #3
0
    def test_notebook_content_with_notebook_comms_target(self, mock_standalone_docs_json_and_render_items):
        (docs_json, render_items) = ("DOC_JSON", [dict(docid="foo", elementid="bar", modelid="bat")])
        mock_standalone_docs_json_and_render_items.return_value = (docs_json, render_items)
        comms_target = "NOTEBOOK_COMMS_TARGET"

        ## assert that NOTEBOOK_COMMS_TARGET is added to render_items bundle
        self.assertTrue('notebook_comms_target' not in render_items[0])
        (script, _, _) = embed.notebook_content(_embed_test_plot, notebook_comms_target=comms_target)
        self.assertTrue('notebook_comms_target' in render_items[0])

        ## assert that NOTEBOOK_COMMS_TARGET ends up in generated script
        expected_script = DOC_JS.render(docs_json=serialize_json(docs_json),
                                        render_items=serialize_json(render_items))

        self.assertEqual(script, expected_script)
예제 #4
0
def bokeh_notebook_div(image):
    """"
    Generates an HTML div to embed in the notebook.

    Parameters
    ----------
    image: InteractiveImage
        InteractiveImage instance with a plot

    Returns
    -------
    div: str
        HTML string containing the bokeh plot to be displayed
    """
    if bokeh_version > '0.12.9':
        js, div, _ = notebook_content(image.p, image.ref)
        html = NOTEBOOK_DIV.format(plot_script=js, plot_div=div)
        div = encode_utf8(html)
        # Ensure events are held until an update is triggered
        image.doc.hold()
    else:
        div = notebook_div(image.p, image.ref)
    return div