Lock native float16 dtype only if available. https://github.com/h5py/h5py/issues/2419 https://github.com/h5py/h5py/pull/2422 --- h5py/api_types_hdf5.pxd +++ h5py/api_types_hdf5.pxd @@ -385,6 +385,8 @@ cdef extern from "hdf5.h": # === H5I - Identifier and reflection interface =============================== + int H5I_INVALID_HID + IF HDF5_VERSION < VOL_MIN_HDF5_VERSION: ctypedef enum H5I_type_t: H5I_UNINIT = -2, # uninitialized Group --- h5py/h5i.pyx +++ h5py/h5i.pyx @@ -18,6 +18,7 @@ from ._objects import phil, with_phil # === Public constants and data structures ==================================== +INVALID_HID = H5I_INVALID_HID BADID = H5I_BADID FILE = H5I_FILE GROUP = H5I_GROUP --- h5py/h5t.pyx +++ h5py/h5t.pyx @@ -232,7 +232,10 @@ LDOUBLE_BE.set_order(H5T_ORDER_BE) LDOUBLE_BE.lock() IF HDF5_VERSION > (1, 14, 3): - NATIVE_FLOAT16 = lockid(H5T_NATIVE_FLOAT16) + if H5T_NATIVE_FLOAT16 != H5I_INVALID_HID: + NATIVE_FLOAT16 = lockid(H5T_NATIVE_FLOAT16) + else: + NATIVE_FLOAT16 = H5I_INVALID_HID # Unix time types UNIX_D32LE = lockid(H5T_UNIX_D32LE)