From c3c6dfa9152cbad98c1b916ce61977765827d266 Mon Sep 17 00:00:00 2001
From: Daniel <d.hornung@indiscale.com>
Date: Wed, 24 Apr 2024 11:33:33 +0200
Subject: [PATCH] FIX: Simplified the code a lot again.

---
 src/caosadvancedtools/table_converter.py | 26 +++++++++---------------
 unittests/test_table_converter.py        |  5 ++++-
 2 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/src/caosadvancedtools/table_converter.py b/src/caosadvancedtools/table_converter.py
index 74bd857c..adaa2578 100644
--- a/src/caosadvancedtools/table_converter.py
+++ b/src/caosadvancedtools/table_converter.py
@@ -49,32 +49,26 @@ def generate_property_name(prop):
 
 
 def to_table(container):
-    """ creates a table from the records in a container """
+    """Create a table from the records in a container."""
 
     if len(container) == 0:
         raise ValueError("Container is empty")
-    properties = set()
-
-    for rec in container:
-        properties.update([generate_property_name(p)
-                           for p in container[0].get_properties()])
-    df = pd.DataFrame(columns=list(properties))
+        # TODO Why not this? return pd.DataFrame()
     rts = {p.name for p in container[0].parents}
 
-    for ii, rec in enumerate(container):
+    data = []
+    for rec in container:
         if {p.name for p in rec.parents} != rts:
             raise ValueError("Parents differ")
 
+        row_dict = {}
         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 != object:
-                    df[propname] = df[propname].astype(object)
-            df.at[ii, propname] = prop.value
-
-    return df
+            row_dict[propname] = prop.value
+        data.append(row_dict)
+    result = pd.DataFrame(data=data)
+
+    return result
 
 
 def from_table(spreadsheet, recordtype):
diff --git a/unittests/test_table_converter.py b/unittests/test_table_converter.py
index 460f88af..6c9438c6 100644
--- a/unittests/test_table_converter.py
+++ b/unittests/test_table_converter.py
@@ -77,8 +77,11 @@ class TableTest(unittest.TestCase):
         r2.add_property("p2", value=[20, 21])
         r2.add_property("p3", value=[30, 31])
         r2.add_property("p4", value=[40.0, 41.0])
+        r3 = db.Record()
+        r3.add_parent("no1")
+        r3.add_property("p5", value=[50, 51])
         c = db.Container()
-        c.extend([r1, r2])
+        c.extend([r1, r2, r3])
         to_table(c)
 
 
-- 
GitLab