holidays 0.25__py3-none-any.whl → 0.27__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- holidays/__init__.py +1 -1
- holidays/calendars/__init__.py +9 -7
- holidays/calendars/buddhist.py +445 -0
- holidays/calendars/chinese.py +1238 -431
- holidays/calendars/custom.py +1 -3
- holidays/calendars/hebrew.py +2 -2
- holidays/calendars/hindu.py +445 -0
- holidays/calendars/islamic.py +1347 -1347
- holidays/calendars/thai.py +229 -38
- holidays/countries/__init__.py +8 -0
- holidays/countries/albania.py +6 -17
- holidays/countries/andorra.py +2 -6
- holidays/countries/angola.py +53 -39
- holidays/countries/argentina.py +25 -35
- holidays/countries/armenia.py +1 -0
- holidays/countries/aruba.py +109 -48
- holidays/countries/australia.py +31 -69
- holidays/countries/austria.py +1 -0
- holidays/countries/azerbaijan.py +44 -71
- holidays/countries/bahrain.py +7 -7
- holidays/countries/bangladesh.py +1 -3
- holidays/countries/belarus.py +2 -3
- holidays/countries/belize.py +128 -0
- holidays/countries/bolivia.py +2 -6
- holidays/countries/bosnia_and_herzegovina.py +5 -17
- holidays/countries/botswana.py +37 -44
- holidays/countries/brazil.py +4 -7
- holidays/countries/brunei.py +427 -0
- holidays/countries/bulgaria.py +3 -6
- holidays/countries/burkina_faso.py +141 -0
- holidays/countries/burundi.py +2 -5
- holidays/countries/cambodia.py +323 -0
- holidays/countries/cameroon.py +183 -0
- holidays/countries/canada.py +20 -28
- holidays/countries/chad.py +133 -0
- holidays/countries/chile.py +6 -13
- holidays/countries/china.py +21 -25
- holidays/countries/colombia.py +18 -15
- holidays/countries/costa_rica.py +25 -27
- holidays/countries/cuba.py +28 -15
- holidays/countries/curacao.py +100 -46
- holidays/countries/cyprus.py +3 -6
- holidays/countries/czechia.py +4 -12
- holidays/countries/denmark.py +2 -3
- holidays/countries/dominican_republic.py +2 -3
- holidays/countries/ecuador.py +55 -54
- holidays/countries/egypt.py +2 -5
- holidays/countries/el_salvador.py +101 -0
- holidays/countries/eswatini.py +34 -44
- holidays/countries/ethiopia.py +7 -14
- holidays/countries/finland.py +2 -3
- holidays/countries/france.py +1 -0
- holidays/countries/gabon.py +139 -0
- holidays/countries/georgia.py +1 -0
- holidays/countries/germany.py +1 -0
- holidays/countries/greece.py +7 -6
- holidays/countries/honduras.py +17 -13
- holidays/countries/hongkong.py +117 -126
- holidays/countries/hungary.py +93 -92
- holidays/countries/iceland.py +1 -0
- holidays/countries/india.py +4 -11
- holidays/countries/indonesia.py +178 -142
- holidays/countries/ireland.py +5 -15
- holidays/countries/isle_of_man.py +23 -5
- holidays/countries/israel.py +12 -24
- holidays/countries/italy.py +6 -7
- holidays/countries/jamaica.py +10 -18
- holidays/countries/japan.py +11 -16
- holidays/countries/kazakhstan.py +7 -22
- holidays/countries/kenya.py +44 -26
- holidays/countries/kyrgyzstan.py +2 -5
- holidays/countries/latvia.py +2 -6
- holidays/countries/lesotho.py +52 -32
- holidays/countries/liechtenstein.py +1 -0
- holidays/countries/lithuania.py +4 -12
- holidays/countries/madagascar.py +3 -9
- holidays/countries/malawi.py +34 -26
- holidays/countries/malaysia.py +335 -343
- holidays/countries/marshall_islands.py +4 -9
- holidays/countries/mexico.py +2 -3
- holidays/countries/moldova.py +4 -6
- holidays/countries/monaco.py +17 -26
- holidays/countries/montenegro.py +34 -24
- holidays/countries/morocco.py +8 -5
- holidays/countries/mozambique.py +35 -31
- holidays/countries/namibia.py +54 -35
- holidays/countries/netherlands.py +1 -0
- holidays/countries/new_zealand.py +166 -134
- holidays/countries/nicaragua.py +27 -22
- holidays/countries/nigeria.py +6 -17
- holidays/countries/north_macedonia.py +3 -8
- holidays/countries/norway.py +2 -3
- holidays/countries/pakistan.py +73 -75
- holidays/countries/panama.py +25 -24
- holidays/countries/paraguay.py +55 -47
- holidays/countries/peru.py +1 -0
- holidays/countries/philippines.py +6 -2
- holidays/countries/poland.py +4 -9
- holidays/countries/portugal.py +4 -11
- holidays/countries/romania.py +4 -5
- holidays/countries/russia.py +1 -0
- holidays/countries/san_marino.py +26 -27
- holidays/countries/saudi_arabia.py +8 -22
- holidays/countries/serbia.py +22 -31
- holidays/countries/singapore.py +181 -189
- holidays/countries/slovakia.py +2 -4
- holidays/countries/south_africa.py +60 -62
- holidays/countries/south_korea.py +59 -26
- holidays/countries/spain.py +7 -10
- holidays/countries/sweden.py +2 -3
- holidays/countries/switzerland.py +1 -0
- holidays/countries/taiwan.py +20 -20
- holidays/countries/thailand.py +36 -82
- holidays/countries/turkey.py +1 -3
- holidays/countries/ukraine.py +7 -18
- holidays/countries/united_arab_emirates.py +23 -31
- holidays/countries/united_kingdom.py +124 -116
- holidays/countries/united_states.py +42 -72
- holidays/countries/uruguay.py +1 -0
- holidays/countries/vatican_city.py +64 -32
- holidays/countries/venezuela.py +9 -6
- holidays/countries/vietnam.py +6 -20
- holidays/countries/zambia.py +63 -33
- holidays/countries/zimbabwe.py +56 -37
- holidays/financial/european_central_bank.py +15 -16
- holidays/financial/ny_stock_exchange.py +80 -86
- holidays/groups/__init__.py +18 -0
- holidays/groups/buddhist.py +71 -0
- holidays/groups/chinese.py +235 -0
- holidays/groups/christian.py +483 -0
- holidays/groups/hindu.py +71 -0
- holidays/groups/international.py +157 -0
- holidays/groups/islamic.py +288 -0
- holidays/groups/thai.py +157 -0
- holidays/helpers.py +20 -0
- holidays/holiday_base.py +54 -76
- holidays/holiday_groups.py +11 -1053
- holidays/locale/am/LC_MESSAGES/ET.mo +0 -0
- holidays/locale/am/LC_MESSAGES/ET.po +20 -15
- holidays/locale/ar/LC_MESSAGES/CA.mo +0 -0
- holidays/locale/ar/LC_MESSAGES/CA.po +184 -0
- holidays/locale/ar/LC_MESSAGES/ET.mo +0 -0
- holidays/locale/ar/LC_MESSAGES/ET.po +92 -0
- holidays/locale/ar/LC_MESSAGES/UA.mo +0 -0
- holidays/locale/ar/LC_MESSAGES/UA.po +97 -0
- holidays/locale/be/LC_MESSAGES/BY.po +11 -13
- holidays/locale/bg/LC_MESSAGES/BG.po +13 -15
- holidays/locale/da/LC_MESSAGES/DK.po +13 -12
- holidays/locale/de/LC_MESSAGES/AT.po +14 -14
- holidays/locale/de/LC_MESSAGES/CH.po +91 -56
- holidays/locale/de/LC_MESSAGES/DE.po +32 -32
- holidays/locale/de/LC_MESSAGES/LI.po +23 -23
- holidays/locale/el/LC_MESSAGES/CY.po +16 -16
- holidays/locale/el/LC_MESSAGES/GR.mo +0 -0
- holidays/locale/el/LC_MESSAGES/GR.po +21 -17
- holidays/locale/en/LC_MESSAGES/CA.po +43 -43
- holidays/locale/en_US/LC_MESSAGES/AM.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/AM.po +20 -20
- holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/AR.po +34 -33
- holidays/locale/en_US/LC_MESSAGES/AT.po +13 -13
- holidays/locale/en_US/LC_MESSAGES/AW.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/AW.po +87 -0
- holidays/locale/en_US/LC_MESSAGES/BG.po +13 -15
- holidays/locale/en_US/LC_MESSAGES/BN.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/BN.po +96 -0
- holidays/locale/en_US/LC_MESSAGES/BY.po +11 -13
- holidays/locale/en_US/LC_MESSAGES/CA.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/CA.po +70 -37
- holidays/locale/en_US/LC_MESSAGES/CH.po +91 -56
- holidays/locale/en_US/LC_MESSAGES/CL.po +39 -38
- holidays/locale/en_US/LC_MESSAGES/CO.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/CO.po +27 -27
- holidays/locale/en_US/LC_MESSAGES/CR.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/CR.po +19 -19
- holidays/locale/en_US/LC_MESSAGES/CU.po +10 -10
- holidays/locale/en_US/LC_MESSAGES/CW.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/CW.po +82 -0
- holidays/locale/en_US/LC_MESSAGES/CY.po +16 -16
- holidays/locale/en_US/LC_MESSAGES/DE.po +30 -30
- holidays/locale/en_US/LC_MESSAGES/DK.po +12 -11
- holidays/locale/en_US/LC_MESSAGES/DO.po +12 -12
- holidays/locale/en_US/LC_MESSAGES/EC.po +11 -12
- holidays/locale/en_US/LC_MESSAGES/ET.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/ET.po +20 -15
- holidays/locale/en_US/LC_MESSAGES/FI.po +15 -15
- holidays/locale/en_US/LC_MESSAGES/FR.po +27 -24
- holidays/locale/en_US/LC_MESSAGES/GE.po +23 -27
- holidays/locale/en_US/LC_MESSAGES/GR.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/GR.po +21 -17
- holidays/locale/en_US/LC_MESSAGES/HN.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/HN.po +17 -12
- holidays/locale/en_US/LC_MESSAGES/HU.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/HU.po +109 -0
- holidays/locale/en_US/LC_MESSAGES/IS.po +17 -17
- holidays/locale/en_US/LC_MESSAGES/JP.po +25 -25
- holidays/locale/en_US/LC_MESSAGES/KH.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/KH.po +139 -0
- holidays/locale/en_US/LC_MESSAGES/LI.po +22 -22
- holidays/locale/en_US/LC_MESSAGES/MC.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/MC.po +27 -27
- holidays/locale/en_US/LC_MESSAGES/MD.po +13 -13
- holidays/locale/en_US/LC_MESSAGES/MX.po +9 -12
- holidays/locale/en_US/LC_MESSAGES/NI.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/NI.po +15 -15
- holidays/locale/en_US/LC_MESSAGES/NL.po +12 -12
- holidays/locale/en_US/LC_MESSAGES/NO.po +13 -13
- holidays/locale/en_US/LC_MESSAGES/PE.po +30 -30
- holidays/locale/en_US/LC_MESSAGES/PL.po +38 -21
- holidays/locale/en_US/LC_MESSAGES/PT.po +39 -36
- holidays/locale/en_US/LC_MESSAGES/PY.po +16 -16
- holidays/locale/en_US/LC_MESSAGES/RO.po +12 -12
- holidays/locale/en_US/LC_MESSAGES/RS.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/RS.po +17 -19
- holidays/locale/en_US/LC_MESSAGES/RU.po +11 -10
- holidays/locale/en_US/LC_MESSAGES/SE.po +19 -19
- holidays/locale/en_US/LC_MESSAGES/SK.po +17 -18
- holidays/locale/en_US/LC_MESSAGES/TH.po +41 -41
- holidays/locale/en_US/LC_MESSAGES/UA.po +18 -19
- holidays/locale/en_US/LC_MESSAGES/UY.po +15 -15
- holidays/locale/en_US/LC_MESSAGES/VE.po +16 -16
- holidays/locale/es/LC_MESSAGES/AR.mo +0 -0
- holidays/locale/es/LC_MESSAGES/AR.po +34 -33
- holidays/locale/es/LC_MESSAGES/CL.po +39 -38
- holidays/locale/es/LC_MESSAGES/CO.mo +0 -0
- holidays/locale/es/LC_MESSAGES/CO.po +24 -24
- holidays/locale/es/LC_MESSAGES/CR.mo +0 -0
- holidays/locale/es/LC_MESSAGES/CR.po +19 -19
- holidays/locale/es/LC_MESSAGES/CU.po +10 -10
- holidays/locale/es/LC_MESSAGES/DO.po +12 -12
- holidays/locale/es/LC_MESSAGES/EC.po +11 -12
- holidays/locale/es/LC_MESSAGES/HN.mo +0 -0
- holidays/locale/es/LC_MESSAGES/HN.po +17 -12
- holidays/locale/es/LC_MESSAGES/MX.po +9 -12
- holidays/locale/es/LC_MESSAGES/NI.po +12 -12
- holidays/locale/es/LC_MESSAGES/PE.po +30 -30
- holidays/locale/es/LC_MESSAGES/PY.po +16 -16
- holidays/locale/es/LC_MESSAGES/UY.po +15 -15
- holidays/locale/es/LC_MESSAGES/VE.po +16 -16
- holidays/locale/fi/LC_MESSAGES/FI.po +16 -16
- holidays/locale/fr/LC_MESSAGES/CA.po +43 -43
- holidays/locale/fr/LC_MESSAGES/CH.po +91 -56
- holidays/locale/fr/LC_MESSAGES/FR.po +27 -24
- holidays/locale/fr/LC_MESSAGES/MC.po +23 -23
- holidays/locale/hu/LC_MESSAGES/HU.mo +0 -0
- holidays/locale/hu/LC_MESSAGES/HU.po +109 -0
- holidays/locale/hy/LC_MESSAGES/AM.po +16 -16
- holidays/locale/is/LC_MESSAGES/IS.po +18 -18
- holidays/locale/it/LC_MESSAGES/CH.po +91 -56
- holidays/locale/ja/LC_MESSAGES/JP.po +25 -25
- holidays/locale/ka/LC_MESSAGES/GE.po +23 -27
- holidays/locale/km/LC_MESSAGES/KH.mo +0 -0
- holidays/locale/km/LC_MESSAGES/KH.po +139 -0
- holidays/locale/ms/LC_MESSAGES/BN.mo +0 -0
- holidays/locale/ms/LC_MESSAGES/BN.po +96 -0
- holidays/locale/nl/LC_MESSAGES/AW.mo +0 -0
- holidays/locale/nl/LC_MESSAGES/AW.po +87 -0
- holidays/locale/nl/LC_MESSAGES/CW.mo +0 -0
- holidays/locale/nl/LC_MESSAGES/CW.po +82 -0
- holidays/locale/nl/LC_MESSAGES/NL.po +13 -13
- holidays/locale/no/LC_MESSAGES/NO.po +14 -14
- holidays/locale/pap/LC_MESSAGES/AW.mo +0 -0
- holidays/locale/pap/LC_MESSAGES/AW.po +87 -0
- holidays/locale/pap/LC_MESSAGES/CW.mo +0 -0
- holidays/locale/pap/LC_MESSAGES/CW.po +82 -0
- holidays/locale/pl/LC_MESSAGES/PL.po +38 -21
- holidays/locale/pt_PT/LC_MESSAGES/PT.po +39 -36
- holidays/locale/ro/LC_MESSAGES/MD.po +14 -15
- holidays/locale/ro/LC_MESSAGES/RO.po +13 -14
- holidays/locale/ru/LC_MESSAGES/RU.po +11 -9
- holidays/locale/sk/LC_MESSAGES/SK.po +17 -18
- holidays/locale/sr/LC_MESSAGES/RS.mo +0 -0
- holidays/locale/sr/LC_MESSAGES/RS.po +15 -17
- holidays/locale/sv/LC_MESSAGES/FI.po +16 -16
- holidays/locale/sv/LC_MESSAGES/SE.po +20 -20
- holidays/locale/th/LC_MESSAGES/BN.mo +0 -0
- holidays/locale/th/LC_MESSAGES/BN.po +96 -0
- holidays/locale/th/LC_MESSAGES/CA.po +42 -42
- holidays/locale/th/LC_MESSAGES/KH.mo +0 -0
- holidays/locale/th/LC_MESSAGES/KH.po +145 -0
- holidays/locale/th/LC_MESSAGES/TH.po +41 -41
- holidays/locale/uk/LC_MESSAGES/AR.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/AR.po +35 -35
- holidays/locale/uk/LC_MESSAGES/AT.po +15 -16
- holidays/locale/uk/LC_MESSAGES/AW.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/AW.po +87 -0
- holidays/locale/uk/LC_MESSAGES/CH.po +92 -58
- holidays/locale/uk/LC_MESSAGES/CL.po +40 -40
- holidays/locale/uk/LC_MESSAGES/CO.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/CO.po +28 -29
- holidays/locale/uk/LC_MESSAGES/CR.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/CR.po +20 -21
- holidays/locale/uk/LC_MESSAGES/CU.po +11 -12
- holidays/locale/uk/LC_MESSAGES/CW.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/CW.po +82 -0
- holidays/locale/uk/LC_MESSAGES/DE.po +33 -34
- holidays/locale/uk/LC_MESSAGES/DK.po +14 -14
- holidays/locale/uk/LC_MESSAGES/DO.po +13 -14
- holidays/locale/uk/LC_MESSAGES/EC.po +12 -14
- holidays/locale/uk/LC_MESSAGES/FI.po +17 -18
- holidays/locale/uk/LC_MESSAGES/FR.po +28 -26
- holidays/locale/uk/LC_MESSAGES/HN.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/HN.po +18 -14
- holidays/locale/uk/LC_MESSAGES/HU.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/HU.po +109 -0
- holidays/locale/uk/LC_MESSAGES/IS.po +19 -20
- holidays/locale/uk/LC_MESSAGES/LI.po +24 -25
- holidays/locale/uk/LC_MESSAGES/MC.po +27 -28
- holidays/locale/uk/LC_MESSAGES/MD.po +14 -15
- holidays/locale/uk/LC_MESSAGES/MX.po +10 -14
- holidays/locale/uk/LC_MESSAGES/NI.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/NI.po +16 -17
- holidays/locale/uk/LC_MESSAGES/NL.po +14 -15
- holidays/locale/uk/LC_MESSAGES/NO.po +15 -16
- holidays/locale/uk/LC_MESSAGES/PE.po +31 -32
- holidays/locale/uk/LC_MESSAGES/PL.po +38 -21
- holidays/locale/uk/LC_MESSAGES/PY.po +17 -18
- holidays/locale/uk/LC_MESSAGES/RO.po +13 -14
- holidays/locale/uk/LC_MESSAGES/SE.po +21 -22
- holidays/locale/uk/LC_MESSAGES/SK.po +18 -20
- holidays/locale/uk/LC_MESSAGES/UA.po +17 -17
- holidays/locale/uk/LC_MESSAGES/UY.po +16 -17
- holidays/locale/uk/LC_MESSAGES/VE.po +17 -18
- holidays/registry.py +21 -12
- holidays/utils.py +87 -17
- {holidays-0.25.dist-info → holidays-0.27.dist-info}/METADATA +282 -265
- holidays-0.27.dist-info/RECORD +449 -0
- holidays-0.25.dist-info/RECORD +0 -390
- {holidays-0.25.dist-info → holidays-0.27.dist-info}/LICENSE +0 -0
- {holidays-0.25.dist-info → holidays-0.27.dist-info}/WHEEL +0 -0
- {holidays-0.25.dist-info → holidays-0.27.dist-info}/top_level.txt +0 -0
holidays/countries/japan.py
CHANGED
|
@@ -15,8 +15,8 @@ from gettext import gettext as tr
|
|
|
15
15
|
from typing import Tuple
|
|
16
16
|
|
|
17
17
|
from holidays.calendars import _get_nth_weekday_of_month
|
|
18
|
-
from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP
|
|
19
|
-
from holidays.
|
|
18
|
+
from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, MON
|
|
19
|
+
from holidays.helpers import _normalize_tuple
|
|
20
20
|
from holidays.holiday_base import HolidayBase
|
|
21
21
|
|
|
22
22
|
|
|
@@ -28,15 +28,16 @@ class Japan(HolidayBase):
|
|
|
28
28
|
country = "JP"
|
|
29
29
|
default_language = "ja"
|
|
30
30
|
special_holidays = {
|
|
31
|
-
1959: (
|
|
32
|
-
1989: (
|
|
33
|
-
1990: (
|
|
34
|
-
1993: (
|
|
31
|
+
1959: (APR, 10, tr("結婚の儀")), # The Crown Prince marriage ceremony.
|
|
32
|
+
1989: (FEB, 24, tr("大喪の礼")), # State Funeral of Emperor Shōwa.
|
|
33
|
+
1990: (NOV, 12, tr("即位礼正殿の儀")), # Enthronement ceremony.
|
|
34
|
+
1993: (JUN, 9, tr("結婚の儀")), # The Crown Prince marriage ceremony.
|
|
35
35
|
2019: (
|
|
36
36
|
(MAY, 1, tr("天皇の即位の日")), # Enthronement day.
|
|
37
37
|
(OCT, 22, tr("即位礼正殿の儀が行われる日")), # Enthronement ceremony.
|
|
38
38
|
),
|
|
39
39
|
}
|
|
40
|
+
supported_languages = ("en_US", "ja")
|
|
40
41
|
|
|
41
42
|
def _populate(self, year):
|
|
42
43
|
if year < 1949 or year > 2099:
|
|
@@ -67,9 +68,7 @@ class Japan(HolidayBase):
|
|
|
67
68
|
observed_dates.add(self._add_holiday(tr("天皇誕生日"), FEB, 23))
|
|
68
69
|
|
|
69
70
|
# Vernal Equinox Day.
|
|
70
|
-
observed_dates.add(
|
|
71
|
-
self._add_holiday(tr("春分の日"), *self._vernal_equinox_date)
|
|
72
|
-
)
|
|
71
|
+
observed_dates.add(self._add_holiday(tr("春分の日"), *self._vernal_equinox_date))
|
|
73
72
|
|
|
74
73
|
# Showa Emperor's Birthday, Greenery Day or Showa Day.
|
|
75
74
|
if year <= 1988:
|
|
@@ -100,9 +99,7 @@ class Japan(HolidayBase):
|
|
|
100
99
|
2020: date(2020, JUL, 23),
|
|
101
100
|
2021: date(2021, JUL, 22),
|
|
102
101
|
}
|
|
103
|
-
dt = dates.get(
|
|
104
|
-
year, _get_nth_weekday_of_month(3, MON, JUL, year)
|
|
105
|
-
)
|
|
102
|
+
dt = dates.get(year, _get_nth_weekday_of_month(3, MON, JUL, year))
|
|
106
103
|
# Marine Day.
|
|
107
104
|
observed_dates.add(self._add_holiday(tr("海の日"), dt))
|
|
108
105
|
|
|
@@ -127,9 +124,7 @@ class Japan(HolidayBase):
|
|
|
127
124
|
)
|
|
128
125
|
|
|
129
126
|
# Autumnal Equinox Day.
|
|
130
|
-
observed_dates.add(
|
|
131
|
-
self._add_holiday(tr("秋分の日"), *self._autumnal_equinox_date)
|
|
132
|
-
)
|
|
127
|
+
observed_dates.add(self._add_holiday(tr("秋分の日"), *self._autumnal_equinox_date))
|
|
133
128
|
|
|
134
129
|
# Physical Education and Sports Day.
|
|
135
130
|
if year >= 1966:
|
|
@@ -163,7 +158,7 @@ class Japan(HolidayBase):
|
|
|
163
158
|
observed_dates.add(self._add_holiday(tr("天皇誕生日"), DEC, 23))
|
|
164
159
|
|
|
165
160
|
if self.observed:
|
|
166
|
-
for month, day, _ in self.special_holidays.get(year, ()):
|
|
161
|
+
for month, day, _ in _normalize_tuple(self.special_holidays.get(year, ())):
|
|
167
162
|
observed_dates.add(date(year, month, day))
|
|
168
163
|
|
|
169
164
|
# When a national holiday falls on Sunday, next working day
|
holidays/countries/kazakhstan.py
CHANGED
|
@@ -14,13 +14,10 @@ from datetime import timedelta as td
|
|
|
14
14
|
from holidays.calendars import JULIAN_CALENDAR
|
|
15
15
|
from holidays.constants import MAR, MAY, JUL, AUG, OCT, DEC
|
|
16
16
|
from holidays.holiday_base import HolidayBase
|
|
17
|
-
from holidays.holiday_groups import ChristianHolidays, IslamicHolidays
|
|
18
|
-
from holidays.holiday_groups import InternationalHolidays
|
|
17
|
+
from holidays.holiday_groups import ChristianHolidays, IslamicHolidays, InternationalHolidays
|
|
19
18
|
|
|
20
19
|
|
|
21
|
-
class Kazakhstan(
|
|
22
|
-
HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays
|
|
23
|
-
):
|
|
20
|
+
class Kazakhstan(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays):
|
|
24
21
|
"""
|
|
25
22
|
1. https://www.officeholidays.com/countries/kazakhstan/2020
|
|
26
23
|
2. https://egov.kz/cms/en/articles/holidays-calend
|
|
@@ -65,15 +62,11 @@ class Kazakhstan(
|
|
|
65
62
|
observed_dates.add(self._add_holiday(name, MAR, 23))
|
|
66
63
|
|
|
67
64
|
# Kazakhstan People Solidarity Holiday
|
|
68
|
-
observed_dates.add(
|
|
69
|
-
self._add_labor_day("Kazakhstan People Solidarity Holiday")
|
|
70
|
-
)
|
|
65
|
+
observed_dates.add(self._add_labor_day("Kazakhstan People Solidarity Holiday"))
|
|
71
66
|
|
|
72
67
|
# Defender of the Fatherland Day
|
|
73
68
|
if year >= 2013:
|
|
74
|
-
observed_dates.add(
|
|
75
|
-
self._add_holiday("Defender of the Fatherland Day", MAY, 7)
|
|
76
|
-
)
|
|
69
|
+
observed_dates.add(self._add_holiday("Defender of the Fatherland Day", MAY, 7))
|
|
77
70
|
|
|
78
71
|
# Victory Day
|
|
79
72
|
observed_dates.add(self._add_world_war_two_victory_day("Victory Day"))
|
|
@@ -85,9 +78,7 @@ class Kazakhstan(
|
|
|
85
78
|
# Constitution Day of the Republic of Kazakhstan
|
|
86
79
|
if year >= 1996:
|
|
87
80
|
observed_dates.add(
|
|
88
|
-
self._add_holiday(
|
|
89
|
-
"Constitution Day of the Republic of Kazakhstan", AUG, 30
|
|
90
|
-
)
|
|
81
|
+
self._add_holiday("Constitution Day of the Republic of Kazakhstan", AUG, 30)
|
|
91
82
|
)
|
|
92
83
|
|
|
93
84
|
# Republic Day
|
|
@@ -96,9 +87,7 @@ class Kazakhstan(
|
|
|
96
87
|
|
|
97
88
|
# First President Day
|
|
98
89
|
if 2012 <= year <= 2021:
|
|
99
|
-
observed_dates.add(
|
|
100
|
-
self._add_holiday("First President Day", DEC, 1)
|
|
101
|
-
)
|
|
90
|
+
observed_dates.add(self._add_holiday("First President Day", DEC, 1))
|
|
102
91
|
|
|
103
92
|
# Kazakhstan Independence Day
|
|
104
93
|
name = "Kazakhstan Independence Day"
|
|
@@ -117,11 +106,7 @@ class Kazakhstan(
|
|
|
117
106
|
obs_date = hol_date + td(days=+1)
|
|
118
107
|
while self._is_weekend(obs_date) or obs_date in observed_dates:
|
|
119
108
|
obs_date += td(days=+1)
|
|
120
|
-
observed_dates.add(
|
|
121
|
-
self._add_holiday(
|
|
122
|
-
"%s (Observed)" % self[hol_date], obs_date
|
|
123
|
-
)
|
|
124
|
-
)
|
|
109
|
+
observed_dates.add(self._add_holiday("%s (Observed)" % self[hol_date], obs_date))
|
|
125
110
|
|
|
126
111
|
|
|
127
112
|
class KZ(Kazakhstan):
|
holidays/countries/kenya.py
CHANGED
|
@@ -12,13 +12,12 @@
|
|
|
12
12
|
from datetime import date
|
|
13
13
|
from datetime import timedelta as td
|
|
14
14
|
|
|
15
|
-
from
|
|
16
|
-
|
|
17
|
-
from holidays.constants import JAN, FEB, APR, MAY, JUN, AUG, SEP, OCT, DEC
|
|
15
|
+
from holidays.constants import FEB, APR, JUN, AUG, SEP, OCT, DEC
|
|
18
16
|
from holidays.holiday_base import HolidayBase
|
|
17
|
+
from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
|
|
19
18
|
|
|
20
19
|
|
|
21
|
-
class Kenya(HolidayBase):
|
|
20
|
+
class Kenya(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
22
21
|
"""
|
|
23
22
|
https://en.wikipedia.org/wiki/Public_holidays_in_Kenya
|
|
24
23
|
http://kenyaembassyberlin.de/Public-Holidays-in-Kenya.48.0.html
|
|
@@ -38,45 +37,64 @@ class Kenya(HolidayBase):
|
|
|
38
37
|
),
|
|
39
38
|
}
|
|
40
39
|
|
|
40
|
+
def __init__(self, *args, **kwargs):
|
|
41
|
+
ChristianHolidays.__init__(self)
|
|
42
|
+
InternationalHolidays.__init__(self)
|
|
43
|
+
super().__init__(*args, **kwargs)
|
|
44
|
+
|
|
41
45
|
def _populate(self, year):
|
|
42
|
-
def
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
self[hol_date] = hol_name
|
|
46
|
-
if self.observed and self._is_sunday(hol_date):
|
|
47
|
-
self[hol_date + td(days=days)] = f"{hol_name} (Observed)"
|
|
46
|
+
def _add_observed(dt: date, days: int = +1) -> None:
|
|
47
|
+
if self.observed and self._is_sunday(dt):
|
|
48
|
+
self._add_holiday("%s (Observed)" % self[dt], dt + td(days=days))
|
|
48
49
|
|
|
49
50
|
if year <= 1962:
|
|
50
51
|
return None
|
|
51
52
|
|
|
52
53
|
super()._populate(year)
|
|
53
54
|
|
|
54
|
-
#
|
|
55
|
-
|
|
55
|
+
# New Year's Day
|
|
56
|
+
_add_observed(self._add_new_years_day("New Year's Day"))
|
|
57
|
+
|
|
58
|
+
# Good Friday
|
|
59
|
+
self._add_good_friday("Good Friday")
|
|
56
60
|
|
|
57
|
-
|
|
58
|
-
self
|
|
59
|
-
self[easter_date + td(days=+1)] = "Easter Monday"
|
|
61
|
+
# Easter Monday
|
|
62
|
+
self._add_easter_monday("Easter Monday")
|
|
60
63
|
|
|
61
|
-
|
|
64
|
+
# Labour Day
|
|
65
|
+
_add_observed(self._add_labor_day("Labour Day"))
|
|
62
66
|
|
|
63
67
|
if year >= 2010:
|
|
64
|
-
|
|
68
|
+
# Mandaraka Day
|
|
69
|
+
_add_observed(self._add_holiday("Madaraka Day", JUN, 1))
|
|
65
70
|
|
|
66
71
|
if 2002 <= year <= 2009 or year >= 2018:
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
72
|
+
_add_observed(
|
|
73
|
+
self._add_holiday(
|
|
74
|
+
# Utamaduni/Moi Day
|
|
75
|
+
"Utamaduni Day" if year >= 2021 else "Moi Day",
|
|
76
|
+
OCT,
|
|
77
|
+
10,
|
|
78
|
+
)
|
|
70
79
|
)
|
|
71
80
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
81
|
+
_add_observed(
|
|
82
|
+
self._add_holiday(
|
|
83
|
+
# Mashuja/Kenyatta Day
|
|
84
|
+
"Mashujaa Day" if year >= 2010 else "Kenyatta Day",
|
|
85
|
+
OCT,
|
|
86
|
+
20,
|
|
87
|
+
)
|
|
75
88
|
)
|
|
76
89
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
90
|
+
# Jamhuri Day
|
|
91
|
+
_add_observed(self._add_holiday("Jamhuri Day", DEC, 12))
|
|
92
|
+
|
|
93
|
+
# Christmas Day
|
|
94
|
+
_add_observed(self._add_christmas_day("Christmas Day"), days=+2)
|
|
95
|
+
|
|
96
|
+
# Boxing Day
|
|
97
|
+
_add_observed(self._add_christmas_day_two("Boxing Day"))
|
|
80
98
|
|
|
81
99
|
|
|
82
100
|
class KE(Kenya):
|
holidays/countries/kyrgyzstan.py
CHANGED
|
@@ -12,13 +12,10 @@
|
|
|
12
12
|
from holidays.calendars import JULIAN_CALENDAR
|
|
13
13
|
from holidays.constants import FEB, MAR, APR, MAY, AUG, NOV
|
|
14
14
|
from holidays.holiday_base import HolidayBase
|
|
15
|
-
from holidays.holiday_groups import ChristianHolidays, IslamicHolidays
|
|
16
|
-
from holidays.holiday_groups import InternationalHolidays
|
|
15
|
+
from holidays.holiday_groups import ChristianHolidays, IslamicHolidays, InternationalHolidays
|
|
17
16
|
|
|
18
17
|
|
|
19
|
-
class Kyrgyzstan(
|
|
20
|
-
HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays
|
|
21
|
-
):
|
|
18
|
+
class Kyrgyzstan(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays):
|
|
22
19
|
"""
|
|
23
20
|
Kyrgyzstan holidays.
|
|
24
21
|
|
holidays/countries/latvia.py
CHANGED
|
@@ -48,9 +48,7 @@ class Latvia(HolidayBase):
|
|
|
48
48
|
# Latvia proclaimed its independence from the USSR,
|
|
49
49
|
# and restoration of the Republic of Latvia.
|
|
50
50
|
if year >= 1990:
|
|
51
|
-
self[
|
|
52
|
-
date(year, 5, 4)
|
|
53
|
-
] = "Latvijas Republikas Neatkarības atjaunošanas diena"
|
|
51
|
+
self[date(year, 5, 4)] = "Latvijas Republikas Neatkarības atjaunošanas diena"
|
|
54
52
|
|
|
55
53
|
# by law
|
|
56
54
|
# https://likumi.lv/ta/id/72608-par-svetku-atceres-un-atzimejamam-dienam
|
|
@@ -65,9 +63,7 @@ class Latvia(HolidayBase):
|
|
|
65
63
|
|
|
66
64
|
# Proclamation Day of the Republic of Latvia
|
|
67
65
|
if year >= 1918:
|
|
68
|
-
self[
|
|
69
|
-
date(year, 11, 18)
|
|
70
|
-
] = "Latvijas Republikas proklamēšanas diena"
|
|
66
|
+
self[date(year, 11, 18)] = "Latvijas Republikas proklamēšanas diena"
|
|
71
67
|
|
|
72
68
|
# Christmas Eve
|
|
73
69
|
self[date(year, 12, 24)] = "Ziemassvētku vakars"
|
holidays/countries/lesotho.py
CHANGED
|
@@ -9,56 +9,76 @@
|
|
|
9
9
|
# Website: https://github.com/dr-prodigy/python-holidays
|
|
10
10
|
# License: MIT (see LICENSE file)
|
|
11
11
|
|
|
12
|
-
from
|
|
13
|
-
from datetime import timedelta as td
|
|
14
|
-
|
|
15
|
-
from dateutil.easter import easter
|
|
16
|
-
|
|
17
|
-
from holidays.constants import JAN, MAR, APR, MAY, JUL, OCT, DEC
|
|
12
|
+
from holidays.constants import MAR, APR, MAY, JUL, OCT
|
|
18
13
|
from holidays.holiday_base import HolidayBase
|
|
14
|
+
from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
|
|
19
15
|
|
|
20
16
|
|
|
21
|
-
class Lesotho(HolidayBase):
|
|
17
|
+
class Lesotho(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
22
18
|
"""
|
|
23
|
-
|
|
24
|
-
https://
|
|
19
|
+
References:
|
|
20
|
+
- https://en.wikipedia.org/wiki/Public_holidays_in_Lesotho
|
|
21
|
+
- https://www.ilo.org/dyn/travail/docs/2093/Public%20Holidays%20Act%201995.pdf # noqa: E501
|
|
22
|
+
- https://www.timeanddate.com/holidays/lesotho/
|
|
25
23
|
"""
|
|
26
24
|
|
|
27
25
|
country = "LS"
|
|
28
26
|
special_holidays = {
|
|
29
|
-
|
|
30
|
-
2002: ((APR, 4, "Heroes Day"), (MAY, 25, "Africa Day"))
|
|
27
|
+
2002: (MAY, 25, "Africa Day"),
|
|
31
28
|
}
|
|
32
29
|
|
|
30
|
+
def __init__(self, *args, **kwargs):
|
|
31
|
+
ChristianHolidays.__init__(self)
|
|
32
|
+
InternationalHolidays.__init__(self)
|
|
33
|
+
super().__init__(*args, **kwargs)
|
|
34
|
+
|
|
33
35
|
def _populate(self, year):
|
|
36
|
+
if year <= 1995:
|
|
37
|
+
return None
|
|
38
|
+
|
|
34
39
|
super()._populate(year)
|
|
35
40
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
# New Year's Day.
|
|
42
|
+
self._add_new_years_day("New Year's Day")
|
|
43
|
+
|
|
44
|
+
# Moshoeshoe's Day.
|
|
45
|
+
self._add_holiday("Moshoeshoe's Day", MAR, 11)
|
|
46
|
+
|
|
47
|
+
if year <= 2002:
|
|
48
|
+
# Heroes Day.
|
|
49
|
+
self._add_holiday("Heroes Day", APR, 4)
|
|
50
|
+
|
|
51
|
+
if year >= 2003:
|
|
52
|
+
# Africa/Heroes Day.
|
|
53
|
+
self._add_africa_day("Africa/Heroes Day")
|
|
54
|
+
|
|
55
|
+
# Good Friday.
|
|
56
|
+
self._add_good_friday("Good Friday")
|
|
57
|
+
|
|
58
|
+
# Easter Monday.
|
|
59
|
+
self._add_easter_monday("Easter Monday")
|
|
60
|
+
|
|
61
|
+
# Workers' Day.
|
|
62
|
+
self._add_labor_day("Workers' Day")
|
|
40
63
|
|
|
41
|
-
|
|
42
|
-
|
|
64
|
+
# Ascension Day.
|
|
65
|
+
self._add_ascension_thursday("Ascension Day")
|
|
43
66
|
|
|
44
|
-
|
|
45
|
-
|
|
67
|
+
# https://en.wikipedia.org/wiki/Letsie_III
|
|
68
|
+
self._add_holiday(
|
|
69
|
+
# King's Birthday.
|
|
70
|
+
"King's Birthday",
|
|
71
|
+
*((JUL, 17) if year >= 1998 else (MAY, 2)),
|
|
72
|
+
)
|
|
46
73
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
self[easter_date + td(days=+1)] = "Easter Monday"
|
|
50
|
-
self[easter_date + td(days=+39)] = "Ascension Day"
|
|
51
|
-
self[date(year, MAY, 1)] = "Workers' Day"
|
|
74
|
+
# Independence Day.
|
|
75
|
+
self._add_holiday("Independence Day", OCT, 4)
|
|
52
76
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
self[date(year, JUL, 17)] = "King's Birthday"
|
|
56
|
-
if year <= 1997:
|
|
57
|
-
self[date(year, MAY, 2)] = "King's Birthday"
|
|
77
|
+
# Christmas Day.
|
|
78
|
+
self._add_christmas_day("Christmas Day")
|
|
58
79
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
self[date(year, DEC, 26)] = "Boxing Day"
|
|
80
|
+
# Boxing Day.
|
|
81
|
+
self._add_christmas_day_two("Boxing Day")
|
|
62
82
|
|
|
63
83
|
|
|
64
84
|
class LS(Lesotho):
|
holidays/countries/lithuania.py
CHANGED
|
@@ -44,9 +44,7 @@ class Lithuania(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
44
44
|
# Day of Restoration of Independence of Lithuania
|
|
45
45
|
# (from the Soviet Union, 1990).
|
|
46
46
|
if year >= 1990:
|
|
47
|
-
self._add_holiday(
|
|
48
|
-
"Lietuvos nepriklausomybės atkūrimo diena", MAR, 11
|
|
49
|
-
)
|
|
47
|
+
self._add_holiday("Lietuvos nepriklausomybės atkūrimo diena", MAR, 11)
|
|
50
48
|
|
|
51
49
|
# Easter.
|
|
52
50
|
self._add_easter_sunday("Velykos")
|
|
@@ -58,14 +56,10 @@ class Lithuania(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
58
56
|
self._add_labor_day("Tarptautinė darbo diena")
|
|
59
57
|
|
|
60
58
|
# Mother's day. First Sunday in May.
|
|
61
|
-
self._add_holiday(
|
|
62
|
-
"Motinos diena", _get_nth_weekday_of_month(1, SUN, MAY, year)
|
|
63
|
-
)
|
|
59
|
+
self._add_holiday("Motinos diena", _get_nth_weekday_of_month(1, SUN, MAY, year))
|
|
64
60
|
|
|
65
61
|
# Fathers's day. First Sunday in June.
|
|
66
|
-
self._add_holiday(
|
|
67
|
-
"Tėvo diena", _get_nth_weekday_of_month(1, SUN, JUN, year)
|
|
68
|
-
)
|
|
62
|
+
self._add_holiday("Tėvo diena", _get_nth_weekday_of_month(1, SUN, JUN, year))
|
|
69
63
|
|
|
70
64
|
# St. John's Day (Christian name).
|
|
71
65
|
# Day of Dew (original pagan name).
|
|
@@ -81,9 +75,7 @@ class Lithuania(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
81
75
|
)
|
|
82
76
|
|
|
83
77
|
# Assumption Day.
|
|
84
|
-
self._add_assumption_of_mary_day(
|
|
85
|
-
"Žolinė (Švč. Mergelės Marijos ėmimo į dangų diena)"
|
|
86
|
-
)
|
|
78
|
+
self._add_assumption_of_mary_day("Žolinė (Švč. Mergelės Marijos ėmimo į dangų diena)")
|
|
87
79
|
|
|
88
80
|
# All Saints' Day.
|
|
89
81
|
self._add_all_saints_day("Visų šventųjų diena (Vėlinės)")
|
holidays/countries/madagascar.py
CHANGED
|
@@ -38,16 +38,12 @@ class Madagascar(HolidayBase):
|
|
|
38
38
|
self[date(year, MAR, 8)] = "Fetin'ny vehivavy / Women's Day"
|
|
39
39
|
self[date(year, MAR, 29)] = "Fetin'ny mahery fo / Martyrs' Day"
|
|
40
40
|
self[date(year, MAY, 1)] = "Labour Day"
|
|
41
|
-
self[
|
|
42
|
-
_get_nth_weekday_of_month(3, SUN, JUN, year)
|
|
43
|
-
] = "Fetin'ny ray / Father's Day"
|
|
41
|
+
self[_get_nth_weekday_of_month(3, SUN, JUN, year)] = "Fetin'ny ray / Father's Day"
|
|
44
42
|
|
|
45
43
|
if year >= 1960:
|
|
46
44
|
self[date(year, JUN, 26)] = "Independence Day"
|
|
47
45
|
|
|
48
|
-
self[
|
|
49
|
-
date(year, AUG, 15)
|
|
50
|
-
] = "Fiakaran'ny Masina Maria tany an-danitra / Assumption Day"
|
|
46
|
+
self[date(year, AUG, 15)] = "Fiakaran'ny Masina Maria tany an-danitra / Assumption Day"
|
|
51
47
|
|
|
52
48
|
self[date(year, NOV, 1)] = "Fetin'ny olo-masina / All Saints' Day"
|
|
53
49
|
|
|
@@ -66,9 +62,7 @@ class Madagascar(HolidayBase):
|
|
|
66
62
|
whit_sunday = easter_date + td(days=+49)
|
|
67
63
|
self[whit_sunday] = "Pentekosta / Whit Sunday"
|
|
68
64
|
|
|
69
|
-
self[
|
|
70
|
-
easter_date + td(days=+50)
|
|
71
|
-
] = "Alatsinain'ny pentekosta / Whit Monday"
|
|
65
|
+
self[easter_date + td(days=+50)] = "Alatsinain'ny pentekosta / Whit Monday"
|
|
72
66
|
|
|
73
67
|
dt = _get_nth_weekday_of_month(-1, SUN, MAY, year)
|
|
74
68
|
if dt == whit_sunday:
|
holidays/countries/malawi.py
CHANGED
|
@@ -12,13 +12,12 @@
|
|
|
12
12
|
from datetime import date
|
|
13
13
|
from datetime import timedelta as td
|
|
14
14
|
|
|
15
|
-
from
|
|
16
|
-
|
|
17
|
-
from holidays.constants import JAN, MAR, MAY, JUL, OCT, DEC
|
|
15
|
+
from holidays.constants import JAN, MAR, MAY, JUL, OCT
|
|
18
16
|
from holidays.holiday_base import HolidayBase
|
|
17
|
+
from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
|
|
19
18
|
|
|
20
19
|
|
|
21
|
-
class Malawi(HolidayBase):
|
|
20
|
+
class Malawi(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
22
21
|
"""
|
|
23
22
|
https://www.officeholidays.com/countries/malawi
|
|
24
23
|
https://www.timeanddate.com/holidays/malawi/
|
|
@@ -26,37 +25,46 @@ class Malawi(HolidayBase):
|
|
|
26
25
|
|
|
27
26
|
country = "MW"
|
|
28
27
|
|
|
29
|
-
def
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
)
|
|
38
|
-
|
|
28
|
+
def __init__(self, *args, **kwargs):
|
|
29
|
+
ChristianHolidays.__init__(self)
|
|
30
|
+
InternationalHolidays.__init__(self)
|
|
31
|
+
super().__init__(*args, **kwargs)
|
|
32
|
+
|
|
33
|
+
def _add_observed(self, dt: date, days: int = +1) -> None:
|
|
34
|
+
if self.observed and self._is_weekend(dt):
|
|
35
|
+
self._add_holiday(
|
|
36
|
+
"%s (Observed)" % self[dt],
|
|
37
|
+
dt + td(+2 if self._is_saturday(dt) else days),
|
|
38
|
+
)
|
|
39
39
|
|
|
40
|
+
def _populate(self, year):
|
|
40
41
|
# Observed since 2000
|
|
41
42
|
if year <= 1999:
|
|
42
43
|
return None
|
|
43
44
|
|
|
44
45
|
super()._populate(year)
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
self._add_observed(self._add_new_years_day("New Year's Day"))
|
|
48
|
+
|
|
49
|
+
self._add_observed(self._add_holiday("John Chilembwe Day", JAN, 15))
|
|
50
|
+
|
|
51
|
+
self._add_observed(self._add_holiday("Martyrs Day", MAR, 3))
|
|
52
|
+
|
|
53
|
+
self._add_good_friday("Good Friday")
|
|
54
|
+
|
|
55
|
+
self._add_easter_monday("Easter Monday")
|
|
56
|
+
|
|
57
|
+
self._add_observed(self._add_labor_day("Labour Day"))
|
|
58
|
+
|
|
59
|
+
self._add_observed(self._add_holiday("Kamuzu Day", MAY, 14))
|
|
60
|
+
|
|
61
|
+
self._add_observed(self._add_holiday("Independence Day", JUL, 6))
|
|
62
|
+
|
|
63
|
+
self._add_observed(self._add_holiday("Mother's Day", OCT, 15))
|
|
49
64
|
|
|
50
|
-
|
|
51
|
-
self[easter_date + td(days=-2)] = "Good Friday"
|
|
52
|
-
self[easter_date + td(days=+1)] = "Easter Monday"
|
|
65
|
+
self._add_observed(self._add_christmas_day("Christmas Day"), days=+2)
|
|
53
66
|
|
|
54
|
-
|
|
55
|
-
_add_with_observed(date(year, MAY, 14), "Kamuzu Day")
|
|
56
|
-
_add_with_observed(date(year, JUL, 6), "Independence Day")
|
|
57
|
-
_add_with_observed(date(year, OCT, 15), "Mother's Day")
|
|
58
|
-
_add_with_observed(date(year, DEC, 25), "Christmas Day", days=+2)
|
|
59
|
-
_add_with_observed(date(year, DEC, 26), "Boxing Day", days=+2)
|
|
67
|
+
self._add_observed(self._add_christmas_day_two("Boxing Day"), days=+2)
|
|
60
68
|
|
|
61
69
|
|
|
62
70
|
class MW(Malawi):
|