0.12.16 (May 2018)
==================

Bokeh Version ``0.12.16`` is an incremental update that adds a few
new features and fixes several bugs. Some of the highlights include:

* Hover tools now work with image glyphs (:bokeh-issue:`3886`)

* BokehJS exposes a public ``reset`` method for Plots (:bokeh-issue:`5071`)

* Categorical tick labels at all levels may be rotates (:bokeh-issue`7643`)

* New ``CustomJSHover`` for highly customized tooltip fields (:bokeh-issue:`7647`)

* Axes may now have fixed positions inside plots (:bokeh-issue:`113`)

* Small zoom tool enhancements (:bokeh-issue:`3126`, :bokeh-issue:`3125`, :bokeh-issue:`2427`)

* ``MultiLine`` and ``Patches`` now function with categorical ranges (:bokeh-issue:`7462`)

And several other bug fixes and docs additions. For full details see the
:bokeh-tree:`CHANGELOG`.

Migration Guide
---------------

NOTE: the 0.12.x series is the last planned release series before a version
1.0 release. For more information see the `project roadmap`_.

Deprecations Removed
~~~~~~~~~~~~~~~~~~~~

The following functions, arguments, or features have were previously deprecated
with warnings and instructions for new usage, and have now been permanently
removed:

* ``--host`` argument to ``bokeh serve``
* ``responsive`` argument to plots and layout functions
* ``Plot.toolbar_sticky`` property
* ``Tool.plot`` property
* ``bokeh.sampledata.population.load_population`` function
* ``bokeh.util.notebook`` module

Release History
~~~~~~~~~~~~~~~

To support publishing all release information on one page, the
``bokeh_index_toctree`` module and contents have been immediately moved to
``bokeh_releases``. Since this facility had no use outside building
official Bokeh documentation, no deprecation was given.

CDS ``column_names`` property
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

``ColumnDataSource`` models had a Bokeh property ``column_names`` for specifying
the list of column names in ``source.data``. This information was duplicative
and had to be explicitly maintained in a fragile way. It has been replaced by
read-only properties in both Python and JavaScript that always accurately
report the current column names automatically. Setting ``column_names`` is
no longer supported, however as this possibility has never been officially
documented or demonstrated, it is not expected to affect any standard usage.

Tools ``renderers`` property
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Previously the default value, an empty list, corresponded to automatically
choosing all available renderers for hit testing. Now, a new default value
``"auto"`` is used for that, so that an empty list can mean "hit test no
renderers". A value of ``None`` may also be used to indicate no hit testing
should occur. Since there is typically no reason to explicitly set a property
to its default value, it is not expected that this change impacts any standard
usage.

bokehjs' source directory renamed
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To finalize the rewrite of bokehjs in TypeScript, the source directory was
renamed from ``src/coffee`` to ``src/lib``. This change affects only bokehjs'
contributors or other advanced users (e.g. when repackaging bokehjs with
Webpack or other JavaScript module bundler).

``BOKEH_DOCS_MISSING_API_KEY_OK`` environment variable
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This environment variable is no longer used by Bokeh. Previously, the
``bokeh.sphinxext`` plot directive would always fail by default if a
``GOOGLE_API_KEY`` environment variable was not defined, and this environment
variable could be set to override that default behavior. Now, builds will
succeed by default, even witout a Google API key defined (but Google Maps plots
will not fully render). To require an API be defined (i.e. to restore the
previous behavior) you can now set ``bokeh_missing_google_api_key_ok = False``
in the Sphinx config file.

.. _project roadmap: https://bokehplots.com/pages/roadmap.html
