def invalidate_record(frame, record, reason): pass class BaseCheckList: def __init__(self, *args, **kwargs): self.check_results = {} self.parameters = {} def set_params(self, parameters): self.parameters = parameters def update_qc_percent(self, frame): for check_func in self.checks: name = check_func.__name__ if name in frame.columns: results = frame[name].fillna(0) # Compute P(A U B) previous_percent = frame['qc_percent'] frame['qc_percent'] = previous_percent + results - previous_percent*results return frame def compute(self, frame): for check in self.checks: frame = check(frame, self.parameters) return self.update_qc_percent(frame)