h5py_utils: HDF5 I/O utilities

This module provides utility methods on top of h5py, mainly to handle parallel writing and reading.

retry(**kw)[source]

Decorator for a method that needs to be executed until it not longer fails on HDF5 IO. Mainly used for reading an HDF5 file that is being written.

Parameters:**kw – see silx.utils.retry
retry_contextmanager(**kw)[source]

Decorator to make a context manager from a method that needs to be entered until it not longer fails on HDF5 IO. Mainly used for reading an HDF5 file that is being written.

Parameters:**kw – see silx.utils.retry_contextmanager
retry_in_subprocess(**kw)[source]

Same as retry but it also retries segmentation faults.

On Window you cannot use this decorator with the “@” syntax:

def _method(*args, **kw):
    ...

method = retry_in_subprocess()(_method)
Parameters:**kw – see silx.utils.retry_in_subprocess
group_has_end_time(h5item)[source]

Returns True when the HDF5 item is a Group with an “end_time” dataset. A reader can use this as an indication that the Group has been fully written (at least if the writer supports this).

Parameters:h5item (Union[h5py.Group,h5py.Dataset]) –
Returns bool:
open_item(filename, name, retry_invalid=False, validate=None)[source]

Yield an HDF5 dataset or group (retry until it can be instantiated).

Parameters:
  • filename (str) –
  • retry_invalid (bool) – retry when item is missing or not valid
  • or None validate (callable) –
Yields Dataset, Group or None:
 
top_level_names(filename, include_only=<function group_has_end_time>)

Return all valid top-level HDF5 names.

Parameters:
  • filename (str) –
  • or None include_only (callable) –
Returns list(str):
 
safe_top_level_names(filename, include_only=<function group_has_end_time>)

Return all valid top-level HDF5 names.

Parameters:
  • filename (str) –
  • or None include_only (callable) –
Returns list(str):
 
class File(filename, mode=None, enable_file_locking=None, swmr=None, libver=None, **kwargs)[source]

Takes care of HDF5 file locking and SWMR mode without the need to handle those explicitely.

When using this class, you cannot open different files simultatiously with different modes because the locking flag is an environment variable.

close()[source]

Close the file. All open objects become invalid