What’s new in h5py 3.16
New features
Pre-built packages on PyPI are now built with HDF5 2.0 (PR 2750)
h5py now marks itself compatible with free-threading Python (PR 2702, PR 2745). There are tests for this (PR 2761), but there may still be bugs. Be cautious about relying on this in critical code.
Support for storing NumPy complex numbers in HDF5 files using C99 complex number datatypes (PR 2694). This feature is available with HDF5 library 2.0 or above, so long as the compiler and the build platform implement the relevant C99 features.
h5py will still convert NumPy complex numbers into an HDF5 compound datatype by default, preserving the behaviour from earlier versions. See Complex numbers for how to use the new datatypes.
New attributes
filter_idsandfilter_namesto provide more precise information on the filters set up for a dataset (PR 2792). See Filter pipeline.New
h5py.Group.get()arguments to configure external links access properties:elink_mode,elink_swmrandelink_locking(PR 2751).Pre-built Mac & Windows packages on PyPI now bundle zlib 1.3.2 (PR 2808).
Breaking Changes and Deprecations
Creating a dataset with neither
datanordtypespecified is deprecated. We plan to make this an error in h5py 4.0. Usedtype='f4'to keep the current default (which is different from NumPy’s default).h5py.config().read_byte_stringsis deprecated. This has no effect since h5py 3.0, and we plan to get rid of it in 4.0.
Bug fixes
Indexing datasets with an array or list of indices is now much faster when selecting many indices (PR 2603).
Fixed a memory leak involving the object registry (PR 2783).
Fix selecting parts of a multi-dimensional dataset with a boolean array corresponding to the first dimension (PR 2769).
Correctly raise errors when trying to write data to a zero-sized dataset or a zero-sized slice (PR 2729).
When creating a dataset, the
dtype=parameter can now be aTypeIDobject from the low-level API.Various fixes for safe usage from multiple threads (PR 2795, PR 2794, PR 2764).
Trying to store region references in a dataset for object references now raises
TypeErrorinstead of discarding information (PR 2790). See Object and Region References for more about references.A list of reference objects can be used to create a dataset (PR 2790).
Fix getting filter details for the scaleoffset filter (PR 2781).
Better error message when attempting to slice a dataset with None or
np.newaxis(PR 2731).Pre-built Windows packages on PyPI now bundle a recent version of zlib (PR 2730).
Avoid replacing
arr.shape, which will break in some future version of NumPy (PR 2728).Closing files should be slightly faster after a redundant call was removed (PR 2801)
Exposing HDF5 functions
H5Scombine_select, H5Smodify_select, and H5Sselect_copy (PR 2603).
Building h5py
Fix building against pre-release versions of NumPy (PR 2758).
The package metadata now requires mpi4py 4.0.0 for MPI builds on Python <= 3.12 (PR 2799). This works around an issue building older mpi4py with recent versions of setuptools. If you are building from source yourself, it may still work with mpi4py 3.x.