What’s new in h5py 2.8

This is the first release of the h5py 2.8 series. Note that the 2.8 series is the last series of h5py to support Python 2.6 and 3.3. Users should look to moving to Python 2.7 or (preferably) Python 3.4 or higher, as earlier releases are now outside of security support.

API changes

  • Deprecation of h5t.available_ftypes. This is no longer used internally and will be removed in the future. There is no replacement public API. See GH926 for how to add addition floating point types to h5py.
  • Do not sort fields in compound types (GH970 by James Tocknell). This is to account for changes in numpy 1.14.
  • Minimum required version of Cython is now 0.23.


  • Allow registration of new file drivers (GH956 by Joe Jevnik).
  • Add option to track object creation order to Group.create_group (GH968 by Chen Yufei)

Bug fixes

  • Support slices with stop < start as empty slices (GH924 by Joe Jevnik)
  • Avoid crashing the IPython auto-completer when missing key (GH885, GH958 by James Tocknell). The auto-completer currently only works on older versions of IPython, see GH1022 for what’s needed to support newer versions of IPython/jupyter (PRs welcome!)
  • Set libver default to ‘earliest’ (a.k.a LIBVER_EARLIEST) as previously documented (GH933, GH936 by James Tocknell)
  • Fix conflict between fletcher32 and szip compression when using the float64 dtype (GH953, GH989, by Paul Müller).
  • Update floating point type handling as flagged by numpy deprecation warning (GH985, by Eric Larson)
  • Allow ExternalLinks to use non-ASCII hdf5 paths (GH333, GH952 by James Tocknell)
  • Prefer custom HDF5 over pkg-config/fallback paths when building/installing (GH946, GH947 by Lars Viklund)
  • Fix compatibility with Python 3 in document generation (GH921 by Ghislain Antony Vaillant)
  • Fix spelling and grammar in documentation (GH931 by Michael V. DePalatis, GH950 by Christian Sachs, GH1015 by Mikhail)
  • Add minor changes to documentation in order to improve clarity and warn about potential problems (GH528, GH783, GH829, GH849, GH911, GH959, by James Tocknell)
  • Add license field to setup.py metadata (GH999 by Nils Werner).
  • Use system encoding for errors, not utf-8 (GH1016, GH1025 by James Tocknell)
  • Add write_direct to the documentation (GH1028 by Sajid Ali and Thomas A Caswell)

Wheels HDF5 Version

  • Wheels uploaded to PyPI will now be built against the HDF5 1.10 series as opposed to the 1.8 series (h5py 2.8 is built against HDF5 1.10.2).

CI/Testing improvements and fixes

There were a number of improvements to testing and CI systems of h5py, including running the CI against multiple versions of HDF5, improving reliability and speed of the CIs, and simplifying the tox file. See GH857, GH894, GH922, GH954 and GH962 by Thomas A Caswell and James Tocknell for more details.

Other changes

  • Emphasise reading from HDF5 files rather than writing to files in Quickguide (GH609, GH610 by Yu Feng). Note these changes were in the 2.5 branch, but never got merged into master. The h5py 2.8 release now actually includes these changes.
  • Use lazy-loading of run_tests to avoid strong dependency on unittest2 (GH1013, GH1014 by Thomas VINCENT)
  • Correctly handle with multiple float types of the same size (GH926 by James Tocknell)

Acknowledgements and Thanks

The h5py developers thank Nathan Goldbaum, Matthew Brett, and Christoph Gohlke for building the wheels that appear on PyPI.