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,7 +9,7 @@
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
12
+ from holidays.calendars import _CustomIslamicCalendar
13
13
  from holidays.constants import APR, MAY, JUN, JUL, AUG, SEP, NOV, DEC, FRI, SAT
14
14
  from holidays.holiday_base import HolidayBase
15
15
  from holidays.holiday_groups import InternationalHolidays, IslamicHolidays
@@ -43,9 +43,7 @@ class UnitedArabEmirates(HolidayBase, InternationalHolidays, IslamicHolidays):
43
43
 
44
44
  def __init__(self, *args, **kwargs):
45
45
  InternationalHolidays.__init__(self)
46
- IslamicHolidays.__init__(
47
- self, calendar=UnitedArabEmiratesIslamicCalendar()
48
- )
46
+ IslamicHolidays.__init__(self, calendar=UnitedArabEmiratesIslamicCalendar())
49
47
  super().__init__(*args, **kwargs)
50
48
 
51
49
  def _populate(self, year):
@@ -56,9 +54,7 @@ class UnitedArabEmirates(HolidayBase, InternationalHolidays, IslamicHolidays):
56
54
 
57
55
  # Commemoration Day.
58
56
  if year >= 2015:
59
- self._add_holiday(
60
- "Commemoration Day", *((DEC, 1) if year >= 2019 else (NOV, 30))
61
- )
57
+ self._add_holiday("Commemoration Day", *((DEC, 1) if year >= 2019 else (NOV, 30)))
62
58
 
63
59
  # National Day.
64
60
  self._add_holiday("National Day", DEC, 2)
@@ -83,15 +79,11 @@ class UnitedArabEmirates(HolidayBase, InternationalHolidays, IslamicHolidays):
83
79
 
84
80
  # Leilat al-Miraj.
85
81
  if year <= 2018: # The UAE government removed this starting 2019.
86
- self._add_isra_and_miraj_day(
87
- "Leilat al-Miraj - The Prophet's ascension"
88
- )
82
+ self._add_isra_and_miraj_day("Leilat al-Miraj - The Prophet's ascension")
89
83
 
90
84
  # Prophet Muhammad's Birthday.
91
85
  if year <= 2019: # The UAE government removed this starting 2020.
92
- self._add_mawlid_day(
93
- "Mawlud al-Nabi - Prophet Mohammad's Birthday"
94
- )
86
+ self._add_mawlid_day("Mawlud al-Nabi - Prophet Mohammad's Birthday")
95
87
 
96
88
 
97
89
  class AE(UnitedArabEmirates):
@@ -102,35 +94,35 @@ class ARE(UnitedArabEmirates):
102
94
  pass
103
95
 
104
96
 
105
- class UnitedArabEmiratesIslamicCalendar(_CustomCalendar, _IslamicLunar):
97
+ class UnitedArabEmiratesIslamicCalendar(_CustomIslamicCalendar):
106
98
  EID_AL_ADHA_DATES = {
107
- 2017: ((SEP, 1),),
108
- 2018: ((AUG, 21),),
109
- 2019: ((AUG, 11),),
110
- 2020: ((JUL, 31),),
99
+ 2017: (SEP, 1),
100
+ 2018: (AUG, 21),
101
+ 2019: (AUG, 11),
102
+ 2020: (JUL, 31),
111
103
  }
112
104
 
113
105
  EID_AL_FITR_DATES = {
114
- 2017: ((JUN, 25),),
115
- 2018: ((JUN, 14),),
116
- 2019: ((JUN, 3),),
117
- 2020: ((MAY, 24),),
106
+ 2017: (JUN, 25),
107
+ 2018: (JUN, 14),
108
+ 2019: (JUN, 3),
109
+ 2020: (MAY, 24),
118
110
  }
119
111
 
