Skip to content
Snippets Groups Projects
baseflagger.py 1002 B
Newer Older
David Schäfer's avatar
David Schäfer committed
#! /usr/bin/env python
# -*- coding: utf-8 -*-

from typing import Any, Optional
David Schäfer's avatar
David Schäfer committed
from numbers import Number

import numpy as np
David Schäfer's avatar
David Schäfer committed
import pandas as pd

from lib.types import PandasLike, ArrayLike, T
    def __init__(self, no_flag: T, flag: T):
        self.no_flag: T = no_flag
        self.flag: T = flag

    def setFlag(self,
                flags: PandasLike,
                flag: Optional[T] = None,
                **kwargs: Any) -> PandasLike:
        if flag is None:
David Schäfer's avatar
David Schäfer committed
            flag = self.flag
        flags[:] = flag
David Schäfer's avatar
David Schäfer committed
        return flags

    def emptyFlags(self,
                   data: pd.DataFrame,
                   value: Optional[Number] = np.nan) -> pd.DataFrame:
        out = data.copy()
        out[:] = value
        return out
    def isFlagged(self, flags: ArrayLike, flag: T = None) -> ArrayLike:
        if flag is None:
            return (pd.notnull(flags) & (flags != self.no_flag))
        return flags == flag
David Schäfer's avatar
David Schäfer committed

    def nextTest(self):
        pass