def notebook_show(obj, doc, comm):
    """
    Displays bokeh output inside a notebook.
    """
    target = obj.ref['id']
    load_mime = 'application/vnd.holoviews_load.v0+json'
    exec_mime = 'application/vnd.holoviews_exec.v0+json'

    # Publish plot HTML
    bokeh_script, bokeh_div, _ = bokeh.embed.notebook.notebook_content(obj, comm.id)
    publish_display_data(data={'text/html': encode_utf8(bokeh_div)})

    # Publish comm manager
    JS = '\n'.join([PYVIZ_PROXY, JupyterCommManager.js_manager])
    publish_display_data(data={load_mime: JS, 'application/javascript': JS})

    # Publish bokeh plot JS
    msg_handler = bokeh_msg_handler.format(plot_id=target)
    comm_js = comm.js_template.format(plot_id=target, comm_id=comm.id, msg_handler=msg_handler)
    bokeh_js = '\n'.join([comm_js, bokeh_script])

    # Note: extension should be altered so text/html is not required
    publish_display_data(data={exec_mime: '', 'text/html': '',
                               'application/javascript': bokeh_js},
                         metadata={exec_mime: {'id': target}})
Displays bokeh output inside a notebook.