holidays 0.65__py3-none-any.whl → 0.67__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 (463) hide show
  1. holidays/calendars/__init__.py +1 -0
  2. holidays/calendars/persian.py +6 -0
  3. holidays/calendars/sinhala.py +414 -0
  4. holidays/countries/__init__.py +3 -0
  5. holidays/countries/australia.py +6 -6
  6. holidays/countries/cambodia.py +1 -1
  7. holidays/countries/chile.py +1 -1
  8. holidays/countries/cuba.py +1 -1
  9. holidays/countries/czechia.py +39 -30
  10. holidays/countries/denmark.py +1 -1
  11. holidays/countries/finland.py +19 -19
  12. holidays/countries/germany.py +11 -22
  13. holidays/countries/greenland.py +22 -19
  14. holidays/countries/guatemala.py +1 -1
  15. holidays/countries/haiti.py +3 -3
  16. holidays/countries/hongkong.py +124 -174
  17. holidays/countries/iceland.py +16 -8
  18. holidays/countries/iran.py +522 -43
  19. holidays/countries/isle_of_man.py +15 -11
  20. holidays/countries/israel.py +1 -1
  21. holidays/countries/kazakhstan.py +1 -1
  22. holidays/countries/laos.py +2 -2
  23. holidays/countries/netherlands.py +1 -1
  24. holidays/countries/nicaragua.py +1 -1
  25. holidays/countries/panama.py +69 -31
  26. holidays/countries/peru.py +1 -1
  27. holidays/countries/saint_lucia.py +88 -0
  28. holidays/countries/seychelles.py +4 -4
  29. holidays/countries/singapore.py +1 -1
  30. holidays/countries/slovakia.py +14 -7
  31. holidays/countries/slovenia.py +63 -19
  32. holidays/countries/spain.py +9 -9
  33. holidays/countries/sri_lanka.py +515 -0
  34. holidays/countries/sweden.py +6 -9
  35. holidays/countries/switzerland.py +1 -1
  36. holidays/countries/thailand.py +1 -1
  37. holidays/countries/tuvalu.py +174 -0
  38. holidays/countries/ukraine.py +1 -1
  39. holidays/countries/united_arab_emirates.py +95 -11
  40. holidays/countries/united_kingdom.py +72 -56
  41. holidays/countries/united_states.py +141 -10
  42. holidays/countries/uruguay.py +1 -1
  43. holidays/countries/vatican_city.py +134 -53
  44. holidays/financial/brasil_bolsa_balcao.py +1 -1
  45. holidays/groups/__init__.py +1 -0
  46. holidays/groups/christian.py +10 -0
  47. holidays/groups/persian.py +12 -0
  48. holidays/groups/sinhala.py +192 -0
  49. holidays/holiday_base.py +62 -13
  50. holidays/locale/ar/LC_MESSAGES/AE.mo +0 -0
  51. holidays/locale/ar/LC_MESSAGES/UA.mo +0 -0
  52. holidays/locale/cs/LC_MESSAGES/CZ.mo +0 -0
  53. holidays/locale/da/LC_MESSAGES/GL.mo +0 -0
  54. holidays/locale/en_GB/LC_MESSAGES/GB.mo +0 -0
  55. holidays/locale/en_GB/LC_MESSAGES/IM.mo +0 -0
  56. holidays/locale/en_GB/LC_MESSAGES/TV.mo +0 -0
  57. holidays/locale/en_HK/LC_MESSAGES/HK.mo +0 -0
  58. holidays/locale/en_LC/LC_MESSAGES/LC.mo +0 -0
  59. holidays/locale/en_US/LC_MESSAGES/AE.mo +0 -0
  60. holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
  61. holidays/locale/en_US/LC_MESSAGES/CH.mo +0 -0
  62. holidays/locale/en_US/LC_MESSAGES/CL.mo +0 -0
  63. holidays/locale/en_US/LC_MESSAGES/CO.mo +0 -0
  64. holidays/locale/en_US/LC_MESSAGES/CU.mo +0 -0
  65. holidays/locale/en_US/LC_MESSAGES/CZ.mo +0 -0
  66. holidays/locale/en_US/LC_MESSAGES/DK.mo +0 -0
  67. holidays/locale/en_US/LC_MESSAGES/ES.mo +0 -0
  68. holidays/locale/en_US/LC_MESSAGES/FI.mo +0 -0
  69. holidays/locale/en_US/LC_MESSAGES/GB.mo +0 -0
  70. holidays/locale/en_US/LC_MESSAGES/GL.mo +0 -0
  71. holidays/locale/en_US/LC_MESSAGES/GT.mo +0 -0
  72. holidays/locale/en_US/LC_MESSAGES/HK.mo +0 -0
  73. holidays/locale/en_US/LC_MESSAGES/HT.mo +0 -0
  74. holidays/locale/en_US/LC_MESSAGES/IM.mo +0 -0
  75. holidays/locale/en_US/LC_MESSAGES/IR.mo +0 -0
  76. holidays/locale/en_US/LC_MESSAGES/IS.mo +0 -0
  77. holidays/locale/en_US/LC_MESSAGES/KH.mo +0 -0
  78. holidays/locale/en_US/LC_MESSAGES/KZ.mo +0 -0
  79. holidays/locale/en_US/LC_MESSAGES/LA.mo +0 -0
  80. holidays/locale/en_US/LC_MESSAGES/LC.mo +0 -0
  81. holidays/locale/en_US/LC_MESSAGES/LK.mo +0 -0
  82. holidays/locale/en_US/LC_MESSAGES/NI.mo +0 -0
  83. holidays/locale/en_US/LC_MESSAGES/PA.mo +0 -0
  84. holidays/locale/en_US/LC_MESSAGES/PE.mo +0 -0
  85. holidays/locale/en_US/LC_MESSAGES/RU.mo +0 -0
  86. holidays/locale/en_US/LC_MESSAGES/SC.mo +0 -0
  87. holidays/locale/en_US/LC_MESSAGES/SI.mo +0 -0
  88. holidays/locale/en_US/LC_MESSAGES/TV.mo +0 -0
  89. holidays/locale/en_US/LC_MESSAGES/UA.mo +0 -0
  90. holidays/locale/en_US/LC_MESSAGES/UY.mo +0 -0
  91. holidays/locale/en_US/LC_MESSAGES/VA.mo +0 -0
  92. holidays/locale/es/LC_MESSAGES/PA.mo +0 -0
  93. holidays/locale/{fa → fa_IR}/LC_MESSAGES/IR.mo +0 -0
  94. holidays/locale/fi/LC_MESSAGES/GL.mo +0 -0
  95. holidays/locale/fy/LC_MESSAGES/NL.mo +0 -0
  96. holidays/locale/is/LC_MESSAGES/GL.mo +0 -0
  97. holidays/locale/is/LC_MESSAGES/IS.mo +0 -0
  98. holidays/locale/it/LC_MESSAGES/VA.mo +0 -0
  99. holidays/locale/kl/LC_MESSAGES/GL.mo +0 -0
  100. holidays/locale/no/LC_MESSAGES/GL.mo +0 -0
  101. holidays/locale/si_LK/LC_MESSAGES/LK.mo +0 -0
  102. holidays/locale/sk/LC_MESSAGES/CZ.mo +0 -0
  103. holidays/locale/sl/LC_MESSAGES/SI.mo +0 -0
  104. holidays/locale/sv/LC_MESSAGES/GL.mo +0 -0
  105. holidays/locale/ta_LK/LC_MESSAGES/LK.mo +0 -0
  106. holidays/locale/th/LC_MESSAGES/AE.mo +0 -0
  107. holidays/locale/th/LC_MESSAGES/GB.mo +0 -0
  108. holidays/locale/th/LC_MESSAGES/HK.mo +0 -0
  109. holidays/locale/th/LC_MESSAGES/IL.mo +0 -0
  110. holidays/locale/th/LC_MESSAGES/IM.mo +0 -0
  111. holidays/locale/th/LC_MESSAGES/UA.mo +0 -0
  112. holidays/locale/th/LC_MESSAGES/VA.mo +0 -0
  113. holidays/locale/tvl/LC_MESSAGES/TV.mo +0 -0
  114. holidays/locale/uk/LC_MESSAGES/AO.mo +0 -0
  115. holidays/locale/uk/LC_MESSAGES/CL.mo +0 -0
  116. holidays/locale/uk/LC_MESSAGES/CR.mo +0 -0
  117. holidays/locale/uk/LC_MESSAGES/CU.mo +0 -0
  118. holidays/locale/uk/LC_MESSAGES/CZ.mo +0 -0
  119. holidays/locale/uk/LC_MESSAGES/DK.mo +0 -0
  120. holidays/locale/uk/LC_MESSAGES/EE.mo +0 -0
  121. holidays/locale/uk/LC_MESSAGES/ES.mo +0 -0
  122. holidays/locale/uk/LC_MESSAGES/GE.mo +0 -0
  123. holidays/locale/uk/LC_MESSAGES/GL.mo +0 -0
  124. holidays/locale/uk/LC_MESSAGES/IS.mo +0 -0
  125. holidays/locale/uk/LC_MESSAGES/MC.mo +0 -0
  126. holidays/locale/uk/LC_MESSAGES/MG.mo +0 -0
  127. holidays/locale/uk/LC_MESSAGES/MZ.mo +0 -0
  128. holidays/locale/uk/LC_MESSAGES/PA.mo +0 -0
  129. holidays/locale/uk/LC_MESSAGES/PL.mo +0 -0
  130. holidays/locale/uk/LC_MESSAGES/RO.mo +0 -0
  131. holidays/locale/uk/LC_MESSAGES/SI.mo +0 -0
  132. holidays/locale/uk/LC_MESSAGES/UA.mo +0 -0
  133. holidays/locale/uk/LC_MESSAGES/UZ.mo +0 -0
  134. holidays/locale/zh_CN/LC_MESSAGES/HK.mo +0 -0
  135. holidays/locale/zh_HK/LC_MESSAGES/HK.mo +0 -0
  136. holidays/registry.py +3 -0
  137. holidays/version.py +1 -1
  138. {holidays-0.65.dist-info → holidays-0.67.dist-info}/AUTHORS +1 -0
  139. {holidays-0.65.dist-info → holidays-0.67.dist-info}/METADATA +46 -25
  140. holidays-0.67.dist-info/RECORD +560 -0
  141. holidays/locale/am/LC_MESSAGES/ET.po +0 -92
  142. holidays/locale/ar/LC_MESSAGES/AE.po +0 -76
  143. holidays/locale/ar/LC_MESSAGES/BH.po +0 -76
  144. holidays/locale/ar/LC_MESSAGES/CA.po +0 -161
  145. holidays/locale/ar/LC_MESSAGES/DJ.po +0 -85
  146. holidays/locale/ar/LC_MESSAGES/DZ.po +0 -80
  147. holidays/locale/ar/LC_MESSAGES/EG.po +0 -104
  148. holidays/locale/ar/LC_MESSAGES/ET.po +0 -93
  149. holidays/locale/ar/LC_MESSAGES/JO.po +0 -79
  150. holidays/locale/ar/LC_MESSAGES/KW.po +0 -75
  151. holidays/locale/ar/LC_MESSAGES/MA.po +0 -88
  152. holidays/locale/ar/LC_MESSAGES/SA.po +0 -67
  153. holidays/locale/ar/LC_MESSAGES/TN.po +0 -92
  154. holidays/locale/ar/LC_MESSAGES/UA.po +0 -113
  155. holidays/locale/az/LC_MESSAGES/AZ.po +0 -136
  156. holidays/locale/be/LC_MESSAGES/BY.po +0 -109
  157. holidays/locale/bg/LC_MESSAGES/BG.po +0 -87
  158. holidays/locale/bs/LC_MESSAGES/BA.po +0 -113
  159. holidays/locale/cnr/LC_MESSAGES/ME.po +0 -102
  160. holidays/locale/cs/LC_MESSAGES/CZ.po +0 -88
  161. holidays/locale/da/LC_MESSAGES/DK.po +0 -87
  162. holidays/locale/da/LC_MESSAGES/GL.po +0 -91
  163. holidays/locale/de/LC_MESSAGES/AT.po +0 -115
  164. holidays/locale/de/LC_MESSAGES/BE.po +0 -88
  165. holidays/locale/de/LC_MESSAGES/CH.po +0 -123
  166. holidays/locale/de/LC_MESSAGES/DE.po +0 -121
  167. holidays/locale/de/LC_MESSAGES/LI.po +0 -115
  168. holidays/locale/de/LC_MESSAGES/LU.po +0 -72
  169. holidays/locale/el/LC_MESSAGES/CY.po +0 -99
  170. holidays/locale/el/LC_MESSAGES/GR.po +0 -89
  171. holidays/locale/en_AU/LC_MESSAGES/AU.po +0 -177
  172. holidays/locale/en_CA/LC_MESSAGES/CA.po +0 -161
  173. holidays/locale/en_CY/LC_MESSAGES/CY.po +0 -100
  174. holidays/locale/en_PH/LC_MESSAGES/PH.po +0 -128
  175. holidays/locale/en_SC/LC_MESSAGES/SC.po +0 -117
  176. holidays/locale/en_SG/LC_MESSAGES/SG.po +0 -98
  177. holidays/locale/en_US/LC_MESSAGES/AE.po +0 -77
  178. holidays/locale/en_US/LC_MESSAGES/AF.po +0 -92
  179. holidays/locale/en_US/LC_MESSAGES/AL.po +0 -106
  180. holidays/locale/en_US/LC_MESSAGES/AM.po +0 -88
  181. holidays/locale/en_US/LC_MESSAGES/AO.po +0 -117
  182. holidays/locale/en_US/LC_MESSAGES/AR.po +0 -139
  183. holidays/locale/en_US/LC_MESSAGES/AT.po +0 -116
  184. holidays/locale/en_US/LC_MESSAGES/AU.po +0 -177
  185. holidays/locale/en_US/LC_MESSAGES/AW.po +0 -84
  186. holidays/locale/en_US/LC_MESSAGES/AZ.po +0 -136
  187. holidays/locale/en_US/LC_MESSAGES/BA.po +0 -113
  188. holidays/locale/en_US/LC_MESSAGES/BE.po +0 -88
  189. holidays/locale/en_US/LC_MESSAGES/BG.po +0 -87
  190. holidays/locale/en_US/LC_MESSAGES/BH.po +0 -77
  191. holidays/locale/en_US/LC_MESSAGES/BN.po +0 -109
  192. holidays/locale/en_US/LC_MESSAGES/BO.po +0 -117
  193. holidays/locale/en_US/LC_MESSAGES/BR.po +0 -263
  194. holidays/locale/en_US/LC_MESSAGES/BVMF.po +0 -79
  195. holidays/locale/en_US/LC_MESSAGES/BY.po +0 -114
  196. holidays/locale/en_US/LC_MESSAGES/CA.po +0 -161
  197. holidays/locale/en_US/LC_MESSAGES/CG.po +0 -67
  198. holidays/locale/en_US/LC_MESSAGES/CH.po +0 -124
  199. holidays/locale/en_US/LC_MESSAGES/CL.po +0 -136
  200. holidays/locale/en_US/LC_MESSAGES/CN.po +0 -102
  201. holidays/locale/en_US/LC_MESSAGES/CO.po +0 -105
  202. holidays/locale/en_US/LC_MESSAGES/CR.po +0 -85
  203. holidays/locale/en_US/LC_MESSAGES/CU.po +0 -69
  204. holidays/locale/en_US/LC_MESSAGES/CW.po +0 -84
  205. holidays/locale/en_US/LC_MESSAGES/CY.po +0 -100
  206. holidays/locale/en_US/LC_MESSAGES/CZ.po +0 -88
  207. holidays/locale/en_US/LC_MESSAGES/DE.po +0 -126
  208. holidays/locale/en_US/LC_MESSAGES/DJ.po +0 -84
  209. holidays/locale/en_US/LC_MESSAGES/DK.po +0 -88
  210. holidays/locale/en_US/LC_MESSAGES/DO.po +0 -76
  211. holidays/locale/en_US/LC_MESSAGES/DZ.po +0 -81
  212. holidays/locale/en_US/LC_MESSAGES/EC.po +0 -73
  213. holidays/locale/en_US/LC_MESSAGES/EE.po +0 -76
  214. holidays/locale/en_US/LC_MESSAGES/EG.po +0 -105
  215. holidays/locale/en_US/LC_MESSAGES/ES.po +0 -225
  216. holidays/locale/en_US/LC_MESSAGES/ET.po +0 -93
  217. holidays/locale/en_US/LC_MESSAGES/FI.po +0 -164
  218. holidays/locale/en_US/LC_MESSAGES/FR.po +0 -116
  219. holidays/locale/en_US/LC_MESSAGES/GE.po +0 -96
  220. holidays/locale/en_US/LC_MESSAGES/GL.po +0 -92
  221. holidays/locale/en_US/LC_MESSAGES/GR.po +0 -89
  222. holidays/locale/en_US/LC_MESSAGES/GT.po +0 -72
  223. holidays/locale/en_US/LC_MESSAGES/HN.po +0 -76
  224. holidays/locale/en_US/LC_MESSAGES/HR.po +0 -94
  225. holidays/locale/en_US/LC_MESSAGES/HT.po +0 -127
  226. holidays/locale/en_US/LC_MESSAGES/HU.po +0 -101
  227. holidays/locale/en_US/LC_MESSAGES/ID.po +0 -195
  228. holidays/locale/en_US/LC_MESSAGES/IL.po +0 -105
  229. holidays/locale/en_US/LC_MESSAGES/IR.po +0 -125
  230. holidays/locale/en_US/LC_MESSAGES/IS.po +0 -92
  231. holidays/locale/en_US/LC_MESSAGES/JO.po +0 -80
  232. holidays/locale/en_US/LC_MESSAGES/JP.po +0 -128
  233. holidays/locale/en_US/LC_MESSAGES/KH.po +0 -132
  234. holidays/locale/en_US/LC_MESSAGES/KR.po +0 -219
  235. holidays/locale/en_US/LC_MESSAGES/KW.po +0 -76
  236. holidays/locale/en_US/LC_MESSAGES/KZ.po +0 -103
  237. holidays/locale/en_US/LC_MESSAGES/LA.po +0 -160
  238. holidays/locale/en_US/LC_MESSAGES/LI.po +0 -116
  239. holidays/locale/en_US/LC_MESSAGES/LT.po +0 -94
  240. holidays/locale/en_US/LC_MESSAGES/LU.po +0 -72
  241. holidays/locale/en_US/LC_MESSAGES/LV.po +0 -106
  242. holidays/locale/en_US/LC_MESSAGES/MA.po +0 -89
  243. holidays/locale/en_US/LC_MESSAGES/MC.po +0 -85
  244. holidays/locale/en_US/LC_MESSAGES/MD.po +0 -84
  245. holidays/locale/en_US/LC_MESSAGES/ME.po +0 -102
  246. holidays/locale/en_US/LC_MESSAGES/MG.po +0 -92
  247. holidays/locale/en_US/LC_MESSAGES/MT.po +0 -83
  248. holidays/locale/en_US/LC_MESSAGES/MX.po +0 -60
  249. holidays/locale/en_US/LC_MESSAGES/MY.po +0 -250
  250. holidays/locale/en_US/LC_MESSAGES/MZ.po +0 -69
  251. holidays/locale/en_US/LC_MESSAGES/NI.po +0 -76
  252. holidays/locale/en_US/LC_MESSAGES/NL.po +0 -76
  253. holidays/locale/en_US/LC_MESSAGES/NO.po +0 -80
  254. holidays/locale/en_US/LC_MESSAGES/PE.po +0 -88
  255. holidays/locale/en_US/LC_MESSAGES/PH.po +0 -128
  256. holidays/locale/en_US/LC_MESSAGES/PL.po +0 -115
  257. holidays/locale/en_US/LC_MESSAGES/PT.po +0 -184
  258. holidays/locale/en_US/LC_MESSAGES/PY.po +0 -88
  259. holidays/locale/en_US/LC_MESSAGES/RO.po +0 -76
  260. holidays/locale/en_US/LC_MESSAGES/RS.po +0 -69
  261. holidays/locale/en_US/LC_MESSAGES/RU.po +0 -93
  262. holidays/locale/en_US/LC_MESSAGES/SA.po +0 -67
  263. holidays/locale/en_US/LC_MESSAGES/SC.po +0 -117
  264. holidays/locale/en_US/LC_MESSAGES/SE.po +0 -104
  265. holidays/locale/en_US/LC_MESSAGES/SG.po +0 -98
  266. holidays/locale/en_US/LC_MESSAGES/SI.po +0 -76
  267. holidays/locale/en_US/LC_MESSAGES/SK.po +0 -97
  268. holidays/locale/en_US/LC_MESSAGES/SV.po +0 -75
  269. holidays/locale/en_US/LC_MESSAGES/TH.po +0 -354
  270. holidays/locale/en_US/LC_MESSAGES/TL.po +0 -169
  271. holidays/locale/en_US/LC_MESSAGES/TN.po +0 -93
  272. holidays/locale/en_US/LC_MESSAGES/TO.po +0 -91
  273. holidays/locale/en_US/LC_MESSAGES/TR.po +0 -89
  274. holidays/locale/en_US/LC_MESSAGES/TW.po +0 -78
  275. holidays/locale/en_US/LC_MESSAGES/TZ.po +0 -119
  276. holidays/locale/en_US/LC_MESSAGES/UA.po +0 -113
  277. holidays/locale/en_US/LC_MESSAGES/UY.po +0 -120
  278. holidays/locale/en_US/LC_MESSAGES/UZ.po +0 -96
  279. holidays/locale/en_US/LC_MESSAGES/VE.po +0 -92
  280. holidays/locale/en_US/LC_MESSAGES/VN.po +0 -93
  281. holidays/locale/es/LC_MESSAGES/AR.po +0 -135
  282. holidays/locale/es/LC_MESSAGES/BO.po +0 -117
  283. holidays/locale/es/LC_MESSAGES/CL.po +0 -136
  284. holidays/locale/es/LC_MESSAGES/CO.po +0 -105
  285. holidays/locale/es/LC_MESSAGES/CR.po +0 -85
  286. holidays/locale/es/LC_MESSAGES/CU.po +0 -69
  287. holidays/locale/es/LC_MESSAGES/DO.po +0 -76
  288. holidays/locale/es/LC_MESSAGES/EC.po +0 -73
  289. holidays/locale/es/LC_MESSAGES/ES.po +0 -225
  290. holidays/locale/es/LC_MESSAGES/GT.po +0 -72
  291. holidays/locale/es/LC_MESSAGES/HN.po +0 -76
  292. holidays/locale/es/LC_MESSAGES/HT.po +0 -127
  293. holidays/locale/es/LC_MESSAGES/MX.po +0 -60
  294. holidays/locale/es/LC_MESSAGES/NI.po +0 -76
  295. holidays/locale/es/LC_MESSAGES/PE.po +0 -88
  296. holidays/locale/es/LC_MESSAGES/PY.po +0 -88
  297. holidays/locale/es/LC_MESSAGES/SV.po +0 -75
  298. holidays/locale/es/LC_MESSAGES/UY.po +0 -120
  299. holidays/locale/es/LC_MESSAGES/VE.po +0 -92
  300. holidays/locale/et/LC_MESSAGES/EE.po +0 -76
  301. holidays/locale/fa/LC_MESSAGES/IR.po +0 -125
  302. holidays/locale/fa_AF/LC_MESSAGES/AF.po +0 -92
  303. holidays/locale/fi/LC_MESSAGES/FI.po +0 -164
  304. holidays/locale/fil/LC_MESSAGES/PH.po +0 -129
  305. holidays/locale/fr/LC_MESSAGES/BE.po +0 -88
  306. holidays/locale/fr/LC_MESSAGES/CA.po +0 -161
  307. holidays/locale/fr/LC_MESSAGES/CG.po +0 -67
  308. holidays/locale/fr/LC_MESSAGES/CH.po +0 -123
  309. holidays/locale/fr/LC_MESSAGES/DJ.po +0 -84
  310. holidays/locale/fr/LC_MESSAGES/DZ.po +0 -81
  311. holidays/locale/fr/LC_MESSAGES/FR.po +0 -116
  312. holidays/locale/fr/LC_MESSAGES/LU.po +0 -72
  313. holidays/locale/fr/LC_MESSAGES/MA.po +0 -89
  314. holidays/locale/fr/LC_MESSAGES/MC.po +0 -85
  315. holidays/locale/fr_HT/LC_MESSAGES/HT.po +0 -127
  316. holidays/locale/he/LC_MESSAGES/IL.po +0 -104
  317. holidays/locale/hr/LC_MESSAGES/HR.po +0 -94
  318. holidays/locale/ht/LC_MESSAGES/HT.po +0 -127
  319. holidays/locale/hu/LC_MESSAGES/HU.po +0 -101
  320. holidays/locale/hy/LC_MESSAGES/AM.po +0 -87
  321. holidays/locale/id/LC_MESSAGES/ID.po +0 -195
  322. holidays/locale/is/LC_MESSAGES/IS.po +0 -92
  323. holidays/locale/it/LC_MESSAGES/CH.po +0 -123
  324. holidays/locale/ja/LC_MESSAGES/JP.po +0 -128
  325. holidays/locale/ka/LC_MESSAGES/GE.po +0 -96
  326. holidays/locale/kk/LC_MESSAGES/KZ.po +0 -103
  327. holidays/locale/kl/LC_MESSAGES/GL.po +0 -91
  328. holidays/locale/km/LC_MESSAGES/KH.po +0 -132
  329. holidays/locale/ko/LC_MESSAGES/KR.po +0 -219
  330. holidays/locale/lb/LC_MESSAGES/LU.po +0 -72
  331. holidays/locale/lo/LC_MESSAGES/LA.po +0 -160
  332. holidays/locale/lt/LC_MESSAGES/LT.po +0 -94
  333. holidays/locale/lv/LC_MESSAGES/LV.po +0 -104
  334. holidays/locale/mg/LC_MESSAGES/MG.po +0 -92
  335. holidays/locale/ms/LC_MESSAGES/BN.po +0 -107
  336. holidays/locale/ms_MY/LC_MESSAGES/MY.po +0 -250
  337. holidays/locale/mt/LC_MESSAGES/MT.po +0 -83
  338. holidays/locale/nl/LC_MESSAGES/AW.po +0 -84
  339. holidays/locale/nl/LC_MESSAGES/BE.po +0 -88
  340. holidays/locale/nl/LC_MESSAGES/CW.po +0 -84
  341. holidays/locale/nl/LC_MESSAGES/NL.po +0 -76
  342. holidays/locale/no/LC_MESSAGES/NO.po +0 -80
  343. holidays/locale/pap_AW/LC_MESSAGES/AW.po +0 -84
  344. holidays/locale/pap_CW/LC_MESSAGES/CW.po +0 -84
  345. holidays/locale/pl/LC_MESSAGES/PL.po +0 -115
  346. holidays/locale/ps_AF/LC_MESSAGES/AF.po +0 -92
  347. holidays/locale/pt_AO/LC_MESSAGES/AO.po +0 -117
  348. holidays/locale/pt_BR/LC_MESSAGES/BR.po +0 -263
  349. holidays/locale/pt_BR/LC_MESSAGES/BVMF.po +0 -79
  350. holidays/locale/pt_MZ/LC_MESSAGES/MZ.po +0 -69
  351. holidays/locale/pt_PT/LC_MESSAGES/PT.po +0 -184
  352. holidays/locale/pt_TL/LC_MESSAGES/TL.po +0 -167
  353. holidays/locale/ro/LC_MESSAGES/MD.po +0 -82
  354. holidays/locale/ro/LC_MESSAGES/RO.po +0 -76
  355. holidays/locale/ru/LC_MESSAGES/BY.po +0 -111
  356. holidays/locale/ru/LC_MESSAGES/RU.po +0 -91
  357. holidays/locale/sk/LC_MESSAGES/CZ.po +0 -88
  358. holidays/locale/sk/LC_MESSAGES/SK.po +0 -96
  359. holidays/locale/sl/LC_MESSAGES/SI.po +0 -76
  360. holidays/locale/sq/LC_MESSAGES/AL.po +0 -106
  361. holidays/locale/sr/LC_MESSAGES/BA.po +0 -113
  362. holidays/locale/sr/LC_MESSAGES/RS.po +0 -68
  363. holidays/locale/sv/LC_MESSAGES/SE.po +0 -104
  364. holidays/locale/sv_FI/LC_MESSAGES/FI.po +0 -164
  365. holidays/locale/sw/LC_MESSAGES/TZ.po +0 -119
  366. holidays/locale/tet/LC_MESSAGES/TL.po +0 -167
  367. holidays/locale/th/LC_MESSAGES/AU.po +0 -177
  368. holidays/locale/th/LC_MESSAGES/BN.po +0 -109
  369. holidays/locale/th/LC_MESSAGES/BY.po +0 -109
  370. holidays/locale/th/LC_MESSAGES/CA.po +0 -161
  371. holidays/locale/th/LC_MESSAGES/CN.po +0 -101
  372. holidays/locale/th/LC_MESSAGES/DE.po +0 -126
  373. holidays/locale/th/LC_MESSAGES/ID.po +0 -195
  374. holidays/locale/th/LC_MESSAGES/JP.po +0 -128
  375. holidays/locale/th/LC_MESSAGES/KH.po +0 -138
  376. holidays/locale/th/LC_MESSAGES/KR.po +0 -219
  377. holidays/locale/th/LC_MESSAGES/LA.po +0 -160
  378. holidays/locale/th/LC_MESSAGES/MY.po +0 -250
  379. holidays/locale/th/LC_MESSAGES/NO.po +0 -80
  380. holidays/locale/th/LC_MESSAGES/PH.po +0 -128
  381. holidays/locale/th/LC_MESSAGES/RU.po +0 -90
  382. holidays/locale/th/LC_MESSAGES/SE.po +0 -104
  383. holidays/locale/th/LC_MESSAGES/SG.po +0 -98
  384. holidays/locale/th/LC_MESSAGES/TH.po +0 -352
  385. holidays/locale/th/LC_MESSAGES/TW.po +0 -78
  386. holidays/locale/th/LC_MESSAGES/UA.po +0 -114
  387. holidays/locale/th/LC_MESSAGES/VN.po +0 -93
  388. holidays/locale/to/LC_MESSAGES/TO.po +0 -91
  389. holidays/locale/tr/LC_MESSAGES/TR.po +0 -90
  390. holidays/locale/uk/LC_MESSAGES/AL.po +0 -106
  391. holidays/locale/uk/LC_MESSAGES/AO.po +0 -117
  392. holidays/locale/uk/LC_MESSAGES/AR.po +0 -138
  393. holidays/locale/uk/LC_MESSAGES/AT.po +0 -116
  394. holidays/locale/uk/LC_MESSAGES/AW.po +0 -84
  395. holidays/locale/uk/LC_MESSAGES/AZ.po +0 -136
  396. holidays/locale/uk/LC_MESSAGES/BA.po +0 -114
  397. holidays/locale/uk/LC_MESSAGES/BE.po +0 -88
  398. holidays/locale/uk/LC_MESSAGES/BG.po +0 -89
  399. holidays/locale/uk/LC_MESSAGES/BO.po +0 -117
  400. holidays/locale/uk/LC_MESSAGES/BR.po +0 -263
  401. holidays/locale/uk/LC_MESSAGES/BVMF.po +0 -79
  402. holidays/locale/uk/LC_MESSAGES/CH.po +0 -123
  403. holidays/locale/uk/LC_MESSAGES/CL.po +0 -136
  404. holidays/locale/uk/LC_MESSAGES/CO.po +0 -105
  405. holidays/locale/uk/LC_MESSAGES/CR.po +0 -85
  406. holidays/locale/uk/LC_MESSAGES/CU.po +0 -69
  407. holidays/locale/uk/LC_MESSAGES/CW.po +0 -84
  408. holidays/locale/uk/LC_MESSAGES/CY.po +0 -100
  409. holidays/locale/uk/LC_MESSAGES/CZ.po +0 -88
  410. holidays/locale/uk/LC_MESSAGES/DE.po +0 -126
  411. holidays/locale/uk/LC_MESSAGES/DK.po +0 -88
  412. holidays/locale/uk/LC_MESSAGES/DO.po +0 -76
  413. holidays/locale/uk/LC_MESSAGES/EC.po +0 -73
  414. holidays/locale/uk/LC_MESSAGES/EE.po +0 -76
  415. holidays/locale/uk/LC_MESSAGES/ES.po +0 -225
  416. holidays/locale/uk/LC_MESSAGES/FI.po +0 -164
  417. holidays/locale/uk/LC_MESSAGES/FR.po +0 -116
  418. holidays/locale/uk/LC_MESSAGES/GE.po +0 -96
  419. holidays/locale/uk/LC_MESSAGES/GR.po +0 -89
  420. holidays/locale/uk/LC_MESSAGES/HN.po +0 -76
  421. holidays/locale/uk/LC_MESSAGES/HR.po +0 -94
  422. holidays/locale/uk/LC_MESSAGES/HU.po +0 -101
  423. holidays/locale/uk/LC_MESSAGES/ID.po +0 -195
  424. holidays/locale/uk/LC_MESSAGES/IL.po +0 -104
  425. holidays/locale/uk/LC_MESSAGES/IS.po +0 -92
  426. holidays/locale/uk/LC_MESSAGES/KZ.po +0 -103
  427. holidays/locale/uk/LC_MESSAGES/LI.po +0 -116
  428. holidays/locale/uk/LC_MESSAGES/LT.po +0 -94
  429. holidays/locale/uk/LC_MESSAGES/LU.po +0 -72
  430. holidays/locale/uk/LC_MESSAGES/LV.po +0 -105
  431. holidays/locale/uk/LC_MESSAGES/MC.po +0 -85
  432. holidays/locale/uk/LC_MESSAGES/MD.po +0 -84
  433. holidays/locale/uk/LC_MESSAGES/ME.po +0 -102
  434. holidays/locale/uk/LC_MESSAGES/MG.po +0 -92
  435. holidays/locale/uk/LC_MESSAGES/MX.po +0 -60
  436. holidays/locale/uk/LC_MESSAGES/MZ.po +0 -69
  437. holidays/locale/uk/LC_MESSAGES/NI.po +0 -76
  438. holidays/locale/uk/LC_MESSAGES/NL.po +0 -76
  439. holidays/locale/uk/LC_MESSAGES/NO.po +0 -80
  440. holidays/locale/uk/LC_MESSAGES/PE.po +0 -88
  441. holidays/locale/uk/LC_MESSAGES/PL.po +0 -115
  442. holidays/locale/uk/LC_MESSAGES/PT.po +0 -184
  443. holidays/locale/uk/LC_MESSAGES/PY.po +0 -88
  444. holidays/locale/uk/LC_MESSAGES/RO.po +0 -76
  445. holidays/locale/uk/LC_MESSAGES/SE.po +0 -104
  446. holidays/locale/uk/LC_MESSAGES/SI.po +0 -76
  447. holidays/locale/uk/LC_MESSAGES/SK.po +0 -96
  448. holidays/locale/uk/LC_MESSAGES/SV.po +0 -75
  449. holidays/locale/uk/LC_MESSAGES/TR.po +0 -89
  450. holidays/locale/uk/LC_MESSAGES/UA.po +0 -112
  451. holidays/locale/uk/LC_MESSAGES/UY.po +0 -120
  452. holidays/locale/uk/LC_MESSAGES/UZ.po +0 -96
  453. holidays/locale/uk/LC_MESSAGES/VE.po +0 -92
  454. holidays/locale/uz/LC_MESSAGES/UZ.po +0 -96
  455. holidays/locale/vi/LC_MESSAGES/VN.po +0 -93
  456. holidays/locale/zh_CN/LC_MESSAGES/CN.po +0 -100
  457. holidays/locale/zh_CN/LC_MESSAGES/TW.po +0 -78
  458. holidays/locale/zh_TW/LC_MESSAGES/CN.po +0 -100
  459. holidays/locale/zh_TW/LC_MESSAGES/TW.po +0 -78
  460. holidays-0.65.dist-info/RECORD +0 -841
  461. {holidays-0.65.dist-info → holidays-0.67.dist-info}/LICENSE +0 -0
  462. {holidays-0.65.dist-info → holidays-0.67.dist-info}/WHEEL +0 -0
  463. {holidays-0.65.dist-info → holidays-0.67.dist-info}/top_level.txt +0 -0
