Release 0.9.1
-------------

:Release: 0.9.1
:Date: December 17th, 2015

New Expressions
~~~~~~~~~~~~~~~

Improved Expressions
~~~~~~~~~~~~~~~~~~~~

* The :class:`~blaze.expr.string.Like` expression was improved to support more
  general ``Select`` queries that result from
  :class:`~blaze.expr.collections.Join` operations rather than soely
  ``ColumnElement`` queries (:issue:`1371` :issue:`1373`).
* Adds ``std`` and ``var`` reductions for ``timedelta`` types for sql and pandas
  backends (:issue:`1382`).

New Backends
~~~~~~~~~~~~

None

Improved Backends
~~~~~~~~~~~~~~~~~

* Blaze Server no longer depends on `Bokeh` for CORS handling, and now uses the
  `flask-cors` third-party package (:issue:`1378`).

Experimental Features
~~~~~~~~~~~~~~~~~~~~~

None

API Changes
~~~~~~~~~~~

None

Bug Fixes
~~~~~~~~~

* Fixed a ``blaze-server`` entry point bug regarding an ambiguity between the
  :func:`~blaze.server.spider.spider` function and the
  :module:`~blaze.server.spider` module (:issue:`1385`).
* Fixed :func:`blaze.expr.datetime.truncate` handling for the sql backend
  (:issue:`1393`).
* Fix :func:`blaze.expr.core.isidentical` to check the ``_hashargs`` instead of
  the ``_args``. This fixes a case that caused objects that hashed the same to
  not compare equal when somewhere in the tree of ``_args`` was a non hashable
  structure (:issue:`1387`).
* Fixed a type issue where ``datetime - datetime :: datetime`` instead of
  ``timedelta`` (:issue:`1382`).
* Fixed a bug that caused :func:`~blaze.expr.expressions.coerce` to fail when
  computing against ``ColumnElement``\s. This would break ``coerce`` for many
  sql operations (:issue:`1382`).
* Fixed reductions over ``timedelta`` returning ``float`` (:issue:`1382`).
* Fixed interactive repr for ``timedelta`` not coercing to ``timedelta``
  objects (:issue:`1382`).
* Fixed weakkeydict cache failures that were causing ``.dshape`` lookups to fail
  sometimes (:issue:`1399`).
* Fixed relabeling columns over selects by using `reconstruct_select` (:issue: `1471`).

Miscellaneous
~~~~~~~~~~~~~

* Removed support for Spark 1.3 (:issue:`1386`) based on community consensus.
* Added :func:`blaze.utils.literal_compile` for converting sqlalchemy
  expressions into sql strings with bind parameters inlined as sql
  literals. :func:`blaze.utils.normalize` now accepts a sqlalchemy selectable
  and uses ``literal_compile`` to convert into a string first (:issue:`1386`).
