From 5aa41682a7d8c02f339e0849cff77b54d52b3646 Mon Sep 17 00:00:00 2001
From: David Schaefer <david.schaefer@ufz.de>
Date: Tue, 12 Mar 2024 11:21:17 +0100
Subject: [PATCH] represents all flags by DictOfSeries

---
 saqc/__main__.py              |  9 +++++++-
 tests/cli/test_integration.py |  7 +-----
 tests/core/test_translator.py | 40 +++++++++++++++++++++++++++--------
 3 files changed, 40 insertions(+), 16 deletions(-)

diff --git a/saqc/__main__.py b/saqc/__main__.py
index 4aea86013..4922c0392 100644
--- a/saqc/__main__.py
+++ b/saqc/__main__.py
@@ -157,7 +157,14 @@ def main(
                 flagscol = flagscol.rename("flags")
             out[k] = pd.concat([data_result[k].rename("data"), flagscol], axis=1)
 
-        writeData(writer, out.to_pandas(fill_value=-9999 if scheme == "positional" else np.nan), outfile)
+        writeData(
+            writer,
+            out.to_pandas(
+                fill_value=-9999 if scheme == "positional" else np.nan,
+                squeeze_columns=False,
+            ),
+            outfile,
+        )
 
 
 if __name__ == "__main__":
diff --git a/tests/cli/test_integration.py b/tests/cli/test_integration.py
index a2cf2a70c..434af82f4 100644
--- a/tests/cli/test_integration.py
+++ b/tests/cli/test_integration.py
@@ -64,12 +64,7 @@ DMP = [
 @pytest.mark.slow
 @pytest.mark.parametrize(
     "scheme, expected",
-    [
-        # ("float", FLOAT),
-        # ("simple", SIMPLE),
-        ("positional", POSITIONAL),
-        # ("dmp", DMP)
-    ],
+    [("float", FLOAT), ("simple", SIMPLE), ("positional", POSITIONAL), ("dmp", DMP)],
 )
 def test__main__py(tmp_path, scheme, expected):
     import saqc.__main__
diff --git a/tests/core/test_translator.py b/tests/core/test_translator.py
index aaf233e87..28741da0e 100644
--- a/tests/core/test_translator.py
+++ b/tests/core/test_translator.py
@@ -101,17 +101,29 @@ def test_dmpTranslator():
         }
 
     assert (tflags["var1"]["quality_flag"] == "DOUBTFUL").all(axis=None)
-    assert (tflags["var1"]["quality_comment"] == '{"test": "flagBar", "comment": "I did it"}').all(axis=None)
+    assert (
+        tflags["var1"]["quality_comment"]
+        == '{"test": "flagBar", "comment": "I did it"}'
+    ).all(axis=None)
 
     assert (tflags["var1"]["quality_cause"] == "OTHER").all(axis=None)
 
     assert (tflags["var2"]["quality_flag"] == "BAD").all(axis=None)
-    assert (tflags["var2"]["quality_comment"] == '{"test": "flagFoo", "comment": ""}').all(axis=None)
+    assert (
+        tflags["var2"]["quality_comment"] == '{"test": "flagFoo", "comment": ""}'
+    ).all(axis=None)
     assert (tflags["var2"]["quality_cause"] == "BELOW_OR_ABOVE_MIN_MAX").all(axis=None)
 
-    assert (tflags["var3"].loc[flags["var3"] == BAD, "quality_comment"] == '{"test": "unknown", "comment": ""}').all(axis=None)
-    assert (tflags["var3"].loc[flags["var3"] == BAD, "quality_cause"] == "OTHER").all(axis=None)
-    assert (tflags["var3"].loc[flags["var3"] == UNFLAGGED, "quality_cause"] == "").all(axis=None)
+    assert (
+        tflags["var3"].loc[flags["var3"] == BAD, "quality_comment"]
+        == '{"test": "unknown", "comment": ""}'
+    ).all(axis=None)
+    assert (tflags["var3"].loc[flags["var3"] == BAD, "quality_cause"] == "OTHER").all(
+        axis=None
+    )
+    assert (tflags["var3"].loc[flags["var3"] == UNFLAGGED, "quality_cause"] == "").all(
+        axis=None
+    )
 
 
 def test_positionalTranslator():
@@ -161,14 +173,24 @@ def test_dmpTranslatorIntegration():
     qcause = pd.DataFrame({k: v["quality_cause"] for k, v in flags.items()})
 
     assert qflags.isin(scheme._forward.keys()).all(axis=None)
-    assert qfunc.map(lambda v: json.loads(v)["test"] if v else "").isin({"", "flagMissing", "flagRange"}).all(axis=None)
+    assert (
+        qfunc.map(lambda v: json.loads(v)["test"] if v else "")
+        .isin({"", "flagMissing", "flagRange"})
+        .all(axis=None)
+    )
     assert (qcause[qflags[col] == "BAD"] == "OTHER").all(axis=None)
 
     round_trip = scheme.toExternal(scheme.toInternal(flags))
 
-    assert pd.DataFrame({k: v["quality_flag"] for k, v in round_trip.items()}).equals(qflags)
-    assert pd.DataFrame({k: v["quality_comment"] for k, v in round_trip.items()}).equals(qfunc)
-    assert pd.DataFrame({k: v["quality_cause"] for k, v in round_trip.items()}).equals(qcause)
+    assert pd.DataFrame({k: v["quality_flag"] for k, v in round_trip.items()}).equals(
+        qflags
+    )
+    assert pd.DataFrame(
+        {k: v["quality_comment"] for k, v in round_trip.items()}
+    ).equals(qfunc)
+    assert pd.DataFrame({k: v["quality_cause"] for k, v in round_trip.items()}).equals(
+        qcause
+    )
 
 
 def test_dmpValidCombinations():
-- 
GitLab