From 25c6e3c0d867300b4dce268b0c3d97deb3d7b9da Mon Sep 17 00:00:00 2001
From: Florian Spreckelsen <f.spreckelsen@indiscale.com>
Date: Wed, 24 Apr 2024 14:04:47 +0200
Subject: [PATCH] ENH: Return empty dataframe in case of empty container

---
 CHANGELOG.md                             | 3 +++
 src/caosadvancedtools/table_converter.py | 3 +--
 unittests/test_table_converter.py        | 3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2dbc1ee2..9b8ee250 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Changed ###
 
+* `table_converter.to_table` now returns an empty DataFrame instead of raising a
+  ValueError when called with an empty container.
+
 ### Deprecated ###
 
 ### Removed ###
diff --git a/src/caosadvancedtools/table_converter.py b/src/caosadvancedtools/table_converter.py
index adaa2578..7d1097e1 100644
--- a/src/caosadvancedtools/table_converter.py
+++ b/src/caosadvancedtools/table_converter.py
@@ -52,8 +52,7 @@ def to_table(container):
     """Create a table from the records in a container."""
 
     if len(container) == 0:
-        raise ValueError("Container is empty")
-        # TODO Why not this? return pd.DataFrame()
+        return pd.DataFrame()
     rts = {p.name for p in container[0].parents}
 
     data = []
diff --git a/unittests/test_table_converter.py b/unittests/test_table_converter.py
index 23068744..9b1ac11b 100644
--- a/unittests/test_table_converter.py
+++ b/unittests/test_table_converter.py
@@ -43,7 +43,8 @@ class TableTest(unittest.TestCase):
 
     def test_empty(self):
         c = db.Container()
-        self.assertRaises(ValueError, to_table, c)
+        df = to_table(c)
+        assert df.shape == (0, 0)
 
     def test_different_props(self):
         r1 = db.Record()
-- 
GitLab