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.
Files changed (331) hide show
  1. holidays/__init__.py +1 -1
  2. holidays/calendars/__init__.py +9 -7
  3. holidays/calendars/buddhist.py +445 -0
  4. holidays/calendars/chinese.py +1238 -431
  5. holidays/calendars/custom.py +1 -3
  6. holidays/calendars/hebrew.py +2 -2
  7. holidays/calendars/hindu.py +445 -0
  8. holidays/calendars/islamic.py +1347 -1347
  9. holidays/calendars/thai.py +229 -38
  10. holidays/countries/__init__.py +8 -0
  11. holidays/countries/albania.py +6 -17
  12. holidays/countries/andorra.py +2 -6
  13. holidays/countries/angola.py +53 -39
  14. holidays/countries/argentina.py +25 -35
  15. holidays/countries/armenia.py +1 -0
  16. holidays/countries/aruba.py +109 -48
  17. holidays/countries/australia.py +31 -69
  18. holidays/countries/austria.py +1 -0
  19. holidays/countries/azerbaijan.py +44 -71
  20. holidays/countries/bahrain.py +7 -7
  21. holidays/countries/bangladesh.py +1 -3
  22. holidays/countries/belarus.py +2 -3
  23. holidays/countries/belize.py +128 -0
  24. holidays/countries/bolivia.py +2 -6
  25. holidays/countries/bosnia_and_herzegovina.py +5 -17
  26. holidays/countries/botswana.py +37 -44
  27. holidays/countries/brazil.py +4 -7
  28. holidays/countries/brunei.py +427 -0
  29. holidays/countries/bulgaria.py +3 -6
  30. holidays/countries/burkina_faso.py +141 -0
  31. holidays/countries/burundi.py +2 -5
  32. holidays/countries/cambodia.py +323 -0
  33. holidays/countries/cameroon.py +183 -0
  34. holidays/countries/canada.py +20 -28
  35. holidays/countries/chad.py +133 -0
  36. holidays/countries/chile.py +6 -13
  37. holidays/countries/china.py +21 -25
  38. holidays/countries/colombia.py +18 -15
  39. holidays/countries/costa_rica.py +25 -27
  40. holidays/countries/cuba.py +28 -15
  41. holidays/countries/curacao.py +100 -46
  42. holidays/countries/cyprus.py +3 -6
  43. holidays/countries/czechia.py +4 -12
  44. holidays/countries/denmark.py +2 -3
  45. holidays/countries/dominican_republic.py +2 -3
  46. holidays/countries/ecuador.py +55 -54
  47. holidays/countries/egypt.py +2 -5
  48. holidays/countries/el_salvador.py +101 -0
  49. holidays/countries/eswatini.py +34 -44
  50. holidays/countries/ethiopia.py +7 -14
  51. holidays/countries/finland.py +2 -3
  52. holidays/countries/france.py +1 -0
  53. holidays/countries/gabon.py +139 -0
  54. holidays/countries/georgia.py +1 -0
  55. holidays/countries/germany.py +1 -0
  56. holidays/countries/greece.py +7 -6
  57. holidays/countries/honduras.py +17 -13
  58. holidays/countries/hongkong.py +117 -126
  59. holidays/countries/hungary.py +93 -92
  60. holidays/countries/iceland.py +1 -0
  61. holidays/countries/india.py +4 -11
  62. holidays/countries/indonesia.py +178 -142
  63. holidays/countries/ireland.py +5 -15
  64. holidays/countries/isle_of_man.py +23 -5
  65. holidays/countries/israel.py +12 -24
  66. holidays/countries/italy.py +6 -7
  67. holidays/countries/jamaica.py +10 -18
  68. holidays/countries/japan.py +11 -16
  69. holidays/countries/kazakhstan.py +7 -22
  70. holidays/countries/kenya.py +44 -26
  71. holidays/countries/kyrgyzstan.py +2 -5
  72. holidays/countries/latvia.py +2 -6
  73. holidays/countries/lesotho.py +52 -32
  74. holidays/countries/liechtenstein.py +1 -0
  75. holidays/countries/lithuania.py +4 -12
  76. holidays/countries/madagascar.py +3 -9
  77. holidays/countries/malawi.py +34 -26
  78. holidays/countries/malaysia.py +335 -343
  79. holidays/countries/marshall_islands.py +4 -9
  80. holidays/countries/mexico.py +2 -3
  81. holidays/countries/moldova.py +4 -6
  82. holidays/countries/monaco.py +17 -26
  83. holidays/countries/montenegro.py +34 -24
  84. holidays/countries/morocco.py +8 -5
  85. holidays/countries/mozambique.py +35 -31
  86. holidays/countries/namibia.py +54 -35
  87. holidays/countries/netherlands.py +1 -0
  88. holidays/countries/new_zealand.py +166 -134
  89. holidays/countries/nicaragua.py +27 -22
  90. holidays/countries/nigeria.py +6 -17
  91. holidays/countries/north_macedonia.py +3 -8
  92. holidays/countries/norway.py +2 -3
  93. holidays/countries/pakistan.py +73 -75
  94. holidays/countries/panama.py +25 -24
  95. holidays/countries/paraguay.py +55 -47
  96. holidays/countries/peru.py +1 -0
  97. holidays/countries/philippines.py +6 -2
  98. holidays/countries/poland.py +4 -9
  99. holidays/countries/portugal.py +4 -11
  100. holidays/countries/romania.py +4 -5
  101. holidays/countries/russia.py +1 -0
  102. holidays/countries/san_marino.py +26 -27
  103. holidays/countries/saudi_arabia.py +8 -22
  104. holidays/countries/serbia.py +22 -31
  105. holidays/countries/singapore.py +181 -189
  106. holidays/countries/slovakia.py +2 -4
  107. holidays/countries/south_africa.py +60 -62
  108. holidays/countries/south_korea.py +59 -26
  109. holidays/countries/spain.py +7 -10
  110. holidays/countries/sweden.py +2 -3
  111. holidays/countries/switzerland.py +1 -0
  112. holidays/countries/taiwan.py +20 -20
  113. holidays/countries/thailand.py +36 -82
  114. holidays/countries/turkey.py +1 -3
  115. holidays/countries/ukraine.py +7 -18
  116. holidays/countries/united_arab_emirates.py +23 -31
  117. holidays/countries/united_kingdom.py +124 -116
  118. holidays/countries/united_states.py +42 -72
  119. holidays/countries/uruguay.py +1 -0
  120. holidays/countries/vatican_city.py +64 -32
  121. holidays/countries/venezuela.py +9 -6
  122. holidays/countries/vietnam.py +6 -20
  123. holidays/countries/zambia.py +63 -33
  124. holidays/countries/zimbabwe.py +56 -37
  125. holidays/financial/european_central_bank.py +15 -16
  126. holidays/financial/ny_stock_exchange.py +80 -86
  127. holidays/groups/__init__.py +18 -0
  128. holidays/groups/buddhist.py +71 -0
  129. holidays/groups/chinese.py +235 -0
  130. holidays/groups/christian.py +483 -0
  131. holidays/groups/hindu.py +71 -0
  132. holidays/groups/international.py +157 -0
  133. holidays/groups/islamic.py +288 -0
  134. holidays/groups/thai.py +157 -0
  135. holidays/helpers.py +20 -0
  136. holidays/holiday_base.py +54 -76
  137. holidays/holiday_groups.py +11 -1053
  138. holidays/locale/am/LC_MESSAGES/ET.mo +0 -0
  139. holidays/locale/am/LC_MESSAGES/ET.po +20 -15
  140. holidays/locale/ar/LC_MESSAGES/CA.mo +0 -0
  141. holidays/locale/ar/LC_MESSAGES/CA.po +184 -0
  142. holidays/locale/ar/LC_MESSAGES/ET.mo +0 -0
  143. holidays/locale/ar/LC_MESSAGES/ET.po +92 -0
  144. holidays/locale/ar/LC_MESSAGES/UA.mo +0 -0
  145. holidays/locale/ar/LC_MESSAGES/UA.po +97 -0
  146. holidays/locale/be/LC_MESSAGES/BY.po +11 -13
  147. holidays/locale/bg/LC_MESSAGES/BG.po +13 -15
  148. holidays/locale/da/LC_MESSAGES/DK.po +13 -12
  149. holidays/locale/de/LC_MESSAGES/AT.po +14 -14
  150. holidays/locale/de/LC_MESSAGES/CH.po +91 -56
  151. holidays/locale/de/LC_MESSAGES/DE.po +32 -32
  152. holidays/locale/de/LC_MESSAGES/LI.po +23 -23
  153. holidays/locale/el/LC_MESSAGES/CY.po +16 -16
  154. holidays/locale/el/LC_MESSAGES/GR.mo +0 -0
  155. holidays/locale/el/LC_MESSAGES/GR.po +21 -17
  156. holidays/locale/en/LC_MESSAGES/CA.po +43 -43
  157. holidays/locale/en_US/LC_MESSAGES/AM.mo +0 -0
  158. holidays/locale/en_US/LC_MESSAGES/AM.po +20 -20
  159. holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
  160. holidays/locale/en_US/LC_MESSAGES/AR.po +34 -33
  161. holidays/locale/en_US/LC_MESSAGES/AT.po +13 -13
  162. holidays/locale/en_US/LC_MESSAGES/AW.mo +0 -0
  163. holidays/locale/en_US/LC_MESSAGES/AW.po +87 -0
  164. holidays/locale/en_US/LC_MESSAGES/BG.po +13 -15
  165. holidays/locale/en_US/LC_MESSAGES/BN.mo +0 -0
  166. holidays/locale/en_US/LC_MESSAGES/BN.po +96 -0
  167. holidays/locale/en_US/LC_MESSAGES/BY.po +11 -13
  168. holidays/locale/en_US/LC_MESSAGES/CA.mo +0 -0
  169. holidays/locale/en_US/LC_MESSAGES/CA.po +70 -37
  170. holidays/locale/en_US/LC_MESSAGES/CH.po +91 -56
  171. holidays/locale/en_US/LC_MESSAGES/CL.po +39 -38
  172. holidays/locale/en_US/LC_MESSAGES/CO.mo +0 -0
  173. holidays/locale/en_US/LC_MESSAGES/CO.po +27 -27
  174. holidays/locale/en_US/LC_MESSAGES/CR.mo +0 -0
  175. holidays/locale/en_US/LC_MESSAGES/CR.po +19 -19
  176. holidays/locale/en_US/LC_MESSAGES/CU.po +10 -10
  177. holidays/locale/en_US/LC_MESSAGES/CW.mo +0 -0
  178. holidays/locale/en_US/LC_MESSAGES/CW.po +82 -0
  179. holidays/locale/en_US/LC_MESSAGES/CY.po +16 -16
  180. holidays/locale/en_US/LC_MESSAGES/DE.po +30 -30
  181. holidays/locale/en_US/LC_MESSAGES/DK.po +12 -11
  182. holidays/locale/en_US/LC_MESSAGES/DO.po +12 -12
  183. holidays/locale/en_US/LC_MESSAGES/EC.po +11 -12
  184. holidays/locale/en_US/LC_MESSAGES/ET.mo +0 -0
  185. holidays/locale/en_US/LC_MESSAGES/ET.po +20 -15
  186. holidays/locale/en_US/LC_MESSAGES/FI.po +15 -15
  187. holidays/locale/en_US/LC_MESSAGES/FR.po +27 -24
  188. holidays/locale/en_US/LC_MESSAGES/GE.po +23 -27
  189. holidays/locale/en_US/LC_MESSAGES/GR.mo +0 -0
  190. holidays/locale/en_US/LC_MESSAGES/GR.po +21 -17
  191. holidays/locale/en_US/LC_MESSAGES/HN.mo +0 -0
  192. holidays/locale/en_US/LC_MESSAGES/HN.po +17 -12
  193. holidays/locale/en_US/LC_MESSAGES/HU.mo +0 -0
  194. holidays/locale/en_US/LC_MESSAGES/HU.po +109 -0
  195. holidays/locale/en_US/LC_MESSAGES/IS.po +17 -17
  196. holidays/locale/en_US/LC_MESSAGES/JP.po +25 -25
  197. holidays/locale/en_US/LC_MESSAGES/KH.mo +0 -0
  198. holidays/locale/en_US/LC_MESSAGES/KH.po +139 -0
  199. holidays/locale/en_US/LC_MESSAGES/LI.po +22 -22
  200. holidays/locale/en_US/LC_MESSAGES/MC.mo +0 -0
  201. holidays/locale/en_US/LC_MESSAGES/MC.po +27 -27
  202. holidays/locale/en_US/LC_MESSAGES/MD.po +13 -13
  203. holidays/locale/en_US/LC_MESSAGES/MX.po +9 -12
  204. holidays/locale/en_US/LC_MESSAGES/NI.mo +0 -0
  205. holidays/locale/en_US/LC_MESSAGES/NI.po +15 -15
  206. holidays/locale/en_US/LC_MESSAGES/NL.po +12 -12
  207. holidays/locale/en_US/LC_MESSAGES/NO.po +13 -13
  208. holidays/locale/en_US/LC_MESSAGES/PE.po +30 -30
  209. holidays/locale/en_US/LC_MESSAGES/PL.po +38 -21
  210. holidays/locale/en_US/LC_MESSAGES/PT.po +39 -36
  211. holidays/locale/en_US/LC_MESSAGES/PY.po +16 -16
  212. holidays/locale/en_US/LC_MESSAGES/RO.po +12 -12
  213. holidays/locale/en_US/LC_MESSAGES/RS.mo +0 -0
  214. holidays/locale/en_US/LC_MESSAGES/RS.po +17 -19
  215. holidays/locale/en_US/LC_MESSAGES/RU.po +11 -10
  216. holidays/locale/en_US/LC_MESSAGES/SE.po +19 -19
  217. holidays/locale/en_US/LC_MESSAGES/SK.po +17 -18
  218. holidays/locale/en_US/LC_MESSAGES/TH.po +41 -41
  219. holidays/locale/en_US/LC_MESSAGES/UA.po +18 -19
  220. holidays/locale/en_US/LC_MESSAGES/UY.po +15 -15
  221. holidays/locale/en_US/LC_MESSAGES/VE.po +16 -16
  222. holidays/locale/es/LC_MESSAGES/AR.mo +0 -0
  223. holidays/locale/es/LC_MESSAGES/AR.po +34 -33
  224. holidays/locale/es/LC_MESSAGES/CL.po +39 -38
  225. holidays/locale/es/LC_MESSAGES/CO.mo +0 -0
  226. holidays/locale/es/LC_MESSAGES/CO.po +24 -24
  227. holidays/locale/es/LC_MESSAGES/CR.mo +0 -0
  228. holidays/locale/es/LC_MESSAGES/CR.po +19 -19
  229. holidays/locale/es/LC_MESSAGES/CU.po +10 -10
  230. holidays/locale/es/LC_MESSAGES/DO.po +12 -12
  231. holidays/locale/es/LC_MESSAGES/EC.po +11 -12
  232. holidays/locale/es/LC_MESSAGES/HN.mo +0 -0
  233. holidays/locale/es/LC_MESSAGES/HN.po +17 -12
  234. holidays/locale/es/LC_MESSAGES/MX.po +9 -12
  235. holidays/locale/es/LC_MESSAGES/NI.po +12 -12
  236. holidays/locale/es/LC_MESSAGES/PE.po +30 -30
  237. holidays/locale/es/LC_MESSAGES/PY.po +16 -16
  238. holidays/locale/es/LC_MESSAGES/UY.po +15 -15
  239. holidays/locale/es/LC_MESSAGES/VE.po +16 -16
  240. holidays/locale/fi/LC_MESSAGES/FI.po +16 -16
  241. holidays/locale/fr/LC_MESSAGES/CA.po +43 -43
  242. holidays/locale/fr/LC_MESSAGES/CH.po +91 -56
  243. holidays/locale/fr/LC_MESSAGES/FR.po +27 -24
  244. holidays/locale/fr/LC_MESSAGES/MC.po +23 -23
  245. holidays/locale/hu/LC_MESSAGES/HU.mo +0 -0
  246. holidays/locale/hu/LC_MESSAGES/HU.po +109 -0
  247. holidays/locale/hy/LC_MESSAGES/AM.po +16 -16
  248. holidays/locale/is/LC_MESSAGES/IS.po +18 -18
  249. holidays/locale/it/LC_MESSAGES/CH.po +91 -56
  250. holidays/locale/ja/LC_MESSAGES/JP.po +25 -25
  251. holidays/locale/ka/LC_MESSAGES/GE.po +23 -27
  252. holidays/locale/km/LC_MESSAGES/KH.mo +0 -0
  253. holidays/locale/km/LC_MESSAGES/KH.po +139 -0
  254. holidays/locale/ms/LC_MESSAGES/BN.mo +0 -0
  255. holidays/locale/ms/LC_MESSAGES/BN.po +96 -0
  256. holidays/locale/nl/LC_MESSAGES/AW.mo +0 -0
  257. holidays/locale/nl/LC_MESSAGES/AW.po +87 -0
  258. holidays/locale/nl/LC_MESSAGES/CW.mo +0 -0
  259. holidays/locale/nl/LC_MESSAGES/CW.po +82 -0
  260. holidays/locale/nl/LC_MESSAGES/NL.po +13 -13
  261. holidays/locale/no/LC_MESSAGES/NO.po +14 -14
  262. holidays/locale/pap/LC_MESSAGES/AW.mo +0 -0
  263. holidays/locale/pap/LC_MESSAGES/AW.po +87 -0
  264. holidays/locale/pap/LC_MESSAGES/CW.mo +0 -0
  265. holidays/locale/pap/LC_MESSAGES/CW.po +82 -0
  266. holidays/locale/pl/LC_MESSAGES/PL.po +38 -21
  267. holidays/locale/pt_PT/LC_MESSAGES/PT.po +39 -36
  268. holidays/locale/ro/LC_MESSAGES/MD.po +14 -15
  269. holidays/locale/ro/LC_MESSAGES/RO.po +13 -14
  270. holidays/locale/ru/LC_MESSAGES/RU.po +11 -9
  271. holidays/locale/sk/LC_MESSAGES/SK.po +17 -18
  272. holidays/locale/sr/LC_MESSAGES/RS.mo +0 -0
  273. holidays/locale/sr/LC_MESSAGES/RS.po +15 -17
  274. holidays/locale/sv/LC_MESSAGES/FI.po +16 -16
  275. holidays/locale/sv/LC_MESSAGES/SE.po +20 -20
  276. holidays/locale/th/LC_MESSAGES/BN.mo +0 -0
  277. holidays/locale/th/LC_MESSAGES/BN.po +96 -0
  278. holidays/locale/th/LC_MESSAGES/CA.po +42 -42
  279. holidays/locale/th/LC_MESSAGES/KH.mo +0 -0
  280. holidays/locale/th/LC_MESSAGES/KH.po +145 -0
  281. holidays/locale/th/LC_MESSAGES/TH.po +41 -41
  282. holidays/locale/uk/LC_MESSAGES/AR.mo +0 -0
  283. holidays/locale/uk/LC_MESSAGES/AR.po +35 -35
  284. holidays/locale/uk/LC_MESSAGES/AT.po +15 -16
  285. holidays/locale/uk/LC_MESSAGES/AW.mo +0 -0
  286. holidays/locale/uk/LC_MESSAGES/AW.po +87 -0
  287. holidays/locale/uk/LC_MESSAGES/CH.po +92 -58
  288. holidays/locale/uk/LC_MESSAGES/CL.po +40 -40
  289. holidays/locale/uk/LC_MESSAGES/CO.mo +0 -0
  290. holidays/locale/uk/LC_MESSAGES/CO.po +28 -29
  291. holidays/locale/uk/LC_MESSAGES/CR.mo +0 -0
  292. holidays/locale/uk/LC_MESSAGES/CR.po +20 -21
  293. holidays/locale/uk/LC_MESSAGES/CU.po +11 -12
  294. holidays/locale/uk/LC_MESSAGES/CW.mo +0 -0
  295. holidays/locale/uk/LC_MESSAGES/CW.po +82 -0
  296. holidays/locale/uk/LC_MESSAGES/DE.po +33 -34
  297. holidays/locale/uk/LC_MESSAGES/DK.po +14 -14
  298. holidays/locale/uk/LC_MESSAGES/DO.po +13 -14
  299. holidays/locale/uk/LC_MESSAGES/EC.po +12 -14
  300. holidays/locale/uk/LC_MESSAGES/FI.po +17 -18
  301. holidays/locale/uk/LC_MESSAGES/FR.po +28 -26
  302. holidays/locale/uk/LC_MESSAGES/HN.mo +0 -0
  303. holidays/locale/uk/LC_MESSAGES/HN.po +18 -14
  304. holidays/locale/uk/LC_MESSAGES/HU.mo +0 -0
  305. holidays/locale/uk/LC_MESSAGES/HU.po +109 -0
  306. holidays/locale/uk/LC_MESSAGES/IS.po +19 -20
  307. holidays/locale/uk/LC_MESSAGES/LI.po +24 -25
  308. holidays/locale/uk/LC_MESSAGES/MC.po +27 -28
  309. holidays/locale/uk/LC_MESSAGES/MD.po +14 -15
  310. holidays/locale/uk/LC_MESSAGES/MX.po +10 -14
  311. holidays/locale/uk/LC_MESSAGES/NI.mo +0 -0
  312. holidays/locale/uk/LC_MESSAGES/NI.po +16 -17
  313. holidays/locale/uk/LC_MESSAGES/NL.po +14 -15
  314. holidays/locale/uk/LC_MESSAGES/NO.po +15 -16
  315. holidays/locale/uk/LC_MESSAGES/PE.po +31 -32
  316. holidays/locale/uk/LC_MESSAGES/PL.po +38 -21
  317. holidays/locale/uk/LC_MESSAGES/PY.po +17 -18
  318. holidays/locale/uk/LC_MESSAGES/RO.po +13 -14
  319. holidays/locale/uk/LC_MESSAGES/SE.po +21 -22
  320. holidays/locale/uk/LC_MESSAGES/SK.po +18 -20
  321. holidays/locale/uk/LC_MESSAGES/UA.po +17 -17
  322. holidays/locale/uk/LC_MESSAGES/UY.po +16 -17
  323. holidays/locale/uk/LC_MESSAGES/VE.po +17 -18
  324. holidays/registry.py +21 -12
  325. holidays/utils.py +87 -17
  326. {holidays-0.25.dist-info → holidays-0.27.dist-info}/METADATA +282 -265
  327. holidays-0.27.dist-info/RECORD +449 -0
  328. holidays-0.25.dist-info/RECORD +0 -390
  329. {holidays-0.25.dist-info → holidays-0.27.dist-info}/LICENSE +0 -0
  330. {holidays-0.25.dist-info → holidays-0.27.dist-info}/WHEEL +0 -0
  331. {holidays-0.25.dist-info → holidays-0.27.dist-info}/top_level.txt +0 -0
