This docs on this page refers to a PREVIOUS VERSION. For the latest stable release, go to https://docs.bokeh.org/

Archived docs for versions <= 1.0.4 have had to be modified from their original published configuration, and may be missing some features (e.g. source listing)

All users are encourage to update to version 1.1 or later, as soon as they are able.

bokeh.embed.notebook — Bokeh 0.12.10 documentation

Source code for bokeh.embed.notebook

#-----------------------------------------------------------------------------
# Copyright (c) 2012 - 2017, Anaconda, Inc. All rights reserved.
#
# Powered by the Bokeh Development Team.
#
# The full license is in the file LICENSE.txt, distributed with this software.
#-----------------------------------------------------------------------------
'''

'''

#-----------------------------------------------------------------------------
# Boilerplate
#-----------------------------------------------------------------------------
from __future__ import absolute_import, division, print_function, unicode_literals

import logging
log = logging.getLogger(__name__)

from bokeh.util.api import public, internal ; public, internal

#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------

# Standard library imports
from contextlib import contextmanager

# External imports

# Bokeh imports
from ..core.templates import DOC_JS
from ..core.json_encoder import serialize_json
from ..settings import settings
from ..util.string import encode_utf8
from .util import FromCurdoc
from .util import check_one_model_or_doc, div_for_render_item, find_existing_docs, standalone_docs_json_and_render_items

#-----------------------------------------------------------------------------
# Globals and constants
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
# Public API
#-----------------------------------------------------------------------------

@public((1,0,0))
[docs]def notebook_content(model, notebook_comms_target=None, theme=FromCurdoc): ''' Return script and div that will display a Bokeh plot in a Jupyter Notebook. The data for the plot is stored directly in the returned HTML. Args: model (Model) : Bokeh object to render notebook_comms_target (str, optional) : A target name for a Jupyter Comms object that can update the document that is rendered to this notebook div theme (Theme, optional) : Defaults to the ``Theme`` instance in the current document. Setting this to ``None`` uses the default theme or the theme already specified in the document. Any other value must be an instance of the ``Theme`` class. Returns: script, div, Document .. note:: Assumes :func:`~bokeh.io.notebook.load_notebook` or the equivalent has already been executed. ''' model = check_one_model_or_doc(model) # Comms handling relies on the fact that the new_doc returned here # has models with the same IDs as they were started with with _ModelInEmptyDocument(model, apply_theme=theme) as new_doc: (docs_json, render_items) = standalone_docs_json_and_render_items([model]) item = render_items[0] if notebook_comms_target: item['notebook_comms_target'] = notebook_comms_target else: notebook_comms_target = '' script = DOC_JS.render( docs_json=serialize_json(docs_json), render_items=serialize_json(render_items) ) div = div_for_render_item(item) return encode_utf8(script), encode_utf8(div), new_doc
#----------------------------------------------------------------------------- # Internal API #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Private API #----------------------------------------------------------------------------- @contextmanager def _ModelInEmptyDocument(model, apply_theme=None): # Note: Comms handling relies on the fact that the new_doc returned # has models with the same IDs as they were started with from ..document import Document doc = find_existing_docs([model]) if apply_theme is FromCurdoc: from ..io import curdoc; curdoc doc.theme = curdoc().theme elif apply_theme is not None: doc.theme = apply_theme model._document = None for ref in model.references(): ref._document = None new_doc = Document() new_doc.add_root(model) if settings.perform_document_validation(): new_doc.validate() yield new_doc model._document = doc for ref in model.references(): ref._document = doc #----------------------------------------------------------------------------- # Code #-----------------------------------------------------------------------------