diff env/lib/python3.9/site-packages/galaxy/tool_util/verify/asserts/hdf5.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.9/site-packages/galaxy/tool_util/verify/asserts/hdf5.py	Mon Mar 22 18:12:50 2021 +0000
@@ -0,0 +1,42 @@
+import io
+
+try:
+    import h5py
+except ImportError:
+    h5py = None
+
+IMPORT_MISSING_MESSAGE = "h5 assertion requires unavailable optional dependency h5py"
+
+
+def _assert_h5py():
+    if h5py is None:
+        raise Exception(IMPORT_MISSING_MESSAGE)
+
+
+def assert_has_h5_attribute(output_bytes, key, value):
+    """Asserts the specified HDF5 output has a given key-value pair as HDF5
+    attribute"""
+    _assert_h5py()
+    output_temp = io.BytesIO(output_bytes)
+    local_attrs = h5py.File(output_temp, 'r').attrs
+    assert key in local_attrs and str(local_attrs[key]) == value, (
+        f"Not a HDF5 file or H5 attributes do not match:\n\t{local_attrs.items()}\n\n\t({key} : {value})")
+
+
+def assert_has_h5_keys(output_bytes, keys):
+    """ Asserts the specified HDF5 output has the given keys."""
+    _assert_h5py()
+    keys = [k.strip() for k in keys.strip().split(',')]
+    h5_keys = sorted(keys)
+    output_temp = io.BytesIO(output_bytes)
+    local_keys = []
+
+    def append_keys(key):
+        local_keys.append(key)
+        return None
+    h5py.File(output_temp, 'r').visit(append_keys)
+    missing = 0
+    for key in h5_keys:
+        if key not in local_keys:
+            missing += 1
+    assert missing == 0, f"Not a HDF5 file or H5 keys missing:\n\t{local_keys}\n\t{h5_keys}"