From 27d0aa5d63de7936fab554aa6c07e95d7d0e307a Mon Sep 17 00:00:00 2001
From: Daniel <d.hornung@indiscale.com>
Date: Wed, 24 Apr 2024 10:30:30 +0200
Subject: [PATCH] FIX: More tests, more fixes.

---
 src/caosadvancedtools/table_converter.py | 12 +++++++++---
 unittests/test_table_converter.py        |  6 +++++-
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/caosadvancedtools/table_converter.py b/src/caosadvancedtools/table_converter.py
index 7ec5d4ff..54b25185 100644
--- a/src/caosadvancedtools/table_converter.py
+++ b/src/caosadvancedtools/table_converter.py
@@ -25,6 +25,7 @@ import re
 import sys
 
 import caosdb as db
+import numpy as np
 import pandas as pd
 
 
@@ -64,9 +65,14 @@ def to_table(container):
         if set([p.name for p in rec.parents]) != rts:
             raise ValueError("Parents differ")
 
-        for p in rec.get_properties():
-
-            df.at[ii, generate_property_name(p)] = p.value
+        for prop in rec.get_properties():
+            propname = generate_property_name(prop)
+            if isinstance(prop.value, list):
+                if propname not in df:
+                    df[propname] = pd.Series(dtype=object)
+                elif df[propname].dtype != np.dtypes.ObjectDType:
+                    df[propname] = df[propname].astype(object)
+            df.at[ii, propname] = prop.value
 
     return df
 
diff --git a/unittests/test_table_converter.py b/unittests/test_table_converter.py
index 6a3b0dda..460f88af 100644
--- a/unittests/test_table_converter.py
+++ b/unittests/test_table_converter.py
@@ -69,10 +69,14 @@ class TableTest(unittest.TestCase):
         r1 = db.Record()
         r1.add_parent("no1")
         r1.add_property("p1")
+        r1.add_property("p3", value=23)
+        r1.add_property("p4", value=[1])
         r2 = db.Record()
         r2.add_parent("no1")
         r2.add_property("p1")
-        r2.add_property("p2", value=[1, 2])
+        r2.add_property("p2", value=[20, 21])
+        r2.add_property("p3", value=[30, 31])
+        r2.add_property("p4", value=[40.0, 41.0])
         c = db.Container()
         c.extend([r1, r2])
         to_table(c)
-- 
GitLab