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 (:issue:`1258`). This means that no knowledge of mixed type compound dataset schemas is required to read these types, and can simply be read as follows: .. code:: arr = dset[:] Alternatively, 8-bit bitfields can still be cast to booleans explicitly: .. code:: 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 :meth:`.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 :class:`VirtualLayout`, rather than later when writing this into the file. This should make it easier to find the source of such errors. Deprecations ------------ * 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 :class:`.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 :func:`h5py.h5f.get_obj_ids` against garbage collection invalidating HDF5 IDs while it is retrieving them (:issue:`1852`). * 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 (:issue:`1495`).