120
112
  HIJRI_NEW_YEAR_DATES = {
121
- 2017: ((SEP, 22),),
122
- 2018: ((SEP, 11),),
123
- 2019: ((AUG, 31),),
124
- 2020: ((AUG, 23),),
113
+ 2017: (SEP, 22),
114
+ 2018: (SEP, 11),
115
+ 2019: (AUG, 31),
116
+ 2020: (AUG, 23),
125
117
  }
126
118
 
127
119
  ISRA_AND_MIRAJ_DATES = {
128
- 2017: ((APR, 23),),
129
- 2018: ((APR, 13),),
120
+ 2017: (APR, 23),
121
+ 2018: (APR, 13),
130
122
  }
131
123
 
132
124
  MAWLID_DATES = {
133
- 2017: ((NOV, 30),),
134
- 2018: ((NOV, 19),),
135
- 2019: ((NOV, 9),),
125
+ 2017: (NOV, 30),
126
+ 2018: (NOV, 19),
127
+ 2019: (NOV, 9),
136
128
  }
@@ -11,39 +11,40 @@
11
11
 
12
12
  from datetime import date
13
13
  from datetime import timedelta as td
14
- from typing import Any, Tuple, Union
14
+ from typing import Tuple, Union
15
15
 
16
- from dateutil.easter import easter
17
-
18
- from holidays.calendars import _get_nth_weekday_from, _get_nth_weekday_of_month
19
- from holidays.constants import JAN, MAR, APR, MAY, JUN, JUL, AUG, SEP, NOV
20
- from holidays.constants import DEC, MON
16
+ from holidays.calendars import _get_nth_weekday_of_month
17
+ from holidays.constants import MAR, APR, MAY, JUN, JUL, AUG, SEP, NOV, DEC, MON
21
18
  from holidays.holiday_base import HolidayBase
19
+ from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
22
20
 
23
21
 
24
- class UnitedKingdom(HolidayBase):
22
+ class UnitedKingdom(HolidayBase, ChristianHolidays, InternationalHolidays):
25
23
  """
26
24
  https://en.wikipedia.org/wiki/Public_holidays_in_the_United_Kingdom
27
- This class is extended by other countries (Ireland, Isle of Man, ...)
28
- It must be taken into account when adding or modifying holidays.
29
- Look at _country_specific() method for country specific behavior.
30
25
  """
31
26
 
32
27
  country = "GB"
33
28
  special_holidays = {
34
- 1977: ((JUN, 7, "Silver Jubilee of Elizabeth II"),),
35
- 1981: ((JUL, 29, "Wedding of Charles and Diana"),),
36
- 1999: ((DEC, 31, "Millennium Celebrations"),),
37
- 2002: ((JUN, 3, "Golden Jubilee of Elizabeth II"),),
38
- 2011: ((APR, 29, "Wedding of William and Catherine"),),
39
- 2012: ((JUN, 5, "Diamond Jubilee of Elizabeth II"),),
29
+ 1977: (JUN, 7, "Silver Jubilee of Elizabeth II"),
30
+ 1981: (JUL, 29, "Wedding of Charles and Diana"),
31
+ 1999: (DEC, 31, "Millennium Celebrations"),
32
+ 2002: (JUN, 3, "Golden Jubilee of Elizabeth II"),
33
+ 2011: (APR, 29, "Wedding of William and Catherine"),
34
+ 2012: (JUN, 5, "Diamond Jubilee of Elizabeth II"),
40
35
  2022: (
41
36
  (JUN, 3, "Platinum Jubilee of Elizabeth II"),
42
37
  (SEP, 19, "State Funeral of Queen Elizabeth II"),
43
38
  ),
44
- 2023: ((MAY, 8, "Coronation of Charles III"),),
39
+ 2023: (MAY, 8, "Coronation of Charles III"),
45
40
  }
