"""Includes DqComparisonResultCode enum definition."""
from enum import Enum


class DqComparisonResultCode(Enum):
    """Result code types for dq comparisons"""
    TABLE_IS_EMPTY = 1
    ROW_COUNT_MEAN_IS_OUTSIDE_MEAN_TRAFFIC_LIGHT_INTERVAL = 5
    ROW_COUNT_MEAN_IS_OUTSIDE_MEAN_CONFIDENCE_INTERVAL = 6
    ROW_COUNT_IS_OUTSIDE_PREDICTION_CONFIDENCE_INTERVAL = 7
    ROW_COUNT_IS_OUTSIDE_PREDICTION_TRAFFIC_LIGHT_INTERVAL = 8
    ROW_COUNT_ABSOLUTE_DEVIATION_FROM_PREDICTION_IS_MAXIMUM = 9
    TABLE_SIZE_MEAN_IS_OUTSIDE_MEAN_TRAFFIC_LIGHT_INTERVAL = 10
    TABLE_SIZE_MEAN_IS_OUTSIDE_MEAN_CONFIDENCE_INTERVAL = 11
    TABLE_SIZE_IS_OUTSIDE_PREDICTION_CONFIDENCE_INTERVAL = 12
    TABLE_SIZE_IS_OUTSIDE_PREDICTION_TRAFFIC_LIGHT_INTERVAL = 13
    TABLE_SIZE_ABSOLUTE_DEVIATION_IS_MAXIMUM = 14

    # column level
    COLUMN_ADDED = 2
    COLUMN_REMOVED = 3
    COLUMN_TYPE_CHANGED = 4
    NUMERIC_VALUES_ARE_OUTSIDE_THE_RANGE = 15
    NOMINAL_VALUES_ARE_OUTSIDE_ALLOWED_SET = 16
    FORBIDDEN_NOMINAL_VALUE_IN_DATA = 17
    CARDINALITY_EXCEEDS_MAXIMUM_CARDINALITY = 18
    COLUMN_VALUES_ARE_ALL_ZERO = 19
    COLUMN_VALUES_ARE_ALL_NULL = 20
    UNEXPECTED_NOMINAL_VALUES = 21
    UNEXPECTED_MINIMUM = 22
    UNEXPECTED_MAXIMUM = 23
    # Column-level: Psi, average predictions
    PSI_YELLOW_SIGNAL = 24
    PSI_RED_SIGNAL = 25
    COLUMN_MEAN_IS_OUTSIDE_MEAN_TRAFFIC_LIGHT_INTERVAL = 26
    COLUMN_MEAN_IS_OUTSIDE_MEAN_CONFIDENCE_INTERVAL = 27
    COLUMN_MEAN_IS_OUTSIDE_PREDICTION_CONFIDENCE_INTERVAL = 28
    COLUMN_MEAN_IS_OUTSIDE_PREDICTION_TRAFFIC_LIGHT_INTERVAL = 29
    COLUMN_MEAN_ABSOLUTE_DEVIATION_FROM_PREDICTION_IS_MAXIMUM = 30
    CARDINALITY_IS_BELOW_MINIMUM_THRESHOLD = 31
    COLUMN_IS_CONSTANT = 32
    COLUMNN_VALUES_CONSIST_OF_DEFAULT_VALUES_ONLY = 33
    TABLE_CONTAINS_DUPLICATE_KEYS = 34
    STRATA_ADDED = 35
    STRATA_REMOVED = 36
    COLUMN005_IS_OUTSIDE_MEAN_TRAFFIC_LIGHT_INTERVAL = 37
    COLUMN005_IS_OUTSIDE_MEAN_CONFIDENCE_INTERVAL = 38
    COLUMN005_IS_OUTSIDE_PREDICTION_CONFIDENCE_INTERVAL = 39
    COLUMN005_IS_OUTSIDE_PREDICTION_TRAFFIC_LIGHT_INTERVAL = 40
    COLUMN005_ABSOLUTE_DEVIATION_FROM_PREDICTION_IS_MAXIMUM = 41
    COLUMN995_IS_OUTSIDE_MEAN_TRAFFIC_LIGHT_INTERVAL = 42
    COLUMN995_IS_OUTSIDE_MEAN_CONFIDENCE_INTERVAL = 43
    COLUMN995_IS_OUTSIDE_PREDICTION_CONFIDENCE_INTERVAL = 44
    COLUMN995_IS_OUTSIDE_PREDICTION_TRAFFIC_LIGHT_INTERVAL = 45
    COLUMN995_ABSOLUTE_DEVIATION_FROM_PREDICTION_IS_MAXIMUM = 46