@@ -22,4 +22,5 @@ from holidays.calendars.islamic import _CustomIslamicHolidays, _IslamicLunar
22
22
  from holidays.calendars.julian import JULIAN_CALENDAR
23
23
  from holidays.calendars.julian_revised import JULIAN_REVISED_CALENDAR
24
24
  from holidays.calendars.persian import _Persian
25
+ from holidays.calendars.sinhala import _SinhalaLunar, _CustomSinhalaHolidays
25
26
  from holidays.calendars.thai import _ThaiLunisolar, KHMER_CALENDAR, THAI_CALENDAR
@@ -26,6 +26,12 @@ class _Persian:
26
26
  START_YEAR = 1901
27
27
  END_YEAR = 2100
28
28
 
29
+ def is_leap_year(self, year: int) -> bool:
30
+ """
31
+ Is Persian year that begins in the specified Gregorian year a leap year.
32
+ """
33
+ return (year % 33) in {3, 7, 11, 16, 20, 24, 28, 32}
34
+
29
35
  def new_year_date(self, year: int) -> Optional[date]:
30
36
  """
31
37
  Return Gregorian date of Persian new year (1 Farvardin) in a given Gregorian year.
@@ -0,0 +1,414 @@
1
+ # holidays
2
+ # --------
3
+ # A fast, efficient Python library for generating country, province and state
4
+ # specific sets of holidays on the fly. It aims to make determining whether a
5
+ # specific date is a holiday as fast and flexible as possible.
6
+ #
7
+ # Authors: Vacanza Team and individual contributors (see AUTHORS file)
8
+ # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
+ # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
+ # Website: https://github.com/vacanza/holidays
11
+ # License: MIT (see LICENSE file)
12
+
13
+ from collections.abc import Iterable
14
+ from datetime import date
15
+ from typing import Optional
16
+
17
+ from holidays.calendars.custom import _CustomCalendar
18
+ from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
19
+ from holidays.helpers import _normalize_tuple
20
+
21
+ BAK_POYA = "BAK_POYA"
22
+ BINARA_POYA = "BINARA_POYA"
23
+ DURUTHU_POYA = "DURUTHU_POYA"
24
+ ESALA_POYA = "ESALA_POYA"
25
+ IL_POYA = "IL_POYA"
26
+ MEDIN_POYA = "MEDIN_POYA"
27
+ NAWAM_POYA = "NAWAM_POYA"
28
+ NIKINI_POYA = "NIKINI_POYA"
29
+ POSON_POYA = "POSON_POYA"
30
+ UNDUVAP_POYA = "UNDUVAP_POYA"
31
+ VAP_POYA = "VAP_POYA"
32
+ VESAK_POYA = "VESAK_POYA"
33
+
34
+
35
+ class _SinhalaLunar:
36
+ """
37
+ Sinhala Lunar calendar for 2003-2025 years.
38
+
39
+ Their Buddhist Uposatha day calculation method is different from Thai LuniSolar
40
+ and Buddhist (Mahayana) used in East Asia.
41
+
42
+ Due to the fact that Poya (Uposatha) days are calculated astronomically
43
+ based on how close a particular day is closest to full moon at noon, and that
44
+ an extra month is added every 33 months interval, this is hardcoded for now.
45
+
46
+ Adhi month dates are instead hardcoded in Sri Lanka country implementation.
47
+ """
48
+
49
+ START_YEAR = 2003
50
+ END_YEAR = 2025
51
+
52
+ BAK_POYA_DATES = {
53
+ 2003: (APR, 16),
54
+ 2004: (APR, 5),
55
+ 2005: (APR, 23),
56
+ 2006: (APR, 13),
57
+ 2007: (APR, 2),
58
+ 2008: (APR, 19),
59
+ 2009: (APR, 9),
60
+ 2010: (MAR, 29),
61
+ 2011: (APR, 17),
62
+ 2012: (APR, 6),
63
+ 2013: (APR, 25),
64
+ 2014: (APR, 14),
65
+ 2015: (APR, 3),
66
+ 2016: (APR, 21),
67
+ 2017: (APR, 10),
68
+ 2018: (MAR, 31),
69
+ 2019: (APR, 19),
70
+ 2020: (APR, 7),
71
+ 2021: (APR, 26),
72
+ 2022: (APR, 16),
73
+ 2023: (APR, 5),
74
+ 2024: (APR, 23),
75
+ 2025: (APR, 12),
76
+ }
77
+
78
+ BINARA_POYA_DATES = {
79
+ 2003: (SEP, 10),
80
+ 2004: (SEP, 28),
81
+ 2005: (SEP, 17),
82
+ 2006: (SEP, 7),
83
+ 2007: (SEP, 26),
84
+ 2008: (SEP, 14),
85
+ 2009: (SEP, 4),
86
+ 2010: (SEP, 22),
87
+ 2011: (SEP, 11),
88
+ 2012: (SEP, 29),
89
+ 2013: (SEP, 19),
90
+ 2014: (SEP, 8),
91
+ 2015: (SEP, 27),
92
+ 2016: (SEP, 16),
93
+ 2017: (SEP, 5),
94
+ 2018: (SEP, 24),
95
+ 2019: (SEP, 13),
96
+ 2020: (SEP, 1),
97
+ 2021: (SEP, 20),
98
+ 2022: (SEP, 10),
99
+ 2023: (SEP, 29),
100
+ 2024: (SEP, 17),
101
+ 2025: (SEP, 7),
102
+ }
103
+
104
+ DURUTHU_POYA_DATES = {
105
+ 2003: (JAN, 17),
106
+ 2004: (JAN, 7),
107
+ 2005: (JAN, 24),
108
+ 2006: (JAN, 13),
109
+ 2007: (JAN, 3),
110
+ 2008: (JAN, 22),
111
+ 2009: ((JAN, 10), (DEC, 31)),
112
+ 2011: (JAN, 19),
113
+ 2012: (JAN, 8),
114
+ 2013: (JAN, 26),
115
+ 2014: (JAN, 15),
116
+ 2015: (JAN, 4),
117
+ 2016: (JAN, 23),
118
+ 2017: (JAN, 12),
119
+ 2018: (JAN, 1),
120
+ 2019: (JAN, 20),
121
+ 2020: (JAN, 10),
122
+ 2021: (JAN, 28),
123
+ 2022: (JAN, 17),
124
+ 2023: (JAN, 6),
125
+ 2024: (JAN, 25),
126
+ 2025: (JAN, 13),
127
+ }
128
+
129
+ ESALA_POYA_DATES = {
130
+ 2003: (JUL, 13),
131
+ 2004: (JUL, 2),
132
+ 2005: (JUL, 21),
133
+ 2006: (JUL, 10),
134
+ 2007: (JUL, 29),
135
+ 2008: (JUL, 17),
136
+ 2009: (JUL, 6),
137
+ 2010: (JUL, 25),
138
+ 2011: (JUL, 14),
139
+ 2012: (JUL, 3),
140
+ 2013: (JUL, 22),
141
+ 2014: (JUL, 12),
142
+ 2015: (JUL, 31),
143
+ 2016: (JUL, 19),
144
+ 2017: (JUL, 8),
145
+ 2018: (JUL, 27),
146
+ 2019: (JUL, 16),
147
+ 2020: (JUL, 4),
148
+ 2021: (JUL, 23),
149
+ 2022: (JUL, 13),
150
+ 2023: (AUG, 1),
151
+ 2024: (JUL, 20),
152
+ 2025: (JUL, 10),
153
+ }
154
+
155
+ IL_POYA_DATES = {
156
+ 2003: (NOV, 8),
157
+ 2004: (NOV, 26),
158
+ 2005: (NOV, 15),
159
+ 2006: (NOV, 5),
160
+ 2007: (NOV, 24),
161
+ 2008: (NOV, 12),
162
+ 2009: (NOV, 2),
163
+ 2010: (NOV, 21),
164
+ 2011: (NOV, 10),
165
+ 2012: (NOV, 27),
166
+ 2013: (NOV, 17),
167
+ 2014: (NOV, 6),
168
+ 2015: (NOV, 25),
169
+ 2016: (NOV, 14),
170
+ 2017: (NOV, 3),
171
+ 2018: (NOV, 22),
172
+ 2019: (NOV, 12),
173
+ 2020: (NOV, 29),
174
+ 2021: (NOV, 18),
175
+ 2022: (NOV, 7),
176
+ 2023: (NOV, 26),
177
+ 2024: (NOV, 15),
178
+ 2025: (NOV, 5),
179
+ }
180
+
181
+ MEDIN_POYA_DATES = {
182
+ 2003: (MAR, 18),
183
+ 2004: (MAR, 6),
184
+ 2005: (MAR, 25),
185
+ 2006: (MAR, 14),
186
+ 2007: (MAR, 3),
187
+ 2008: (MAR, 21),
188
+ 2009: (MAR, 10),
189
+ 2010: (FEB, 28),
190
+ 2011: (MAR, 19),
191
+ 2012: (MAR, 7),
192
+ 2013: (MAR, 26),
193
+ 2014: (MAR, 16),
194
+ 2015: (MAR, 5),
195
+ 2016: (MAR, 22),
196
+ 2017: (MAR, 12),
197
+ 2018: (MAR, 1),
198
+ 2019: (MAR, 20),
199
+ 2020: (MAR, 9),
200
+ 2021: (MAR, 28),
201
+ 2022: (MAR, 17),
202
+ 2023: (MAR, 6),
203
+ 2024: (MAR, 24),
204
+ 2025: (MAR, 13),
205
+ }
206
+
207
+ NAWAM_POYA_DATES = {
208
+ 2003: (FEB, 16),
209
+ 2004: (FEB, 5),
210
+ 2005: (FEB, 23),
211
+ 2006: (FEB, 12),
212
+ 2007: (FEB, 1),
213
+ 2008: (FEB, 20),
214
+ 2009: (FEB, 9),
215
+ 2010: (JAN, 29),
216
+ 2011: (FEB, 17),
217
+ 2012: (FEB, 7),
218
+ 2013: (FEB, 25),
219
+ 2014: (FEB, 14),
220
+ 2015: (FEB, 3),
221
+ 2016: (FEB, 22),
222
+ 2017: (FEB, 10),
223
+ 2018: (JAN, 31),
224
+ 2019: (FEB, 19),
225
+ 2020: (FEB, 8),
226
+ 2021: (FEB, 26),
227
+ 2022: (FEB, 16),
228
+ 2023: (FEB, 5),
229
+ 2024: (FEB, 23),
230
+ 2025: (FEB, 12),
231
+ }
232
+
233
+ NIKINI_POYA_DATES = {
234
+ 2003: (AUG, 11),
235
+ 2004: (AUG, 29),
236
+ 2005: (AUG, 19),
237
+ 2006: (AUG, 9),
238
+ 2007: (AUG, 28),
239
+ 2008: (AUG, 16),
240
+ 2009: (AUG, 5),
241
+ 2010: (AUG, 24),
242
+ 2011: (AUG, 13),
243
+ 2012: (AUG, 1),
244
+ 2013: (AUG, 20),
245
+ 2014: (AUG, 10),
246
+ 2015: (AUG, 29),
247
+ 2016: (AUG, 17),
248
+ 2017: (AUG, 7),
249
+ 2018: (AUG, 25),
250
+ 2019: (AUG, 14),
251
+ 2020: (AUG, 3),
252
+ 2021: (AUG, 22),
253
+ 2022: (AUG, 11),
254
+ 2023: (AUG, 30),
255
+ 2024: (AUG, 19),
256
+ 2025: (AUG, 8),
257
+ }
258
+
259
+ POSON_POYA_DATES = {
260
+ 2003: (JUN, 14),
261
+ 2004: (JUN, 2),
262
+ 2005: (JUN, 21),
263
+ 2006: (JUN, 11),
264
+ 2007: (JUN, 30),
265
+ 2008: (JUN, 18),
266
+ 2009: (JUN, 7),
267
+ 2010: (JUN, 25),
268
+ 2011: (JUN, 15),
269
+ 2012: (JUN, 4),
270
+ 2013: (JUN, 23),
271
+ 2014: (JUN, 12),
272
+ 2015: (JUN, 2),
273
+ 2016: (JUN, 19),
274
+ 2017: (JUN, 8),
275
+ 2018: (JUN, 27),
276
+ 2019: (JUN, 16),
277
+ 2020: (JUN, 5),
278
+ 2021: (JUN, 24),
279
+ 2022: (JUN, 14),
280
+ 2023: (JUN, 3),
281
+ 2024: (JUN, 21),
282
+ 2025: (JUN, 10),
283
+ }
284
+
285
+ UNDUVAP_POYA_DATES = {
286
+ 2003: (DEC, 8),
287
+ 2004: (DEC, 26),
288
+ 2005: (DEC, 15),
289
+ 2006: (DEC, 4),
290
+ 2007: (DEC, 23),
291
+ 2008: (DEC, 12),
292
+ 2009: (DEC, 1),
293
+ 2010: (DEC, 20),
294
+ 2011: (DEC, 10),
295
+ 2012: (DEC, 27),
296
+ 2013: (DEC, 16),
297
+ 2014: (DEC, 6),
298
+ 2015: (DEC, 24),
299
+ 2016: (DEC, 13),
300
+ 2017: (DEC, 3),
301
+ 2018: (DEC, 22),
302
+ 2019: (DEC, 11),
303
+ 2020: (DEC, 29),
304
+ 2021: (DEC, 18),
305
+ 2022: (DEC, 7),
306
+ 2023: (DEC, 26),
307
+ 2024: (DEC, 14),
308
+ 2025: (DEC, 4),
309
+ }
310
+
311
+ VAP_POYA_DATES = {
312
+ 2003: (OCT, 9),
313
+ 2004: (OCT, 27),
314
+ 2005: (OCT, 17),
315
+ 2006: (OCT, 6),
316
+ 2007: (OCT, 25),
317
+ 2008: (OCT, 14),
318
+ 2009: (OCT, 3),
319
+ 2010: (OCT, 22),
320
+ 2011: (OCT, 11),
321
+ 2012: (OCT, 29),
322
+ 2013: (OCT, 18),
323
+ 2014: (OCT, 8),
324
+ 2015: (OCT, 27),
325
+ 2016: (OCT, 15),
326
+ 2017: (OCT, 5),
327
+ 2018: (OCT, 24),
328
+ 2019: (OCT, 13),
329
+ 2020: (OCT, 30),
330
+ 2021: (OCT, 20),
331
+ 2022: (OCT, 9),
332
+ 2023: (OCT, 28),
333
+ 2024: (OCT, 17),
334
+ 2025: (OCT, 6),
335
+ }
336
+
337
+ VESAK_POYA_DATES = {
338
+ 2003: (MAY, 15),
339
+ 2004: (MAY, 4),
340
+ 2005: (MAY, 23),
341
+ 2006: (MAY, 12),
342
+ 2007: (MAY, 1),
343
+ 2008: (MAY, 19),
344
+ 2009: (MAY, 8),
345
+ 2010: (MAY, 27),
346
+ 2011: (MAY, 17),
347
+ 2012: (MAY, 5),
348
+ 2013: (MAY, 24),
349
+ 2014: (MAY, 14),
350
+ 2015: (MAY, 3),
351
+ 2016: (MAY, 21),
352
+ 2017: (MAY, 10),
353
+ 2018: (APR, 29),
354
+ 2019: (MAY, 18),
355
+ 2020: (MAY, 7),
356
+ 2021: (MAY, 26),
357
+ 2022: (MAY, 15),
358
+ 2023: (MAY, 5),
359
+ 2024: (MAY, 23),
360
+ 2025: (MAY, 12),
361
+ }
362
+
363
+ def _get_holiday(self, holiday: str, year: int) -> tuple[Optional[date], bool]:
364
+ estimated_dates = getattr(self, f"{holiday}_DATES", {})
365
+ exact_dates = getattr(self, f"{holiday}_DATES_{_CustomCalendar.CUSTOM_ATTR_POSTFIX}", {})
366
+ dt = exact_dates.get(year, estimated_dates.get(year, ()))
367
+ return date(year, *dt) if dt else None, year not in exact_dates
368
+
369
+ def _get_holiday_set(self, holiday: str, year: int) -> Iterable[tuple[date, bool]]:
370
+ estimated_dates = getattr(self, f"{holiday}_DATES", {})
371
+ exact_dates = getattr(self, f"{holiday}_DATES_{_CustomCalendar.CUSTOM_ATTR_POSTFIX}", {})
372
+ for year in (year - 1, year):
373
+ for dt in _normalize_tuple(exact_dates.get(year, estimated_dates.get(year, ()))):
374
+ yield date(year, *dt), year not in exact_dates
375
+
376
+ def bak_poya_date(self, year: int) -> tuple[Optional[date], bool]:
377
+ return self._get_holiday(BAK_POYA, year)
378
+
379
+ def binara_poya_date(self, year: int) -> tuple[Optional[date], bool]:
380
+ return self._get_holiday(BINARA_POYA, year)
381
+
382
+ def duruthu_poya_date(self, year: int) -> Iterable[tuple[date, bool]]:
383
+ return self._get_holiday_set(DURUTHU_POYA, year)
384
+
385
+ def esala_poya_date(self, year: int) -> tuple[Optional[date], bool]:
386
+ return self._get_holiday(ESALA_POYA, year)
387
+
388
+ def il_poya_date(self, year: int) -> tuple[Optional[date], bool]:
389
+ return self._get_holiday(IL_POYA, year)
390
+
391
+ def medin_poya_date(self, year: int) -> tuple[Optional[date], bool]:
392
+ return self._get_holiday(MEDIN_POYA, year)
393
+
394
+ def nawam_poya_date(self, year: int) -> tuple[Optional[date], bool]:
395
+ return self._get_holiday(NAWAM_POYA, year)
396
+
397
+ def nikini_poya_date(self, year: int) -> tuple[Optional[date], bool]:
398
+ return self._get_holiday(NIKINI_POYA, year)
399
+
400
+ def poson_poya_date(self, year: int) -> tuple[Optional[date], bool]:
401
+ return self._get_holiday(POSON_POYA, year)
402
+
403
+ def unduvap_poya_date(self, year: int) -> tuple[Optional[date], bool]:
404
+ return self._get_holiday(UNDUVAP_POYA, year)
405
+
406
+ def vap_poya_date(self, year: int) -> tuple[Optional[date], bool]:
407
+ return self._get_holiday(VAP_POYA, year)
408
+
409
+ def vesak_poya_date(self, year: int) -> tuple[Optional[date], bool]:
410
+ return self._get_holiday(VESAK_POYA, year)
411
+
412
+
413
+ class _CustomSinhalaHolidays(_CustomCalendar, _SinhalaLunar):
414
+ pass
@@ -134,6 +134,7 @@ from .puerto_rico import PuertoRico, PR, PRI, HolidaysPR
134
134
  from .romania import Romania, RO, ROU
135
135
  from .russia import Russia, RU, RUS
136
136
  from .saint_kitts_and_nevis import SaintKittsAndNevis, KN, KNA
137
+ from .saint_lucia import SaintLucia, LC, LCA
137
138
  from .samoa import Samoa, WS, WSM
138
139
  from .san_marino import SanMarino, SM, SMR
139
140
  from .saudi_arabia import SaudiArabia, SA, SAU
@@ -145,6 +146,7 @@ from .slovenia import Slovenia, SI, SVN
145
146
  from .south_africa import SouthAfrica, ZA, ZAF
146
147
  from .south_korea import SouthKorea, KR, KOR, Korea
147
148
  from .spain import Spain, ES, ESP
149
+ from .sri_lanka import SriLanka, LK, LKA
148
150
  from .sweden import Sweden, SE, SWE
149
151
  from .switzerland import Switzerland, CH, CHE
150
152
  from .taiwan import Taiwan, TW, TWN
@@ -154,6 +156,7 @@ from .timor_leste import TimorLeste, TL, TLS
154
156
  from .tonga import Tonga, TO, TON
155
157
  from .tunisia import Tunisia, TN, TUN
156
158
  from .turkey import Turkey, TR, TUR
159
+ from .tuvalu import Tuvalu, TV, TUV
157
160
  from .ukraine import Ukraine, UA, UKR
158
161
  from .united_arab_emirates import UnitedArabEmirates, AE, ARE
159
162
  from .united_kingdom import UnitedKingdom, GB, GBR, UK
@@ -216,7 +216,7 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
216
216
  # Family & Community Day.
217
217
  self._add_holiday(tr("Family & Community Day"), fc_dates[self._year])
218
218
 
219
- # Labour Day.
219
+ # Labor Day.
220
220
  self._add_holiday_1st_mon_of_oct(tr("Labour Day"))
221
221
 
222
222
  # Christmas Day.
@@ -317,7 +317,7 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
317
317
  if self._year <= 2010:
318
318
  self._add_observed(apr_25)
319
319
 
320
- # Labour Day.
320
+ # Labor Day.
321
321
  self._add_holiday_1st_mon_of_oct(tr("Labour Day"))
322
322
 
323
323
  # Sovereign's Birthday.
@@ -493,7 +493,7 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
493
493
  else:
494
494
  self._add_anzac_day(name)
495
495
 
496
- # Labour Day.
496
+ # Labor Day.
497
497
  name = tr("Labour Day")
498
498
  if 2013 <= self._year <= 2015:
499
499
  self._add_holiday_1st_mon_of_oct(name)
@@ -631,7 +631,7 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
631
631
  if self._year >= 1936:
632
632
  self._add_holiday_2nd_mon_of_jun(self.sovereign_birthday)
633
633
 
634
- # Labour Day.
634
+ # Labor Day.
635
635
  self._add_holiday_1st_mon_of_oct(tr("Labour Day"))
636
636
 
637
637
  # Proclamation Day.
@@ -799,7 +799,7 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
799
799
  else:
800
800
  self._add_holiday_jan_26(self.australia_day)
801
801
 
802
- # Labour Day.
802
+ # Labor Day.
803
803
  self._add_holiday_2nd_mon_of_mar(tr("Labour Day"))
804
804
 
805
805
  if self._year >= 2003:
@@ -893,7 +893,7 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
893
893
  else:
894
894
  self._add_holiday_jan_26(self.australia_day)
895
895
 
896
- # Labour Day.
896
+ # Labor Day.
897
897
  self._add_holiday_1st_mon_of_mar(tr("Labour Day"))
898
898
 
899
899
  if self._year >= 2022:
@@ -149,7 +149,7 @@ class Cambodia(HolidayBase, InternationalHolidays, StaticHolidays, ThaiCalendarH
149
149
  # Assumed to start in 1993, defunct from 2020 onwards.
150
150
 
151
151
  if self._year <= 2019:
152
- # International Children Day
152
+ # International Children's Day
153
153
  self._add_childrens_day(tr("ទិវាកុមារអន្តរជាតិ"))
154
154
 
155
155
  # ព្រះរាជពិធីបុណ្យចម្រើនព្រះជន្ម សម្តេចព្រះមហាក្សត្រី ព្រះវររាជមាតា នរោត្តម មុនិនាថ សីហនុ
@@ -129,7 +129,7 @@ class Chile(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
129
129
  self._add_holiday(name, self._summer_solstice_date)
130
130
 
131
131
  if self._year <= 1967 or self._year >= 1986:
132
- # Saint Peter and Saint Paul.
132
+ # Saint Peter and Saint Paul's Day.
133
133
  self._move_holiday(self._add_saints_peter_and_paul_day(tr("San Pedro y San Pablo")))
134
134
 
135
135
  if self._year >= 2007:
@@ -64,7 +64,7 @@ class Cuba(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
64
64
  # Good Friday.
65
65
  self._add_good_friday(tr("Viernes Santo"))
66
66
 
67
- # International Worker's Day.
67
+ # International Workers' Day.
68
68
  self._add_observed(self._add_labor_day(tr("Día Internacional de los Trabajadores")))
69
69
 
70
70
  # Commemoration of the Assault of the Moncada garrison.
@@ -18,12 +18,18 @@ from holidays.holiday_base import HolidayBase
18
18
 
19
19
  class Czechia(HolidayBase, ChristianHolidays, InternationalHolidays):
20
20
  """