46
41
  subdivisions: Union[Tuple[()], Tuple[str, ...]] = (
42
+ "ENG", # England
43
+ "NIR", # Northern Ireland
44
+ "SCT", # Scotland
45
+ "WLS", # Wales
46
+ )
47
+ _deprecated_subdivisions: Tuple[str, ...] = (
47
48
  "England",
48
49
  "Northern Ireland",
49
50
  "Scotland",
@@ -51,124 +52,131 @@ class UnitedKingdom(HolidayBase):
51
52
  "Wales",
52
53
  )
53
54
 
54
- def __init__(self, **kwargs: Any) -> None:
55
- # default subdiv to UK; state for backwards compatibility
56
- if not kwargs.get("subdiv", kwargs.get("state")):
57
- kwargs["subdiv"] = "UK"
58
- HolidayBase.__init__(self, **kwargs)
55
+ def __init__(self, *args, **kwargs):
56
+ ChristianHolidays.__init__(self)
57
+ InternationalHolidays.__init__(self)
58
+ super().__init__(*args, **kwargs)
59
+
60
+ def _add_observed(self, dt: date, days: int = +1) -> None:
61
+ if self.observed and self._is_weekend(dt):
62
+ self._add_holiday(
63
+ "%s (Observed)" % self[dt],
64
+ dt + td(days=+2 if self._is_saturday(dt) else days),
65
+ )
59
66
 
60
67
  def _populate(self, year: int) -> None:
61
68
  super()._populate(year)
62
69
 
63
- # New Year's Day
64
- if year >= 1974:
65
- name = "New Year's Day"
66
- dt = date(year, JAN, 1)
67
- self[dt] = name
68
- if self.observed and self._is_weekend(dt):
69
- self[_get_nth_weekday_from(1, MON, dt)] = name + " (Observed)"
70
+ # Good Friday
71
+ self._add_good_friday("Good Friday")
70
72
 
71
- # New Year Holiday
72
- if self.subdiv in {"Scotland", "UK"}:
73
- name = "New Year Holiday"
74
- dt = date(year, JAN, 2)
75
- if self.subdiv == "UK":
76
- name += " [Scotland]"
77
- self[dt] = name
78
- if self.observed and self._is_weekend(dt):
79
- self[dt + td(days=+2)] = name + " (Observed)"
80
- elif self.observed and self._is_monday(dt):
81
- self[dt + td(days=+1)] = name + " (Observed)"
73
+ # May Day bank holiday (first Monday in May)
74
+ if year >= 1978:
75
+ dt = (
76
+ date(year, MAY, 8)
77
+ # In 2020 moved to Friday to mark 75th anniversary of VE Day.
78
+ if year in {1995, 2020}
79
+ else _get_nth_weekday_of_month(1, MON, MAY, year)
80
+ )
81
+ self._add_holiday("May Day", dt)
82
82
 
83
- # St. Patrick's Day
84
- if self.subdiv in {"Northern Ireland", "UK"}:
85
- name = "St. Patrick's Day"
86
- dt = date(year, MAR, 17)
87
- if self.subdiv == "UK":
88
- name += " [Northern Ireland]"
89
- self[dt] = name
90
- if self.observed and self._is_weekend(dt):
91
- self[_get_nth_weekday_from(1, MON, dt)] = name + " (Observed)"
83
+ # Spring bank holiday (last Monday in May)
84
+ if year >= 1971:
85
+ spring_bank_dates = {
86
+ 2002: date(year, JUN, 4),
87
+ 2012: date(year, JUN, 4),
88
+ 2022: date(year, JUN, 2),
89
+ }
90
+ dt = spring_bank_dates.get(year, _get_nth_weekday_of_month(-1, MON, MAY, year))
91
+ self._add_holiday("Spring Bank Holiday", dt)
92
92
 
93
- # Battle of the Boyne
94
- if self.subdiv in {"Northern Ireland", "UK"}:
95
- name = "Battle of the Boyne"
96
- if self.subdiv == "UK":
97
- name += " [Northern Ireland]"
98
- self[date(year, JUL, 12)] = name
93
+ # Christmas Day
94
+ self._add_observed(self._add_christmas_day("Christmas Day"), days=+2)
99
95
 
