# -*- coding: utf-8 -*-
# Copyright (c) 2018-2021, earthobservations developers.
# Distributed under the MIT License. See LICENSE for more info.
from enum import Enum


class Parameter(Enum):
    """Parameter enum with fixed names of parameters being used in the
    entire library.
    Groups are:
        - Clouds
        - Evapotranspiration
        - Fog
        - Humidity
        - Precipitation
        - Pressure
        - Temperature
        - Wind
        - Radiation
        - Sunshine

    Subgroups are:
        - averaged
        - aggregated
        - duration
        - type
        - distance/length
        - probability
        - frequency
        - error (model related e.g. Mosmix)

    """

    # Clouds
    # --- averaged ---
    # total
    CLOUD_COVER_TOTAL = "CLOUD_COVER_TOTAL"
    CLOUD_COVER_EFFECTIVE = "CLOUD_COVER_EFFECTIVE"
    # layers
    CLOUD_COVER_LAYER1 = "CLOUD_COVER_LAYER1"
    CLOUD_COVER_LAYER2 = "CLOUD_COVER_LAYER2"
    CLOUD_COVER_LAYER3 = "CLOUD_COVER_LAYER3"
    CLOUD_COVER_LAYER4 = "CLOUD_COVER_LAYER4"
    # below - above
    CLOUD_COVER_BELOW_500_FT = "CLOUD_COVER_BELOW_500_FT"
    CLOUD_COVER_BELOW_1000_FT = "CLOUD_COVER_BELOW_1000_FT"
    CLOUD_COVER_BETWEEN_2_TO_7_KM = "CLOUD_COVER_BETWEEN_2_TO_7_KM"
    CLOUD_COVER_BELOW_7_KM = "CLOUD_COVER_BELOW_7_KM"
    CLOUD_COVER_ABOVE_7_KM = "CLOUD_COVER_ABOVE_7_KM"
    # density
    CLOUD_DENSITY = "CLOUD_DENSITY"  # TODO: may regroup as density
    # --- type ---
    CLOUD_TYPE_LAYER1 = "CLOUD_TYPE_LAYER1"
    CLOUD_TYPE_LAYER2 = "CLOUD_TYPE_LAYER2"
    CLOUD_TYPE_LAYER3 = "CLOUD_TYPE_LAYER3"
    CLOUD_TYPE_LAYER4 = "CLOUD_TYPE_LAYER4"
    CLOUD_COVER_TOTAL_INDICATOR = "CLOUD_COVER_TOTAL_INDICATOR"
    # --- distance ---
    CLOUD_HEIGHT_LAYER1 = "CLOUD_HEIGHT_LAYER1"
    CLOUD_HEIGHT_LAYER2 = "CLOUD_HEIGHT_LAYER2"
    CLOUD_HEIGHT_LAYER3 = "CLOUD_HEIGHT_LAYER3"
    CLOUD_HEIGHT_LAYER4 = "CLOUD_HEIGHT_LAYER4"
    # cloud base height
    CLOUD_BASE_CONVECTIVE = "CLOUD_BASE_CONVECTIVE"
    # ---- abbreviation ----
    CLOUD_TYPE_LAYER1_ABBREVIATION = "CLOUD_TYPE_LAYER1_ABBREVIATION"
    CLOUD_TYPE_LAYER2_ABBREVIATION = "CLOUD_TYPE_LAYER2_ABBREVIATION"
    CLOUD_TYPE_LAYER3_ABBREVIATION = "CLOUD_TYPE_LAYER3_ABBREVIATION"
    CLOUD_TYPE_LAYER4_ABBREVIATION = "CLOUD_TYPE_LAYER4_ABBREVIATION"

    # Evapotranspiration
    # --- aggregated ---
    EVAPOTRANSPIRATION_POTENTIAL_LAST_24H = "EVAPOTRANSPIRATION_POTENTIAL_LAST_24H"

    # Fog
    # --- probability ---
    PROBABILITY_FOG_LAST_1H = "PROBABILITY_FOG_LAST_1H"
    PROBABILITY_FOG_LAST_6H = "PROBABILITY_FOG_LAST_6H"
    PROBABILITY_FOG_LAST_12H = "PROBABILITY_FOG_LAST_12H"
    PROBABILITY_FOG_LAST_24H = "PROBABILITY_FOG_LAST_24H"

    # Humidity
    # ---- averaged ----
    HUMIDITY = "HUMIDITY"
    HUMIDITY_ABSOLUTE = "HUMIDITY_ABSOLUTE"
    # ECCC special parameter
    HUMIDEX = "HUMIDEX"

    # Precipitation
    # ---- aggregated ----
    PRECIPITATION_HEIGHT = "PRECIPITATION_HEIGHT"
    PRECIPITATION_HEIGHT_LIQUID = "PRECIPITATION_HEIGHT_LIQUID"
    PRECIPITATION_HEIGHT_DROPLET = "PRECIPITATION_HEIGHT_DROPLET"
    PRECIPITATION_HEIGHT_ROCKER = "PRECIPITATION_HEIGHT_ROCKER"
    PRECIPITATION_HEIGHT_LAST_1H = "PRECIPITATION_HEIGHT_LAST_1H"
    PRECIPITATION_HEIGHT_LAST_3H = "PRECIPITATION_HEIGHT_LAST_3H"
    PRECIPITATION_HEIGHT_LAST_6H = "PRECIPITATION_HEIGHT_LAST_6H"
    PRECIPITATION_HEIGHT_LAST_12H = "PRECIPITATION_HEIGHT_LAST_12H"
    PRECIPITATION_HEIGHT_LAST_24H = "PRECIPITATION_HEIGHT_LAST_24H"
    # precipitation height consistent with significant weather
    PRECIPITATION_HEIGHT_SIGNIFICANT_WEATHER_LAST_1H = (
        "PRECIPITATION_HEIGHT_SIGNIFICANT_WEATHER_LAST_1H"
    )
    PRECIPITATION_HEIGHT_SIGNIFICANT_WEATHER_LAST_3H = (
        "PRECIPITATION_HEIGHT_SIGNIFICANT_WEATHER_LAST_3H"
    )
    PRECIPITATION_HEIGHT_SIGNIFICANT_WEATHER_LAST_6H = (
        "PRECIPITATION_HEIGHT_SIGNIFICANT_WEATHER_LAST_6H"
    )
    PRECIPITATION_HEIGHT_SIGNIFICANT_WEATHER_LAST_12H = (
        "PRECIPITATION_HEIGHT_SIGNIFICANT_WEATHER_LAST_12H"
    )
    PRECIPITATION_HEIGHT_SIGNIFICANT_WEATHER_LAST_24H = (
        "PRECIPITATION_HEIGHT_SIGNIFICANT_WEATHER_LAST_24H"
    )
    PRECIPITATION_HEIGHT_LIQUID_SIGNIFICANT_WEATHER_LAST_1H = (
        "PRECIPITATION_HEIGHT_LIQUID_SIGNIFICANT_WEATHER_LAST_1H"
    )
    # ---- extremes ----
    PRECIPITATION_HEIGHT_MAX = "PRECIPITATION_HEIGHT_MAX"
    PRECIPITATION_HEIGHT_LIQUID_MAX = "PRECIPITATION_HEIGHT_LIQUID_MAX"
    # ---- type ----
    PRECIPITATION_FORM = "PRECIPITATION_FORM"  # what type of precipitation, snow, ice?
    PRECIPITATION_INDICATOR = "PRECIPITATION_INDICATOR"  # True or False
    PRECIPITATION_INDICATOR_WR = "PRECIPITATION_INDICATOR_WR"
    # ---- duration ----
    PRECIPITATION_DURATION = "PRECIPITATION_DURATION"
    # ---- probability ----
    # greater 0
    PROBABILITY_PRECIPITATION_HEIGHT_GT_0_0_MM_LAST_6H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_0_0_MM_LAST_6H"
    )
    PROBABILITY_PRECIPITATION_HEIGHT_GT_0_0_MM_LAST_12H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_0_0_MM_LAST_12H"
    )
    PROBABILITY_PRECIPITATION_HEIGHT_GT_0_0_MM_LAST_24H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_0_0_MM_LAST_24H"
    )
    # greater 0.1
    PROBABILITY_PRECIPITATION_HEIGHT_GT_0_1_MM_LAST_1H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_0_1_MM_LAST_1H"
    )
    # greater 0.2
    PROBABILITY_PRECIPITATION_HEIGHT_GT_0_2_MM_LAST_1H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_0_2_MM_LAST_1H"
    )
    PROBABILITY_PRECIPITATION_HEIGHT_GT_0_2_MM_LAST_6H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_0_2_MM_LAST_6H"
    )
    PROBABILITY_PRECIPITATION_HEIGHT_GT_0_2_MM_LAST_12H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_0_2_MM_LAST_12H"
    )
    PROBABILITY_PRECIPITATION_HEIGHT_GT_0_2_MM_LAST_24H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_0_2_MM_LAST_24H"
    )
    # greater 0.3
    PROBABILITY_PRECIPITATION_HEIGHT_GT_0_3_MM_LAST_1H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_0_3_MM_LAST_1H"
    )
    # greater 0.5
    PROBABILITY_PRECIPITATION_HEIGHT_GT_0_5_MM_LAST_1H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_0_5_MM_LAST_1H"
    )
    # greater 0.7
    PROBABILITY_PRECIPITATION_HEIGHT_GT_0_7_MM_LAST_1H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_0_7_MM_LAST_1H"
    )
    # greater 1.0
    PROBABILITY_PRECIPITATION_HEIGHT_GT_1_0_MM_LAST_1H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_1_0_MM_LAST_1H"
    )
    PROBABILITY_PRECIPITATION_HEIGHT_GT_1_0_MM_LAST_6H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_1_0_MM_LAST_6H"
    )
    PROBABILITY_PRECIPITATION_HEIGHT_GT_1_0_MM_LAST_12H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_1_0_MM_LAST_12H"
    )
    PROBABILITY_PRECIPITATION_HEIGHT_GT_1_0_MM_LAST_24H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_1_0_MM_LAST_24H"
    )
    # greater 2.0
    PROBABILITY_PRECIPITATION_HEIGHT_GT_2_0_MM_LAST_1H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_2_0_MM_LAST_1H"
    )
    # greater 3.0
    PROBABILITY_PRECIPITATION_HEIGHT_GT_3_0_MM_LAST_1H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_3_0_MM_LAST_1H"
    )
    # greater 5.0
    PROBABILITY_PRECIPITATION_HEIGHT_GT_5_0_MM_LAST_1H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_5_0_MM_LAST_1H"
    )
    PROBABILITY_PRECIPITATION_HEIGHT_GT_5_0_MM_LAST_6H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_5_0_MM_LAST_6H"
    )
    PROBABILITY_PRECIPITATION_HEIGHT_GT_5_0_MM_LAST_12H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_5_0_MM_LAST_12H"
    )
    PROBABILITY_PRECIPITATION_HEIGHT_GT_5_0_MM_LAST_24H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_5_0_MM_LAST_24H"
    )
    # greater 10.0
    PROBABILITY_PRECIPITATION_HEIGHT_GT_10_0_MM_LAST_1H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_10_0_MM_LAST_1H"
    )
    # greater 15.0
    PROBABILITY_PRECIPITATION_HEIGHT_GT_15_0_MM_LAST_1H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_15_0_MM_LAST_1H"
    )
    PROBABILITY_PRECIPITATION_HEIGHT_GT_25_0_MM_LAST_1H = (
        "PROBABILITY_PRECIPITATION_HEIGHT_GT_25_0_MM_LAST_1H"
    )

    PROBABILITY_PRECIPITATION_LAST_1H = "PROBABILITY_PRECIPITATION_LAST_1H"
    PROBABILITY_PRECIPITATION_LAST_6H = "PROBABILITY_PRECIPITATION_LAST_6H"
    PROBABILITY_PRECIPITATION_LAST_12H = "PROBABILITY_PRECIPITATION_LAST_12H"
    PROBABILITY_PRECIPITATION_LAST_24H = "PROBABILITY_PRECIPITATION_LAST_24H"

    PROBABILITY_DRIZZLE_LAST_1H = "PROBABILITY_DRIZZLE_LAST_1H"
    PROBABILITY_DRIZZLE_LAST_6H = "PROBABILITY_DRIZZLE_LAST_6H"
    PROBABILITY_DRIZZLE_LAST_12H = "PROBABILITY_DRIZZLE_LAST_12H"

    PROBABILITY_PRECIPITATION_STRATIFORM_LAST_1H = (
        "PROBABILITY_PRECIPITATION_STRATIFORM_LAST_1H"
    )
    PROBABILITY_PRECIPITATION_STRATIFORM_LAST_6H = (
        "PROBABILITY_PRECIPITATION_STRATIFORM_LAST_6H"
    )
    PROBABILITY_PRECIPITATION_STRATIFORM_LAST_12H = (
        "PROBABILITY_PRECIPITATION_STRATIFORM_LAST_12H"
    )

    PROBABILITY_PRECIPITATION_CONVECTIVE_LAST_1H = (
        "PROBABILITY_PRECIPITATION_CONVECTIVE_LAST_1H"
    )
    PROBABILITY_PRECIPITATION_CONVECTIVE_LAST_6H = (
        "PROBABILITY_PRECIPITATION_CONVECTIVE_LAST_6H"
    )
    PROBABILITY_PRECIPITATION_CONVECTIVE_LAST_12H = (
        "PROBABILITY_PRECIPITATION_CONVECTIVE_LAST_12H"
    )

    PROBABILITY_PRECIPITATION_LIQUID_LAST_1H = (
        "PROBABILITY_PRECIPITATION_LIQUID_LAST_1H"
    )
    PROBABILITY_PRECIPITATION_LIQUID_LAST_6H = (
        "PROBABILITY_PRECIPITATION_LIQUID_LAST_6H"
    )
    PROBABILITY_PRECIPITATION_LIQUID_LAST_12H = (
        "PROBABILITY_PRECIPITATION_LIQUID_LAST_12H"
    )

    PROBABILITY_PRECIPITATION_SOLID_LAST_1H = "PROBABILITY_PRECIPITATION_SOLID_LAST_1H"
    PROBABILITY_PRECIPITATION_SOLID_LAST_6H = "PROBABILITY_PRECIPITATION_SOLID_LAST_6H"
    PROBABILITY_PRECIPITATION_SOLID_LAST_12H = (
        "PROBABILITY_PRECIPITATION_SOLID_LAST_12H"
    )

    PROBABILITY_PRECIPITATION_FREEZING_LAST_1H = (
        "PROBABILITY_PRECIPITATION_FREEZING_LAST_1H"
    )
    PROBABILITY_PRECIPITATION_FREEZING_LAST_6H = (
        "PROBABILITY_PRECIPITATION_FREEZING_LAST_6H"
    )
    PROBABILITY_PRECIPITATION_FREEZING_LAST_12H = (
        "PROBABILITY_PRECIPITATION_FREEZING_LAST_12H"
    )
    # ---- frequency ----
    PRECIPITATION_FREQUENCY = "PRECIPITATION_FREQUENCY"
    # PRESSURE
    # - averaged
    # TODO: should we add _MEAN here?
    PRESSURE_AIR_SITE = "PRESSURE_AIR_SITE"  # air pressure at station height [SH]
    PRESSURE_AIR_SITE_REDUCED = "PRESSURE_AIR_SITE_REDUCED"
    PRESSURE_AIR_SEA_LEVEL = "PRESSURE_AIR_SEA_LEVEL"  # air pressure at sea level [SL]
    PRESSURE_VAPOR = "PRESSURE_VAPOR"
    # - error
    ERROR_ABSOLUTE_PRESSURE_AIR_SITE = "ERROR_ABSOLUTE_PRESSURE_AIR_SITE"

    # RADIATION
    # - averaged
    RADIATION_SKY_SHORT_WAVE_DIFFUSE = "RADIATION_SKY_SHORT_WAVE_DIFFUSE"
    RADIATION_SKY_SHORT_WAVE_DIRECT = "RADIATION_SKY_SHORT_WAVE_DIRECT"
    # sum of short wave radiation a.k.a. RADIATION_SKY_SHORT_WAVE_TOTAL
    RADIATION_GLOBAL = "RADIATION_GLOBAL"
    RADIATION_GLOBAL_LAST_3H = "RADIATION_GLOBAL_LAST_3H"
    RADIATION_SKY_LONG_WAVE = "RADIATION_SKY_LONG_WAVE"
    RADIATION_SKY_LONG_WAVE_LAST_3H = "RADIATION_SKY_LONG_WAVE_LAST_3H"
    # - probability
    PROBABILITY_RADIATION_GLOBAL_LAST_1H = "PROBABILITY_RADIATION_GLOBAL_LAST_1H"

    # SNOW
    # - distance
    SNOW_DEPTH = "SNOW_DEPTH"
    SNOW_DEPTH_NEW = "SNOW_DEPTH_NEW"  # difference to previous snow depth
    SNOW_DEPTH_EXCELLED = "SNOW_DEPTH_EXCELLED"  # with spade or some device
    # ---- extremes ----
    SNOW_DEPTH_NEW_MAX = "SNOW_DEPTH_NEW_MAX"
    SNOW_DEPTH_MAX = "SNOW_DEPTH_MAX"

    # SUNSHINE
    # - duration
    SUNSHINE_DURATION = "SUNSHINE_DURATION"
    SUNSHINE_DURATION_LAST_3H = "SUNSHINE_DURATION_LAST_3H"
    SUNSHINE_DURATION_YESTERDAY = "SUNSHINE_DURATION_YESTERDAY"
    SUNSHINE_DURATION_RELATIVE_LAST_24H = "SUNSHINE_DURATION_RELATIVE_LAST_24H"
    # - angle
    SUN_ZENITH_ANGLE = "SUN_ZENITH_ANGLE"
    # - probability
    PROBABILITY_SUNSHINE_DURATION_RELATIVE_GT_0_PCT_LAST_24H = (
        "PROBABILITY_SUNSHINE_DURATION_RELATIVE_GT_0_PCT_LAST_24H"
    )
    PROBABILITY_SUNSHINE_DURATION_RELATIVE_GT_30_PCT_LAST_24H = (
        "PROBABILITY_SUNSHINE_DURATION_RELATIVE_GT_30_PCT_LAST_24H"
    )
    PROBABILITY_SUNSHINE_DURATION_RELATIVE_GT_60_PCT_LAST_24H = (
        "PROBABILITY_SUNSHINE_DURATION_RELATIVE_GT_60_PCT_LAST_24H"
    )
    # ---- special ----
    # TODO: special parameters from DWD Observation solar dataset,
    #  may remove those parameters
    END_OF_INTERVAL = "END_OF_INTERVAL"
    TRUE_LOCAL_TIME = "TRUE_LOCAL_TIME"

    # TEMPERATURE
    # - averaged
    # TODO: reduce TEMPERATURE to TEMP ?
    TEMPERATURE_AIR_MEAN_005 = "TEMPERATURE_AIR_MEAN_005"
    TEMPERATURE_AIR_MEAN_200 = "TEMPERATURE_AIR_MEAN_200"
    TEMPERATURE_AIR_MEAN_200_LAST_24H = "TEMPERATURE_AIR_MEAN_200_LAST_24H"
    TEMPERATURE_AIR_MAX_200_MEAN = "TEMPERATURE_AIR_MAX_200_MEAN"
    TEMPERATURE_AIR_MIN_200_MEAN = "TEMPERATURE_AIR_MIN_200_MEAN"
    TEMPERATURE_AIR_MIN_005_LAST_12H = "TEMPERATURE_AIR_MIN_005_LAST_12H"

    TEMPERATURE_DEW_POINT_MEAN_200 = "TEMPERATURE_DEW_POINT_MEAN_200"

    TEMPERATURE_SOIL_MEAN_002 = "TEMPERATURE_SOIL_MEAN_002"
    TEMPERATURE_SOIL_MEAN_005 = "TEMPERATURE_SOIL_MEAN_005"
    TEMPERATURE_SOIL_MEAN_010 = "TEMPERATURE_SOIL_MEAN_010"
    TEMPERATURE_SOIL_MEAN_020 = "TEMPERATURE_SOIL_MEAN_020"
    TEMPERATURE_SOIL_MEAN_050 = "TEMPERATURE_SOIL_MEAN_050"
    TEMPERATURE_SOIL_MEAN_100 = "TEMPERATURE_SOIL_MEAN_100"

    TEMPERATURE_WET_MEAN_200 = "TEMPERATURE_WET_MEAN_200"
    # - extremes
    TEMPERATURE_AIR_MAX_200 = "TEMPERATURE_AIR_MAX_200"
    TEMPERATURE_AIR_MAX_005 = "TEMPERATURE_AIR_MAX_005"
    TEMPERATURE_AIR_MIN_200 = "TEMPERATURE_AIR_MIN_200"
    TEMPERATURE_AIR_MIN_005 = "TEMPERATURE_AIR_MIN_005"
    # ---- ndays ----
    NDAYS_HEATING_DEGREE = "NDAYS_HEATING_DEGREE"
    NDAYS_COOLING_DEGREE = "NDAYS_COOLING_DEGREE"

    # - error
    ERROR_ABSOLUTE_TEMPERATURE_AIR_MEAN_200 = "ERROR_ABSOLUTE_TEMPERATURE_AIR_MEAN_200"
    ERROR_ABSOLUTE_TEMPERATURE_DEW_POINT_MEAN_200 = (
        "ERROR_ABSOLUTE_TEMPERATURE_DEW_POINT_MEAN_200"
    )

    # VISIBILITY
    # - distance
    VISIBILITY_INDICATOR = "VISIBILITY_INDICATOR"
    VISIBILITY = "VISIBILITY"  # through clouds, fog, etc
    # ---- probability ----
    PROBABILITY_VISIBILITY_BELOW_1000_M = "vv10"

    # WATER EQUIVALENT
    # - aggregated
    WATER_EQUIVALENT_SNOW_DEPTH = "WATER_EQUIVALENT_SNOW_DEPTH"
    WATER_EQUIVALENT_SNOW_DEPTH_EXCELLED = "WATER_EQUIVALENT_SNOW_DEPTH_EXCELLED"
    WATER_EQUIVALENT_SNOW_DEPTH_NEW_LAST_1H = "WATER_EQUIVALENT_SNOW_DEPTH_NEW_LAST_1H"
    WATER_EQUIVALENT_SNOW_DEPTH_NEW_LAST_3H = "WATER_EQUIVALENT_SNOW_DEPTH_NEW_LAST_3H"

    # WEATHER
    # - aggregated
    WEATHER_SIGNIFICANT = "WEATHER_SIGNIFICANT"
    WEATHER_SIGNIFICANT_LAST_3H = "WEATHER_SIGNIFICANT_LAST_3H"
    WEATHER_LAST_6H = "WEATHER_LAST_6H"
    WEATHER_SIGNIFICANT_OPTIONAL_LAST_1H = "WEATHER_SIGNIFICANT_OPTIONAL_LAST_1H"
    WEATHER_SIGNIFICANT_OPTIONAL_LAST_3H = "WEATHER_SIGNIFICANT_OPTIONAL_LAST_3H"
    WEATHER_SIGNIFICANT_OPTIONAL_LAST_6H = "WEATHER_SIGNIFICANT_OPTIONAL_LAST_6H"
    WEATHER_SIGNIFICANT_OPTIONAL_LAST_12H = "WEATHER_SIGNIFICANT_OPTIONAL_LAST_12H"
    WEATHER_SIGNIFICANT_OPTIONAL_LAST_24H = "WEATHER_SIGNIFICANT_OPTIONAL_LAST_24H"
    # TODO: ECCC parameter, same as significant weather?
    WEATHER = "WEATHER"

    # WEATHER PHENOMENA
    # - counts
    # the following are coming from DWD Observations
    COUNT_FOG = "COUNT_FOG"
    COUNT_THUNDER = "COUNT_THUNDER"
    COUNT_STORM_STRONG_WIND = "COUNT_STORM_STRONG_WIND"
    COUNT_STORM_STORMIER_WIND = "COUNT_STORM_STORMIER_WIND"
    COUNT_DEW = "COUNT_DEW"
    COUNT_GLAZE = "COUNT_GLAZE"
    COUNT_RIPE = "COUNT_RIPE"
    COUNT_SLEET = "COUNT_SLEET"
    COUNT_HAIL = "COUNT_HAIL"
    # - probability
    PROBABILITY_THUNDER_LAST_1H = "PROBABILITY_THUNDER_LAST_1H"
    PROBABILITY_THUNDER_LAST_6H = "PROBABILITY_THUNDER_LAST_6H"
    PROBABILITY_THUNDER_LAST_12H = "PROBABILITY_THUNDER_LAST_12H"
    PROBABILITY_THUNDER_LAST_24H = "PROBABILITY_THUNDER_LAST_24H"

    # WIND
    # - averaged
    WIND_SPEED = "WIND_SPEED"
    WIND_DIRECTION = "WIND_DIRECTION"
    # - extremes
    WIND_GUST_MAX = "WIND_GUST_MAX"
    WIND_GUST_MAX_LAST_1H = "WIND_GUST_MAX_LAST_1H"
    WIND_GUST_MAX_LAST_3H = "WIND_GUST_MAX_LAST_3H"
    WIND_GUST_MAX_LAST_12H = "WIND_GUST_MAX_LAST_12H"
    WIND_SPEED_MIN = "WIND_SPEED_MIN"
    WIND_SPEED_ROLLING_MEAN_MAX = "WIND_SPEED_ROLLING_MEAN_MAX"
    WIND_DIRECTION_GUST_MAX = "WIND_DIRECTION_GUST_MAX"  # int
    WIND_FORCE_BEAUFORT = "WIND_FORCE_BEAUFORT"  # int
    # - probability
    PROBABILITY_WIND_GUST_GE_25_KN_LAST_6H = "PROBABILITY_WIND_GUST_GE_25_KN_LAST_6H"
    PROBABILITY_WIND_GUST_GE_25_KN_LAST_12H = "PROBABILITY_WIND_GUST_GE_25_KN_LAST_12H"
    PROBABILITY_WIND_GUST_GE_40_KN_LAST_6H = "PROBABILITY_WIND_GUST_GE_40_KN_LAST_6H"
    PROBABILITY_WIND_GUST_GE_40_KN_LAST_12H = "PROBABILITY_WIND_GUST_GE_40_KN_LAST_12H"
    PROBABILITY_WIND_GUST_GE_55_KN_LAST_6H = "PROBABILITY_WIND_GUST_GE_55_KN_LAST_6H"
    PROBABILITY_WIND_GUST_GE_55_KN_LAST_12H = "PROBABILITY_WIND_GUST_GE_55_KN_LAST_12H"
    # - error
    ERROR_ABSOLUTE_WIND_SPEED = "ERROR_ABSOLUTE_WIND_SPEED"
    ERROR_ABSOLUTE_WIND_DIRECTION = "ERROR_ABSOLUTE_WIND_DIRECTION"
