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