From ebe10697de6bbfb3a32cb84a0bc0ef346a3a6ff3 Mon Sep 17 00:00:00 2001
From: Colm Talbot <colm.talbot@ligo.org>
Date: Tue, 5 Sep 2023 16:29:11 +0000
Subject: [PATCH] Resolve "Cannot save editable installs with hdf5 without
 conda"

---
 bilby/core/utils/io.py | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/bilby/core/utils/io.py b/bilby/core/utils/io.py
index c55837bfd..01026a3db 100644
--- a/bilby/core/utils/io.py
+++ b/bilby/core/utils/io.py
@@ -278,19 +278,22 @@ def encode_for_hdf5(key, item):
     elif item is None:
         output = "__none__"
     elif isinstance(item, list):
+        item_array = np.array(item)
         if len(item) == 0:
             output = item
-        elif isinstance(item[0], (str, bytes)) or item[0] is None:
+        elif np.issubdtype(item_array.dtype, np.number):
+            output = np.array(item)
+        elif issubclass(item_array.dtype.type, str) or item[0] is None:
             output = list()
             for value in item:
                 if isinstance(value, str):
                     output.append(value.encode("utf-8"))
                 elif isinstance(value, bytes):
                     output.append(value)
-                else:
+                elif value is None:
                     output.append(b"__none__")
-        elif isinstance(item[0], (int, float, complex)):
-            output = np.array(item)
+                else:
+                    output.append(str(value).encode("utf-8"))
         else:
             raise ValueError(f'Cannot save {key}: {type(item)} type')
     elif isinstance(item, PriorDict):
-- 
GitLab