What’s new in h5py 3.3

New features

  • Compatibility with the upcoming HDF5 1.12.1 and possibly 1.14 (PR 1875).

  • H5T_BITFIELD types will now be cast to their numpy.uint equivalent by default (GH1258). This means that no knowledge of mixed type compound dataset schemas is required to read these types, and can simply be read as follows:

    arr = dset[:]

    Alternatively, 8-bit bitfields can still be cast to booleans explicitly:

    arr = dset.astype(numpy.bool_)[:]
  • Key types are validated when accessing groups, to give more helpful errors when a group is indexed like a dataset (PR 1856).

  • A new Group.build_virtual_dataset() method acting as a context manager to assemble virtual datasets (PR 1905).

  • If the source and target of a virtual dataset mapping have different numbers of points, an error should now be thrown when you make the mapping in the VirtualLayout, rather than later when writing this into the file. This should make it easier to find the source of such errors.


  • Linux wheels are now manylinux2010 rather than manylinux1
  • The default_file_mode config option is deprecated, and setting it to values other than ‘r’ (for read-only mode) is no longer allowed. Pass the mode when creating a File object instead of setting a global default.

Bug fixes

  • Trying to open a file in append mode ('a') should now give clearer error messages when the file exists but can’t be opened (PR 1902).
  • Protect h5py.h5f.get_obj_ids() against garbage collection invalidating HDF5 IDs while it is retrieving them (GH1852).
  • Make file closing more robust, including when closing files while the interpreter is shutting down, by using lower-level code to close HDF5 IDs of objects inside the file (GH1495).