
v0.10.0 (January 2020)
----------------------


.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.3629446.svg
   :target: https://doi.org/10.5281/zenodo.3629446


This is a major update that is being released simultaneously with version 0.9.1. It has all of the same features (and bugs!) as 0.9.1, but there are important changes to the dependencies.

Most notably, all support for Python 2 has now been dropped. Support for Python 3.5 has also been dropped. Seaborn is now strictly compatible with Python 3.6+.

Minimally supported versions of the dependent PyData libraries have also been increased, in some cases substantially. While seaborn has tended to be very conservative about maintaining compatibility with older dependencies, this was causing increasing pain during development. At the same time, these libraries are now much easier to install. Going forward, seaborn will likely stay close to the `Numpy community guidelines <https://numpy.org/neps/nep-0029-deprecation_policy.html>`_ for version support.

This release also removes a few previously-deprecated features:

- The ``tsplot`` function and ``seaborn.timeseries`` module have been removed. Recall that ``tsplot`` was replaced with :func:`lineplot`.

- The ``seaborn.apionly`` entry-point has been removed.

- The ``seaborn.linearmodels`` module (previously renamed to ``seaborn.regression``) has been removed.

Looking forward
~~~~~~~~~~~~~~~

Now that seaborn is a Python 3 library, it can take advantage of `keyword-only arguments <https://www.python.org/dev/peps/pep-3102/>`_. It is likely that future versions will introduce this syntax, potentially in a breaking way. For guidance, most seaborn functions have a signature that looks like

::

    func(x, y, ..., data=None, **kwargs)

where the ``**kwargs`` are specified in the function. Going forward it will likely be necessary to specify ``data`` and all subsequent arguments with an explicit ``key=value`` mapping. This style has long been used throughout the documentation, and the formal requirement will not be introduced until at least the next major release. Adding this feature will make it possible to enhance some older functions with more modern capabilities (e.g., adding a native ``hue`` semantic within functions like :func:`jointplot` and :func:`regplot`) and will allow parameters that control new features to be situated nearby related, making them more discoverable.