100
- # Summer bank holiday (first Monday in August)
101
- if self.subdiv in {"Scotland", "UK"}:
102
- name = "Summer Bank Holiday"
103
- if self.subdiv == "UK":
104
- name += " [Scotland]"
105
- self[_get_nth_weekday_of_month(1, MON, AUG, year)] = name
96
+ # Boxing Day
97
+ self._add_observed(self._add_christmas_day_two("Boxing Day"), days=+2)
98
+
99
+ if self.subdiv == "England":
100
+ self._add_subdiv_eng_holidays()
101
+ elif self.subdiv == "Northern Ireland":
102
+ self._add_subdiv_nir_holidays()
103
+ elif self.subdiv == "Scotland":
104
+ self._add_subdiv_sct_holidays()
105
+ elif self.subdiv == "Wales":
106
+ self._add_subdiv_wls_holidays()
107
+
108
+ def _add_subdiv_holidays(self):
109
+ if self.subdiv not in {"SCT", "Scotland"}:
110
+ # New Year's Day
111
+ if self._year >= 1974:
112
+ self._add_observed(self._add_new_years_day("New Year's Day"))
113
+
114
+ super()._add_subdiv_holidays()
115
+
116
+ def _add_subdiv_eng_holidays(self):
117
+ # Easter Monday
118
+ self._add_easter_monday("Easter Monday")
106
119
 
107
- # St. Andrew's Day
108
- if self.subdiv in {"Scotland", "UK"}:
109
- name = "St. Andrew's Day"
110
- if self.subdiv == "UK":
111
- name += " [Scotland]"
112
- self[date(year, NOV, 30)] = name
120
+ # Late Summer bank holiday (last Monday in August)
121
+ if self._year >= 1971:
122
+ self._add_holiday(
123
+ "Late Summer Bank Holiday",
124
+ _get_nth_weekday_of_month(-1, MON, AUG, self._year),
125
+ )
113
126
 
114
- # Christmas Day
115
- name = "Christmas Day"
116
- dt = date(year, DEC, 25)
117
- self[dt] = name
118
- if self.observed and self._is_weekend(dt):
119
- self[dt + td(days=+2)] = name + " (Observed)"
127
+ def _add_subdiv_nir_holidays(self):
128
+ # St. Patrick's Day
129
+ self._add_observed(self._add_holiday("St. Patrick's Day", MAR, 17))
120
130
 
121
- # Overwrite to modify country specific holidays
122
- self._country_specific(year)
131
+ # Easter Monday
132
+ self._add_easter_monday("Easter Monday")
123
133
 
124
- def _country_specific(self, year: int) -> None:
125
- # This method is replaced by class Ireland
134
+ # Battle of the Boyne
135
+ self._add_holiday("Battle of the Boyne", JUL, 12)
126
136
 
127
- # UnitedKingdom exclusive holidays
137
+ # Late Summer bank holiday (last Monday in August)
138
+ if self._year >= 1971:
139
+ self._add_holiday(
140
+ "Late Summer Bank Holiday",
141
+ _get_nth_weekday_of_month(-1, MON, AUG, self._year),
142
+ )
128
143
 
129
- easter_date = easter(year)
130
- # Good Friday
131
- self[easter_date + td(days=-2)] = "Good Friday"
144
+ def _add_subdiv_sct_holidays(self):
145
+ # New Year's Day
146
+ name = "New Year's Day"
147
+ jan_1 = self._add_new_years_day(name)
148
+ if self.observed and self._is_weekend(jan_1):
149
+ self._add_holiday(
150
+ "%s (Observed)" % name,
151
+ jan_1 + td(days=+3 if self._is_saturday(jan_1) else +1),
152
+ )
132
153
 
