holidays 0.65__py3-none-any.whl → 0.66__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 (383) 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 +1 -0
  5. holidays/countries/czechia.py +39 -30
  6. holidays/countries/germany.py +11 -22
  7. holidays/countries/iceland.py +16 -8
  8. holidays/countries/iran.py +522 -43
  9. holidays/countries/israel.py +1 -1
  10. holidays/countries/netherlands.py +1 -1
  11. holidays/countries/slovakia.py +14 -7
  12. holidays/countries/slovenia.py +63 -19
  13. holidays/countries/sri_lanka.py +515 -0
  14. holidays/countries/sweden.py +6 -9
  15. holidays/countries/thailand.py +1 -1
  16. holidays/countries/ukraine.py +1 -1
  17. holidays/countries/united_arab_emirates.py +95 -11
  18. holidays/countries/vatican_city.py +134 -53
  19. holidays/groups/__init__.py +1 -0
  20. holidays/groups/christian.py +10 -0
  21. holidays/groups/persian.py +12 -0
  22. holidays/groups/sinhala.py +192 -0
  23. holidays/locale/ar/LC_MESSAGES/AE.mo +0 -0
  24. holidays/locale/ar/LC_MESSAGES/UA.mo +0 -0
  25. holidays/locale/cs/LC_MESSAGES/CZ.mo +0 -0
  26. holidays/locale/en_US/LC_MESSAGES/AE.mo +0 -0
  27. holidays/locale/en_US/LC_MESSAGES/CZ.mo +0 -0
  28. holidays/locale/en_US/LC_MESSAGES/IR.mo +0 -0
  29. holidays/locale/en_US/LC_MESSAGES/IS.mo +0 -0
  30. holidays/locale/en_US/LC_MESSAGES/LK.mo +0 -0
  31. holidays/locale/en_US/LC_MESSAGES/SI.mo +0 -0
  32. holidays/locale/en_US/LC_MESSAGES/UA.mo +0 -0
  33. holidays/locale/en_US/LC_MESSAGES/VA.mo +0 -0
  34. holidays/locale/{fa → fa_IR}/LC_MESSAGES/IR.mo +0 -0
  35. holidays/locale/fy/LC_MESSAGES/NL.mo +0 -0
  36. holidays/locale/is/LC_MESSAGES/IS.mo +0 -0
  37. holidays/locale/it/LC_MESSAGES/VA.mo +0 -0
  38. holidays/locale/si_LK/LC_MESSAGES/LK.mo +0 -0
  39. holidays/locale/sk/LC_MESSAGES/CZ.mo +0 -0
  40. holidays/locale/sl/LC_MESSAGES/SI.mo +0 -0
  41. holidays/locale/ta_LK/LC_MESSAGES/LK.mo +0 -0
  42. holidays/locale/th/LC_MESSAGES/AE.mo +0 -0
  43. holidays/locale/th/LC_MESSAGES/IL.mo +0 -0
  44. holidays/locale/th/LC_MESSAGES/UA.mo +0 -0
  45. holidays/locale/th/LC_MESSAGES/VA.mo +0 -0
  46. holidays/locale/uk/LC_MESSAGES/AO.mo +0 -0
  47. holidays/locale/uk/LC_MESSAGES/CL.mo +0 -0
  48. holidays/locale/uk/LC_MESSAGES/CU.mo +0 -0
  49. holidays/locale/uk/LC_MESSAGES/CZ.mo +0 -0
  50. holidays/locale/uk/LC_MESSAGES/EE.mo +0 -0
  51. holidays/locale/uk/LC_MESSAGES/IS.mo +0 -0
  52. holidays/locale/uk/LC_MESSAGES/MZ.mo +0 -0
  53. holidays/locale/uk/LC_MESSAGES/PL.mo +0 -0
  54. holidays/locale/uk/LC_MESSAGES/SI.mo +0 -0
  55. holidays/locale/uk/LC_MESSAGES/UA.mo +0 -0
  56. holidays/locale/uk/LC_MESSAGES/UZ.mo +0 -0
  57. holidays/registry.py +1 -0
  58. holidays/version.py +1 -1
  59. {holidays-0.65.dist-info → holidays-0.66.dist-info}/METADATA +15 -10
  60. {holidays-0.65.dist-info → holidays-0.66.dist-info}/RECORD +64 -371
  61. holidays/locale/am/LC_MESSAGES/ET.po +0 -92
  62. holidays/locale/ar/LC_MESSAGES/AE.po +0 -76
  63. holidays/locale/ar/LC_MESSAGES/BH.po +0 -76
  64. holidays/locale/ar/LC_MESSAGES/CA.po +0 -161
  65. holidays/locale/ar/LC_MESSAGES/DJ.po +0 -85
  66. holidays/locale/ar/LC_MESSAGES/DZ.po +0 -80
  67. holidays/locale/ar/LC_MESSAGES/EG.po +0 -104
  68. holidays/locale/ar/LC_MESSAGES/ET.po +0 -93
  69. holidays/locale/ar/LC_MESSAGES/JO.po +0 -79
  70. holidays/locale/ar/LC_MESSAGES/KW.po +0 -75
  71. holidays/locale/ar/LC_MESSAGES/MA.po +0 -88
  72. holidays/locale/ar/LC_MESSAGES/SA.po +0 -67
  73. holidays/locale/ar/LC_MESSAGES/TN.po +0 -92
  74. holidays/locale/ar/LC_MESSAGES/UA.po +0 -113
  75. holidays/locale/az/LC_MESSAGES/AZ.po +0 -136
  76. holidays/locale/be/LC_MESSAGES/BY.po +0 -109
  77. holidays/locale/bg/LC_MESSAGES/BG.po +0 -87
  78. holidays/locale/bs/LC_MESSAGES/BA.po +0 -113
  79. holidays/locale/cnr/LC_MESSAGES/ME.po +0 -102
  80. holidays/locale/cs/LC_MESSAGES/CZ.po +0 -88
  81. holidays/locale/da/LC_MESSAGES/DK.po +0 -87
  82. holidays/locale/da/LC_MESSAGES/GL.po +0 -91
  83. holidays/locale/de/LC_MESSAGES/AT.po +0 -115
  84. holidays/locale/de/LC_MESSAGES/BE.po +0 -88
  85. holidays/locale/de/LC_MESSAGES/CH.po +0 -123
  86. holidays/locale/de/LC_MESSAGES/DE.po +0 -121
  87. holidays/locale/de/LC_MESSAGES/LI.po +0 -115
  88. holidays/locale/de/LC_MESSAGES/LU.po +0 -72
  89. holidays/locale/el/LC_MESSAGES/CY.po +0 -99
  90. holidays/locale/el/LC_MESSAGES/GR.po +0 -89
  91. holidays/locale/en_AU/LC_MESSAGES/AU.po +0 -177
  92. holidays/locale/en_CA/LC_MESSAGES/CA.po +0 -161
  93. holidays/locale/en_CY/LC_MESSAGES/CY.po +0 -100
  94. holidays/locale/en_PH/LC_MESSAGES/PH.po +0 -128
  95. holidays/locale/en_SC/LC_MESSAGES/SC.po +0 -117
  96. holidays/locale/en_SG/LC_MESSAGES/SG.po +0 -98
  97. holidays/locale/en_US/LC_MESSAGES/AE.po +0 -77
  98. holidays/locale/en_US/LC_MESSAGES/AF.po +0 -92
  99. holidays/locale/en_US/LC_MESSAGES/AL.po +0 -106
  100. holidays/locale/en_US/LC_MESSAGES/AM.po +0 -88
  101. holidays/locale/en_US/LC_MESSAGES/AO.po +0 -117
  102. holidays/locale/en_US/LC_MESSAGES/AR.po +0 -139
  103. holidays/locale/en_US/LC_MESSAGES/AT.po +0 -116
  104. holidays/locale/en_US/LC_MESSAGES/AU.po +0 -177
  105. holidays/locale/en_US/LC_MESSAGES/AW.po +0 -84
  106. holidays/locale/en_US/LC_MESSAGES/AZ.po +0 -136
  107. holidays/locale/en_US/LC_MESSAGES/BA.po +0 -113
  108. holidays/locale/en_US/LC_MESSAGES/BE.po +0 -88
  109. holidays/locale/en_US/LC_MESSAGES/BG.po +0 -87
  110. holidays/locale/en_US/LC_MESSAGES/BH.po +0 -77
  111. holidays/locale/en_US/LC_MESSAGES/BN.po +0 -109
  112. holidays/locale/en_US/LC_MESSAGES/BO.po +0 -117
  113. holidays/locale/en_US/LC_MESSAGES/BR.po +0 -263
  114. holidays/locale/en_US/LC_MESSAGES/BVMF.po +0 -79
  115. holidays/locale/en_US/LC_MESSAGES/BY.po +0 -114
  116. holidays/locale/en_US/LC_MESSAGES/CA.po +0 -161
  117. holidays/locale/en_US/LC_MESSAGES/CG.po +0 -67
  118. holidays/locale/en_US/LC_MESSAGES/CH.po +0 -124
  119. holidays/locale/en_US/LC_MESSAGES/CL.po +0 -136
  120. holidays/locale/en_US/LC_MESSAGES/CN.po +0 -102
  121. holidays/locale/en_US/LC_MESSAGES/CO.po +0 -105
  122. holidays/locale/en_US/LC_MESSAGES/CR.po +0 -85
  123. holidays/locale/en_US/LC_MESSAGES/CU.po +0 -69
  124. holidays/locale/en_US/LC_MESSAGES/CW.po +0 -84
  125. holidays/locale/en_US/LC_MESSAGES/CY.po +0 -100
  126. holidays/locale/en_US/LC_MESSAGES/CZ.po +0 -88
  127. holidays/locale/en_US/LC_MESSAGES/DE.po +0 -126
  128. holidays/locale/en_US/LC_MESSAGES/DJ.po +0 -84
  129. holidays/locale/en_US/LC_MESSAGES/DK.po +0 -88
  130. holidays/locale/en_US/LC_MESSAGES/DO.po +0 -76
  131. holidays/locale/en_US/LC_MESSAGES/DZ.po +0 -81
  132. holidays/locale/en_US/LC_MESSAGES/EC.po +0 -73
  133. holidays/locale/en_US/LC_MESSAGES/EE.po +0 -76
  134. holidays/locale/en_US/LC_MESSAGES/EG.po +0 -105
  135. holidays/locale/en_US/LC_MESSAGES/ES.po +0 -225
  136. holidays/locale/en_US/LC_MESSAGES/ET.po +0 -93
  137. holidays/locale/en_US/LC_MESSAGES/FI.po +0 -164
  138. holidays/locale/en_US/LC_MESSAGES/FR.po +0 -116
  139. holidays/locale/en_US/LC_MESSAGES/GE.po +0 -96
  140. holidays/locale/en_US/LC_MESSAGES/GL.po +0 -92
  141. holidays/locale/en_US/LC_MESSAGES/GR.po +0 -89
  142. holidays/locale/en_US/LC_MESSAGES/GT.po +0 -72
  143. holidays/locale/en_US/LC_MESSAGES/HN.po +0 -76
  144. holidays/locale/en_US/LC_MESSAGES/HR.po +0 -94
  145. holidays/locale/en_US/LC_MESSAGES/HT.po +0 -127
  146. holidays/locale/en_US/LC_MESSAGES/HU.po +0 -101
  147. holidays/locale/en_US/LC_MESSAGES/ID.po +0 -195
  148. holidays/locale/en_US/LC_MESSAGES/IL.po +0 -105
  149. holidays/locale/en_US/LC_MESSAGES/IR.po +0 -125
  150. holidays/locale/en_US/LC_MESSAGES/IS.po +0 -92
  151. holidays/locale/en_US/LC_MESSAGES/JO.po +0 -80
  152. holidays/locale/en_US/LC_MESSAGES/JP.po +0 -128
  153. holidays/locale/en_US/LC_MESSAGES/KH.po +0 -132
  154. holidays/locale/en_US/LC_MESSAGES/KR.po +0 -219
  155. holidays/locale/en_US/LC_MESSAGES/KW.po +0 -76
  156. holidays/locale/en_US/LC_MESSAGES/KZ.po +0 -103
  157. holidays/locale/en_US/LC_MESSAGES/LA.po +0 -160
  158. holidays/locale/en_US/LC_MESSAGES/LI.po +0 -116
  159. holidays/locale/en_US/LC_MESSAGES/LT.po +0 -94
  160. holidays/locale/en_US/LC_MESSAGES/LU.po +0 -72
  161. holidays/locale/en_US/LC_MESSAGES/LV.po +0 -106
  162. holidays/locale/en_US/LC_MESSAGES/MA.po +0 -89
  163. holidays/locale/en_US/LC_MESSAGES/MC.po +0 -85
  164. holidays/locale/en_US/LC_MESSAGES/MD.po +0 -84
  165. holidays/locale/en_US/LC_MESSAGES/ME.po +0 -102
  166. holidays/locale/en_US/LC_MESSAGES/MG.po +0 -92
  167. holidays/locale/en_US/LC_MESSAGES/MT.po +0 -83
  168. holidays/locale/en_US/LC_MESSAGES/MX.po +0 -60
  169. holidays/locale/en_US/LC_MESSAGES/MY.po +0 -250
  170. holidays/locale/en_US/LC_MESSAGES/MZ.po +0 -69
  171. holidays/locale/en_US/LC_MESSAGES/NI.po +0 -76
  172. holidays/locale/en_US/LC_MESSAGES/NL.po +0 -76
  173. holidays/locale/en_US/LC_MESSAGES/NO.po +0 -80
  174. holidays/locale/en_US/LC_MESSAGES/PE.po +0 -88
  175. holidays/locale/en_US/LC_MESSAGES/PH.po +0 -128
  176. holidays/locale/en_US/LC_MESSAGES/PL.po +0 -115
  177. holidays/locale/en_US/LC_MESSAGES/PT.po +0 -184
  178. holidays/locale/en_US/LC_MESSAGES/PY.po +0 -88
  179. holidays/locale/en_US/LC_MESSAGES/RO.po +0 -76
  180. holidays/locale/en_US/LC_MESSAGES/RS.po +0 -69
  181. holidays/locale/en_US/LC_MESSAGES/RU.po +0 -93
  182. holidays/locale/en_US/LC_MESSAGES/SA.po +0 -67
  183. holidays/locale/en_US/LC_MESSAGES/SC.po +0 -117
  184. holidays/locale/en_US/LC_MESSAGES/SE.po +0 -104
  185. holidays/locale/en_US/LC_MESSAGES/SG.po +0 -98
  186. holidays/locale/en_US/LC_MESSAGES/SI.po +0 -76
  187. holidays/locale/en_US/LC_MESSAGES/SK.po +0 -97
  188. holidays/locale/en_US/LC_MESSAGES/SV.po +0 -75
  189. holidays/locale/en_US/LC_MESSAGES/TH.po +0 -354
  190. holidays/locale/en_US/LC_MESSAGES/TL.po +0 -169
  191. holidays/locale/en_US/LC_MESSAGES/TN.po +0 -93
  192. holidays/locale/en_US/LC_MESSAGES/TO.po +0 -91
  193. holidays/locale/en_US/LC_MESSAGES/TR.po +0 -89
  194. holidays/locale/en_US/LC_MESSAGES/TW.po +0 -78
  195. holidays/locale/en_US/LC_MESSAGES/TZ.po +0 -119
  196. holidays/locale/en_US/LC_MESSAGES/UA.po +0 -113
  197. holidays/locale/en_US/LC_MESSAGES/UY.po +0 -120
  198. holidays/locale/en_US/LC_MESSAGES/UZ.po +0 -96
  199. holidays/locale/en_US/LC_MESSAGES/VE.po +0 -92
  200. holidays/locale/en_US/LC_MESSAGES/VN.po +0 -93
  201. holidays/locale/es/LC_MESSAGES/AR.po +0 -135
  202. holidays/locale/es/LC_MESSAGES/BO.po +0 -117
  203. holidays/locale/es/LC_MESSAGES/CL.po +0 -136
  204. holidays/locale/es/LC_MESSAGES/CO.po +0 -105
  205. holidays/locale/es/LC_MESSAGES/CR.po +0 -85
  206. holidays/locale/es/LC_MESSAGES/CU.po +0 -69
  207. holidays/locale/es/LC_MESSAGES/DO.po +0 -76
  208. holidays/locale/es/LC_MESSAGES/EC.po +0 -73
  209. holidays/locale/es/LC_MESSAGES/ES.po +0 -225
  210. holidays/locale/es/LC_MESSAGES/GT.po +0 -72
  211. holidays/locale/es/LC_MESSAGES/HN.po +0 -76
  212. holidays/locale/es/LC_MESSAGES/HT.po +0 -127
  213. holidays/locale/es/LC_MESSAGES/MX.po +0 -60
  214. holidays/locale/es/LC_MESSAGES/NI.po +0 -76
  215. holidays/locale/es/LC_MESSAGES/PE.po +0 -88
  216. holidays/locale/es/LC_MESSAGES/PY.po +0 -88
  217. holidays/locale/es/LC_MESSAGES/SV.po +0 -75
  218. holidays/locale/es/LC_MESSAGES/UY.po +0 -120
  219. holidays/locale/es/LC_MESSAGES/VE.po +0 -92
  220. holidays/locale/et/LC_MESSAGES/EE.po +0 -76
  221. holidays/locale/fa/LC_MESSAGES/IR.po +0 -125
  222. holidays/locale/fa_AF/LC_MESSAGES/AF.po +0 -92
  223. holidays/locale/fi/LC_MESSAGES/FI.po +0 -164
  224. holidays/locale/fil/LC_MESSAGES/PH.po +0 -129
  225. holidays/locale/fr/LC_MESSAGES/BE.po +0 -88
  226. holidays/locale/fr/LC_MESSAGES/CA.po +0 -161
  227. holidays/locale/fr/LC_MESSAGES/CG.po +0 -67
  228. holidays/locale/fr/LC_MESSAGES/CH.po +0 -123
  229. holidays/locale/fr/LC_MESSAGES/DJ.po +0 -84
  230. holidays/locale/fr/LC_MESSAGES/DZ.po +0 -81
  231. holidays/locale/fr/LC_MESSAGES/FR.po +0 -116
  232. holidays/locale/fr/LC_MESSAGES/LU.po +0 -72
  233. holidays/locale/fr/LC_MESSAGES/MA.po +0 -89
  234. holidays/locale/fr/LC_MESSAGES/MC.po +0 -85
  235. holidays/locale/fr_HT/LC_MESSAGES/HT.po +0 -127
  236. holidays/locale/he/LC_MESSAGES/IL.po +0 -104
  237. holidays/locale/hr/LC_MESSAGES/HR.po +0 -94
  238. holidays/locale/ht/LC_MESSAGES/HT.po +0 -127
  239. holidays/locale/hu/LC_MESSAGES/HU.po +0 -101
  240. holidays/locale/hy/LC_MESSAGES/AM.po +0 -87
  241. holidays/locale/id/LC_MESSAGES/ID.po +0 -195
  242. holidays/locale/is/LC_MESSAGES/IS.po +0 -92
  243. holidays/locale/it/LC_MESSAGES/CH.po +0 -123
  244. holidays/locale/ja/LC_MESSAGES/JP.po +0 -128
  245. holidays/locale/ka/LC_MESSAGES/GE.po +0 -96
  246. holidays/locale/kk/LC_MESSAGES/KZ.po +0 -103
  247. holidays/locale/kl/LC_MESSAGES/GL.po +0 -91
  248. holidays/locale/km/LC_MESSAGES/KH.po +0 -132
  249. holidays/locale/ko/LC_MESSAGES/KR.po +0 -219
  250. holidays/locale/lb/LC_MESSAGES/LU.po +0 -72
  251. holidays/locale/lo/LC_MESSAGES/LA.po +0 -160
  252. holidays/locale/lt/LC_MESSAGES/LT.po +0 -94
  253. holidays/locale/lv/LC_MESSAGES/LV.po +0 -104
  254. holidays/locale/mg/LC_MESSAGES/MG.po +0 -92
  255. holidays/locale/ms/LC_MESSAGES/BN.po +0 -107
  256. holidays/locale/ms_MY/LC_MESSAGES/MY.po +0 -250
  257. holidays/locale/mt/LC_MESSAGES/MT.po +0 -83
  258. holidays/locale/nl/LC_MESSAGES/AW.po +0 -84
  259. holidays/locale/nl/LC_MESSAGES/BE.po +0 -88
  260. holidays/locale/nl/LC_MESSAGES/CW.po +0 -84
  261. holidays/locale/nl/LC_MESSAGES/NL.po +0 -76
  262. holidays/locale/no/LC_MESSAGES/NO.po +0 -80
  263. holidays/locale/pap_AW/LC_MESSAGES/AW.po +0 -84
  264. holidays/locale/pap_CW/LC_MESSAGES/CW.po +0 -84
  265. holidays/locale/pl/LC_MESSAGES/PL.po +0 -115
  266. holidays/locale/ps_AF/LC_MESSAGES/AF.po +0 -92
  267. holidays/locale/pt_AO/LC_MESSAGES/AO.po +0 -117
  268. holidays/locale/pt_BR/LC_MESSAGES/BR.po +0 -263
  269. holidays/locale/pt_BR/LC_MESSAGES/BVMF.po +0 -79
  270. holidays/locale/pt_MZ/LC_MESSAGES/MZ.po +0 -69
  271. holidays/locale/pt_PT/LC_MESSAGES/PT.po +0 -184
  272. holidays/locale/pt_TL/LC_MESSAGES/TL.po +0 -167
  273. holidays/locale/ro/LC_MESSAGES/MD.po +0 -82
  274. holidays/locale/ro/LC_MESSAGES/RO.po +0 -76
  275. holidays/locale/ru/LC_MESSAGES/BY.po +0 -111
  276. holidays/locale/ru/LC_MESSAGES/RU.po +0 -91
  277. holidays/locale/sk/LC_MESSAGES/CZ.po +0 -88
  278. holidays/locale/sk/LC_MESSAGES/SK.po +0 -96
  279. holidays/locale/sl/LC_MESSAGES/SI.po +0 -76
  280. holidays/locale/sq/LC_MESSAGES/AL.po +0 -106
  281. holidays/locale/sr/LC_MESSAGES/BA.po +0 -113
  282. holidays/locale/sr/LC_MESSAGES/RS.po +0 -68
  283. holidays/locale/sv/LC_MESSAGES/SE.po +0 -104
  284. holidays/locale/sv_FI/LC_MESSAGES/FI.po +0 -164
  285. holidays/locale/sw/LC_MESSAGES/TZ.po +0 -119
  286. holidays/locale/tet/LC_MESSAGES/TL.po +0 -167
  287. holidays/locale/th/LC_MESSAGES/AU.po +0 -177
  288. holidays/locale/th/LC_MESSAGES/BN.po +0 -109
  289. holidays/locale/th/LC_MESSAGES/BY.po +0 -109
  290. holidays/locale/th/LC_MESSAGES/CA.po +0 -161
  291. holidays/locale/th/LC_MESSAGES/CN.po +0 -101
  292. holidays/locale/th/LC_MESSAGES/DE.po +0 -126
  293. holidays/locale/th/LC_MESSAGES/ID.po +0 -195
  294. holidays/locale/th/LC_MESSAGES/JP.po +0 -128
  295. holidays/locale/th/LC_MESSAGES/KH.po +0 -138
  296. holidays/locale/th/LC_MESSAGES/KR.po +0 -219
  297. holidays/locale/th/LC_MESSAGES/LA.po +0 -160
  298. holidays/locale/th/LC_MESSAGES/MY.po +0 -250
  299. holidays/locale/th/LC_MESSAGES/NO.po +0 -80
  300. holidays/locale/th/LC_MESSAGES/PH.po +0 -128
  301. holidays/locale/th/LC_MESSAGES/RU.po +0 -90
  302. holidays/locale/th/LC_MESSAGES/SE.po +0 -104
  303. holidays/locale/th/LC_MESSAGES/SG.po +0 -98
  304. holidays/locale/th/LC_MESSAGES/TH.po +0 -352
  305. holidays/locale/th/LC_MESSAGES/TW.po +0 -78
  306. holidays/locale/th/LC_MESSAGES/UA.po +0 -114
  307. holidays/locale/th/LC_MESSAGES/VN.po +0 -93
  308. holidays/locale/to/LC_MESSAGES/TO.po +0 -91
  309. holidays/locale/tr/LC_MESSAGES/TR.po +0 -90
  310. holidays/locale/uk/LC_MESSAGES/AL.po +0 -106
  311. holidays/locale/uk/LC_MESSAGES/AO.po +0 -117
  312. holidays/locale/uk/LC_MESSAGES/AR.po +0 -138
  313. holidays/locale/uk/LC_MESSAGES/AT.po +0 -116
  314. holidays/locale/uk/LC_MESSAGES/AW.po +0 -84
  315. holidays/locale/uk/LC_MESSAGES/AZ.po +0 -136
  316. holidays/locale/uk/LC_MESSAGES/BA.po +0 -114
  317. holidays/locale/uk/LC_MESSAGES/BE.po +0 -88
  318. holidays/locale/uk/LC_MESSAGES/BG.po +0 -89
  319. holidays/locale/uk/LC_MESSAGES/BO.po +0 -117
  320. holidays/locale/uk/LC_MESSAGES/BR.po +0 -263
  321. holidays/locale/uk/LC_MESSAGES/BVMF.po +0 -79
  322. holidays/locale/uk/LC_MESSAGES/CH.po +0 -123
  323. holidays/locale/uk/LC_MESSAGES/CL.po +0 -136
  324. holidays/locale/uk/LC_MESSAGES/CO.po +0 -105
  325. holidays/locale/uk/LC_MESSAGES/CR.po +0 -85
  326. holidays/locale/uk/LC_MESSAGES/CU.po +0 -69
  327. holidays/locale/uk/LC_MESSAGES/CW.po +0 -84
  328. holidays/locale/uk/LC_MESSAGES/CY.po +0 -100
  329. holidays/locale/uk/LC_MESSAGES/CZ.po +0 -88
  330. holidays/locale/uk/LC_MESSAGES/DE.po +0 -126
  331. holidays/locale/uk/LC_MESSAGES/DK.po +0 -88
  332. holidays/locale/uk/LC_MESSAGES/DO.po +0 -76
  333. holidays/locale/uk/LC_MESSAGES/EC.po +0 -73
  334. holidays/locale/uk/LC_MESSAGES/EE.po +0 -76
  335. holidays/locale/uk/LC_MESSAGES/ES.po +0 -225
  336. holidays/locale/uk/LC_MESSAGES/FI.po +0 -164
  337. holidays/locale/uk/LC_MESSAGES/FR.po +0 -116
  338. holidays/locale/uk/LC_MESSAGES/GE.po +0 -96
  339. holidays/locale/uk/LC_MESSAGES/GR.po +0 -89
  340. holidays/locale/uk/LC_MESSAGES/HN.po +0 -76
  341. holidays/locale/uk/LC_MESSAGES/HR.po +0 -94
  342. holidays/locale/uk/LC_MESSAGES/HU.po +0 -101
  343. holidays/locale/uk/LC_MESSAGES/ID.po +0 -195
  344. holidays/locale/uk/LC_MESSAGES/IL.po +0 -104
  345. holidays/locale/uk/LC_MESSAGES/IS.po +0 -92
  346. holidays/locale/uk/LC_MESSAGES/KZ.po +0 -103
  347. holidays/locale/uk/LC_MESSAGES/LI.po +0 -116
  348. holidays/locale/uk/LC_MESSAGES/LT.po +0 -94
  349. holidays/locale/uk/LC_MESSAGES/LU.po +0 -72
  350. holidays/locale/uk/LC_MESSAGES/LV.po +0 -105
  351. holidays/locale/uk/LC_MESSAGES/MC.po +0 -85
  352. holidays/locale/uk/LC_MESSAGES/MD.po +0 -84
  353. holidays/locale/uk/LC_MESSAGES/ME.po +0 -102
  354. holidays/locale/uk/LC_MESSAGES/MG.po +0 -92
  355. holidays/locale/uk/LC_MESSAGES/MX.po +0 -60
  356. holidays/locale/uk/LC_MESSAGES/MZ.po +0 -69
  357. holidays/locale/uk/LC_MESSAGES/NI.po +0 -76
  358. holidays/locale/uk/LC_MESSAGES/NL.po +0 -76
  359. holidays/locale/uk/LC_MESSAGES/NO.po +0 -80
  360. holidays/locale/uk/LC_MESSAGES/PE.po +0 -88
  361. holidays/locale/uk/LC_MESSAGES/PL.po +0 -115
  362. holidays/locale/uk/LC_MESSAGES/PT.po +0 -184
  363. holidays/locale/uk/LC_MESSAGES/PY.po +0 -88
  364. holidays/locale/uk/LC_MESSAGES/RO.po +0 -76
  365. holidays/locale/uk/LC_MESSAGES/SE.po +0 -104
  366. holidays/locale/uk/LC_MESSAGES/SI.po +0 -76
  367. holidays/locale/uk/LC_MESSAGES/SK.po +0 -96
  368. holidays/locale/uk/LC_MESSAGES/SV.po +0 -75
  369. holidays/locale/uk/LC_MESSAGES/TR.po +0 -89
  370. holidays/locale/uk/LC_MESSAGES/UA.po +0 -112
  371. holidays/locale/uk/LC_MESSAGES/UY.po +0 -120
  372. holidays/locale/uk/LC_MESSAGES/UZ.po +0 -96
  373. holidays/locale/uk/LC_MESSAGES/VE.po +0 -92
  374. holidays/locale/uz/LC_MESSAGES/UZ.po +0 -96
  375. holidays/locale/vi/LC_MESSAGES/VN.po +0 -93
  376. holidays/locale/zh_CN/LC_MESSAGES/CN.po +0 -100
  377. holidays/locale/zh_CN/LC_MESSAGES/TW.po +0 -78
  378. holidays/locale/zh_TW/LC_MESSAGES/CN.po +0 -100
  379. holidays/locale/zh_TW/LC_MESSAGES/TW.po +0 -78
  380. {holidays-0.65.dist-info → holidays-0.66.dist-info}/AUTHORS +0 -0
  381. {holidays-0.65.dist-info → holidays-0.66.dist-info}/LICENSE +0 -0
  382. {holidays-0.65.dist-info → holidays-0.66.dist-info}/WHEEL +0 -0
  383. {holidays-0.65.dist-info → holidays-0.66.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
@@ -145,6 +145,7 @@ from .slovenia import Slovenia, SI, SVN
145
145
  from .south_africa import SouthAfrica, ZA, ZAF
146
146
  from .south_korea import SouthKorea, KR, KOR, Korea
147
147
  from .spain import Spain, ES, ESP
148
+ from .sri_lanka import SriLanka, LK, LKA
148
149
  from .sweden import Sweden, SE, SWE
149
150
  from .switzerland import Switzerland, CH, CHE
150
151
  from .taiwan import Taiwan, TW, TWN
@@ -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):
@@ -29,28 +29,9 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
29
29
  doesn't really make sense to include the days from the two former
