# 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)

## Acknowledgements