133
- # Easter Monday
134
- if self.subdiv != "Scotland":
135
- name = "Easter Monday"
136
- if self.subdiv == "UK":
137
- name += " [England/Wales/Northern Ireland]"
138
- self[easter_date + td(days=+1)] = name
154
+ # New Year Holiday
155
+ name = "New Year Holiday"
156
+ jan_2 = self._add_new_years_day_two(name)
157
+ self._add_observed(jan_2)
158
+ if self.observed and self._is_monday(jan_2):
159
+ self._add_new_years_day_three("%s (Observed)" % name)
139
160
 
140
- # May Day bank holiday (first Monday in May)
141
- if year >= 1978:
142
- name = "May Day"
143
- if year == 1995 or year == 2020:
144
- # In 2020 moved to Friday to mark 75th anniversary of VE Day.
145
- dt = date(year, MAY, 8)
146
- else:
147
- dt = _get_nth_weekday_of_month(1, MON, MAY, year)
148
- self[dt] = name
161
+ # Summer bank holiday (first Monday in August)
162
+ self._add_holiday(
163
+ "Summer Bank Holiday",
164
+ _get_nth_weekday_of_month(1, MON, AUG, self._year),
165
+ )
149
166
 
150
- # Spring bank holiday (last Monday in May)
151
- name = "Spring Bank Holiday"
152
- if year == 2012:
153
- self[date(year, JUN, 4)] = name
154
- elif year == 2022:
155
- self[date(year, JUN, 2)] = name
156
- elif year >= 1971:
157
- self[_get_nth_weekday_of_month(-1, MON, MAY, year)] = name
167
+ # St. Andrew's Day
168
+ self._add_holiday("St. Andrew's Day", NOV, 30)
158
169
 
159
- # Late Summer bank holiday (last Monday in August)
160
- if self.subdiv != "Scotland" and year >= 1971:
161
- name = "Late Summer Bank Holiday"
162
- if self.subdiv == "UK":
163
- name += " [England/Wales/Northern Ireland]"
164
- self[_get_nth_weekday_of_month(-1, MON, AUG, year)] = name
170
+ def _add_subdiv_wls_holidays(self):
171
+ # Easter Monday
172
+ self._add_easter_monday("Easter Monday")
165
173
 
166
- # Boxing Day
167
- name = "Boxing Day"
168
- dt = date(year, DEC, 26)
169
- self[dt] = name
170
- if self.observed and self._is_weekend(dt):
171
- self[dt + td(days=+2)] = name + " (Observed)"
174
+ # Late Summer bank holiday (last Monday in August)
175
+ if self._year >= 1971:
176
+ self._add_holiday(
177
+ "Late Summer Bank Holiday",
178
+ _get_nth_weekday_of_month(-1, MON, AUG, self._year),
179
+ )
172
180
 
173
181
 
174
182
  class UK(UnitedKingdom):
@@ -16,8 +16,24 @@ from typing import Tuple, Union
16
16
  from dateutil.easter import easter
17
17
 
18
18
  from holidays.calendars import _get_nth_weekday_from, _get_nth_weekday_of_month
19
- from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP
20
- from holidays.constants import OCT, NOV, DEC, MON, TUE, THU, FRI
19
+ from holidays.constants import (
20
+ JAN,
21
+ FEB,
22
+ MAR,
23
+ APR,
24
+ MAY,
25
+ JUN,
26
+ JUL,
27
+ AUG,
28
+ SEP,
29
+ OCT,
30
+ NOV,
31
+ DEC,
32
+ MON,
33
+ TUE,
34
+ THU,
35
+ FRI,
36
+ )
21
37
  from holidays.holiday_base import HolidayBase
22
38
 
23
39
 
@@ -138,11 +154,7 @@ class UnitedStates(HolidayBase):
138
154
  self[date(year, JAN, 19)] = name
139
155
 
140
156
  # Inauguration Day
