holidays 0.64__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 (390) 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/afghanistan.py +106 -18
  6. holidays/countries/czechia.py +39 -30
  7. holidays/countries/germany.py +11 -22
  8. holidays/countries/iceland.py +16 -8
  9. holidays/countries/iran.py +523 -41
  10. holidays/countries/israel.py +1 -1
  11. holidays/countries/lithuania.py +1 -4
  12. holidays/countries/netherlands.py +1 -1
  13. holidays/countries/slovakia.py +14 -7
  14. holidays/countries/slovenia.py +63 -19
  15. holidays/countries/south_korea.py +2 -0
  16. holidays/countries/sri_lanka.py +515 -0
  17. holidays/countries/sweden.py +6 -9
  18. holidays/countries/thailand.py +2 -3
  19. holidays/countries/ukraine.py +1 -1
  20. holidays/countries/united_arab_emirates.py +95 -11
  21. holidays/countries/vatican_city.py +134 -53
  22. holidays/groups/__init__.py +1 -0
  23. holidays/groups/christian.py +10 -0
  24. holidays/groups/persian.py +23 -0
  25. holidays/groups/sinhala.py +192 -0
  26. holidays/holiday_base.py +13 -6
  27. holidays/locale/ar/LC_MESSAGES/AE.mo +0 -0
  28. holidays/locale/ar/LC_MESSAGES/UA.mo +0 -0
  29. holidays/locale/cs/LC_MESSAGES/CZ.mo +0 -0
  30. holidays/locale/en_US/LC_MESSAGES/AE.mo +0 -0
  31. holidays/locale/en_US/LC_MESSAGES/AF.mo +0 -0
  32. holidays/locale/en_US/LC_MESSAGES/CZ.mo +0 -0
  33. holidays/locale/en_US/LC_MESSAGES/IR.mo +0 -0
  34. holidays/locale/en_US/LC_MESSAGES/IS.mo +0 -0
  35. holidays/locale/en_US/LC_MESSAGES/LK.mo +0 -0
  36. holidays/locale/en_US/LC_MESSAGES/SI.mo +0 -0
  37. holidays/locale/en_US/LC_MESSAGES/UA.mo +0 -0
  38. holidays/locale/en_US/LC_MESSAGES/VA.mo +0 -0
  39. holidays/locale/fa_AF/LC_MESSAGES/AF.mo +0 -0
  40. holidays/locale/{fa → fa_IR}/LC_MESSAGES/IR.mo +0 -0
  41. holidays/locale/fy/LC_MESSAGES/NL.mo +0 -0
  42. holidays/locale/is/LC_MESSAGES/IS.mo +0 -0
  43. holidays/locale/it/LC_MESSAGES/VA.mo +0 -0
  44. holidays/locale/ps_AF/LC_MESSAGES/AF.mo +0 -0
  45. holidays/locale/si_LK/LC_MESSAGES/LK.mo +0 -0
  46. holidays/locale/sk/LC_MESSAGES/CZ.mo +0 -0
  47. holidays/locale/sl/LC_MESSAGES/SI.mo +0 -0
  48. holidays/locale/ta_LK/LC_MESSAGES/LK.mo +0 -0
  49. holidays/locale/th/LC_MESSAGES/AE.mo +0 -0
  50. holidays/locale/th/LC_MESSAGES/IL.mo +0 -0
  51. holidays/locale/th/LC_MESSAGES/UA.mo +0 -0
  52. holidays/locale/th/LC_MESSAGES/VA.mo +0 -0
  53. holidays/locale/uk/LC_MESSAGES/AO.mo +0 -0
  54. holidays/locale/uk/LC_MESSAGES/CL.mo +0 -0
  55. holidays/locale/uk/LC_MESSAGES/CU.mo +0 -0
  56. holidays/locale/uk/LC_MESSAGES/CZ.mo +0 -0
  57. holidays/locale/uk/LC_MESSAGES/EE.mo +0 -0
  58. holidays/locale/uk/LC_MESSAGES/IS.mo +0 -0
  59. holidays/locale/uk/LC_MESSAGES/MZ.mo +0 -0
  60. holidays/locale/uk/LC_MESSAGES/PL.mo +0 -0
  61. holidays/locale/uk/LC_MESSAGES/SI.mo +0 -0
  62. holidays/locale/uk/LC_MESSAGES/UA.mo +0 -0
  63. holidays/locale/uk/LC_MESSAGES/UZ.mo +0 -0
  64. holidays/registry.py +1 -0
  65. holidays/version.py +1 -1
  66. {holidays-0.64.dist-info → holidays-0.66.dist-info}/METADATA +16 -11
  67. {holidays-0.64.dist-info → holidays-0.66.dist-info}/RECORD +71 -378
  68. {holidays-0.64.dist-info → holidays-0.66.dist-info}/WHEEL +1 -1
  69. holidays/locale/am/LC_MESSAGES/ET.po +0 -92
  70. holidays/locale/ar/LC_MESSAGES/AE.po +0 -76
  71. holidays/locale/ar/LC_MESSAGES/BH.po +0 -76
  72. holidays/locale/ar/LC_MESSAGES/CA.po +0 -161
  73. holidays/locale/ar/LC_MESSAGES/DJ.po +0 -85
  74. holidays/locale/ar/LC_MESSAGES/DZ.po +0 -80
  75. holidays/locale/ar/LC_MESSAGES/EG.po +0 -104
  76. holidays/locale/ar/LC_MESSAGES/ET.po +0 -93
  77. holidays/locale/ar/LC_MESSAGES/JO.po +0 -79
  78. holidays/locale/ar/LC_MESSAGES/KW.po +0 -75
  79. holidays/locale/ar/LC_MESSAGES/MA.po +0 -88
  80. holidays/locale/ar/LC_MESSAGES/SA.po +0 -67
  81. holidays/locale/ar/LC_MESSAGES/TN.po +0 -92
  82. holidays/locale/ar/LC_MESSAGES/UA.po +0 -113
  83. holidays/locale/az/LC_MESSAGES/AZ.po +0 -136
  84. holidays/locale/be/LC_MESSAGES/BY.po +0 -109
  85. holidays/locale/bg/LC_MESSAGES/BG.po +0 -87
  86. holidays/locale/bs/LC_MESSAGES/BA.po +0 -113
  87. holidays/locale/cnr/LC_MESSAGES/ME.po +0 -102
  88. holidays/locale/cs/LC_MESSAGES/CZ.po +0 -88
  89. holidays/locale/da/LC_MESSAGES/DK.po +0 -87
  90. holidays/locale/da/LC_MESSAGES/GL.po +0 -91
  91. holidays/locale/de/LC_MESSAGES/AT.po +0 -115
  92. holidays/locale/de/LC_MESSAGES/BE.po +0 -88
  93. holidays/locale/de/LC_MESSAGES/CH.po +0 -123
  94. holidays/locale/de/LC_MESSAGES/DE.po +0 -121
  95. holidays/locale/de/LC_MESSAGES/LI.po +0 -115
  96. holidays/locale/de/LC_MESSAGES/LU.po +0 -72
  97. holidays/locale/el/LC_MESSAGES/CY.po +0 -99
  98. holidays/locale/el/LC_MESSAGES/GR.po +0 -89
  99. holidays/locale/en_AU/LC_MESSAGES/AU.po +0 -177
  100. holidays/locale/en_CA/LC_MESSAGES/CA.po +0 -161
  101. holidays/locale/en_CY/LC_MESSAGES/CY.po +0 -100
  102. holidays/locale/en_PH/LC_MESSAGES/PH.po +0 -128
  103. holidays/locale/en_SC/LC_MESSAGES/SC.po +0 -117
  104. holidays/locale/en_SG/LC_MESSAGES/SG.po +0 -98
  105. holidays/locale/en_US/LC_MESSAGES/AE.po +0 -77
  106. holidays/locale/en_US/LC_MESSAGES/AF.po +0 -98
  107. holidays/locale/en_US/LC_MESSAGES/AL.po +0 -106
  108. holidays/locale/en_US/LC_MESSAGES/AM.po +0 -88
  109. holidays/locale/en_US/LC_MESSAGES/AO.po +0 -117
  110. holidays/locale/en_US/LC_MESSAGES/AR.po +0 -139
  111. holidays/locale/en_US/LC_MESSAGES/AT.po +0 -116
  112. holidays/locale/en_US/LC_MESSAGES/AU.po +0 -177
  113. holidays/locale/en_US/LC_MESSAGES/AW.po +0 -84
  114. holidays/locale/en_US/LC_MESSAGES/AZ.po +0 -136
  115. holidays/locale/en_US/LC_MESSAGES/BA.po +0 -113
  116. holidays/locale/en_US/LC_MESSAGES/BE.po +0 -88
  117. holidays/locale/en_US/LC_MESSAGES/BG.po +0 -87
  118. holidays/locale/en_US/LC_MESSAGES/BH.po +0 -77
  119. holidays/locale/en_US/LC_MESSAGES/BN.po +0 -109
  120. holidays/locale/en_US/LC_MESSAGES/BO.po +0 -117
  121. holidays/locale/en_US/LC_MESSAGES/BR.po +0 -263
  122. holidays/locale/en_US/LC_MESSAGES/BVMF.po +0 -79
  123. holidays/locale/en_US/LC_MESSAGES/BY.po +0 -114
  124. holidays/locale/en_US/LC_MESSAGES/CA.po +0 -161
  125. holidays/locale/en_US/LC_MESSAGES/CG.po +0 -67
  126. holidays/locale/en_US/LC_MESSAGES/CH.po +0 -124
  127. holidays/locale/en_US/LC_MESSAGES/CL.po +0 -136
  128. holidays/locale/en_US/LC_MESSAGES/CN.po +0 -102
  129. holidays/locale/en_US/LC_MESSAGES/CO.po +0 -105
  130. holidays/locale/en_US/LC_MESSAGES/CR.po +0 -85
  131. holidays/locale/en_US/LC_MESSAGES/CU.po +0 -69
  132. holidays/locale/en_US/LC_MESSAGES/CW.po +0 -84
  133. holidays/locale/en_US/LC_MESSAGES/CY.po +0 -100
  134. holidays/locale/en_US/LC_MESSAGES/CZ.po +0 -88
  135. holidays/locale/en_US/LC_MESSAGES/DE.po +0 -126
  136. holidays/locale/en_US/LC_MESSAGES/DJ.po +0 -84
  137. holidays/locale/en_US/LC_MESSAGES/DK.po +0 -88
  138. holidays/locale/en_US/LC_MESSAGES/DO.po +0 -76
  139. holidays/locale/en_US/LC_MESSAGES/DZ.po +0 -81
  140. holidays/locale/en_US/LC_MESSAGES/EC.po +0 -73
  141. holidays/locale/en_US/LC_MESSAGES/EE.po +0 -76
  142. holidays/locale/en_US/LC_MESSAGES/EG.po +0 -105
  143. holidays/locale/en_US/LC_MESSAGES/ES.po +0 -225
  144. holidays/locale/en_US/LC_MESSAGES/ET.po +0 -93
  145. holidays/locale/en_US/LC_MESSAGES/FI.po +0 -164
  146. holidays/locale/en_US/LC_MESSAGES/FR.po +0 -116
  147. holidays/locale/en_US/LC_MESSAGES/GE.po +0 -96
  148. holidays/locale/en_US/LC_MESSAGES/GL.po +0 -92
  149. holidays/locale/en_US/LC_MESSAGES/GR.po +0 -89
  150. holidays/locale/en_US/LC_MESSAGES/GT.po +0 -72
  151. holidays/locale/en_US/LC_MESSAGES/HN.po +0 -76
  152. holidays/locale/en_US/LC_MESSAGES/HR.po +0 -94
  153. holidays/locale/en_US/LC_MESSAGES/HT.po +0 -127
  154. holidays/locale/en_US/LC_MESSAGES/HU.po +0 -101
  155. holidays/locale/en_US/LC_MESSAGES/ID.po +0 -195
  156. holidays/locale/en_US/LC_MESSAGES/IL.po +0 -105
  157. holidays/locale/en_US/LC_MESSAGES/IR.po +0 -125
  158. holidays/locale/en_US/LC_MESSAGES/IS.po +0 -92
  159. holidays/locale/en_US/LC_MESSAGES/JO.po +0 -80
  160. holidays/locale/en_US/LC_MESSAGES/JP.po +0 -128
  161. holidays/locale/en_US/LC_MESSAGES/KH.po +0 -132
  162. holidays/locale/en_US/LC_MESSAGES/KR.po +0 -219
  163. holidays/locale/en_US/LC_MESSAGES/KW.po +0 -76
  164. holidays/locale/en_US/LC_MESSAGES/KZ.po +0 -103
  165. holidays/locale/en_US/LC_MESSAGES/LA.po +0 -160
  166. holidays/locale/en_US/LC_MESSAGES/LI.po +0 -116
  167. holidays/locale/en_US/LC_MESSAGES/LT.po +0 -94
  168. holidays/locale/en_US/LC_MESSAGES/LU.po +0 -72
  169. holidays/locale/en_US/LC_MESSAGES/LV.po +0 -106
  170. holidays/locale/en_US/LC_MESSAGES/MA.po +0 -89
  171. holidays/locale/en_US/LC_MESSAGES/MC.po +0 -85
  172. holidays/locale/en_US/LC_MESSAGES/MD.po +0 -84
  173. holidays/locale/en_US/LC_MESSAGES/ME.po +0 -102
  174. holidays/locale/en_US/LC_MESSAGES/MG.po +0 -92
  175. holidays/locale/en_US/LC_MESSAGES/MT.po +0 -83
  176. holidays/locale/en_US/LC_MESSAGES/MX.po +0 -60
  177. holidays/locale/en_US/LC_MESSAGES/MY.po +0 -250
  178. holidays/locale/en_US/LC_MESSAGES/MZ.po +0 -69
  179. holidays/locale/en_US/LC_MESSAGES/NI.po +0 -76
  180. holidays/locale/en_US/LC_MESSAGES/NL.po +0 -76
  181. holidays/locale/en_US/LC_MESSAGES/NO.po +0 -80
  182. holidays/locale/en_US/LC_MESSAGES/PE.po +0 -88
  183. holidays/locale/en_US/LC_MESSAGES/PH.po +0 -128
  184. holidays/locale/en_US/LC_MESSAGES/PL.po +0 -115
  185. holidays/locale/en_US/LC_MESSAGES/PT.po +0 -184
  186. holidays/locale/en_US/LC_MESSAGES/PY.po +0 -88
  187. holidays/locale/en_US/LC_MESSAGES/RO.po +0 -76
  188. holidays/locale/en_US/LC_MESSAGES/RS.po +0 -69
  189. holidays/locale/en_US/LC_MESSAGES/RU.po +0 -93
  190. holidays/locale/en_US/LC_MESSAGES/SA.po +0 -67
  191. holidays/locale/en_US/LC_MESSAGES/SC.po +0 -117
  192. holidays/locale/en_US/LC_MESSAGES/SE.po +0 -104
  193. holidays/locale/en_US/LC_MESSAGES/SG.po +0 -98
  194. holidays/locale/en_US/LC_MESSAGES/SI.po +0 -76
  195. holidays/locale/en_US/LC_MESSAGES/SK.po +0 -97
  196. holidays/locale/en_US/LC_MESSAGES/SV.po +0 -75
  197. holidays/locale/en_US/LC_MESSAGES/TH.po +0 -354
  198. holidays/locale/en_US/LC_MESSAGES/TL.po +0 -169
  199. holidays/locale/en_US/LC_MESSAGES/TN.po +0 -93
  200. holidays/locale/en_US/LC_MESSAGES/TO.po +0 -91
  201. holidays/locale/en_US/LC_MESSAGES/TR.po +0 -89
  202. holidays/locale/en_US/LC_MESSAGES/TW.po +0 -78
  203. holidays/locale/en_US/LC_MESSAGES/TZ.po +0 -119
  204. holidays/locale/en_US/LC_MESSAGES/UA.po +0 -113
  205. holidays/locale/en_US/LC_MESSAGES/UY.po +0 -120
  206. holidays/locale/en_US/LC_MESSAGES/UZ.po +0 -96
  207. holidays/locale/en_US/LC_MESSAGES/VE.po +0 -92
  208. holidays/locale/en_US/LC_MESSAGES/VN.po +0 -93
  209. holidays/locale/es/LC_MESSAGES/AR.po +0 -135
  210. holidays/locale/es/LC_MESSAGES/BO.po +0 -117
  211. holidays/locale/es/LC_MESSAGES/CL.po +0 -136
  212. holidays/locale/es/LC_MESSAGES/CO.po +0 -105
  213. holidays/locale/es/LC_MESSAGES/CR.po +0 -85
  214. holidays/locale/es/LC_MESSAGES/CU.po +0 -69
  215. holidays/locale/es/LC_MESSAGES/DO.po +0 -76
  216. holidays/locale/es/LC_MESSAGES/EC.po +0 -73
  217. holidays/locale/es/LC_MESSAGES/ES.po +0 -225
  218. holidays/locale/es/LC_MESSAGES/GT.po +0 -72
  219. holidays/locale/es/LC_MESSAGES/HN.po +0 -76
  220. holidays/locale/es/LC_MESSAGES/HT.po +0 -127
  221. holidays/locale/es/LC_MESSAGES/MX.po +0 -60
  222. holidays/locale/es/LC_MESSAGES/NI.po +0 -76
  223. holidays/locale/es/LC_MESSAGES/PE.po +0 -88
  224. holidays/locale/es/LC_MESSAGES/PY.po +0 -88
  225. holidays/locale/es/LC_MESSAGES/SV.po +0 -75
  226. holidays/locale/es/LC_MESSAGES/UY.po +0 -120
  227. holidays/locale/es/LC_MESSAGES/VE.po +0 -92
  228. holidays/locale/et/LC_MESSAGES/EE.po +0 -76
  229. holidays/locale/fa/LC_MESSAGES/IR.po +0 -125
  230. holidays/locale/fa_AF/LC_MESSAGES/AF.po +0 -98
  231. holidays/locale/fi/LC_MESSAGES/FI.po +0 -164
  232. holidays/locale/fil/LC_MESSAGES/PH.po +0 -129
  233. holidays/locale/fr/LC_MESSAGES/BE.po +0 -88
  234. holidays/locale/fr/LC_MESSAGES/CA.po +0 -161
  235. holidays/locale/fr/LC_MESSAGES/CG.po +0 -67
  236. holidays/locale/fr/LC_MESSAGES/CH.po +0 -123
  237. holidays/locale/fr/LC_MESSAGES/DJ.po +0 -84
  238. holidays/locale/fr/LC_MESSAGES/DZ.po +0 -81
  239. holidays/locale/fr/LC_MESSAGES/FR.po +0 -116
  240. holidays/locale/fr/LC_MESSAGES/LU.po +0 -72
  241. holidays/locale/fr/LC_MESSAGES/MA.po +0 -89
  242. holidays/locale/fr/LC_MESSAGES/MC.po +0 -85
  243. holidays/locale/fr_HT/LC_MESSAGES/HT.po +0 -127
  244. holidays/locale/he/LC_MESSAGES/IL.po +0 -104
  245. holidays/locale/hr/LC_MESSAGES/HR.po +0 -94
  246. holidays/locale/ht/LC_MESSAGES/HT.po +0 -127
  247. holidays/locale/hu/LC_MESSAGES/HU.po +0 -101
  248. holidays/locale/hy/LC_MESSAGES/AM.po +0 -87
  249. holidays/locale/id/LC_MESSAGES/ID.po +0 -195
  250. holidays/locale/is/LC_MESSAGES/IS.po +0 -92
  251. holidays/locale/it/LC_MESSAGES/CH.po +0 -123
  252. holidays/locale/ja/LC_MESSAGES/JP.po +0 -128
  253. holidays/locale/ka/LC_MESSAGES/GE.po +0 -96
  254. holidays/locale/kk/LC_MESSAGES/KZ.po +0 -103
  255. holidays/locale/kl/LC_MESSAGES/GL.po +0 -91
  256. holidays/locale/km/LC_MESSAGES/KH.po +0 -132
  257. holidays/locale/ko/LC_MESSAGES/KR.po +0 -219
  258. holidays/locale/lb/LC_MESSAGES/LU.po +0 -72
  259. holidays/locale/lo/LC_MESSAGES/LA.po +0 -160
  260. holidays/locale/lt/LC_MESSAGES/LT.po +0 -94
  261. holidays/locale/lv/LC_MESSAGES/LV.po +0 -104
  262. holidays/locale/mg/LC_MESSAGES/MG.po +0 -92
  263. holidays/locale/ms/LC_MESSAGES/BN.po +0 -107
  264. holidays/locale/ms_MY/LC_MESSAGES/MY.po +0 -250
  265. holidays/locale/mt/LC_MESSAGES/MT.po +0 -83
  266. holidays/locale/nl/LC_MESSAGES/AW.po +0 -84
  267. holidays/locale/nl/LC_MESSAGES/BE.po +0 -88
  268. holidays/locale/nl/LC_MESSAGES/CW.po +0 -84
  269. holidays/locale/nl/LC_MESSAGES/NL.po +0 -76
  270. holidays/locale/no/LC_MESSAGES/NO.po +0 -80
  271. holidays/locale/pap_AW/LC_MESSAGES/AW.po +0 -84
  272. holidays/locale/pap_CW/LC_MESSAGES/CW.po +0 -84
  273. holidays/locale/pl/LC_MESSAGES/PL.po +0 -115
  274. holidays/locale/ps_AF/LC_MESSAGES/AF.po +0 -98
  275. holidays/locale/pt_AO/LC_MESSAGES/AO.po +0 -117
  276. holidays/locale/pt_BR/LC_MESSAGES/BR.po +0 -263
  277. holidays/locale/pt_BR/LC_MESSAGES/BVMF.po +0 -79
  278. holidays/locale/pt_MZ/LC_MESSAGES/MZ.po +0 -69
  279. holidays/locale/pt_PT/LC_MESSAGES/PT.po +0 -184
  280. holidays/locale/pt_TL/LC_MESSAGES/TL.po +0 -167
  281. holidays/locale/ro/LC_MESSAGES/MD.po +0 -82
  282. holidays/locale/ro/LC_MESSAGES/RO.po +0 -76
  283. holidays/locale/ru/LC_MESSAGES/BY.po +0 -111
  284. holidays/locale/ru/LC_MESSAGES/RU.po +0 -91
  285. holidays/locale/sk/LC_MESSAGES/CZ.po +0 -88
  286. holidays/locale/sk/LC_MESSAGES/SK.po +0 -96
  287. holidays/locale/sl/LC_MESSAGES/SI.po +0 -76
  288. holidays/locale/sq/LC_MESSAGES/AL.po +0 -106
  289. holidays/locale/sr/LC_MESSAGES/BA.po +0 -113
  290. holidays/locale/sr/LC_MESSAGES/RS.po +0 -68
  291. holidays/locale/sv/LC_MESSAGES/SE.po +0 -104
  292. holidays/locale/sv_FI/LC_MESSAGES/FI.po +0 -164
  293. holidays/locale/sw/LC_MESSAGES/TZ.po +0 -119
  294. holidays/locale/tet/LC_MESSAGES/TL.po +0 -167
  295. holidays/locale/th/LC_MESSAGES/AU.po +0 -177
  296. holidays/locale/th/LC_MESSAGES/BN.po +0 -109
  297. holidays/locale/th/LC_MESSAGES/BY.po +0 -109
  298. holidays/locale/th/LC_MESSAGES/CA.po +0 -161
  299. holidays/locale/th/LC_MESSAGES/CN.po +0 -101
  300. holidays/locale/th/LC_MESSAGES/DE.po +0 -126
  301. holidays/locale/th/LC_MESSAGES/ID.po +0 -195
  302. holidays/locale/th/LC_MESSAGES/JP.po +0 -128
  303. holidays/locale/th/LC_MESSAGES/KH.po +0 -138
  304. holidays/locale/th/LC_MESSAGES/KR.po +0 -219
  305. holidays/locale/th/LC_MESSAGES/LA.po +0 -160
  306. holidays/locale/th/LC_MESSAGES/MY.po +0 -250
  307. holidays/locale/th/LC_MESSAGES/NO.po +0 -80
  308. holidays/locale/th/LC_MESSAGES/PH.po +0 -128
  309. holidays/locale/th/LC_MESSAGES/RU.po +0 -90
  310. holidays/locale/th/LC_MESSAGES/SE.po +0 -104
  311. holidays/locale/th/LC_MESSAGES/SG.po +0 -98
  312. holidays/locale/th/LC_MESSAGES/TH.po +0 -352
  313. holidays/locale/th/LC_MESSAGES/TW.po +0 -78
  314. holidays/locale/th/LC_MESSAGES/UA.po +0 -114
  315. holidays/locale/th/LC_MESSAGES/VN.po +0 -93
  316. holidays/locale/to/LC_MESSAGES/TO.po +0 -91
  317. holidays/locale/tr/LC_MESSAGES/TR.po +0 -90
  318. holidays/locale/uk/LC_MESSAGES/AL.po +0 -106
  319. holidays/locale/uk/LC_MESSAGES/AO.po +0 -117
  320. holidays/locale/uk/LC_MESSAGES/AR.po +0 -138
  321. holidays/locale/uk/LC_MESSAGES/AT.po +0 -116
  322. holidays/locale/uk/LC_MESSAGES/AW.po +0 -84
  323. holidays/locale/uk/LC_MESSAGES/AZ.po +0 -136
  324. holidays/locale/uk/LC_MESSAGES/BA.po +0 -114
  325. holidays/locale/uk/LC_MESSAGES/BE.po +0 -88
  326. holidays/locale/uk/LC_MESSAGES/BG.po +0 -89
  327. holidays/locale/uk/LC_MESSAGES/BO.po +0 -117
  328. holidays/locale/uk/LC_MESSAGES/BR.po +0 -263
  329. holidays/locale/uk/LC_MESSAGES/BVMF.po +0 -79
  330. holidays/locale/uk/LC_MESSAGES/CH.po +0 -123
  331. holidays/locale/uk/LC_MESSAGES/CL.po +0 -136
  332. holidays/locale/uk/LC_MESSAGES/CO.po +0 -105
  333. holidays/locale/uk/LC_MESSAGES/CR.po +0 -85
  334. holidays/locale/uk/LC_MESSAGES/CU.po +0 -69
  335. holidays/locale/uk/LC_MESSAGES/CW.po +0 -84
  336. holidays/locale/uk/LC_MESSAGES/CY.po +0 -100
  337. holidays/locale/uk/LC_MESSAGES/CZ.po +0 -88
  338. holidays/locale/uk/LC_MESSAGES/DE.po +0 -126
  339. holidays/locale/uk/LC_MESSAGES/DK.po +0 -88
  340. holidays/locale/uk/LC_MESSAGES/DO.po +0 -76
  341. holidays/locale/uk/LC_MESSAGES/EC.po +0 -73
  342. holidays/locale/uk/LC_MESSAGES/EE.po +0 -76
  343. holidays/locale/uk/LC_MESSAGES/ES.po +0 -225
  344. holidays/locale/uk/LC_MESSAGES/FI.po +0 -164
  345. holidays/locale/uk/LC_MESSAGES/FR.po +0 -116
  346. holidays/locale/uk/LC_MESSAGES/GE.po +0 -96
  347. holidays/locale/uk/LC_MESSAGES/GR.po +0 -89
  348. holidays/locale/uk/LC_MESSAGES/HN.po +0 -76
  349. holidays/locale/uk/LC_MESSAGES/HR.po +0 -94
  350. holidays/locale/uk/LC_MESSAGES/HU.po +0 -101
  351. holidays/locale/uk/LC_MESSAGES/ID.po +0 -195
  352. holidays/locale/uk/LC_MESSAGES/IL.po +0 -104
  353. holidays/locale/uk/LC_MESSAGES/IS.po +0 -92
  354. holidays/locale/uk/LC_MESSAGES/KZ.po +0 -103
  355. holidays/locale/uk/LC_MESSAGES/LI.po +0 -116
  356. holidays/locale/uk/LC_MESSAGES/LT.po +0 -94
  357. holidays/locale/uk/LC_MESSAGES/LU.po +0 -72
  358. holidays/locale/uk/LC_MESSAGES/LV.po +0 -105
  359. holidays/locale/uk/LC_MESSAGES/MC.po +0 -85
  360. holidays/locale/uk/LC_MESSAGES/MD.po +0 -84
  361. holidays/locale/uk/LC_MESSAGES/ME.po +0 -102
  362. holidays/locale/uk/LC_MESSAGES/MG.po +0 -92
  363. holidays/locale/uk/LC_MESSAGES/MX.po +0 -60
  364. holidays/locale/uk/LC_MESSAGES/MZ.po +0 -69
  365. holidays/locale/uk/LC_MESSAGES/NI.po +0 -76
  366. holidays/locale/uk/LC_MESSAGES/NL.po +0 -76
  367. holidays/locale/uk/LC_MESSAGES/NO.po +0 -80
  368. holidays/locale/uk/LC_MESSAGES/PE.po +0 -88
  369. holidays/locale/uk/LC_MESSAGES/PL.po +0 -115
  370. holidays/locale/uk/LC_MESSAGES/PT.po +0 -184
  371. holidays/locale/uk/LC_MESSAGES/PY.po +0 -88
  372. holidays/locale/uk/LC_MESSAGES/RO.po +0 -76
  373. holidays/locale/uk/LC_MESSAGES/SE.po +0 -104
  374. holidays/locale/uk/LC_MESSAGES/SI.po +0 -76
  375. holidays/locale/uk/LC_MESSAGES/SK.po +0 -96
  376. holidays/locale/uk/LC_MESSAGES/SV.po +0 -75
  377. holidays/locale/uk/LC_MESSAGES/TR.po +0 -89
  378. holidays/locale/uk/LC_MESSAGES/UA.po +0 -112
  379. holidays/locale/uk/LC_MESSAGES/UY.po +0 -120
  380. holidays/locale/uk/LC_MESSAGES/UZ.po +0 -96
  381. holidays/locale/uk/LC_MESSAGES/VE.po +0 -92
  382. holidays/locale/uz/LC_MESSAGES/UZ.po +0 -96
  383. holidays/locale/vi/LC_MESSAGES/VN.po +0 -93
  384. holidays/locale/zh_CN/LC_MESSAGES/CN.po +0 -100
  385. holidays/locale/zh_CN/LC_MESSAGES/TW.po +0 -78
  386. holidays/locale/zh_TW/LC_MESSAGES/CN.po +0 -100
  387. holidays/locale/zh_TW/LC_MESSAGES/TW.po +0 -78
  388. {holidays-0.64.dist-info → holidays-0.66.dist-info}/AUTHORS +0 -0
  389. {holidays-0.64.dist-info → holidays-0.66.dist-info}/LICENSE +0 -0
  390. {holidays-0.64.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
@@ -12,31 +12,46 @@
12
12
 
13
13
  from gettext import gettext as tr
14
14
 
15
- from holidays.groups import InternationalHolidays, IslamicHolidays
15
+ from holidays.calendars import _CustomIslamicHolidays
16
+ from holidays.calendars.gregorian import (
17
+ JAN,
18
+ MAR,
19
+ APR,
20
+ MAY,
21
+ JUN,
22
+ JUL,
23
+ AUG,
24
+ SEP,
25
+ OCT,
26
+ NOV,
27
+ DEC,
28
+ FRI,
29
+ SAT,
30
+ )
31
+ from holidays.groups import InternationalHolidays, IslamicHolidays, PersianCalendarHolidays
16
32
  from holidays.holiday_base import HolidayBase
17
33
 
18
34
 
19
- class Afghanistan(HolidayBase, InternationalHolidays, IslamicHolidays):
35
+ class Afghanistan(HolidayBase, InternationalHolidays, IslamicHolidays, PersianCalendarHolidays):
20
36
  """
21
37
  https://en.wikipedia.org/wiki/Public_holidays_in_Afghanistan
22
38
  https://www.timeanddate.com/holidays/afghanistan/
39
+ https://en.wikipedia.org/wiki/Workweek_and_weekend
23
40
  """
24
41
 
25
42
  country = "AF"
26
43
  default_language = "fa_AF"
27
44
  # %s (estimated).
28
45
  estimated_label = tr("%s (برآورد شده)")
29
- # %s (observed).
30
- observed_label = tr("%s (مشاهده شده)")
31
- # %s (observed, estimated).
32
- observed_estimated_label = tr("%s (مشاهده شده، برآورد شده)")
33
46
  supported_languages = ("en_US", "fa_AF", "ps_AF")
34
47
  # Afghanistan's regaining of full independence from British influence.
35
48
  start_year = 1919
49
+ weekend = {FRI, SAT}
36
50
 
37
51
  def __init__(self, *args, **kwargs):
38
52
  InternationalHolidays.__init__(self)
39
- IslamicHolidays.__init__(self)
53
+ IslamicHolidays.__init__(self, AfghanistanIslamicHolidays)
54
+ PersianCalendarHolidays.__init__(self)
40
55
  super().__init__(*args, **kwargs)
41
56
 
42
57
  def _populate_public_holidays(self):
@@ -49,7 +64,7 @@ class Afghanistan(HolidayBase, InternationalHolidays, IslamicHolidays):
49
64
 
50
65
  if self._year <= 1996 or 2001 <= self._year <= 2020:
51
66
  # Nowruz.
52
- self._add_holiday_mar_21(tr("نوروز"))
67
+ self._add_nowruz_day(tr("نوروز"))
53
68
 
54
69
  if self._year >= 1992:
55
70
  # Mojahedin's Victory Day.
@@ -64,13 +79,26 @@ class Afghanistan(HolidayBase, InternationalHolidays, IslamicHolidays):
64
79
  self._add_holiday_may_9(tr("روز پیروزی شوروی"))
65
80
 
66
81
  if self._year >= 2022:
82
+ # Islamic Emirate Victory Day.
83
+ self._add_islamic_emirat_victory_day(tr("روز پیروزی امارت اسلامی"))
84
+
67
85
  # American Withdrawal Day.
68
86
  self._add_holiday_aug_31(tr("روز خروج آمریکایی ها"))
69
87
 
70
- if self._year >= 2012:
88
+ if 2012 <= self._year <= 2020:
71
89
  # Martyrs' Day.
72
90
  self._add_holiday_sep_9(tr("روز شهیدان"))
73
91
 
92
+ if self._year <= 2021:
93
+ # Ashura.
94
+ self._add_ashura_day(tr("عاشورا"))
95
+
96
+ # Prophet's Birthday.
97
+ self._add_mawlid_day(tr("میلاد پیامبر"))
98
+
99
+ # First Day of Ramadan.
100
+ self._add_ramadan_beginning_day(tr("اول رمضان"))
101
+
74
102
  # Eid al-Fitr.
75
103
  name = tr("عید فطر")
76
104
  self._add_eid_al_fitr_day(name)
@@ -86,15 +114,6 @@ class Afghanistan(HolidayBase, InternationalHolidays, IslamicHolidays):
86
114
  self._add_eid_al_adha_day_two(name)
87
115
  self._add_eid_al_adha_day_three(name)
88
116
 
89
- # Ashura.
90
- self._add_ashura_day(tr("عاشورا"))
91
-
92
- # First Day of Ramadan.
93
- self._add_ramadan_beginning_day(tr("اول رمضان"))
94
-
95
- # Prophet's Birthday.
96
- self._add_mawlid_day(tr("میلاد پیامبر"))
97
-
98
117
 
99
118
  class AF(Afghanistan):
100
119
  pass
@@ -102,3 +121,72 @@ class AF(Afghanistan):
102
121
 
103
122
  class AFG(Afghanistan):
104
123
  pass
124
+
125
+
126
+ class AfghanistanIslamicHolidays(_CustomIslamicHolidays):
127
+ ASHURA_DATES = {
128
+ 2014: (NOV, 3),
129
+ 2015: (OCT, 24),
130
+ 2016: (OCT, 12),
131
+ 2017: (OCT, 1),
132
+ 2018: (SEP, 21),
133
+ 2019: (SEP, 10),
134
+ 2020: (AUG, 30),
135
+ 2021: (AUG, 19),
136
+ }
137
+
138
+ EID_AL_ADHA_DATES = {
139
+ 2014: (OCT, 5),
140
+ 2015: (SEP, 23),
141
+ 2016: (SEP, 13),
142
+ 2017: (SEP, 2),
143
+ 2018: (AUG, 22),
144
+ 2019: (AUG, 11),
145
+ 2020: (JUL, 31),
146
+ 2021: (JUL, 20),
147
+ 2022: (JUL, 9),
148
+ 2023: (JUN, 28),
149
+ 2024: (JUN, 17),
150
+ }
151
+
152
+ EID_AL_FITR_DATES = {
153
+ 2014: (JUL, 29),
154
+ 2015: (JUL, 18),
155
+ 2016: (JUL, 7),
156
+ 2017: (JUN, 26),
157
+ 2018: (JUN, 15),
158
+ 2019: (JUN, 4),
159
+ 2020: (MAY, 24),
160
+ 2021: (MAY, 13),
161
+ 2022: (MAY, 1),
162
+ 2023: (APR, 22),
163
+ 2024: (APR, 10),
164
+ }
165
+
166
+ MAWLID_DATES = {
167
+ 2014: (JAN, 14),
168
+ 2015: ((JAN, 3), (DEC, 24)),
169
+ 2016: (DEC, 12),
170
+ 2017: (DEC, 1),
171
+ 2018: (NOV, 21),
172
+ 2019: (NOV, 10),
173
+ 2020: (OCT, 29),
174
+ 2021: (OCT, 19),
175
+ 2022: (OCT, 8),
176
+ 2023: (SEP, 27),
177
+ 2024: (SEP, 16),
178
+ }
179
+
180
+ RAMADAN_BEGINNING_DATES = {
181
+ 2014: (JUN, 29),
182
+ 2015: (JUN, 18),
183
+ 2016: (JUN, 7),
184
+ 2017: (MAY, 27),
185
+ 2018: (MAY, 16),
186
+ 2019: (MAY, 6),
187
+ 2020: (APR, 24),
188
+ 2021: (APR, 13),
189
+ 2022: (APR, 2),
190
+ 2023: (MAR, 23),
191
+ 2024: (MAR, 11),
192
+ }