21
- https://en.wikipedia.org/wiki/Public_holidays_in_the_Czech_Republic
21
+ References:
22
+ - https://en.wikipedia.org/wiki/Public_holidays_in_the_Czech_Republic
23
+ - `Law 93/1951 <https://www.zakonyprolidi.cz/cs/1951-93>`_
24
+ - `Law 204/1990 (Jan Hus Day) <https://www.zakonyprolidi.cz/cs/1990-204>`_
25
+ - `Law 245/2000 <https://www.zakonyprolidi.cz/cs/2000-245>`_
22
26
  """
23
27
 
24
28
  country = "CZ"
25
29
  default_language = "cs"
26
30
  supported_languages = ("cs", "en_US", "sk", "uk")
31
+ # Law 93/1951.
32
+ start_year = 1952
27
33
 
28
34
  def __init__(self, *args, **kwargs):
29
35
  ChristianHolidays.__init__(self)
@@ -31,36 +37,36 @@ class Czechia(HolidayBase, ChristianHolidays, InternationalHolidays):
31
37
  super().__init__(*args, **kwargs)
32
38
 
33
39
  def _populate_public_holidays(self):
34
- self._add_holiday_jan_1(
40
+ # New Year's Day.
41
+ self._add_new_years_day(tr("Nový rok"))
42
+
43
+ if self._year >= 2000:
35
44
  # Independent Czech State Restoration Day.
36
- tr("Den obnovy samostatného českého státu")
37
- if self._year >= 2000
38
- # New Year's Day.
39
- else tr("Nový rok")
40
- )
45
+ self._add_holiday_jan_1(tr("Den obnovy samostatného českého státu"))
41
46
 
42
- if self._year <= 1951 or self._year >= 2016:
47
+ if self._year >= 2016:
43
48
  # Good Friday.
44
49
  self._add_good_friday(tr("Velký pátek"))
45
50
 
46
51
  # Easter Monday.
47
52
  self._add_easter_monday(tr("Velikonoční pondělí"))
48
53
 
49
- if self._year >= 1951:
50
- # Labor Day.
51
- self._add_labor_day(tr("Svátek práce"))
54
+ # Labor Day.
55
+ self._add_labor_day(tr("Svátek práce"))
52
56
 
53
- if self._year >= 1992:
57
+ if self._year >= 2004:
54
58
  # Victory Day.
55
- self._add_world_war_two_victory_day(tr("Den vítězství"))
56
- elif self._year >= 1947:
57
- self._add_world_war_two_victory_day(
58
- # Day of Victory over Fascism.
59
- tr("Den vítězství nad hitlerovským fašismem"),
60
- is_western=False,
61
- )
59
+ name = tr("Den vítězství")
60
+ elif self._year >= 2001:
61
+ # Liberation Day.
62
+ name = tr("Den osvobození")
63
+ else:
64
+ # Day of liberation from Fascism.
65
+ name = tr("Den osvobození od fašismu")
62
66
 
63
- if self._year >= 1951:
67
+ self._add_world_war_two_victory_day(name, is_western=(self._year >= 1992))
68
+
69
+ if self._year >= 1990:
64
70
  # Saints Cyril and Methodius Day.
65
71
  self._add_holiday_jul_5(tr("Den slovanských věrozvěstů Cyrila a Metoděje"))
66
72
 
@@ -71,23 +77,26 @@ class Czechia(HolidayBase, ChristianHolidays, InternationalHolidays):
71
77
  # Statehood Day.
72
78
  self._add_holiday_sep_28(tr("Den české státnosti"))
73
79
 
74
- if self._year >= 1951:
75
- # Independent Czechoslovak State Day.
76
- self._add_holiday_oct_28(tr("Den vzniku samostatného československého státu"))
80
+ # Independent Czechoslovak State Day.
81
+ self._add_holiday_oct_28(tr("Den vzniku samostatného československého státu"))
77
82
 
78
83
  if self._year >= 1990:
79
- # Struggle for Freedom and Democracy Day.
80
- self._add_holiday_nov_17(tr("Den boje za svobodu a demokracii"))
84
+ self._add_holiday_nov_17(
85
+ # Struggle for Freedom and Democracy Day and International Students' Day.
86
+ tr("Den boje za svobodu a demokracii a Mezinárodní den studentstva")
87
+ if self._year >= 2019
88
+ # Struggle for Freedom and Democracy Day.
89
+ else tr("Den boje za svobodu a demokracii")
90
+ )
81
91
 
82
92
  # Christmas Eve.
83
93
  self._add_christmas_eve(tr("Štědrý den"))
84
94
 
85
- if self._year >= 1951:
86
- # Christmas Day.
87
- self._add_christmas_day(tr("1. svátek vánoční"))
95
+ # Christmas Day.
96
+ self._add_christmas_day(tr("1. svátek vánoční"))
88
97
 
89
- # Second Day of Christmas.
90
- self._add_christmas_day_two(tr("2. svátek vánoční"))
98
+ # Second Day of Christmas.
99
+ self._add_christmas_day_two(tr("2. svátek vánoční"))
91
100
 
92
101
 
93
102
  class CZ(Czechia):
@@ -73,7 +73,7 @@ class Denmark(HolidayBase, ChristianHolidays, InternationalHolidays):
73
73
  self._add_christmas_day_two(tr("Anden juledag"))
74
74
 
75
75
  def _populate_optional_holidays(self):
76
- # International Workers' Day.
76
+ # Workers' Day.
77
77
  self._add_labor_day(tr("Arbejdernes kampdag"))
78
78
 
79
79
  # Constitution Day.