141
- if (
142
- self.subdiv in {"DC", "LA", "MD", "VA"}
143
- and year >= 1789
144
- and (year - 1789) % 4 == 0
145
- ):
157
+ if self.subdiv in {"DC", "LA", "MD", "VA"} and year >= 1789 and (year - 1789) % 4 == 0:
146
158
  if year >= 1937:
147
159
  dt = date(year, JAN, 20)
148
160
  else:
@@ -154,13 +166,8 @@ class UnitedStates(HolidayBase):
154
166
  name = "Martin Luther King Jr. Day"
155
167
  if self.subdiv == "AL":
156
168
  name = "Robert E. Lee/Martin Luther King Birthday"
157
- elif (self.subdiv == "MS") or (
158
- (self.subdiv == "AR") and (year <= 2017)
159
- ):
160
- name = (
161
- "Dr. Martin Luther King Jr. "
162
- "and Robert E. Lee's Birthdays"
163
- )
169
+ elif (self.subdiv == "MS") or ((self.subdiv == "AR") and (year <= 2017)):
170
+ name = "Dr. Martin Luther King Jr. and Robert E. Lee's Birthdays"
164
171
  elif self.subdiv in {"AZ", "NH"}:
165
172
  name = "Dr. Martin Luther King Jr./Civil Rights Day"
166
173
  elif self.subdiv == "GA" and year <= 2011:
@@ -170,9 +177,9 @@ class UnitedStates(HolidayBase):
170
177
  self[_get_nth_weekday_of_month(3, MON, JAN, year)] = name
171
178
 
172
179
  # Lincoln's Birthday
173
- if (
174
- self.subdiv in {"CT", "IA", "IL", "NJ", "NY"} and year >= 1971
175
- ) or (self.subdiv == "CA" and 1971 <= year <= 2009):
180
+ if (self.subdiv in {"CT", "IA", "IL", "NJ", "NY"} and year >= 1971) or (
181
+ self.subdiv == "CA" and 1971 <= year <= 2009
182
+ ):
176
183
  self._add_with_observed(date(year, FEB, 12), "Lincoln's Birthday")
177
184
 
178
185
  # Susan B. Anthony Day
@@ -212,15 +219,11 @@ class UnitedStates(HolidayBase):
212
219
 
213
220
  # Guam Discovery Day
214
221
  if self.subdiv == "GU" and year >= 1970:
215
- self[
216
- _get_nth_weekday_of_month(1, MON, MAR, year)
217
- ] = "Guam Discovery Day"
222
+ self[_get_nth_weekday_of_month(1, MON, MAR, year)] = "Guam Discovery Day"
218
223
 
219
224
  # Casimir Pulaski Day
220
225
  if self.subdiv == "IL" and year >= 1978:
221
- self[
222
- _get_nth_weekday_of_month(1, MON, MAR, year)
223
- ] = "Casimir Pulaski Day"
226
+ self[_get_nth_weekday_of_month(1, MON, MAR, year)] = "Casimir Pulaski Day"
224
227
 
225
228
  # Texas Independence Day
226
229
  if self.subdiv == "TX" and year >= 1874:
@@ -228,9 +231,7 @@ class UnitedStates(HolidayBase):
228
231
 
229
232
  # Town Meeting Day
230
233
  if self.subdiv == "VT" and year >= 1800:
231
- self[
232
- _get_nth_weekday_of_month(1, TUE, MAR, year)
233
- ] = "Town Meeting Day"
234
+ self[_get_nth_weekday_of_month(1, TUE, MAR, year)] = "Town Meeting Day"
234
235
 
235
236
  # Evacuation Day
236
237
  if self.subdiv == "MA" and year >= 1901:
@@ -242,21 +243,15 @@ class UnitedStates(HolidayBase):
242
243
 
243
244
  # Emancipation Day
244
245
  if self.subdiv == "PR":
