
import enum


class NumberOfDaysIn(enum.IntEnum):
    """
    Number of days.
    """

    # Days (1–7)
    ONE_DAY = 1
    TWO_DAYS = 2 * ONE_DAY
    THREE_DAYS = 3 * ONE_DAY
    FOUR_DAYS = 4 * ONE_DAY
    FIVE_DAYS = 5 * ONE_DAY
    SIX_DAYS = 6 * ONE_DAY
    SEVEN_DAYS = 7 * ONE_DAY

    # Weeks (1-52)
    ONE_WEEK = SEVEN_DAYS
    TWO_WEEKS = 2 * ONE_WEEK
    THREE_WEEKS = 3 * ONE_WEEK
    FOUR_WEEKS = 4 * ONE_WEEK
    FIVE_WEEKS = 5 * ONE_WEEK
    SIX_WEEKS = 6 * ONE_WEEK
    SEVEN_WEEKS = 7 * ONE_WEEK
    EIGHT_WEEKS = 8 * ONE_WEEK
    NINE_WEEKS = 9 * ONE_WEEK
    TEN_WEEKS = 10 * ONE_WEEK
    ELEVEN_WEEKS = 11 * ONE_WEEK
    TWELVE_WEEKS = 12 * ONE_WEEK
    THIRTEEN_WEEKS = 13 * ONE_WEEK
    FOURTEEN_WEEKS = 14 * ONE_WEEK
    FIFTEEN_WEEKS = 15 * ONE_WEEK
    SIXTEEN_WEEKS = 16 * ONE_WEEK
    SEVENTEEN_WEEKS = 17 * ONE_WEEK
    EIGHTEEN_WEEKS = 18 * ONE_WEEK
    NINETEEN_WEEKS = 19 * ONE_WEEK
    TWENTY_WEEKS = 20 * ONE_WEEK
    TWENTY_ONE_WEEKS = 21 * ONE_WEEK
    TWENTY_TWO_WEEKS = 22 * ONE_WEEK
    TWENTY_THREE_WEEKS = 23 * ONE_WEEK
    TWENTY_FOUR_WEEKS = 24 * ONE_WEEK
    TWENTY_FIVE_WEEKS = 25 * ONE_WEEK
    TWENTY_SIX_WEEKS = 26 * ONE_WEEK
    TWENTY_SEVEN_WEEKS = 27 * ONE_WEEK
    TWENTY_EIGHT_WEEKS = 28 * ONE_WEEK
    TWENTY_NINE_WEEKS = 29 * ONE_WEEK
    THIRTY_WEEKS = 30 * ONE_WEEK
    THIRTY_ONE_WEEKS = 31 * ONE_WEEK
    THIRTY_TWO_WEEKS = 32 * ONE_WEEK
    THIRTY_THREE_WEEKS = 33 * ONE_WEEK
    THIRTY_FOUR_WEEKS = 34 * ONE_WEEK
    THIRTY_FIVE_WEEKS = 35 * ONE_WEEK
    THIRTY_SIX_WEEKS = 36 * ONE_WEEK
    THIRTY_SEVEN_WEEKS = 37 * ONE_WEEK
    THIRTY_EIGHT_WEEKS = 38 * ONE_WEEK
    THIRTY_NINE_WEEKS = 39 * ONE_WEEK
    FORTY_WEEKS = 40 * ONE_WEEK
    FORTY_ONE_WEEKS = 41 * ONE_WEEK
    FORTY_TWO_WEEKS = 42 * ONE_WEEK
    FORTY_THREE_WEEKS = 43 * ONE_WEEK
    FORTY_FOUR_WEEKS = 44 * ONE_WEEK
    FORTY_FIVE_WEEKS = 45 * ONE_WEEK
    FORTY_SIX_WEEKS = 46 * ONE_WEEK
    FORTY_SEVEN_WEEKS = 47 * ONE_WEEK
    FORTY_EIGHT_WEEKS = 48 * ONE_WEEK
    FORTY_NINE_WEEKS = 49 * ONE_WEEK
    FIFTY_WEEKS = 50 * ONE_WEEK
    FIFTY_ONE_WEEKS = 51 * ONE_WEEK
    FIFTY_TWO_WEEKS = 52 * ONE_WEEK

    # Months
    ONE_MONTH_OF_TWENTY_EIGHT_DAYS = 28 * ONE_DAY
    ONE_MONTH_OF_TWENTY_NINE_DAYS = 29 * ONE_DAY
    ONE_MONTH_OF_THIRTY_DAYS = 30 * ONE_DAY
    ONE_MONTH_OF_THIRTY_ONE_DAYS = 31 * ONE_DAY

    JANUARY = ONE_MONTH_OF_THIRTY_ONE_DAYS
    FEBRUARY_IN_COMMON_YEAR = ONE_MONTH_OF_TWENTY_EIGHT_DAYS
    FEBRUARY_IN_LEAP_YEAR = ONE_MONTH_OF_TWENTY_NINE_DAYS
    MARCH = ONE_MONTH_OF_THIRTY_ONE_DAYS
    APRIL = ONE_MONTH_OF_THIRTY_DAYS
    MAY = ONE_MONTH_OF_THIRTY_ONE_DAYS
    JUNE = ONE_MONTH_OF_THIRTY_DAYS
    JULY = ONE_MONTH_OF_THIRTY_ONE_DAYS
    AUGUST = ONE_MONTH_OF_THIRTY_ONE_DAYS
    SEPTEMBER = ONE_MONTH_OF_THIRTY_DAYS
    OCTOBER = ONE_MONTH_OF_THIRTY_ONE_DAYS
    NOVEMBER = ONE_MONTH_OF_THIRTY_DAYS
    DECEMBER = ONE_MONTH_OF_THIRTY_ONE_DAYS

    # Years
    ONE_LEAP_DAY = ONE_DAY

    ONE_COMMON_YEAR = 365 * ONE_DAY
    ONE_LEAP_YEAR = ONE_COMMON_YEAR + ONE_LEAP_DAY
    ONE_MILLENIAL_YEAR = ONE_LEAP_YEAR
