What's new in h5py 2.7
======================

Python 3.2 is no longer supported
---------------------------------
``h5py`` 2.7 drops Python 3.2 support, and testing is not longer performed on Python 3.2. The latest versions of ``pip``, ``virtualenv``, ``setuptools`` and ``numpy`` do not support Python 3.2, and dropping 3.2 allows both ``u`` and ``b`` prefixes to be used for strings. A clean up of some of the legacy code was done in :pr:`675` by Andrew Collette.

Additionally, support for Python 2.6 is soon to be dropped for ``pip`` (See https://github.com/pypa/pip/issues/3955) and ``setuptools`` (See https://github.com/pypa/setuptools/issues/878), and ``numpy`` has dropped Python 2.6 also in the latest release. While ``h5py`` has not dropped Python 2.6 this release, users are strongly encouraged to move to Python 2.7 where possible.

Improved testing support
------------------------
There has been a major increase in the number of configurations ``h5py`` is automatically tested in, with Windows CI support added via Appveyor (:pr:`795`, :pr:`798`, :pr:`799` and :pr:`801` by James Tocknell) and testing of minimum requirements to ensure we still satisfy them (:pr:`703` by James Tocknell). Additionally, ``tox`` was used to ensure that we don't run tests on Python versions which our dependencies have dropped or do not support (:pr:`662`, :pr:`700` and :pr:`733`). Thanks to to the Appveyor support, unicode tests were made more robust (:pr:`788`, :pr:`800` and :pr:`804` by James Tocknell). Finally, other tests were improved or added where needed (:pr:`724` by Matthew Brett, :pr:`789`, :pr:`794` and :pr:`802` by James Tocknell).

Improved python compatibility
-----------------------------
The ``ipython``/``jupyter`` completion support now has Python 3 support (:pr:`715` by Joseph Kleinhenz). ``h5py`` now supports ``pathlib`` filenames (:pr:`716` by James Tocknell).

Documentation improvements
--------------------------
An update to the installation instructions and some whitespace cleanup was done in :pr:`808` by Thomas A Caswell, and mistake in the quickstart was fixed by Joydeep Bhattacharjee in :pr:`708`.

setup.py improvements
---------------------
Support for detecting the version of HDF5 via ``pkgconfig`` was added by Axel Huebl in :pr:`734`, and support for specifying the path to MPI-supported HDF5 was added by Axel Huebl in :pr:`721`. ``h5py's`` classifiers were updated to include supported python version and interpreters in :pr:`811` by James Tocknell.

Support for additional HDF5 features added
------------------------------------------
Low-level support for `HDF5 Direct Chunk Write`_ was added in :pr:`691` by Simon Gregor Ebner.  Minimal support for `HDF5 File Image Operations`_ was added by Andrea Bedini in :pr:`680`. Ideas and opinions for further support for both `HDF5 Direct Chunk Write`_ and `HDF5 File Image Operations`_ are welcome. High-level support for reading and writing null dataspaces was added in :pr:`664` by James Tocknell.

Improvements to type system
---------------------------
Reading and writing of compound datatypes has improved, with support for different orderings and alignments (:pr:`701` by Jonah Bernhard, :pr:`702` by Caleb Morse :pr:`738` by @smutch, :pr:`765` by Nathan Goldbaum and :pr:`793` by James Tocknell). Support for reading extended precision and non-standard floating point numbers has also been added (:pr:`749`, :pr:`812` by Thomas A Caswell, :pr:`787` by James Tocknell and :pr:`781` by Martin Raspaud). Finally, compatibility improvements to ``Cython`` annotations of HDF5 types were added in :pr:`692` and :pr:`693` by Aleksandar Jelenak.

Other changes
-------------
* Fix deprecation of ``-`` for ``numpy`` boolean arrays (:pr:`683` by James Tocknell)
* Check for duplicates in fancy index validation (:pr:`739` by Sam Toyer)
* Avoid potential race condition (:pr:`754` by James Tocknell)
* Fix inconsistency when slicing with ``numpy.array`` of shape ``(1,)`` (:pr:`772` by Artsiom)
* Use ``size_t`` to store Python object id (:pr:`773` by Christoph Gohlke)
* Avoid errors when the Python GC runs during ``nonlocal_close()`` (:pr:`776` by Antoine Pitrou)
* Move from ``six.PY3`` to ``six.PY2`` (:pr:`686` by James Tocknell)

.. _`HDF5 Direct Chunk Write` : https://support.hdfgroup.org/releases/hdf5/documentation/rfc/DECTRIS%20Integration%20RFC%202012-11-29.pdf
.. _`HDF5 File Image Operations` : https://support.hdfgroup.org/documentation/hdf5/latest/_f_i_l_e_i_m_g_o_p_s.html

Acknowledgements
----------------
