From ef3494ebe3d07cb9ebdc64de7467610963943661 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Sch=C3=A4fer?= <david.schaefer@ufz.de>
Date: Mon, 6 Feb 2023 16:48:28 +0100
Subject: [PATCH] Dev fixes

---
 dios/dios/base.py                            |  3 ---
 dios/dios/indexer.py                         | 10 ----------
 dios/profiling/generate_testsets.py          |  1 -
 dios/profiling/memory.py                     |  1 -
 dios/test/test_dflike.py                     |  1 -
 dios/test/test_dflike__setget__.py           |  1 -
 saqc/__main__.py                             |  1 -
 saqc/constants.py                            |  1 +
 saqc/core/core.py                            |  1 -
 saqc/core/flags.py                           |  3 ---
 saqc/core/history.py                         |  2 --
 saqc/core/reader.py                          |  2 --
 saqc/core/register.py                        |  4 ----
 saqc/core/translation/basescheme.py          |  1 -
 saqc/core/translation/dmpscheme.py           |  3 ---
 saqc/core/translation/positionalscheme.py    |  1 -
 saqc/core/visitor.py                         |  3 ---
 saqc/funcs/curvefit.py                       |  1 -
 saqc/funcs/drift.py                          |  2 --
 saqc/funcs/generic.py                        |  3 ---
 saqc/funcs/outliers.py                       |  4 ----
 saqc/funcs/pattern.py                        |  1 -
 saqc/lib/rolling.py                          |  2 --
 saqc/lib/tools.py                            |  1 -
 saqc/lib/types.py                            |  1 -
 tests/core/test_reader.py                    |  4 ----
 tests/core/test_translator.py                |  7 -------
 tests/fixtures.py                            |  2 +-
 tests/funcs/test_flagtools.py                |  3 ---
 tests/funcs/test_generic_api_functions.py    |  1 -
 tests/funcs/test_generic_config_functions.py |  8 ++------
 tests/fuzzy/lib.py                           |  1 -
 32 files changed, 4 insertions(+), 76 deletions(-)

diff --git a/dios/dios/base.py b/dios/dios/base.py
index 29c0601bc..ad9a36985 100644
--- a/dios/dios/base.py
+++ b/dios/dios/base.py
@@ -47,7 +47,6 @@ class _DiosBase:
         cast_policy="save",
         fastpath=False,
     ):
-
         self._attrs = {}
         self.cast_policy = cast_policy  # set via property
 
@@ -62,7 +61,6 @@ class _DiosBase:
                 self._data = pd.Series(dtype="O", index=columns)
 
         else:
-
             if index is not None and not isinstance(index, pd.Index):
                 index = pd.Index(index)
 
@@ -295,7 +293,6 @@ class _DiosBase:
                     self._data.at[c][series.index] = series
 
     def _setitem_listlike(self, data, value):
-
         value = value.values if isinstance(value, pd.Series) else value
 
         if len(value) != len(data.columns):
diff --git a/dios/dios/indexer.py b/dios/dios/indexer.py
index f045a4f51..cbf0ffa56 100644
--- a/dios/dios/indexer.py
+++ b/dios/dios/indexer.py
@@ -15,7 +15,6 @@ class _Indexer:
         self._data = obj._data
 
     def _unpack_key(self, key):
-
         key = list(key) if pdextra.is_iterator(key) else key
 
         if isinstance(key, tuple):
@@ -89,7 +88,6 @@ class _LocIndexer(_Indexer):
         super().__init__(*args, **kwargs)
 
     def __getitem__(self, key):
-
         rowkey, colkey = self._unpack_key(key)
         if _is_dios_like(rowkey) or _is_dios_like(colkey):
             raise ValueError("Could not index with multidimensional key")
@@ -109,7 +107,6 @@ class _LocIndexer(_Indexer):
         else:
             k = "?"
             try:
-
                 for k in data.index:
                     data.at[k] = data.at[k].loc[rowkey]
 
@@ -128,14 +125,12 @@ class _LocIndexer(_Indexer):
         return new
 
     def __setitem__(self, key, value):