245
- self._add_with_observed(
246
- date(year, MAR, 22), "Emancipation Day", before=False
247
- )
246
+ self._add_with_observed(date(year, MAR, 22), "Emancipation Day", before=False)
248
247
 
249
248
  # Commonwealth Covenant Day in Northern Mariana Islands
250
249
  if self.subdiv == "MP":
251
- self._add_with_observed(
252
- date(year, MAR, 24), "Commonwealth Covenant Day"
253
- )
250
+ self._add_with_observed(date(year, MAR, 24), "Commonwealth Covenant Day")
254
251
 
255
252
  # Prince Jonah Kuhio Kalanianaole Day
256
253
  if self.subdiv == "HI" and year >= 1949:
257
- self._add_with_observed(
258
- date(year, MAR, 26), "Prince Jonah Kuhio Kalanianaole Day"
259
- )
254
+ self._add_with_observed(date(year, MAR, 26), "Prince Jonah Kuhio Kalanianaole Day")
260
255
 
261
256
  # Seward's Day
262
257
  if self.subdiv == "AK":
@@ -341,9 +336,7 @@ class UnitedStates(HolidayBase):
341
336
  self[date(year, APR, 22)] = name
342
337
 
343
338
  # Primary Election Day
344
- if self.subdiv == "IN" and (
345
- (year >= 2006 and year % 2 == 0) or year >= 2015
346
- ):
339
+ if self.subdiv == "IN" and ((year >= 2006 and year % 2 == 0) or year >= 2015):
347
340
  self[
348
341
  _get_nth_weekday_of_month(1, MON, MAY, year) + td(days=+1)
349
342
  ] = "Primary Election Day"
@@ -354,17 +347,13 @@ class UnitedStates(HolidayBase):
354
347
 
355
348
  # Memorial Day
356
349
  if year >= 1971:
357
- self[
358
- _get_nth_weekday_of_month(-1, MON, MAY, year)
359
- ] = "Memorial Day"
350
+ self[_get_nth_weekday_of_month(-1, MON, MAY, year)] = "Memorial Day"
360
351
  elif year >= 1888:
361
352
  self[date(year, MAY, 30)] = "Memorial Day"
362
353
 
363
354
  # Juneteenth Day
364
355
  if year >= 2021:
365
- self._add_with_observed(
366
- date(year, JUN, 19), "Juneteenth National Independence Day"
367
- )
356
+ self._add_with_observed(date(year, JUN, 19), "Juneteenth National Independence Day")
368
357
 
369
358
  # Jefferson Davis Birthday
370
359
  name = "Jefferson Davis Birthday"
@@ -406,9 +395,7 @@ class UnitedStates(HolidayBase):
406
395
 
407
396
  # Constitution Day
408
397
  if self.subdiv == "PR":
409
- self._add_with_observed(
410
- date(year, JUL, 25), "Constitution Day", before=False
411
- )
398
+ self._add_with_observed(date(year, JUL, 25), "Constitution Day", before=False)
412
399
 
413
400
  # Victory Day
414
401
  if self.subdiv == "RI" and year >= 1948:
@@ -416,15 +403,11 @@ class UnitedStates(HolidayBase):
416
403
 
417
404
  # Statehood Day (Hawaii)
418
405
  if self.subdiv == "HI" and year >= 1959:
419
- self[
420
- _get_nth_weekday_of_month(3, FRI, AUG, year)
421
- ] = "Statehood Day"
406
+ self[_get_nth_weekday_of_month(3, FRI, AUG, year)] = "Statehood Day"
422
407
 
423
408
  # Bennington Battle Day
424
409
  if self.subdiv == "VT" and year >= 1778:
425
- self._add_with_observed(
426
- date(year, AUG, 16), "Bennington Battle Day"
427
- )
410
+ self._add_with_observed(date(year, AUG, 16), "Bennington Battle Day")
428
411
 
429
412
  # Lyndon Baines Johnson Day