30
30
  countries.
31
31
 
32
- Note that Germany doesn't have rules for holidays that happen on a
33
- Sunday. Those holidays are still holiday days but there is no additional
34
- day to make up for the "lost" day.
35
-
36
- Also note that German holidays are partly declared by each province there
37
- are some weired edge cases:
38
-
39
- - "Mariä Himmelfahrt" is only a holiday in Bavaria (BY) if your
40
- municipality is mostly catholic which in term depends on census data.
41
- Since we don't have this data but most municipalities in Bavaria
42
- *are* mostly catholic, we count that as holiday for whole Bavaria.
43
- We added BYP for the municipality in Bavaria with more protestants.
44
- Here this is excluded.
45
- - There is an "Augsburger Friedensfest" which only exists in the town
46
- Augsburg. This is excluded for Bavaria.
47
- - "Gründonnerstag" (Thursday before easter) is not a holiday but pupils
48
- don't have to go to school (but only in Baden Württemberg) which is
49
- solved by adjusting school holidays to include this day. It is
50
- excluded from our list.
51
- - "Fronleichnam" is a holiday in certain, explicitly defined
52
- municipalities in Saxony (SN) and Thuringia (TH). We exclude it from
53
- both provinces.
32
+ "Mariä Himmelfahrt" is only a holiday in Bavaria (BY) and "Fronleichnam"
33
+ in Saxony (SN) and Thuringia (TH) if municipality is mostly catholic which
34
+ in term depends on census data. It's listed in "CATHOLIC" category for these provinces.
54
35
  """
55
36
 
56
37
  country = "DE"
@@ -229,6 +210,10 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
229
210
  if self._year >= 1995:
230
211
  self._add_holiday_1st_wed_before_nov_22(tr("Buß- und Bettag"))
231
212
 
213
+ def _populate_subdiv_sn_catholic_holidays(self):
214
+ if self._year >= 1991:
215
+ self._add_corpus_christi_day(tr("Fronleichnam"))
216
+
232
217
  def _populate_subdiv_st_public_holidays(self):
233
218
  if self._year >= 1991:
234
219
  self._add_epiphany_day(tr("Heilige Drei Könige"))
@@ -242,6 +227,10 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
242
227
 
243
228
  self._add_holiday_oct_31(tr("Reformationstag"))
244
229
 
230
+ def _populate_subdiv_th_catholic_holidays(self):
231
+ if self._year >= 1991:
232
+ self._add_corpus_christi_day(tr("Fronleichnam"))
233
+
245
234
 
246
235
  class DE(Germany):
247
236
  pass
@@ -12,18 +12,21 @@
12
12
 
13
13
  from gettext import gettext as tr
14
14
 
15
+ from holidays.constants import HALF_DAY, PUBLIC
15
16
  from holidays.groups import ChristianHolidays, InternationalHolidays
16
17
  from holidays.holiday_base import HolidayBase
17
18
 
18
19
 
19
20
  class Iceland(HolidayBase, ChristianHolidays, InternationalHolidays):
20
21
  """
