0.11.0 (Jan 2016)

Bokeh Version 0.11.0 is a large release with many new improvements

  • New Tornado and websocket-based Bokeh Server
    • bokeh command line tool for creating applications
    • expanded docs including deployment guidance
    • video demonstrations and tutorials
    • supports async, periodic, timeout and model event callbacks
    • python client API
  • User-Defined Models allowing anyone to extend Bokeh
  • GeoJSON data source and map tiles renderer
  • WebGL support for rendering lines
  • Python -> JS compilation for CustomJS callbacks (Py3 only for now)
  • New general push_notebook() based on Jupyter comms
  • Updates to charts
    • all legacy charts converted
    • more examples and expanded docs
  • UX improvements
    • configurable and “auto” range bounds
    • wheel zoom scroll capture turned off by default
    • hover policy for glyphs
    • responsive improvements
  • Known issues
    • annulus glyph does not render correctly on IE and Edge
  • many small bug fixes

Known Issues

Server output in the Jupyter notebook with output_server is currently not functioning correctly, and will be fixed in a follow on 0.11.1 release shortly. However, new notebook comms can enable many of the same kinds of interactions and notebook-based apps without a Bokeh server.

The Image glyph does not currently work with the Bokeh server, and will be fixed in a follow on 0.11.1 release shortly.

Migration Guide

The previous Flask-based bokeh-server has been completely removed and replaced with the new bokeh serve based on Tornado and a websocket protocol. If you require to use bokeh-server you will have to remain on Bokeh version 0.10.0 or lower.

All “old-style” charts in bokeh._legacy_charts have been updated to use the more consistent and powerful bokeh.charts interface, and bokeh._legacy_charts has been removed.

Bokeh deprecation warnings, which are not enabled by default python, have now been unconditionally enabled and are always displayed.

ColumnDataSource.push_notebook() has been deprecated (but still works) in favor of the more general bokeh.io.push_notebook() base on Jupyter notebook websocket comms.

The following modules have been deprecated (but still work), with new counterparts as described in this table:

Old location New location
bokeh.browserlib bokeh.util.browser
bokeh.properties bokeh.core.properties
bokeh.mixins bokeh.core.property_mixins
bokeh.plotting_helpers bokeh.plotting.helpers
bokeh.templates bokeh.core.templates

Additionally, the following modules that should not be of interest to general users have been moved immediately, without deprecation:

Old location New location
bokeh._json_encoder bokeh.core.json_encoder
bokeh.compat bokeh.core.compat
bokeh.enums bokeh.core.enums
bokeh.query bokeh.core.query
bokeh.state bokeh.core.state
bokeh.validation bokeh.core.validation

If you have been using file_html and manually passing in js_resources or css_resources, your call will no longer work. You can still do this, but you pass a tuple to the resources argument.

Before:

html = file_html(layout, None, title=title, template=template, js_resources=js_resources, css_resources=css_resources)

v0.11:

html = file_html(layout, resources=(js_resources, css_resources), title=title, template=template)

Note you can pass None in place of either js_resources or css_resources.