@@ -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.constants import OCT, NOV, DEC, MON
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: ((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.
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
@@ -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):
@@ -12,13 +12,12 @@
12
12
  from datetime import date
13
13
  from datetime import timedelta as td
14
14
 
15
- from dateutil.easter import easter
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 _add_with_observed(
43
- hol_date: date, hol_name: str, days: int = +1
44
- ) -> None:
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
- # Public holidays
55
- _add_with_observed(date(year, JAN, 1), "New Year's Day")
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
- easter_date = easter(year)
58
- self[easter_date + td(days=-2)] = "Good Friday"
59
- self[easter_date + td(days=+1)] = "Easter Monday"
61
+ # Easter Monday
62
+ self._add_easter_monday("Easter Monday")
60
63
 
61
- _add_with_observed(date(year, MAY, 1), "Labour Day")
64
+ # Labour Day
65
+ _add_observed(self._add_labor_day("Labour Day"))
62
66
 
63
67
  if year >= 2010:
64
- _add_with_observed(date(year, JUN, 1), "Madaraka Day")
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
- _add_with_observed(
68
- date(year, OCT, 10),
69
- "Utamaduni Day" if year >= 2021 else "Moi Day",
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
- _add_with_observed(
73
- date(year, OCT, 20),
74
- "Mashujaa Day" if year >= 2010 else "Kenyatta Day",
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
- _add_with_observed(date(year, DEC, 12), "Jamhuri Day")
78
- _add_with_observed(date(year, DEC, 25), "Christmas Day", days=+2)
79
- _add_with_observed(date(year, DEC, 26), "Boxing Day")
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):
@@ -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
 
@@ -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"
@@ -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 datetime import date
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
- https://tinyurl.com/lesothosmallurl1324251
24
- https://www.timeanddate.com/holidays/lesotho/
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
- # https://tinyurl.com/lesothourl
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
- if year > 1995:
37
- # https://www.ilo.org/dyn/travail/docs/2093/Public%20Holidays%20Act%201995.pdf
38
- self[date(year, JAN, 1)] = "New Year's Day"
39
- self[date(year, MAR, 11)] = "Moshoeshoe's Day"
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
- if year < 2002:
42
- self[date(year, APR, 4)] = "Heroes Day"
64
+ # Ascension Day.
65
+ self._add_ascension_thursday("Ascension Day")
43
66
 
44
- if year > 2002:
45
- self[date(year, MAY, 25)] = "Africa/Heroes Day"
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
- easter_date = easter(year)
48
- self[easter_date + td(days=-2)] = "Good Friday"
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
- if year > 1997:
54
- # https://en.wikipedia.org/wiki/Letsie_III
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
- self[date(year, OCT, 4)] = "National Independence Day"
60
- self[date(year, DEC, 25)] = "Christmas Day"
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):
@@ -25,6 +25,7 @@ class Liechtenstein(HolidayBase, ChristianHolidays, InternationalHolidays):
25
25
 
26
26
  country = "LI"
27
27
  default_language = "de"
28
+ supported_languages = ("de", "en_US", "uk")
28
29
 
29
30
  def __init__(self, *args, **kwargs) -> None:
30
31
  ChristianHolidays.__init__(self)
@@ -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)")
@@ -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:
@@ -12,13 +12,12 @@
12
12
  from datetime import date
13
13
  from datetime import timedelta as td
14
14
 
15
- from dateutil.easter import easter
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 _populate(self, year):
30
- def _add_with_observed(
31
- hol_date: date, hol_name: str, days: int = +1
32
- ) -> None:
33
- self[hol_date] = hol_name
34
- if self.observed and self._is_weekend(hol_date):
35
- obs_date = hol_date + td(
36
- days=+2 if self._is_saturday(hol_date) else days
37
- )
38
- self[obs_date] = f"{hol_name} (Observed)"
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
- _add_with_observed(date(year, JAN, 1), "New Year's Day")
47
- _add_with_observed(date(year, JAN, 15), "John Chilembwe Day")
48
- _add_with_observed(date(year, MAR, 3), "Martyrs Day")
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
- easter_date = easter(year)
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
- _add_with_observed(date(year, MAY, 1), "Labour Day")
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):