21
- https://en.wikipedia.org/wiki/Public_holidays_in_Iceland
22
- https://www.officeholidays.com/countries/iceland/index.php
22
+ References:
23
+ - https://en.wikipedia.org/wiki/Public_holidays_in_Iceland
24
+ - https://www.althingi.is/lagas/nuna/1971088.html
23
25
  """
24
26
 
25
27
  country = "IS"
26
28
  default_language = "is"
29
+ supported_categories = (HALF_DAY, PUBLIC)
27
30
  supported_languages = ("en_US", "is", "uk")
28
31
 
29
32
  def __init__(self, *args, **kwargs):
@@ -65,11 +68,9 @@ class Iceland(HolidayBase, ChristianHolidays, InternationalHolidays):
65
68
  # National Day.
66
69
  self._add_holiday_jun_17(tr("Þjóðhátíðardagurinn"))
67
70
 
68
- # Commerce Day.
69
- self._add_holiday_1st_mon_of_aug(tr("Frídagur verslunarmanna"))
70
-
71
- # Christmas Eve.
72
- self._add_christmas_eve(tr("Aðfangadagur"))
71
+ if self._year >= 1983:
72
+ # Commerce Day.
73
+ self._add_holiday_1st_mon_of_aug(tr("Frídagur verslunarmanna"))
73
74
 
74
75
  # Christmas Day.
75
76
  self._add_christmas_day(tr("Jóladagur"))
@@ -77,8 +78,15 @@ class Iceland(HolidayBase, ChristianHolidays, InternationalHolidays):
77
78
  # Second Day of Christmas.
78
79
  self._add_christmas_day_two(tr("Annar í jólum"))
79
80
 
81
+ def _populate_half_day_holidays(self):
82
+ # %s (from 1pm).
83
+ begin_time_label = self.tr("%s (frá kl. 13.00)")
84
+
85
+ # Christmas Eve.
86
+ self._add_christmas_eve(begin_time_label % self.tr("Aðfangadagur"))
87
+
80
88
  # New Year's Eve.
81
- self._add_new_years_eve(tr("Gamlársdagur"))
89
+ self._add_new_years_eve(begin_time_label % self.tr("Gamlársdagur"))
82
90
 
83
91
 
84
92
  class IS(Iceland):