430
413
  if self.subdiv == "TX" and year >= 1973:
@@ -449,9 +432,7 @@ class UnitedStates(HolidayBase):
449
432
 
450
433
  # Commonwealth Cultural Day in Northern Mariana Islands
451
434
  if self.subdiv == "MP":
452
- self[
453
- _get_nth_weekday_of_month(2, MON, OCT, year)
454
- ] = "Commonwealth Cultural Day"
435
+ self[_get_nth_weekday_of_month(2, MON, OCT, year)] = "Commonwealth Cultural Day"
455
436
 
456
437
  # Alaska Day
457
438
  if self.subdiv == "AK" and year >= 1867:
@@ -487,9 +468,7 @@ class UnitedStates(HolidayBase):
487
468
  and year >= 2008
488
469
  and year % 2 == 0
489
470
  ) or (self.subdiv in {"IN", "NY"} and year >= 2015):
490
- self[
491
- _get_nth_weekday_of_month(1, MON, NOV, year) + td(days=+1)
492
- ] = "Election Day"
471
+ self[_get_nth_weekday_of_month(1, MON, NOV, year) + td(days=+1)] = "Election Day"
493
472
 
494
473
  # All Souls' Day
495
474
  if self.subdiv == "GU":
@@ -511,9 +490,7 @@ class UnitedStates(HolidayBase):
511
490
 
512
491
  # Discovery Day
513
492
  if self.subdiv == "PR":
514
- self._add_with_observed(
515
- date(year, NOV, 19), "Discovery Day", before=False
516
- )
493
+ self._add_with_observed(date(year, NOV, 19), "Discovery Day", before=False)
517
494
 
518
495
  # Thanksgiving
519
496
  if year >= 1871:
@@ -526,10 +503,7 @@ class UnitedStates(HolidayBase):
526
503
  # Family Day
527
504
  # New Mexico Presidents' Day
528
505
  if (
529
- (
530
- self.subdiv in {"CA", "DE", "FL", "NC", "NH", "OK", "TX", "WV"}
531
- and year >= 1975
532
- )
506
+ (self.subdiv in {"CA", "DE", "FL", "NC", "NH", "OK", "TX", "WV"} and year >= 1975)
533
507
  or (self.subdiv == "IN" and year >= 2010)
534
508
  or (self.subdiv == "MD" and year >= 2008)
535
509
  or self.subdiv in {"NM", "NV", "PA"}
@@ -546,9 +520,7 @@ class UnitedStates(HolidayBase):
546
520
  name = "Family Day"
547
521
  if self.subdiv == "NM":
548
522
  name = "Presidents' Day"
549
- self[
550
- _get_nth_weekday_of_month(4, THU, NOV, year) + td(days=+1)
551
- ] = name
523
+ self[_get_nth_weekday_of_month(4, THU, NOV, year) + td(days=+1)] = name
552
524
 
553
525
  # Robert E. Lee's Birthday
554
526
  if self.subdiv == "GA" and year >= 1986:
@@ -556,9 +528,7 @@ class UnitedStates(HolidayBase):
556
528
  name = "State Holiday"
557
529
  else:
558
530
  name = "Robert E. Lee's Birthday"
559
- self[
560
- _get_nth_weekday_of_month(4, THU, NOV, year) + td(days=+1)
561
- ] = name
531
+ self[_get_nth_weekday_of_month(4, THU, NOV, year) + td(days=+1)] = name
562
532
 
563
533
  # Lady of Camarin Day
564
534
  if self.subdiv == "GU":
@@ -25,6 +25,7 @@ class Uruguay(HolidayBase, ChristianHolidays, InternationalHolidays):
25
25
 
26
26
  country = "UY"
27
27
  default_language = "es"
28
+ supported_languages = ("en_US", "es", "uk")
28
29
 
29
30
  def __init__(self, *args, **kwargs) -> None:
30
31
  ChristianHolidays.__init__(self)