-
         rowkey, colkey = self._unpack_key(key)
         if _is_dios_like(rowkey) or _is_dios_like(colkey):
             raise ValueError("Cannot index with multi-dimensional key")
 
         # .loc[any, scalar] - set on single column
         if pdextra.is_hashable(colkey):
-
             # .loc[dont-care, new-scalar] = val
             if colkey not in self.obj.columns:
                 self.obj._insert(colkey, value)
@@ -180,7 +175,6 @@ class _iLocIndexer(_Indexer):
         else:
             k = "?"
             try:
-
                 for k in data.index:
                     data.at[k] = data.at[k].iloc[rowkey]
 
@@ -248,7 +242,6 @@ class _aLocIndexer(_Indexer):
 
         c = "?"
         try:
-
             for i, c in enumerate(data.index):
                 data.at[c] = self._data.at[c].loc[rowkeys[i]]
 
@@ -268,7 +261,6 @@ class _aLocIndexer(_Indexer):
         def iter_self(colkeys, position=False):
             c = "?"
             try:
-
                 for i, c in enumerate(colkeys):
                     dat = self._data.at[c]
                     rk = rowkeys[i]
@@ -347,7 +339,6 @@ class _aLocIndexer(_Indexer):
 
         # .aloc[dios]
         if _is_dios_like(rowkey):
