From c96293fd93112db34d7c894d636cfc9435fecbfb Mon Sep 17 00:00:00 2001
From: David Schaefer <david.schaefer@ufz.de>
Date: Wed, 12 Jun 2019 13:19:31 +0200
Subject: [PATCH] removed the getFlags method from the flagger inetrface

---
 core.py                |  8 ++++----
 flagger/baseflagger.py | 12 ++++--------
 flagger/dmpflagger.py  | 19 ++++---------------
 3 files changed, 12 insertions(+), 27 deletions(-)

diff --git a/core.py b/core.py
index a389b50fb..ecc803d50 100644
--- a/core.py
+++ b/core.py
@@ -99,8 +99,8 @@ def runner(meta, flagger, data, flags=None, nodata=np.nan):
                 raise NameError(
                     f"function name {func_name} is not definied (variable '{varname}, 'line: {idx + 1})")
 
-            old = flagger.getFlags(fchunk[varname])
-            new = flagger.getFlags(ffchunk[varname])
+            old = flagger.isFlagged(fchunk[varname])
+            new = flagger.isFlagged(ffchunk[varname])
             mask = old != new
 
             # flag a timespan after the condition is met
@@ -258,7 +258,7 @@ def readData(fname, index_col, nans):
 
 
 if __name__ == "__main__":
-    from flagger import PositionalFlagger
+    from flagger import DmpFlagger
     datafname = "resources/data.csv"
     metafname = "resources/meta.csv"
 
@@ -267,5 +267,5 @@ if __name__ == "__main__":
                     nans=["-9999", "-9999.0"])
     meta = prepareMeta(pd.read_csv(metafname), data)
 
-    flagger = PositionalFlagger()
+    flagger = DmpFlagger()
     pdata, pflags = runner(meta, flagger, data)
diff --git a/flagger/baseflagger.py b/flagger/baseflagger.py
index e8705cb93..3c8a93121 100644
--- a/flagger/baseflagger.py
+++ b/flagger/baseflagger.py
@@ -44,7 +44,7 @@ class BaseFlagger:
         if flag is None:
             flag = self.flags.max()
         else:
-            self._check_flag(flag)
+            self._checkFlag(flag)
         flags = flags.copy()
         flags[flags < flag] = flag
         return flags.values
@@ -57,14 +57,10 @@ class BaseFlagger:
     def isFlagged(self, flags: ArrayLike, flag: T = None) -> ArrayLike:
         if flag is None:
             return pd.notnull(flags) & (flags > self.flags[0])
-        else:
-            self._check_flag(flag)
-            return flags >= flag
-
-    def getFlags(self, flags: ArrayLike):
-        return flags
+        self._checkFlag(flag)
+        return flags == flag
 
-    def _check_flag(self, flag):
+    def _checkFlag(self, flag):
         if flag not in self.flags:
             raise ValueError(f"Invalid flag '{flag}'. "
                              f"Possible choices are {list(self.flags.categories)[1:]}")
diff --git a/flagger/dmpflagger.py b/flagger/dmpflagger.py
index e6ea00f3e..49642b677 100644
--- a/flagger/dmpflagger.py
+++ b/flagger/dmpflagger.py
@@ -46,7 +46,7 @@ class DmpFlagger(BaseFlagger):
         if flag is None:
             flag = self.flags.max()
         else:
-            self._check_flag(flag)
+            self._checkFlag(flag)
 
         flags = self._reduceColumns(flags)
         mask = flags[FlagFields.FLAG] < flag
@@ -55,20 +55,9 @@ class DmpFlagger(BaseFlagger):
         return flags.values
 
     def isFlagged(self, flags, flag=None):
-        f = self.getFlags(flags)
-        return super().isFlagged(f, flag)
-
-    def getFlags(self, flags):
-        if isinstance(flags, pd.Series):
-            f = flags
-        elif isinstance(flags, pd.DataFrame):
-            if isinstance(flags.columns, pd.MultiIndex):
-                f = flags.xs(FlagFields.FLAG, level=ColumnLevels.FLAGS, axis=1)
-            else:
-                f = flags.loc[:, FlagFields.FLAG]
-        else:
-            raise TypeError
-        return f.squeeze()
+        flags = self._reduceColumns(flags)
+        flagcol = flags.loc[:, FlagFields.FLAG].squeeze()
+        return super().isFlagged(flagcol, flag)
 
     def _reduceColumns(self, flags):
         flags = flags.copy()
-- 
GitLab