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
@@ -9,16 +9,25 @@
9
9
  # Website: https://github.com/dr-prodigy/python-holidays
10
10
  # License: MIT (see LICENSE file)
11
11
 
12
- from holidays.calendars import _CustomCalendar, _IslamicLunar
13
- from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP
14
- from holidays.constants import OCT, NOV, DEC
12
+ from holidays.calendars import (
13
+ _CustomBuddhistCalendar,
14
+ _CustomChineseCalendar,
15
+ _CustomIslamicCalendar,
16
+ )
17
+ from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
15
18
  from holidays.holiday_base import HolidayBase
16
- from holidays.holiday_groups import ChineseCalendarHolidays, ChristianHolidays
17
- from holidays.holiday_groups import InternationalHolidays, IslamicHolidays
19
+ from holidays.holiday_groups import (
20
+ BuddhistCalendarHolidays,
21
+ ChineseCalendarHolidays,
22
+ ChristianHolidays,
23
+ InternationalHolidays,
24
+ IslamicHolidays,
25
+ )
18
26
 
19
27
 
20
28
  class Indonesia(
21
29
  HolidayBase,
30
+ BuddhistCalendarHolidays,
22
31
  ChineseCalendarHolidays,
23
32
  ChristianHolidays,
24
33
  InternationalHolidays,
@@ -34,13 +43,18 @@ class Indonesia(
34
43
  country = "ID"
35
44
  special_holidays = {
36
45
  # Election Day.
37
- 2018: ((JUN, 27, "Hari Pemilihan"),),
38
- 2019: ((APR, 17, "Hari Pemilihan"),),
39
- 2020: ((DEC, 9, "Hari Pemilihan"),),
46
+ 2018: (JUN, 27, "Hari Pemilihan"),
47
+ 2019: (APR, 17, "Hari Pemilihan"),
48
+ 2020: (DEC, 9, "Hari Pemilihan"),
40
49
  }
41
50
 
42
51
  def __init__(self, *args, **kwargs):
43
- ChineseCalendarHolidays.__init__(self)
52
+ BuddhistCalendarHolidays.__init__(
53
+ self, calendar=IndonesiaBuddhistCalendar(), show_estimated=True
54
+ )
55
+ ChineseCalendarHolidays.__init__(
56
+ self, calendar=IndonesiaChineseCalendar(), show_estimated=True
57
+ )
44
58
  ChristianHolidays.__init__(self)
45
59
  InternationalHolidays.__init__(self)
46
60
  IslamicHolidays.__init__(self, calendar=IndonesiaIslamicCalendar())
@@ -101,35 +115,9 @@ class Indonesia(
101
115
  # Good Friday.
102
116
  self._add_good_friday("Wafat Yesus Kristus")
103
117
 
104
- # Buddha's Birthday.
105
118
  if year >= 1983:
106
- date_obs = {
107
- 2007: (JUN, 1),
108
- 2008: (MAY, 20),
109
- 2009: (MAY, 9),
110
- 2010: (MAY, 28),
111
- 2011: (MAY, 17),
112
- 2012: (MAY, 6),
113
- 2013: (MAY, 25),
114
- 2014: (MAY, 15),
115
- 2015: (JUN, 2),
116
- 2016: (MAY, 22),
117
- 2017: (MAY, 11),
118
- 2018: (MAY, 29),
119
- 2019: (MAY, 19),
120
- 2020: (MAY, 7),
121
- 2021: (MAY, 26),
122
- 2022: (MAY, 16),
123
- 2023: (JUN, 4),
124
- }
125
- if year in date_obs:
126
- # Buddha's Birthday.
127
- self._add_holiday("Hari Raya Waisak", *date_obs[year])
128
- else:
129
- # Buddha's Birthday.
130
- self._add_chinese_calendar_holiday(
131
- "Hari Raya Waisak* (*estimated)", 4, 15
132
- )
119
+ # Buddha's Birthday.
120
+ self._add_vesak("Hari Raya Waisak")
133
121
 
134
122
  if 1953 <= year <= 1968 or year >= 2014:
135
123
  # Labor Day.
@@ -157,125 +145,173 @@ class IDN(Indonesia):
157
145
  pass
158
146
 
159
147
 
160
- class IndonesiaIslamicCalendar(_CustomCalendar, _IslamicLunar):
148
+ class IndonesiaBuddhistCalendar(_CustomBuddhistCalendar):
149
+ VESAK_DATES = {
150
+ 2007: (JUN, 1),
151
+ 2008: (MAY, 20),
152
+ 2009: (MAY, 9),
153
+ 2010: (MAY, 28),
154
+ 2011: (MAY, 17),
155
+ 2012: (MAY, 6),
156
+ 2013: (MAY, 25),
157
+ 2014: (MAY, 15),
158
+ 2015: (JUN, 2),
159
+ 2016: (MAY, 22),
160
+ 2017: (MAY, 11),
161
+ 2018: (MAY, 29),
162
+ 2019: (MAY, 19),
163
+ 2020: (MAY, 7),
164
+ 2021: (MAY, 26),
165
+ 2022: (MAY, 16),
166
+ 2023: (JUN, 4),
167
+ }
168
+
169
+
170
+ class IndonesiaChineseCalendar(_CustomChineseCalendar):
171
+ LUNAR_NEW_YEAR_DATES = {
172
+ 2003: (FEB, 1),
173
+ 2004: (JAN, 22),
174
+ 2005: (FEB, 9),
175
+ 2006: (JAN, 30),
176
+ 2007: (FEB, 19),
177
+ 2008: (FEB, 7),
178
+ 2009: (JAN, 26),
179
+ 2010: (FEB, 15),
180
+ 2011: (FEB, 3),
181
+ 2012: (JAN, 23),
182
+ 2013: (FEB, 11),
183
+ 2014: (JAN, 31),
184
+ 2015: (FEB, 19),
185
+ 2016: (FEB, 8),
186
+ 2017: (JAN, 28),
187
+ 2018: (FEB, 16),
188
+ 2019: (FEB, 5),
189
+ 2020: (JAN, 25),
190
+ 2021: (FEB, 12),
191
+ 2022: (FEB, 1),
192
+ 2023: (JAN, 22),
193
+ }
194
+
195
+
196
+ class IndonesiaIslamicCalendar(_CustomIslamicCalendar):
161
197
  EID_AL_ADHA_DATES = {
162
- 2001: ((MAR, 6),),
163
- 2002: ((FEB, 23),),
164
- 2003: ((FEB, 12),),
165
- 2004: ((FEB, 2),),
166
- 2005: ((JAN, 21),),
198
+ 2001: (MAR, 6),
199
+ 2002: (FEB, 23),
200
+ 2003: (FEB, 12),
201
+ 2004: (FEB, 2),
202
+ 2005: (JAN, 21),
167
203
  2006: ((JAN, 10), (DEC, 31)),
168
- 2007: ((DEC, 20),),
169
- 2008: ((DEC, 8),),
170
- 2009: ((NOV, 27),),
171
- 2010: ((NOV, 17),),
172
- 2011: ((NOV, 6),),
173
- 2012: ((OCT, 26),),
174
- 2013: ((OCT, 15),),
175
- 2014: ((OCT, 5),),
176
- 2015: ((SEP, 24),),
177
- 2016: ((SEP, 12),),
178
- 2017: ((SEP, 1),),
179
- 2018: ((AUG, 22),),
180
- 2019: ((AUG, 11),),
181
- 2020: ((JUL, 31),),
182
- 2021: ((JUL, 20),),
183
- 2022: ((JUL, 10),),
184
- 2023: ((JUN, 29),),
204
+ 2007: (DEC, 20),
205
+ 2008: (DEC, 8),
206
+ 2009: (NOV, 27),
207
+ 2010: (NOV, 17),
208
+ 2011: (NOV, 6),
209
+ 2012: (OCT, 26),
210
+ 2013: (OCT, 15),
211
+ 2014: (OCT, 5),
212
+ 2015: (SEP, 24),
213
+ 2016: (SEP, 12),
214
+ 2017: (SEP, 1),
215
+ 2018: (AUG, 22),
216
+ 2019: (AUG, 11),
217
+ 2020: (JUL, 31),
218
+ 2021: (JUL, 20),
219
+ 2022: (JUL, 10),
220
+ 2023: (JUN, 29),
185
221
  }
186
222
 
187
223
  EID_AL_FITR_DATES = {
188
- 2001: ((DEC, 16),),
189
- 2002: ((DEC, 6),),
190
- 2003: ((NOV, 25),),
191
- 2004: ((NOV, 14),),
192
- 2005: ((NOV, 3),),
193
- 2006: ((OCT, 24),),
194
- 2007: ((OCT, 13),),
195
- 2008: ((OCT, 1),),
196
- 2009: ((SEP, 20),),
197
- 2010: ((SEP, 10),),
198
- 2011: ((AUG, 30),),
199
- 2012: ((AUG, 19),),
200
- 2013: ((AUG, 8),),
201
- 2014: ((JUL, 28),),
202
- 2015: ((JUL, 17),),
203
- 2016: ((JUL, 6),),
204
- 2017: ((JUN, 25),),
205
- 2018: ((JUN, 15),),
206
- 2019: ((JUN, 5),),
207
- 2020: ((MAY, 24),),
208
- 2021: ((MAY, 13),),
209
- 2022: ((MAY, 2),),
210
- 2023: ((APR, 22),),
224
+ 2001: (DEC, 16),
225
+ 2002: (DEC, 6),
226
+ 2003: (NOV, 25),
227
+ 2004: (NOV, 14),
228
+ 2005: (NOV, 3),
229
+ 2006: (OCT, 24),
230
+ 2007: (OCT, 13),
231
+ 2008: (OCT, 1),
232
+ 2009: (SEP, 20),
233
+ 2010: (SEP, 10),
234
+ 2011: (AUG, 30),
235
+ 2012: (AUG, 19),
236
+ 2013: (AUG, 8),
237
+ 2014: (JUL, 28),
238
+ 2015: (JUL, 17),
239
+ 2016: (JUL, 6),
240
+ 2017: (JUN, 25),
241
+ 2018: (JUN, 15),
242
+ 2019: (JUN, 5),
243
+ 2020: (MAY, 24),
244
+ 2021: (MAY, 13),
245
+ 2022: (MAY, 2),
246
+ 2023: (APR, 22),
211
247
  }
212
248
 
213
249
  HIJRI_NEW_YEAR_DATES = {
214
- 2001: ((MAR, 26),),
215
- 2002: ((MAR, 15),),
216
- 2003: ((MAR, 5),),
217
- 2004: ((FEB, 22),),
218
- 2005: ((FEB, 10),),
219
- 2006: ((JAN, 31),),
220
- 2007: ((JAN, 20),),
250
+ 2001: (MAR, 26),
251
+ 2002: (MAR, 15),
252
+ 2003: (MAR, 5),
253
+ 2004: (FEB, 22),
254
+ 2005: (FEB, 10),
255
+ 2006: (JAN, 31),
256
+ 2007: (JAN, 20),
221
257
  2008: ((JAN, 10), (DEC, 29)),
222
- 2009: ((DEC, 18),),
223
- 2010: ((DEC, 7),),
224
- 2011: ((NOV, 27),),
225
- 2012: ((NOV, 15),),
226
- 2013: ((NOV, 5),),
227
- 2014: ((OCT, 25),),
228
- 2015: ((OCT, 14),),
229
- 2016: ((OCT, 2),),
230
- 2017: ((SEP, 21),),
231
- 2018: ((SEP, 11),),
232
- 2019: ((SEP, 1),),
233
- 2020: ((AUG, 20),),
234
- 2021: ((AUG, 11),),
235
- 2022: ((JUL, 30),),
258
+ 2009: (DEC, 18),
259
+ 2010: (DEC, 7),
260
+ 2011: (NOV, 27),
261
+ 2012: (NOV, 15),
262
+ 2013: (NOV, 5),
263
+ 2014: (OCT, 25),
264
+ 2015: (OCT, 14),
265
+ 2016: (OCT, 2),
266
+ 2017: (SEP, 21),
267
+ 2018: (SEP, 11),
268
+ 2019: (SEP, 1),
269
+ 2020: (AUG, 20),
270
+ 2021: (AUG, 11),
271
+ 2022: (JUL, 30),
236
272
  }
237
273
 
238
274
  ISRA_AND_MIRAJ_DATES = {
239
- 2001: ((OCT, 15),),
240
- 2002: ((OCT, 4),),
241
- 2003: ((SEP, 24),),
242
- 2004: ((SEP, 12),),
243
- 2005: ((SEP, 1),),
244
- 2006: ((AUG, 22),),
245
- 2007: ((AUG, 11),),
246
- 2008: ((JUL, 31),),
247
- 2009: ((JUL, 20),),
248
- 2010: ((JUL, 9),),
249
- 2011: ((JUN, 29),),
250
- 2012: ((JUN, 17),),
251
- 2013: ((JUN, 6),),
252
- 2014: ((MAY, 27),),
253
- 2015: ((MAY, 16),),
254
- 2016: ((MAY, 6),),
255
- 2017: ((APR, 24),),
256
- 2018: ((APR, 14),),
257
- 2019: ((APR, 3),),
258
- 2020: ((MAR, 22),),
259
- 2021: ((MAR, 11),),
260
- 2022: ((FEB, 28),),
275
+ 2001: (OCT, 15),
276
+ 2002: (OCT, 4),
277
+ 2003: (SEP, 24),
278
+ 2004: (SEP, 12),
279
+ 2005: (SEP, 1),
280
+ 2006: (AUG, 22),
281
+ 2007: (AUG, 11),
282
+ 2008: (JUL, 31),
283
+ 2009: (JUL, 20),
284
+ 2010: (JUL, 9),
285
+ 2011: (JUN, 29),
286
+ 2012: (JUN, 17),
287
+ 2013: (JUN, 6),
288
+ 2014: (MAY, 27),
289
+ 2015: (MAY, 16),
290
+ 2016: (MAY, 6),
291
+ 2017: (APR, 24),
292
+ 2018: (APR, 14),
293
+ 2019: (APR, 3),
294
+ 2020: (MAR, 22),
295
+ 2021: (MAR, 11),
296
+ 2022: (FEB, 28),
261
297
  }
262
298
 
263
299
  MAWLID_DATES = {
264
- 2006: ((APR, 10),),
265
- 2007: ((MAR, 31),),
266
- 2008: ((MAR, 20),),
267
- 2009: ((MAR, 9),),
268
- 2010: ((FEB, 26),),
269
- 2011: ((FEB, 15),),
270
- 2012: ((FEB, 5),),
271
- 2013: ((JAN, 24),),
272
- 2014: ((JAN, 14),),
300
+ 2006: (APR, 10),
301
+ 2007: (MAR, 31),
302
+ 2008: (MAR, 20),
303
+ 2009: (MAR, 9),
304
+ 2010: (FEB, 26),
305
+ 2011: (FEB, 15),
306
+ 2012: (FEB, 5),
307
+ 2013: (JAN, 24),
308
+ 2014: (JAN, 14),
273
309
  2015: ((JAN, 3), (DEC, 24)),
274
- 2016: ((DEC, 12),),
275
- 2017: ((DEC, 1),),
276
- 2018: ((NOV, 20),),
277
- 2019: ((NOV, 9),),
278
- 2020: ((OCT, 29),),
279
- 2021: ((OCT, 19),),
280
- 2022: ((OCT, 8),),
310
+ 2016: (DEC, 12),
311
+ 2017: (DEC, 1),
312
+ 2018: (NOV, 20),
313
+ 2019: (NOV, 9),
314
+ 2020: (OCT, 29),
315
+ 2021: (OCT, 19),
316
+ 2022: (OCT, 8),
281
317
  }
@@ -27,9 +27,7 @@ class Ireland(HolidayBase):
27
27
  """
28
28
 
29
29
  country = "IE"
30
- special_holidays = {
31
- 2022: ((MAR, 18, "Day of Remembrance and Recognition"),)
32
- }
30
+ special_holidays = {2022: (MAR, 18, "Day of Remembrance and Recognition")}
33
31
 
34
32
  def _populate(self, year):
35
33
  super()._populate(year)
@@ -40,9 +38,7 @@ class Ireland(HolidayBase):
40
38
  if year >= 2023:
41
39
  dt = date(year, FEB, 1)
42
40
  self[
43
- dt
44
- if self._is_friday(dt)
45
- else _get_nth_weekday_from(1, MON, dt)
41
+ dt if self._is_friday(dt) else _get_nth_weekday_from(1, MON, dt)
46
42
  ] = "St. Brigid's Day"
47
43
 
48
44
  # St. Patrick's Day
@@ -65,19 +61,13 @@ class Ireland(HolidayBase):
65
61
  self[dt] = name
66
62
 
67
63
  # June bank holiday (first Monday in June)
68
- self[
69
- _get_nth_weekday_of_month(1, MON, JUN, year)
70
- ] = "June Bank Holiday"
64
+ self[_get_nth_weekday_of_month(1, MON, JUN, year)] = "June Bank Holiday"
71
65
 
72
66
  # Summer bank holiday (first Monday in August)
73
- self[
74
- _get_nth_weekday_of_month(1, MON, AUG, year)
75
- ] = "August Bank Holiday"
67
+ self[_get_nth_weekday_of_month(1, MON, AUG, year)] = "August Bank Holiday"
76
68
 
77
69
  # October Bank Holiday (last Monday in October)
78
- self[
79
- _get_nth_weekday_of_month(-1, MON, OCT, year)
80
- ] = "October Bank Holiday"
70
+ self[_get_nth_weekday_of_month(-1, MON, OCT, year)] = "October Bank Holiday"
81
71
 
82
72
  # Christmas Day
83
73
  name = "Christmas Day"
@@ -10,10 +10,12 @@
10
10
  # License: MIT (see LICENSE file)
11
11
 
12
12
  from datetime import date
13
+ from datetime import timedelta as td
13
14
 
14
15
  from holidays.calendars import _get_nth_weekday_of_month
15
- from holidays.constants import JUN, JUL, FRI
16
+ from holidays.constants import JUN, JUL, AUG, MON, FRI
16
17
  from holidays.holiday_base import HolidayBase
18
+ from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
17
19
 
18
20
  from .united_kingdom import UnitedKingdom
19
21
 
@@ -24,18 +26,34 @@ class IsleOfMan(UnitedKingdom):
24
26
  country = "IM"
25
27
  subdivisions = () # Override UnitedKingdom subdivisions.
26
28
 
27
- def __init__(self, **kwargs): # Override UnitedKingdom __init__().
28
- HolidayBase.__init__(self, **kwargs)
29
+ def __init__(self, *args, **kwargs): # Override UnitedKingdom __init__().
30
+ ChristianHolidays.__init__(self)
31
+ InternationalHolidays.__init__(self)
32
+ HolidayBase.__init__(self, *args, **kwargs)
29
33
 
30
34
  def _populate(self, year: int) -> None:
31
35
  super()._populate(year)
32
36
 
37
+ # Easter Monday
38
+ self._add_easter_monday("Easter Monday")
39
+
40
+ # Late Summer bank holiday (last Monday in August)
41
+ if year >= 1971:
42
+ self._add_holiday(
43
+ "Late Summer Bank Holiday",
44
+ _get_nth_weekday_of_month(-1, MON, AUG, year),
45
+ )
46
+
33
47
  # Isle of Man exclusive holidays
34
48
  # TT bank holiday (first Friday in June)
35
- self[_get_nth_weekday_of_month(1, FRI, JUN, year)] = "TT Bank Holiday"
49
+ self._add_holiday("TT Bank Holiday", _get_nth_weekday_of_month(1, FRI, JUN, year))
36
50
 
37
51
  # Tynwald Day
38
- self[date(year, JUL, 5)] = "Tynwald Day"
52
+ # Move to the next Monday if falls on a weekend.
53
+ dt = date(year, JUL, 5)
54
+ if self._is_weekend(dt) and year >= 1992:
55
+ dt += td(days=+2 if self._is_saturday(dt) else +1)
56
+ self._add_holiday("Tynwald Day", dt)
39
57
 
40
58
 
41
59
  class IM(IsleOfMan):
@@ -12,7 +12,7 @@
12
12
  from datetime import date
13
13
  from datetime import timedelta as td
14
14
 
15
- from holidays.calendars import _HebrewLuniSolar
15
+ from holidays.calendars import _HebrewLunisolar
16
16
  from holidays.holiday_base import HolidayBase
17
17
 
18
18
 
@@ -33,18 +33,14 @@ class Israel(HolidayBase):
33
33
  super()._populate(year)
34
34
 
35
35
  # Passover
36
- passover_dt = _HebrewLuniSolar.hebrew_holiday_date(year, "PASSOVER")
36
+ passover_dt = _HebrewLunisolar.hebrew_holiday_date(year, "PASSOVER")
37
37
  self._add_with_eve("Passover I", passover_dt)
38
38
  for offset in range(1, 5):
39
- self._add_holiday(
40
- "Passover - Chol HaMoed", passover_dt + td(days=offset)
41
- )
39
+ self._add_holiday("Passover - Chol HaMoed", passover_dt + td(days=offset))
42
40
  self._add_with_eve("Passover VII", passover_dt + td(days=+6))
43
41
 
44
42
  # Memorial Day
45
- memorial_day_dt = _HebrewLuniSolar.hebrew_holiday_date(
46
- year, "MEMORIAL_DAY"
47
- )
43
+ memorial_day_dt = _HebrewLunisolar.hebrew_holiday_date(year, "MEMORIAL_DAY")
48
44
  observed_delta = 0
49
45
  if self.observed:
50
46
  if self._is_thursday(memorial_day_dt):
@@ -74,47 +70,39 @@ class Israel(HolidayBase):
74
70
  self._add_holiday(name, memorial_day_dt + td(days=+1))
75
71
 
76
72
  # Lag Baomer
77
- lag_baomer_dt = _HebrewLuniSolar.hebrew_holiday_date(
78
- year, "LAG_BAOMER"
79
- )
73
+ lag_baomer_dt = _HebrewLunisolar.hebrew_holiday_date(year, "LAG_BAOMER")
80
74
  self._add_holiday("Lag B'Omer", lag_baomer_dt)
81
75
 
82
76
  # Shavuot
83
- shavuot_dt = _HebrewLuniSolar.hebrew_holiday_date(year, "SHAVUOT")
77
+ shavuot_dt = _HebrewLunisolar.hebrew_holiday_date(year, "SHAVUOT")
84
78
  self._add_with_eve("Shavuot", shavuot_dt)
85
79
 
86
80
  # Rosh Hashana
87
- rosh_hashanah_dt = _HebrewLuniSolar.hebrew_holiday_date(
88
- year, "ROSH_HASHANAH"
89
- )
81
+ rosh_hashanah_dt = _HebrewLunisolar.hebrew_holiday_date(year, "ROSH_HASHANAH")
90
82
  name = "Rosh Hashanah"
91
83
  self._add_with_eve(name, rosh_hashanah_dt)
92
84
  self._add_holiday(name, rosh_hashanah_dt + td(days=+1))
93
85
 
94
86
  # Yom Kippur
95
- yom_kippur_dt = _HebrewLuniSolar.hebrew_holiday_date(
96
- year, "YOM_KIPPUR"
97
- )
87
+ yom_kippur_dt = _HebrewLunisolar.hebrew_holiday_date(year, "YOM_KIPPUR")
98
88
  self._add_with_eve("Yom Kippur", yom_kippur_dt)
99
89
 
100
90
  # Sukkot
101
- sukkot_dt = _HebrewLuniSolar.hebrew_holiday_date(year, "SUKKOT")
91
+ sukkot_dt = _HebrewLunisolar.hebrew_holiday_date(year, "SUKKOT")
102
92
  self._add_with_eve("Sukkot I", sukkot_dt)
103
93
  for offset in range(1, 6):
104
- self._add_holiday(
105
- "Sukkot - Chol HaMoed", sukkot_dt + td(days=offset)
106
- )
94
+ self._add_holiday("Sukkot - Chol HaMoed", sukkot_dt + td(days=offset))
107
95
  self._add_with_eve("Sukkot VII", sukkot_dt + td(days=+7))
108
96
 
109
97
  # Hanukkah
110
98
  # Some o prior's year Hannukah may fall in current year.
111
99
  for yr in (year - 1, year):
112
- hanukkah_dt = _HebrewLuniSolar.hebrew_holiday_date(yr, "HANUKKAH")
100
+ hanukkah_dt = _HebrewLunisolar.hebrew_holiday_date(yr, "HANUKKAH")
113
101
  for offset in range(8):
114
102
  self._add_holiday("Hanukkah", hanukkah_dt + td(days=offset))
115
103
 
116
104
  # Purim
117
- purim_dt = _HebrewLuniSolar.hebrew_holiday_date(year, "PURIM")
105
+ purim_dt = _HebrewLunisolar.hebrew_holiday_date(year, "PURIM")
118
106
  self._add_with_eve("Purim", purim_dt)
119
107
  self._add_holiday("Shushan Purim", purim_dt + td(days=+1))
120
108
 
@@ -13,8 +13,7 @@
13
13
  from datetime import timedelta as td
14
14
 
15
15
  from holidays.calendars import _get_nth_weekday_of_month
16
- from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP
17
- from holidays.constants import OCT, NOV, DEC, TUE, SUN
16
+ from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, TUE, SUN
18
17
  from holidays.holiday_base import HolidayBase
19
18
  from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
20
19
 
@@ -275,7 +274,7 @@ class Italy(HolidayBase, ChristianHolidays, InternationalHolidays):
275
274
  self._add_holiday("San Saturnino di Cagliari", OCT, 30)
276
275
 
277
276
  def _add_subdiv_cb_holidays(self):
278
- self._add_holiday("San Giorgio", APR, 23)
277
+ self._add_saint_georges_day("San Giorgio")
279
278
 
280
279
  def _add_subdiv_ce_holidays(self):
281
280
  self._add_holiday("San Sebastiano", JAN, 20)
@@ -312,7 +311,7 @@ class Italy(HolidayBase, ChristianHolidays, InternationalHolidays):
312
311
  self._add_saint_johns_day("San Giovanni Battista")
313
312
 
314
313
  def _add_subdiv_fe_holidays(self):
315
- self._add_holiday("San Giorgio", APR, 23)
314
+ self._add_saint_georges_day("San Giorgio")
316
315
 
317
316
  def _add_subdiv_fg_holidays(self):
318
317
  self._add_holiday("Madonna dei Sette Veli", MAR, 22)
@@ -428,7 +427,7 @@ class Italy(HolidayBase, ChristianHolidays, InternationalHolidays):
428
427
  self._add_holiday("Sant'Ilario di Poitiers", JAN, 13)
429
428
 
430
429
  def _add_subdiv_pt_holidays(self):
431
- self._add_holiday("San Jacopo", JUL, 25)
430
+ self._add_saint_james_day("San Jacopo")
432
431
 
433
432
  def _add_subdiv_pu_holidays(self):
434
433
  self._add_holiday("San Crescentino", JUN, 1)
@@ -444,13 +443,13 @@ class Italy(HolidayBase, ChristianHolidays, InternationalHolidays):
444
443
  self._add_holiday("Sant'Apollinare", JUL, 23)
445
444
 
446
445
  def _add_subdiv_rc_holidays(self):
447
- self._add_holiday("San Giorgio", APR, 23)
446
+ self._add_saint_georges_day("San Giorgio")
448
447
 
449
448
  def _add_subdiv_re_holidays(self):
450
449
  self._add_holiday("San Prospero Vescovo", NOV, 24)
451
450
 
452
451
  def _add_subdiv_rg_holidays(self):
453
- self._add_holiday("San Giorgio", APR, 23)
452
+ self._add_saint_georges_day("San Giorgio")
454
453
 
455
454
  def _add_subdiv_ri_holidays(self):
456
455
  self._add_holiday("Santa Barbara", DEC, 4)
@@ -12,7 +12,7 @@
12
12
  from datetime import date
13
13
  from datetime import timedelta as td
14
14
 
15
- from holidays.calendars import _get_nth_weekday_from, _get_nth_weekday_of_month
15
+ from holidays.calendars import _get_nth_weekday_of_month
16
16
  from holidays.constants import MAY, AUG, OCT, MON
17
17
  from holidays.holiday_base import HolidayBase
18
18
  from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
@@ -31,16 +31,14 @@ class Jamaica(HolidayBase, ChristianHolidays, InternationalHolidays):
31
31
  InternationalHolidays.__init__(self)
32
32
  super().__init__(*args, **kwargs)
33
33
 
34
- def _add_observed(self, hol_date: date, include_sat: bool = False) -> None:
34
+ def _add_observed(self, dt: date, include_sat: bool = False, days: int = +1) -> None:
35
35
  if not self.observed:
36
36
  return None
37
- if self._is_sunday(hol_date) or (
38
- self._is_saturday(hol_date) and include_sat
39
- ):
40
- obs_date = _get_nth_weekday_from(1, MON, hol_date)
41
- if obs_date in self:
42
- obs_date += td(days=+1)
43
- self._add_holiday("%s (Observed)" % self[hol_date], obs_date)
37
+ if self._is_sunday(dt) or (include_sat and self._is_saturday(dt)):
38
+ self._add_holiday(
39
+ "%s (Observed)" % self[dt],
40
+ dt + td(days=+2 if self._is_saturday(dt) else days),
41
+ )
44
42
 
45
43
  def _populate(self, year):
46
44
  super()._populate(year)
@@ -58,9 +56,7 @@ class Jamaica(HolidayBase, ChristianHolidays, InternationalHolidays):
58
56
  self._add_easter_monday("Easter Monday")
59
57
 
60
58
  # National Labour Day
61
- self._add_observed(
62
- self._add_holiday("National Labour Day", MAY, 23), include_sat=True
63
- )
59
+ self._add_observed(self._add_holiday("National Labour Day", MAY, 23), include_sat=True)
64
60
 
65
61
  # Emancipation Day
66
62
  if year >= 1998:
@@ -70,18 +66,14 @@ class Jamaica(HolidayBase, ChristianHolidays, InternationalHolidays):
70
66
  self._add_observed(self._add_holiday("Independence Day", AUG, 6))
71
67
 
72
68
  # National Heroes Day
73
- self._add_holiday(
74
- "National Heroes Day", _get_nth_weekday_of_month(3, MON, OCT, year)
75
- )
69
+ self._add_holiday("National Heroes Day", _get_nth_weekday_of_month(3, MON, OCT, year))
76
70
 
77
71
  # Christmas Day
78
- dt = self._add_christmas_day("Christmas Day")
72
+ self._add_observed(self._add_christmas_day("Christmas Day"), days=+2)
79
73
 
80
74
  # Boxing Day
81
75
  self._add_observed(self._add_christmas_day_two("Boxing Day"))
82
76
 
83
- self._add_observed(dt)
84
-
85
77
 
86
78
  class JM(Jamaica):
87
79
  pass