-
             if not pdextra.is_null_slice(colkey):
                 raise ValueError(
                     f"Could not index with a dios-like indexer as rowkey,"
@@ -385,7 +376,6 @@ class _aLocIndexer(_Indexer):
         return rowkey, colkey, lowdim
 
     def _get_rowkey(self, rowkey, colkey, depth=0):
-
         if pdextra.is_nested_list_like(rowkey) and depth == 0:
             rowkey = rowkey.values if isinstance(rowkey, pd.Series) else rowkey
             if len(rowkey) != len(colkey):
diff --git a/dios/profiling/generate_testsets.py b/dios/profiling/generate_testsets.py
index 6c121c805..42c24c97e 100644
--- a/dios/profiling/generate_testsets.py
+++ b/dios/profiling/generate_testsets.py
@@ -25,7 +25,6 @@ def _gen_testset(rowsz, colsz, freq="1min", disalign=True, randstart=True):
     freqv = int(freq[: -len(frequ)])
 
     for i in range(colsz):
-
         if randstart:
             # generate random startpoint for each series
             r = str(np.random.randint(int(rowsz * 0.05), int(rowsz * 0.6) + 2)) + frequ
diff --git a/dios/profiling/memory.py b/dios/profiling/memory.py
index 7341c3ab2..3078c6549 100644
--- a/dios/profiling/memory.py
+++ b/dios/profiling/memory.py
@@ -40,7 +40,6 @@ def rows_by_time(nsec, mdays):
 
 
 if __name__ == "__main__":
-
     # dios      - linear in rows and colums, same size for r=10,c=100 or r=100,c=10
     do_real_check = True
     cols = 10
diff --git a/dios/test/test_dflike.py b/dios/test/test_dflike.py
index 550fd0e2e..445b4e078 100644
--- a/dios/test/test_dflike.py
+++ b/dios/test/test_dflike.py
@@ -33,7 +33,6 @@ TESTDATA = [
 @pytest.mark.parametrize("data", TESTDATA)
 @pytest.mark.parametrize("with_column_param", [False, True])
 def test_dios_create(data, with_column_param):
-
     data_copy0 = deepcopy(data)
     data_copy1 = deepcopy(data)
 
diff --git a/dios/test/test_dflike__setget__.py b/dios/test/test_dflike__setget__.py
index 9ce2aa2e3..7388d58e0 100644
--- a/dios/test/test_dflike__setget__.py
+++ b/dios/test/test_dflike__setget__.py
@@ -8,7 +8,6 @@ from .test_setup import *
 
 
 def _test(res, exp):
-
     if isinstance(exp, pd.DataFrame):
         eq, msg = dios_eq_df(res, exp, with_msg=True)
         assert eq, msg
diff --git a/saqc/__main__.py b/saqc/__main__.py
index 58d83731a..24ba5b8b0 100644
--- a/saqc/__main__.py
+++ b/saqc/__main__.py
@@ -117,7 +117,6 @@ def main(config, data, scheme, outfile, nodata, log_level):
         flags_result = flags_result.to_df()
 
     if outfile:
-
         data_result.columns = pd.MultiIndex.from_product(
             [data_result.columns.tolist(), ["data"]]
         )
diff --git a/saqc/constants.py b/saqc/constants.py
index 839795e0e..985bcbdc1 100644
--- a/saqc/constants.py
+++ b/saqc/constants.py
@@ -56,6 +56,7 @@ BAD = 255.0
 FILTER_ALL = -np.inf
 FILTER_NONE = np.inf
 
+
 # ----------------------------------------------------------------------
 # other
 # ----------------------------------------------------------------------
diff --git a/saqc/core/core.py b/saqc/core/core.py
index 021f22f08..ebce7c049 100644
--- a/saqc/core/core.py
+++ b/saqc/core/core.py
@@ -152,7 +152,6 @@ class SaQC(FunctionsMixin):
         )
 
     def _initData(self, data) -> DictOfSeries:
-
         if data is None:
             return DictOfSeries()
 
diff --git a/saqc/core/flags.py b/saqc/core/flags.py
index a16025075..34042c8a9 100644
--- a/saqc/core/flags.py
+++ b/saqc/core/flags.py
@@ -192,7 +192,6 @@ class Flags:
     """
 
     def __init__(self, raw_data: DictLike | Flags | None = None, copy: bool = False):
-
         self._data: dict[str, History]
 
         if raw_data is None:
@@ -215,7 +214,6 @@ class Flags:
         result = {}
 
         for k, item in data.items():
-
             if not isinstance(k, str):
                 raise ValueError("column names must be string")
             if k in result:
@@ -524,7 +522,6 @@ def initFlagsLike(
         reference = reference.to_frame(name=name)
 
     for k, item in reference.items():
-
         if not isinstance(k, str):
             raise TypeError(
                 f"cannot use '{k}' as a column name, currently only string keys are allowed"
diff --git a/saqc/core/history.py b/saqc/core/history.py
index e9cf472bf..480c9593a 100644
--- a/saqc/core/history.py
+++ b/saqc/core/history.py
@@ -45,7 +45,6 @@ class History:
     """
 
     def __init__(self, index: pd.Index | None):
-
         self._hist = pd.DataFrame(index=index)
         self._meta = []
 
@@ -451,7 +450,6 @@ class History:
         return len(self._hist.columns)
 
     def __repr__(self):
-
         if self.empty:
             return str(self._hist).replace("DataFrame", "History")
 
diff --git a/saqc/core/reader.py b/saqc/core/reader.py
index 781190cc8..b5ff43787 100644
--- a/saqc/core/reader.py
+++ b/saqc/core/reader.py
@@ -44,7 +44,6 @@ def _closeFile(fobj):
 
 
 def readFile(fname) -> pd.DataFrame:
-
     fobj = _openFile(fname)
 
     out = []
@@ -81,7 +80,6 @@ def fromConfig(fname, *args, **func_kwargs):
     config = readFile(fname)
 
     for _, field, expr in config.itertuples():
-
         regex = False
         if isQuoted(field):
             fld = field[1:-1]
diff --git a/saqc/core/register.py b/saqc/core/register.py
index cdbcc48a3..7ac2c33ec 100644
--- a/saqc/core/register.py
+++ b/saqc/core/register.py
@@ -136,7 +136,6 @@ def _squeezeFlags(old_flags, new_flags: Flags, columns: pd.Index, meta) -> Flags
     for col in columns.union(
         new_flags.columns.difference(old_flags.columns)
     ):  # account for newly added columns
-
         if col not in out:  # ensure existence
             out.history[col] = History(index=new_flags.history[col].index)
 
@@ -202,7 +201,6 @@ def _unmaskData(
     columns = mask.columns.intersection(columns)
 
     for c in columns:
-
         # ignore
         if data[c].empty or mask[c].empty:
             continue
@@ -315,7 +313,6 @@ def register(
     """
 
     def outer(func: Callable[P, SaQC]) -> Callable[P, SaQC]:
-
         func_signature = inspect.signature(func)
         _checkDecoratorKeywords(
             func_signature, func.__name__, mask, demask, squeeze, handles_target
@@ -330,7 +327,6 @@ def register(
             flag: ExternalFlag | OptionalNone = OptionalNone(),
             **kwargs,
         ) -> "SaQC":
-
             # args -> kwargs
             paramnames = tuple(func_signature.parameters.keys())[
                 2:
diff --git a/saqc/core/translation/basescheme.py b/saqc/core/translation/basescheme.py
index c9b2b3864..b7a3d67f4 100644
--- a/saqc/core/translation/basescheme.py
+++ b/saqc/core/translation/basescheme.py
@@ -200,7 +200,6 @@ class FloatScheme(TranslationScheme):
     DFILTER_DEFAULT: float = FILTER_ALL
 
     def __call__(self, flag: float | int) -> float:
-
         try:
             return float(flag)
         except (TypeError, ValueError, OverflowError):
diff --git a/saqc/core/translation/dmpscheme.py b/saqc/core/translation/dmpscheme.py
index c8598a8fa..17f958484 100644
--- a/saqc/core/translation/dmpscheme.py
+++ b/saqc/core/translation/dmpscheme.py
@@ -139,7 +139,6 @@ class DmpScheme(MappingScheme):
         )
 
         for field in tflags.columns:
-
             df = pd.DataFrame(
                 {
                     "quality_flag": tflags[field],
@@ -150,7 +149,6 @@ class DmpScheme(MappingScheme):
 
             history = flags.history[field]
             for col in history.columns:
-
                 valid = (history.hist[col] != UNFLAGGED) & history.hist[col].notna()
 
                 # extract from meta
@@ -191,7 +189,6 @@ class DmpScheme(MappingScheme):
             )
 
         for field in df.columns.get_level_values(0):
-
             # we might have NaN injected by DictOfSeries -> DataFrame conversions
             field_df = df[field].dropna(how="all", axis="index")
             flags = field_df["quality_flag"]
diff --git a/saqc/core/translation/positionalscheme.py b/saqc/core/translation/positionalscheme.py
index e4dea64b3..23b724293 100644
--- a/saqc/core/translation/positionalscheme.py
+++ b/saqc/core/translation/positionalscheme.py
@@ -59,7 +59,6 @@ class PositionalScheme(MappingScheme):
 
         data = {}
         for field, field_flags in flags.items():
-
             # explode the flags into sperate columns and drop the leading `9`
             df = pd.DataFrame(
                 field_flags.astype(str).str.slice(start=1).apply(tuple).tolist(),
diff --git a/saqc/core/visitor.py b/saqc/core/visitor.py
index b5a7b33b9..294a5a812 100644
--- a/saqc/core/visitor.py
+++ b/saqc/core/visitor.py
@@ -81,7 +81,6 @@ class ConfigExpressionParser(ast.NodeVisitor):
 
 
 class ConfigFunctionParser(ast.NodeVisitor):
-
     SUPPORTED_NODES = (
         ast.Call,
         ast.Num,
@@ -107,7 +106,6 @@ class ConfigFunctionParser(ast.NodeVisitor):
         return func, self.kwargs
 
     def visit_Call(self, node):
-
         if not isinstance(node, ast.Call):
             raise TypeError("expected function call")
 
@@ -126,7 +124,6 @@ class ConfigFunctionParser(ast.NodeVisitor):
         return func_name
 
     def visit_keyword(self, node):
-
         key, value = node.arg, node.value
         check_tree = True
 
diff --git a/saqc/funcs/curvefit.py b/saqc/funcs/curvefit.py
index bed9088ae..0444d7983 100644
--- a/saqc/funcs/curvefit.py
+++ b/saqc/funcs/curvefit.py
@@ -169,7 +169,6 @@ def _fitPolynomial(
     min_periods: int = 0,
     **kwargs,
 ) -> Tuple[DictOfSeries, Flags]:
-
     # TODO: some (rather large) parts are functional similar to saqc.funcs.rolling.roll
     if data[field].empty:
         return data, flags
diff --git a/saqc/funcs/drift.py b/saqc/funcs/drift.py
index aaf9e410e..4560c2058 100644
--- a/saqc/funcs/drift.py
+++ b/saqc/funcs/drift.py
@@ -144,7 +144,6 @@ class DriftMixin:
 
         segments = data_to_flag.groupby(pd.Grouper(freq=freq))
         for segment in segments:
-
             if segment[1].shape[0] <= 1:
                 continue
 
@@ -229,7 +228,6 @@ class DriftMixin:
 
         segments = data_to_flag.groupby(pd.Grouper(freq=freq))
         for segment in segments:
-
             if segment[1].shape[0] <= 1:
                 continue
 
diff --git a/saqc/funcs/generic.py b/saqc/funcs/generic.py
index 67237dd56..556f6bfb2 100644
--- a/saqc/funcs/generic.py
+++ b/saqc/funcs/generic.py
@@ -63,7 +63,6 @@ def _execGeneric(
     func: GenericFunction,
     dfilter: float = FILTER_ALL,
 ) -> DictOfSeries:
-
     globs = {
         "isflagged": lambda data, label=None: _isflagged(
             _flagSelect(data.name, flags, label), thresh=dfilter
@@ -171,7 +170,6 @@ class GenericMixin:
 
         # update data & flags
         for i, col in enumerate(targets):
-
             datacol = result.iloc[:, i]
             self._data[col] = datacol
 
@@ -291,7 +289,6 @@ class GenericMixin:
 
         # update flags & data
         for i, col in enumerate(targets):
-
             maskcol = result.iloc[:, i]
 
             # make sure the column exists
diff --git a/saqc/funcs/outliers.py b/saqc/funcs/outliers.py
index 1fc519f03..05ee5fe85 100644
--- a/saqc/funcs/outliers.py
+++ b/saqc/funcs/outliers.py
@@ -149,7 +149,6 @@ class OutliersMixin:
 
         # calculate flags for every partition
         for _, partition in partitions:
-
             if partition.empty | (partition.shape[0] < min_periods):
                 continue
 
@@ -1042,7 +1041,6 @@ class OutliersMixin:
         df = self._data[fields].loc[self._data[fields].index_of("shared")].to_df()
 
         if isinstance(method, str):
-
             if method == "modZscore":
                 MAD_series = df.subtract(df.median(axis=1), axis=0).abs().median(axis=1)
                 diff_scores = (
@@ -1062,7 +1060,6 @@ class OutliersMixin:
                 raise ValueError(method)
 
         else:
-
             try:
                 stat = getattr(df, method.__name__)(axis=1)
             except AttributeError:
@@ -1248,7 +1245,6 @@ def _evalStrayLabels(
 
     for var in target:
         for index in enumerate(to_flag_frame.index):
-
             index_slice = slice(
                 index[1] - pd.Timedelta(reduction_range),
                 index[1] + pd.Timedelta(reduction_range),
diff --git a/saqc/funcs/pattern.py b/saqc/funcs/pattern.py
index 43e4f5f97..c3d02be0a 100644
--- a/saqc/funcs/pattern.py
+++ b/saqc/funcs/pattern.py
@@ -88,7 +88,6 @@ def calculateDistanceByDTW(
 
 
 class PatternMixin:
-
     # todo should we mask `reference` even if the func fail if reference has NaNs
     @flagging()
     def flagPatternByDTW(
diff --git a/saqc/lib/rolling.py b/saqc/lib/rolling.py
index aa2faee30..eb15343e0 100644
--- a/saqc/lib/rolling.py
+++ b/saqc/lib/rolling.py
@@ -30,12 +30,10 @@ class ForwardMixin:
         center: bool | None = None,
         closed: str | None = None,
     ) -> tuple[np.ndarray, np.ndarray]:
-
         if closed is None:
             closed = "right"
 
         if self.forward:
-
             # this is only set with variable window indexer
             if self.index_array is not None:  # noqa
                 self.index_array = self.index_array[::-1]  # noqa
diff --git a/saqc/lib/tools.py b/saqc/lib/tools.py
index 5f3fdd7a0..41a3cd961 100644
--- a/saqc/lib/tools.py
+++ b/saqc/lib/tools.py
@@ -245,7 +245,6 @@ def estimateFrequency(
     max_freqs=10,
     bins=None,
 ):
-
     """
     Function to estimate the sampling rate of an index.
 
diff --git a/saqc/lib/types.py b/saqc/lib/types.py
index 0e84ff162..2c11b3c77 100644
--- a/saqc/lib/types.py
+++ b/saqc/lib/types.py
@@ -43,7 +43,6 @@ class CurveFitter(Protocol):
 
 
 class GenericFunction(Protocol):
-
     __name__: str
     __globals__: Dict[str, Any]
 
diff --git a/tests/core/test_reader.py b/tests/core/test_reader.py
index 70a00d016..f6b55f31b 100644
--- a/tests/core/test_reader.py
+++ b/tests/core/test_reader.py
@@ -31,7 +31,6 @@ def getTestedVariables(flags: Flags, test: str):
 
 
 def test_variableRegex(data):
-
     header = f"varname;test"
     function = "flagDummy"
     tests = [
@@ -92,7 +91,6 @@ def test_configReaderLineNumbers():
 
 @pytest.mark.filterwarnings("ignore::RuntimeWarning")
 def test_configFile(data):
-
     # check that the reader accepts different whitespace patterns
 
     config = f"""
@@ -111,7 +109,6 @@ def test_configFile(data):
 
 
 def test_configChecks(data):
-
     var1, _, var3, *_ = data.columns
 
     @flagging()
@@ -134,7 +131,6 @@ def test_configChecks(data):
 
 
 def test_supportedArguments(data):
-
     # test if the following function arguments
     # are supported (i.e. parsing does not fail)
 
diff --git a/tests/core/test_translator.py b/tests/core/test_translator.py
index 9d4a6c706..cfacdbd12 100644
--- a/tests/core/test_translator.py
+++ b/tests/core/test_translator.py
@@ -32,7 +32,6 @@ def _genTranslators():
 
 
 def _genFlags(data: Dict[str, Union[Sequence, pd.Series]]) -> Flags:
-
     flags = Flags()
     for k, v in data.items():
         if not isinstance(v, pd.Series):
@@ -76,7 +75,6 @@ def test_backwardTranslationFail():
 
 
 def test_dmpTranslator():
-
     scheme = DmpScheme()
     # generate a bunch of dummy flags
     keys = np.array(tuple(scheme._backward.keys()) * 50)
@@ -144,7 +142,6 @@ def test_positionalTranslator():
 
 
 def test_positionalTranslatorIntegration():
-
     data = initData(3)
     col: str = data.columns[0]
 
@@ -164,7 +161,6 @@ def test_positionalTranslatorIntegration():
 
 
 def test_dmpTranslatorIntegration():
-
     data = initData(1)
     col = data.columns[0]
 
@@ -211,7 +207,6 @@ def test_dmpValidCombinations():
 
 
 def _buildupSaQCObjects():
-
     """
     return two evaluated saqc objects calling the same functions,
     whereas the flags from the evaluetion of the first objetc are
@@ -233,7 +228,6 @@ def _buildupSaQCObjects():
 
 
 def test_translationPreservesFlags():
-
     saqc1, saqc2 = _buildupSaQCObjects()
     flags1 = saqc1._flags
     flags2 = saqc2._flags
@@ -270,7 +264,6 @@ def test_multicallsPreserveHistory():
 
 
 def test_positionalMulitcallsPreserveState():
-
     saqc1, saqc2 = _buildupSaQCObjects()
 
     scheme = PositionalScheme()
diff --git a/tests/fixtures.py b/tests/fixtures.py
index f1c356590..ea1155929 100644
--- a/tests/fixtures.py
+++ b/tests/fixtures.py
@@ -69,6 +69,7 @@ def course_2(char_dict):
     one "anomalous" or "outlierish" value of magnitude "out_val" at position "periods/2"
     number of periods better be even!
     """
+
     # SINGLE_SPIKE
     def fix_funk(
         freq="10min",
@@ -149,7 +150,6 @@ def course_3(char_dict):
         crowd_size=5,
         crowd_spacing=1,
     ):
-
         t_index = pd.date_range(initial_index, freq=freq, periods=periods)
         data = np.linspace(initial_level, final_level, int(np.floor(len(t_index))))
         data = pd.Series(data=data, index=t_index)
diff --git a/tests/funcs/test_flagtools.py b/tests/funcs/test_flagtools.py
index f885c91e1..6286a2145 100644
--- a/tests/funcs/test_flagtools.py
+++ b/tests/funcs/test_flagtools.py
@@ -110,7 +110,6 @@ def test_propagateFlagsIrregularIndex(got, expected, kwargs):
     ],
 )
 def test_andGroup(left, right, expected):
-
     data = pd.DataFrame({"data": [1, 2, 3, 4]})
 
     base = SaQC(data=data)
@@ -130,7 +129,6 @@ def test_andGroup(left, right, expected):
     ],
 )
 def test_orGroup(left, right, expected):
-
     data = pd.DataFrame({"data": [1, 2, 3, 4]})
 
     base = SaQC(data=data)
@@ -150,7 +148,6 @@ def test_orGroup(left, right, expected):
     ],
 )
 def test__groupOperation(left, right, expected):
-
     data = pd.DataFrame(
         {"x": [0, 1, 2, 3], "y": [0, 11, 22, 33], "z": [0, 111, 222, 333]}
     )
diff --git a/tests/funcs/test_generic_api_functions.py b/tests/funcs/test_generic_api_functions.py
index 6f3c77691..dd1c7f4ae 100644
--- a/tests/funcs/test_generic_api_functions.py
+++ b/tests/funcs/test_generic_api_functions.py
@@ -74,7 +74,6 @@ def test_writeTargetFlagGeneric(data, targets, func):
     ],
 )
 def test_overwriteFieldFlagGeneric(data, fields, func):
-
     flag = 12
 
     expected_meta = {
diff --git a/tests/funcs/test_generic_config_functions.py b/tests/funcs/test_generic_config_functions.py
index 1106cb217..3f61e7756 100644
--- a/tests/funcs/test_generic_config_functions.py
+++ b/tests/funcs/test_generic_config_functions.py
@@ -95,7 +95,6 @@ def test_comparisonOperators(data):
 
 
 def test_arithmeticOperators(data):
-
     var1, *_ = data.columns
 
     data = data[var1]
@@ -150,7 +149,6 @@ def test_bitOps(data):
 
 
 def test_variableAssignments(data):
-
     config = f"""
     varname ; test
     dummy1  ; processGeneric(field=["var1", "var2"], func=x + y)
@@ -218,7 +216,6 @@ def test_flagTargetExistingFail(data_diff):
 
 @pytest.mark.slow
 def test_callableArgumentsUnary(data):
-
     window = 5
 
     @register(mask=["field"], demask=["field"], squeeze=["field"])
@@ -239,7 +236,7 @@ def test_callableArgumentsUnary(data):
         ("std(exp(x))", lambda x: np.std(np.exp(x))),
     ]
 
-    for (name, func) in tests:
+    for name, func in tests:
         fobj = writeIO(config.format(name))
         result_config = fromConfig(fobj, data).data
         result_api = SaQC(data).testFuncUnary(var, func=func).data
@@ -266,7 +263,7 @@ def test_callableArgumentsBinary(data):
         ("y - (x * 2)", lambda y, x: y - (x * 2)),
     ]
 
-    for (name, func) in tests:
+    for name, func in tests:
         fobj = writeIO(config.format(name))
         result_config = fromConfig(fobj, data).data
         result_api = SaQC(data).testFuncBinary(var1, func=func).data
@@ -276,7 +273,6 @@ def test_callableArgumentsBinary(data):
 
 
 def test_isflagged(data):
-
     var1, var2, *_ = data.columns
     flags = initFlagsLike(data)
     flags[data[var1].index[::2], var1] = BAD
diff --git a/tests/fuzzy/lib.py b/tests/fuzzy/lib.py
index b8f4435e3..6210389fb 100644
--- a/tests/fuzzy/lib.py
+++ b/tests/fuzzy/lib.py
@@ -134,7 +134,6 @@ def functionCalls(draw, module: str = None):
 
 @contextmanager
 def applyStrategies(strategies: dict):
-
     for dtype, strategy in strategies.items():
         register_type_strategy(dtype, strategy)
 
-- 
GitLab