holidays 0.58__py3-none-any.whl → 0.60__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 (611) hide show
  1. holidays/__init__.py +3 -15
  2. holidays/calendars/buddhist.py +4 -4
  3. holidays/calendars/chinese.py +8 -8
  4. holidays/calendars/hindu.py +4 -4
  5. holidays/calendars/islamic.py +25 -25
  6. holidays/countries/albania.py +81 -27
  7. holidays/countries/angola.py +2 -2
  8. holidays/countries/armenia.py +5 -2
  9. holidays/countries/australia.py +2 -1
  10. holidays/countries/azerbaijan.py +7 -2
  11. holidays/countries/belarus.py +1 -1
  12. holidays/countries/bosnia_and_herzegovina.py +2 -2
  13. holidays/countries/bulgaria.py +1 -2
  14. holidays/countries/cambodia.py +5 -7
  15. holidays/countries/chile.py +1 -2
  16. holidays/countries/czechia.py +6 -3
  17. holidays/countries/egypt.py +0 -1
  18. holidays/countries/france.py +1 -1
  19. holidays/countries/georgia.py +1 -1
  20. holidays/countries/germany.py +20 -1
  21. holidays/countries/hongkong.py +1 -2
  22. holidays/countries/indonesia.py +620 -83
  23. holidays/countries/japan.py +3 -4
  24. holidays/countries/jersey.py +2 -2
  25. holidays/countries/jordan.py +1 -1
  26. holidays/countries/kazakhstan.py +1 -1
  27. holidays/countries/kuwait.py +1 -1
  28. holidays/countries/kyrgyzstan.py +1 -1
  29. holidays/countries/malaysia.py +7 -1
  30. holidays/countries/mauritania.py +0 -1
  31. holidays/countries/moldova.py +4 -3
  32. holidays/countries/philippines.py +79 -40
  33. holidays/countries/russia.py +1 -1
  34. holidays/countries/saudi_arabia.py +1 -2
  35. holidays/countries/slovakia.py +1 -1
  36. holidays/countries/south_korea.py +1 -2
  37. holidays/countries/spain.py +17 -14
  38. holidays/countries/taiwan.py +1 -2
  39. holidays/countries/thailand.py +21 -23
  40. holidays/countries/timor_leste.py +41 -0
  41. holidays/countries/ukraine.py +1 -3
  42. holidays/countries/united_arab_emirates.py +5 -2
  43. holidays/countries/united_kingdom.py +2 -2
  44. holidays/countries/united_states.py +6 -4
  45. holidays/countries/uzbekistan.py +2 -1
  46. holidays/countries/vietnam.py +116 -25
  47. holidays/{deprecation.py → deprecations/v1_incompatibility.py} +12 -2
  48. holidays/groups/__init__.py +1 -0
  49. holidays/groups/buddhist.py +6 -11
  50. holidays/groups/chinese.py +7 -25
  51. holidays/groups/eastern.py +51 -0
  52. holidays/groups/hindu.py +6 -11
  53. holidays/groups/international.py +8 -5
  54. holidays/groups/islamic.py +39 -46
  55. holidays/holiday_base.py +31 -30
  56. holidays/locale/am/LC_MESSAGES/ET.mo +0 -0
  57. holidays/locale/am/LC_MESSAGES/ET.po +1 -1
  58. holidays/locale/ar/LC_MESSAGES/AE.mo +0 -0
  59. holidays/locale/ar/LC_MESSAGES/AE.po +1 -1
  60. holidays/locale/ar/LC_MESSAGES/BH.mo +0 -0
  61. holidays/locale/ar/LC_MESSAGES/BH.po +1 -1
  62. holidays/locale/ar/LC_MESSAGES/CA.mo +0 -0
  63. holidays/locale/ar/LC_MESSAGES/CA.po +1 -1
  64. holidays/locale/ar/LC_MESSAGES/DJ.mo +0 -0
  65. holidays/locale/ar/LC_MESSAGES/DJ.po +1 -1
  66. holidays/locale/ar/LC_MESSAGES/DZ.mo +0 -0
  67. holidays/locale/ar/LC_MESSAGES/DZ.po +1 -1
  68. holidays/locale/ar/LC_MESSAGES/EG.mo +0 -0
  69. holidays/locale/ar/LC_MESSAGES/EG.po +1 -1
  70. holidays/locale/ar/LC_MESSAGES/ET.mo +0 -0
  71. holidays/locale/ar/LC_MESSAGES/ET.po +1 -1
  72. holidays/locale/ar/LC_MESSAGES/MA.mo +0 -0
  73. holidays/locale/ar/LC_MESSAGES/MA.po +1 -1
  74. holidays/locale/ar/LC_MESSAGES/SA.mo +0 -0
  75. holidays/locale/ar/LC_MESSAGES/SA.po +1 -1
  76. holidays/locale/ar/LC_MESSAGES/TN.mo +0 -0
  77. holidays/locale/ar/LC_MESSAGES/TN.po +1 -1
  78. holidays/locale/ar/LC_MESSAGES/UA.mo +0 -0
  79. holidays/locale/ar/LC_MESSAGES/UA.po +1 -1
  80. holidays/locale/az/LC_MESSAGES/AZ.mo +0 -0
  81. holidays/locale/az/LC_MESSAGES/AZ.po +1 -1
  82. holidays/locale/be/LC_MESSAGES/BY.mo +0 -0
  83. holidays/locale/be/LC_MESSAGES/BY.po +1 -1
  84. holidays/locale/bg/LC_MESSAGES/BG.mo +0 -0
  85. holidays/locale/bg/LC_MESSAGES/BG.po +1 -1
  86. holidays/locale/bs/LC_MESSAGES/BA.mo +0 -0
  87. holidays/locale/bs/LC_MESSAGES/BA.po +1 -1
  88. holidays/locale/cs/LC_MESSAGES/CZ.mo +0 -0
  89. holidays/locale/cs/LC_MESSAGES/CZ.po +1 -1
  90. holidays/locale/da/LC_MESSAGES/DK.mo +0 -0
  91. holidays/locale/da/LC_MESSAGES/DK.po +1 -1
  92. holidays/locale/da/LC_MESSAGES/GL.mo +0 -0
  93. holidays/locale/da/LC_MESSAGES/GL.po +1 -1
  94. holidays/locale/de/LC_MESSAGES/AT.mo +0 -0
  95. holidays/locale/de/LC_MESSAGES/AT.po +1 -1
  96. holidays/locale/de/LC_MESSAGES/BE.mo +0 -0
  97. holidays/locale/de/LC_MESSAGES/BE.po +1 -1
  98. holidays/locale/de/LC_MESSAGES/CH.mo +0 -0
  99. holidays/locale/de/LC_MESSAGES/CH.po +1 -1
  100. holidays/locale/de/LC_MESSAGES/DE.mo +0 -0
  101. holidays/locale/de/LC_MESSAGES/DE.po +16 -5
  102. holidays/locale/de/LC_MESSAGES/LI.mo +0 -0
  103. holidays/locale/de/LC_MESSAGES/LI.po +1 -1
  104. holidays/locale/de/LC_MESSAGES/LU.mo +0 -0
  105. holidays/locale/de/LC_MESSAGES/LU.po +1 -1
  106. holidays/locale/el/LC_MESSAGES/CY.mo +0 -0
  107. holidays/locale/el/LC_MESSAGES/CY.po +1 -1
  108. holidays/locale/el/LC_MESSAGES/GR.mo +0 -0
  109. holidays/locale/el/LC_MESSAGES/GR.po +1 -1
  110. holidays/locale/en_CA/LC_MESSAGES/CA.mo +0 -0
  111. holidays/locale/en_CA/LC_MESSAGES/CA.po +1 -1
  112. holidays/locale/en_CY/LC_MESSAGES/CY.mo +0 -0
  113. holidays/locale/en_CY/LC_MESSAGES/CY.po +1 -1
  114. holidays/locale/en_PH/LC_MESSAGES/PH.mo +0 -0
  115. holidays/locale/en_PH/LC_MESSAGES/PH.po +128 -0
  116. holidays/locale/en_SC/LC_MESSAGES/SC.mo +0 -0
  117. holidays/locale/en_SC/LC_MESSAGES/SC.po +1 -1
  118. holidays/locale/en_US/LC_MESSAGES/AE.mo +0 -0
  119. holidays/locale/en_US/LC_MESSAGES/AE.po +1 -1
  120. holidays/locale/en_US/LC_MESSAGES/AL.mo +0 -0
  121. holidays/locale/en_US/LC_MESSAGES/AL.po +106 -0
  122. holidays/locale/en_US/LC_MESSAGES/AM.mo +0 -0
  123. holidays/locale/en_US/LC_MESSAGES/AM.po +1 -1
  124. holidays/locale/en_US/LC_MESSAGES/AO.mo +0 -0
  125. holidays/locale/en_US/LC_MESSAGES/AO.po +1 -1
  126. holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
  127. holidays/locale/en_US/LC_MESSAGES/AR.po +1 -1
  128. holidays/locale/en_US/LC_MESSAGES/AT.mo +0 -0
  129. holidays/locale/en_US/LC_MESSAGES/AT.po +1 -1
  130. holidays/locale/en_US/LC_MESSAGES/AW.mo +0 -0
  131. holidays/locale/en_US/LC_MESSAGES/AW.po +1 -1
  132. holidays/locale/en_US/LC_MESSAGES/AZ.mo +0 -0
  133. holidays/locale/en_US/LC_MESSAGES/AZ.po +1 -1
  134. holidays/locale/en_US/LC_MESSAGES/BA.mo +0 -0
  135. holidays/locale/en_US/LC_MESSAGES/BA.po +1 -1
  136. holidays/locale/en_US/LC_MESSAGES/BE.mo +0 -0
  137. holidays/locale/en_US/LC_MESSAGES/BE.po +1 -1
  138. holidays/locale/en_US/LC_MESSAGES/BG.mo +0 -0
  139. holidays/locale/en_US/LC_MESSAGES/BG.po +1 -1
  140. holidays/locale/en_US/LC_MESSAGES/BH.mo +0 -0
  141. holidays/locale/en_US/LC_MESSAGES/BH.po +1 -1
  142. holidays/locale/en_US/LC_MESSAGES/BN.mo +0 -0
  143. holidays/locale/en_US/LC_MESSAGES/BN.po +1 -1
  144. holidays/locale/en_US/LC_MESSAGES/BO.mo +0 -0
  145. holidays/locale/en_US/LC_MESSAGES/BO.po +1 -1
  146. holidays/locale/en_US/LC_MESSAGES/BY.mo +0 -0
  147. holidays/locale/en_US/LC_MESSAGES/BY.po +1 -1
  148. holidays/locale/en_US/LC_MESSAGES/CA.mo +0 -0
  149. holidays/locale/en_US/LC_MESSAGES/CA.po +1 -1
  150. holidays/locale/en_US/LC_MESSAGES/CH.mo +0 -0
  151. holidays/locale/en_US/LC_MESSAGES/CH.po +1 -1
  152. holidays/locale/en_US/LC_MESSAGES/CL.mo +0 -0
  153. holidays/locale/en_US/LC_MESSAGES/CL.po +1 -1
  154. holidays/locale/en_US/LC_MESSAGES/CN.mo +0 -0
  155. holidays/locale/en_US/LC_MESSAGES/CN.po +1 -1
  156. holidays/locale/en_US/LC_MESSAGES/CO.mo +0 -0
  157. holidays/locale/en_US/LC_MESSAGES/CO.po +1 -1
  158. holidays/locale/en_US/LC_MESSAGES/CR.mo +0 -0
  159. holidays/locale/en_US/LC_MESSAGES/CR.po +1 -1
  160. holidays/locale/en_US/LC_MESSAGES/CU.mo +0 -0
  161. holidays/locale/en_US/LC_MESSAGES/CU.po +1 -1
  162. holidays/locale/en_US/LC_MESSAGES/CW.mo +0 -0
  163. holidays/locale/en_US/LC_MESSAGES/CW.po +1 -1
  164. holidays/locale/en_US/LC_MESSAGES/CY.mo +0 -0
  165. holidays/locale/en_US/LC_MESSAGES/CY.po +1 -1
  166. holidays/locale/en_US/LC_MESSAGES/CZ.mo +0 -0
  167. holidays/locale/en_US/LC_MESSAGES/CZ.po +1 -1
  168. holidays/locale/en_US/LC_MESSAGES/DE.mo +0 -0
  169. holidays/locale/en_US/LC_MESSAGES/DE.po +17 -4
  170. holidays/locale/en_US/LC_MESSAGES/DJ.mo +0 -0
  171. holidays/locale/en_US/LC_MESSAGES/DJ.po +1 -1
  172. holidays/locale/en_US/LC_MESSAGES/DK.mo +0 -0
  173. holidays/locale/en_US/LC_MESSAGES/DK.po +1 -1
  174. holidays/locale/en_US/LC_MESSAGES/DO.mo +0 -0
  175. holidays/locale/en_US/LC_MESSAGES/DO.po +1 -1
  176. holidays/locale/en_US/LC_MESSAGES/DZ.mo +0 -0
  177. holidays/locale/en_US/LC_MESSAGES/DZ.po +1 -1
  178. holidays/locale/en_US/LC_MESSAGES/EC.mo +0 -0
  179. holidays/locale/en_US/LC_MESSAGES/EC.po +1 -1
  180. holidays/locale/en_US/LC_MESSAGES/EE.mo +0 -0
  181. holidays/locale/en_US/LC_MESSAGES/EE.po +1 -1
  182. holidays/locale/en_US/LC_MESSAGES/EG.mo +0 -0
  183. holidays/locale/en_US/LC_MESSAGES/EG.po +1 -1
  184. holidays/locale/en_US/LC_MESSAGES/ES.mo +0 -0
  185. holidays/locale/en_US/LC_MESSAGES/ES.po +1 -1
  186. holidays/locale/en_US/LC_MESSAGES/ET.mo +0 -0
  187. holidays/locale/en_US/LC_MESSAGES/ET.po +1 -1
  188. holidays/locale/en_US/LC_MESSAGES/FI.mo +0 -0
  189. holidays/locale/en_US/LC_MESSAGES/FI.po +1 -1
  190. holidays/locale/en_US/LC_MESSAGES/FR.mo +0 -0
  191. holidays/locale/en_US/LC_MESSAGES/FR.po +1 -1
  192. holidays/locale/en_US/LC_MESSAGES/GE.mo +0 -0
  193. holidays/locale/en_US/LC_MESSAGES/GE.po +1 -1
  194. holidays/locale/en_US/LC_MESSAGES/GL.mo +0 -0
  195. holidays/locale/en_US/LC_MESSAGES/GL.po +1 -1
  196. holidays/locale/en_US/LC_MESSAGES/GR.mo +0 -0
  197. holidays/locale/en_US/LC_MESSAGES/GR.po +1 -1
  198. holidays/locale/en_US/LC_MESSAGES/GT.mo +0 -0
  199. holidays/locale/en_US/LC_MESSAGES/GT.po +1 -1
  200. holidays/locale/en_US/LC_MESSAGES/HN.mo +0 -0
  201. holidays/locale/en_US/LC_MESSAGES/HN.po +1 -1
  202. holidays/locale/en_US/LC_MESSAGES/HR.mo +0 -0
  203. holidays/locale/en_US/LC_MESSAGES/HR.po +1 -1
  204. holidays/locale/en_US/LC_MESSAGES/HU.mo +0 -0
  205. holidays/locale/en_US/LC_MESSAGES/HU.po +1 -1
  206. holidays/locale/en_US/LC_MESSAGES/ID.mo +0 -0
  207. holidays/locale/en_US/LC_MESSAGES/ID.po +68 -14
  208. holidays/locale/en_US/LC_MESSAGES/IL.mo +0 -0
  209. holidays/locale/en_US/LC_MESSAGES/IL.po +1 -1
  210. holidays/locale/en_US/LC_MESSAGES/IR.mo +0 -0
  211. holidays/locale/en_US/LC_MESSAGES/IR.po +1 -1
  212. holidays/locale/en_US/LC_MESSAGES/IS.mo +0 -0
  213. holidays/locale/en_US/LC_MESSAGES/IS.po +1 -1
  214. holidays/locale/en_US/LC_MESSAGES/JP.mo +0 -0
  215. holidays/locale/en_US/LC_MESSAGES/JP.po +1 -1
  216. holidays/locale/en_US/LC_MESSAGES/KH.mo +0 -0
  217. holidays/locale/en_US/LC_MESSAGES/KH.po +1 -1
  218. holidays/locale/en_US/LC_MESSAGES/KR.mo +0 -0
  219. holidays/locale/en_US/LC_MESSAGES/KR.po +1 -1
  220. holidays/locale/en_US/LC_MESSAGES/LA.mo +0 -0
  221. holidays/locale/en_US/LC_MESSAGES/LA.po +1 -1
  222. holidays/locale/en_US/LC_MESSAGES/LI.mo +0 -0
  223. holidays/locale/en_US/LC_MESSAGES/LI.po +1 -1
  224. holidays/locale/en_US/LC_MESSAGES/LT.mo +0 -0
  225. holidays/locale/en_US/LC_MESSAGES/LT.po +1 -1
  226. holidays/locale/en_US/LC_MESSAGES/LU.mo +0 -0
  227. holidays/locale/en_US/LC_MESSAGES/LU.po +1 -1
  228. holidays/locale/en_US/LC_MESSAGES/LV.mo +0 -0
  229. holidays/locale/en_US/LC_MESSAGES/LV.po +1 -1
  230. holidays/locale/en_US/LC_MESSAGES/MA.mo +0 -0
  231. holidays/locale/en_US/LC_MESSAGES/MA.po +1 -1
  232. holidays/locale/en_US/LC_MESSAGES/MC.mo +0 -0
  233. holidays/locale/en_US/LC_MESSAGES/MC.po +1 -1
  234. holidays/locale/en_US/LC_MESSAGES/MD.mo +0 -0
  235. holidays/locale/en_US/LC_MESSAGES/MD.po +1 -1
  236. holidays/locale/en_US/LC_MESSAGES/MG.mo +0 -0
  237. holidays/locale/en_US/LC_MESSAGES/MG.po +1 -1
  238. holidays/locale/en_US/LC_MESSAGES/MT.mo +0 -0
  239. holidays/locale/en_US/LC_MESSAGES/MT.po +1 -1
  240. holidays/locale/en_US/LC_MESSAGES/MX.mo +0 -0
  241. holidays/locale/en_US/LC_MESSAGES/MX.po +1 -1
  242. holidays/locale/en_US/LC_MESSAGES/MZ.mo +0 -0
  243. holidays/locale/en_US/LC_MESSAGES/MZ.po +1 -1
  244. holidays/locale/en_US/LC_MESSAGES/NI.mo +0 -0
  245. holidays/locale/en_US/LC_MESSAGES/NI.po +1 -1
  246. holidays/locale/en_US/LC_MESSAGES/NL.mo +0 -0
  247. holidays/locale/en_US/LC_MESSAGES/NL.po +1 -1
  248. holidays/locale/en_US/LC_MESSAGES/NO.mo +0 -0
  249. holidays/locale/en_US/LC_MESSAGES/NO.po +1 -1
  250. holidays/locale/en_US/LC_MESSAGES/PE.mo +0 -0
  251. holidays/locale/en_US/LC_MESSAGES/PE.po +1 -1
  252. holidays/locale/en_US/LC_MESSAGES/PH.mo +0 -0
  253. holidays/locale/en_US/LC_MESSAGES/PH.po +128 -0
  254. holidays/locale/en_US/LC_MESSAGES/PL.mo +0 -0
  255. holidays/locale/en_US/LC_MESSAGES/PL.po +1 -1
  256. holidays/locale/en_US/LC_MESSAGES/PT.mo +0 -0
  257. holidays/locale/en_US/LC_MESSAGES/PT.po +1 -1
  258. holidays/locale/en_US/LC_MESSAGES/PY.mo +0 -0
  259. holidays/locale/en_US/LC_MESSAGES/PY.po +1 -1
  260. holidays/locale/en_US/LC_MESSAGES/RO.mo +0 -0
  261. holidays/locale/en_US/LC_MESSAGES/RO.po +1 -1
  262. holidays/locale/en_US/LC_MESSAGES/RS.mo +0 -0
  263. holidays/locale/en_US/LC_MESSAGES/RS.po +1 -1
  264. holidays/locale/en_US/LC_MESSAGES/RU.mo +0 -0
  265. holidays/locale/en_US/LC_MESSAGES/RU.po +1 -1
  266. holidays/locale/en_US/LC_MESSAGES/SA.mo +0 -0
  267. holidays/locale/en_US/LC_MESSAGES/SA.po +1 -1
  268. holidays/locale/en_US/LC_MESSAGES/SC.mo +0 -0
  269. holidays/locale/en_US/LC_MESSAGES/SC.po +1 -1
  270. holidays/locale/en_US/LC_MESSAGES/SE.mo +0 -0
  271. holidays/locale/en_US/LC_MESSAGES/SE.po +1 -1
  272. holidays/locale/en_US/LC_MESSAGES/SI.mo +0 -0
  273. holidays/locale/en_US/LC_MESSAGES/SI.po +1 -1
  274. holidays/locale/en_US/LC_MESSAGES/SK.mo +0 -0
  275. holidays/locale/en_US/LC_MESSAGES/SK.po +1 -1
  276. holidays/locale/en_US/LC_MESSAGES/TH.mo +0 -0
  277. holidays/locale/en_US/LC_MESSAGES/TH.po +1 -1
  278. holidays/locale/en_US/LC_MESSAGES/TL.mo +0 -0
  279. holidays/locale/en_US/LC_MESSAGES/TL.po +16 -4
  280. holidays/locale/en_US/LC_MESSAGES/TN.mo +0 -0
  281. holidays/locale/en_US/LC_MESSAGES/TN.po +1 -1
  282. holidays/locale/en_US/LC_MESSAGES/TO.mo +0 -0
  283. holidays/locale/en_US/LC_MESSAGES/TO.po +1 -1
  284. holidays/locale/en_US/LC_MESSAGES/TR.mo +0 -0
  285. holidays/locale/en_US/LC_MESSAGES/TR.po +1 -1
  286. holidays/locale/en_US/LC_MESSAGES/TW.mo +0 -0
  287. holidays/locale/en_US/LC_MESSAGES/TW.po +1 -1
  288. holidays/locale/en_US/LC_MESSAGES/TZ.mo +0 -0
  289. holidays/locale/en_US/LC_MESSAGES/TZ.po +1 -1
  290. holidays/locale/en_US/LC_MESSAGES/UA.mo +0 -0
  291. holidays/locale/en_US/LC_MESSAGES/UA.po +1 -1
  292. holidays/locale/en_US/LC_MESSAGES/UY.mo +0 -0
  293. holidays/locale/en_US/LC_MESSAGES/UY.po +1 -1
  294. holidays/locale/en_US/LC_MESSAGES/VE.mo +0 -0
  295. holidays/locale/en_US/LC_MESSAGES/VE.po +1 -1
  296. holidays/locale/en_US/LC_MESSAGES/VN.mo +0 -0
  297. holidays/locale/en_US/LC_MESSAGES/VN.po +37 -19
  298. holidays/locale/es/LC_MESSAGES/AR.mo +0 -0
  299. holidays/locale/es/LC_MESSAGES/AR.po +1 -1
  300. holidays/locale/es/LC_MESSAGES/BO.mo +0 -0
  301. holidays/locale/es/LC_MESSAGES/BO.po +1 -1
  302. holidays/locale/es/LC_MESSAGES/CL.mo +0 -0
  303. holidays/locale/es/LC_MESSAGES/CL.po +1 -1
  304. holidays/locale/es/LC_MESSAGES/CO.mo +0 -0
  305. holidays/locale/es/LC_MESSAGES/CO.po +1 -1
  306. holidays/locale/es/LC_MESSAGES/CR.mo +0 -0
  307. holidays/locale/es/LC_MESSAGES/CR.po +1 -1
  308. holidays/locale/es/LC_MESSAGES/CU.mo +0 -0
  309. holidays/locale/es/LC_MESSAGES/CU.po +1 -1
  310. holidays/locale/es/LC_MESSAGES/DO.mo +0 -0
  311. holidays/locale/es/LC_MESSAGES/DO.po +1 -1
  312. holidays/locale/es/LC_MESSAGES/EC.mo +0 -0
  313. holidays/locale/es/LC_MESSAGES/EC.po +1 -1
  314. holidays/locale/es/LC_MESSAGES/ES.mo +0 -0
  315. holidays/locale/es/LC_MESSAGES/ES.po +1 -1
  316. holidays/locale/es/LC_MESSAGES/GT.mo +0 -0
  317. holidays/locale/es/LC_MESSAGES/GT.po +1 -1
  318. holidays/locale/es/LC_MESSAGES/HN.mo +0 -0
  319. holidays/locale/es/LC_MESSAGES/HN.po +1 -1
  320. holidays/locale/es/LC_MESSAGES/MX.mo +0 -0
  321. holidays/locale/es/LC_MESSAGES/MX.po +1 -1
  322. holidays/locale/es/LC_MESSAGES/NI.mo +0 -0
  323. holidays/locale/es/LC_MESSAGES/NI.po +1 -1
  324. holidays/locale/es/LC_MESSAGES/PE.mo +0 -0
  325. holidays/locale/es/LC_MESSAGES/PE.po +1 -1
  326. holidays/locale/es/LC_MESSAGES/PY.mo +0 -0
  327. holidays/locale/es/LC_MESSAGES/PY.po +1 -1
  328. holidays/locale/es/LC_MESSAGES/UY.mo +0 -0
  329. holidays/locale/es/LC_MESSAGES/UY.po +1 -1
  330. holidays/locale/es/LC_MESSAGES/VE.mo +0 -0
  331. holidays/locale/es/LC_MESSAGES/VE.po +1 -1
  332. holidays/locale/et/LC_MESSAGES/EE.mo +0 -0
  333. holidays/locale/et/LC_MESSAGES/EE.po +1 -1
  334. holidays/locale/fa/LC_MESSAGES/IR.mo +0 -0
  335. holidays/locale/fa/LC_MESSAGES/IR.po +1 -1
  336. holidays/locale/fi/LC_MESSAGES/FI.mo +0 -0
  337. holidays/locale/fi/LC_MESSAGES/FI.po +1 -1
  338. holidays/locale/fil/LC_MESSAGES/PH.mo +0 -0
  339. holidays/locale/fil/LC_MESSAGES/PH.po +129 -0
  340. holidays/locale/fr/LC_MESSAGES/BE.mo +0 -0
  341. holidays/locale/fr/LC_MESSAGES/BE.po +1 -1
  342. holidays/locale/fr/LC_MESSAGES/CA.mo +0 -0
  343. holidays/locale/fr/LC_MESSAGES/CA.po +1 -1
  344. holidays/locale/fr/LC_MESSAGES/CH.mo +0 -0
  345. holidays/locale/fr/LC_MESSAGES/CH.po +1 -1
  346. holidays/locale/fr/LC_MESSAGES/DJ.mo +0 -0
  347. holidays/locale/fr/LC_MESSAGES/DJ.po +1 -1
  348. holidays/locale/fr/LC_MESSAGES/DZ.mo +0 -0
  349. holidays/locale/fr/LC_MESSAGES/DZ.po +1 -1
  350. holidays/locale/fr/LC_MESSAGES/FR.mo +0 -0
  351. holidays/locale/fr/LC_MESSAGES/FR.po +1 -1
  352. holidays/locale/fr/LC_MESSAGES/LU.mo +0 -0
  353. holidays/locale/fr/LC_MESSAGES/LU.po +1 -1
  354. holidays/locale/fr/LC_MESSAGES/MA.mo +0 -0
  355. holidays/locale/fr/LC_MESSAGES/MA.po +1 -1
  356. holidays/locale/fr/LC_MESSAGES/MC.mo +0 -0
  357. holidays/locale/fr/LC_MESSAGES/MC.po +1 -1
  358. holidays/locale/he/LC_MESSAGES/IL.mo +0 -0
  359. holidays/locale/he/LC_MESSAGES/IL.po +1 -1
  360. holidays/locale/hr/LC_MESSAGES/HR.mo +0 -0
  361. holidays/locale/hr/LC_MESSAGES/HR.po +1 -1
  362. holidays/locale/hu/LC_MESSAGES/HU.mo +0 -0
  363. holidays/locale/hu/LC_MESSAGES/HU.po +1 -1
  364. holidays/locale/hy/LC_MESSAGES/AM.mo +0 -0
  365. holidays/locale/hy/LC_MESSAGES/AM.po +1 -1
  366. holidays/locale/id/LC_MESSAGES/ID.mo +0 -0
  367. holidays/locale/id/LC_MESSAGES/ID.po +66 -12
  368. holidays/locale/is/LC_MESSAGES/IS.mo +0 -0
  369. holidays/locale/is/LC_MESSAGES/IS.po +1 -1
  370. holidays/locale/it/LC_MESSAGES/CH.mo +0 -0
  371. holidays/locale/it/LC_MESSAGES/CH.po +1 -1
  372. holidays/locale/ja/LC_MESSAGES/JP.mo +0 -0
  373. holidays/locale/ja/LC_MESSAGES/JP.po +1 -1
  374. holidays/locale/ka/LC_MESSAGES/GE.mo +0 -0
  375. holidays/locale/ka/LC_MESSAGES/GE.po +1 -1
  376. holidays/locale/kl/LC_MESSAGES/GL.mo +0 -0
  377. holidays/locale/kl/LC_MESSAGES/GL.po +1 -1
  378. holidays/locale/km/LC_MESSAGES/KH.mo +0 -0
  379. holidays/locale/km/LC_MESSAGES/KH.po +1 -1
  380. holidays/locale/ko/LC_MESSAGES/KR.mo +0 -0
  381. holidays/locale/ko/LC_MESSAGES/KR.po +1 -1
  382. holidays/locale/lb/LC_MESSAGES/LU.mo +0 -0
  383. holidays/locale/lb/LC_MESSAGES/LU.po +1 -1
  384. holidays/locale/lo/LC_MESSAGES/LA.mo +0 -0
  385. holidays/locale/lo/LC_MESSAGES/LA.po +1 -1
  386. holidays/locale/lt/LC_MESSAGES/LT.mo +0 -0
  387. holidays/locale/lt/LC_MESSAGES/LT.po +1 -1
  388. holidays/locale/lv/LC_MESSAGES/LV.mo +0 -0
  389. holidays/locale/lv/LC_MESSAGES/LV.po +1 -1
  390. holidays/locale/mg/LC_MESSAGES/MG.mo +0 -0
  391. holidays/locale/mg/LC_MESSAGES/MG.po +1 -1
  392. holidays/locale/ms/LC_MESSAGES/BN.mo +0 -0
  393. holidays/locale/ms/LC_MESSAGES/BN.po +1 -1
  394. holidays/locale/mt/LC_MESSAGES/MT.mo +0 -0
  395. holidays/locale/mt/LC_MESSAGES/MT.po +1 -1
  396. holidays/locale/nl/LC_MESSAGES/AW.mo +0 -0
  397. holidays/locale/nl/LC_MESSAGES/AW.po +1 -1
  398. holidays/locale/nl/LC_MESSAGES/BE.mo +0 -0
  399. holidays/locale/nl/LC_MESSAGES/BE.po +1 -1
  400. holidays/locale/nl/LC_MESSAGES/CW.mo +0 -0
  401. holidays/locale/nl/LC_MESSAGES/CW.po +1 -1
  402. holidays/locale/nl/LC_MESSAGES/NL.mo +0 -0
  403. holidays/locale/nl/LC_MESSAGES/NL.po +1 -1
  404. holidays/locale/no/LC_MESSAGES/NO.mo +0 -0
  405. holidays/locale/no/LC_MESSAGES/NO.po +1 -1
  406. holidays/locale/pap_AW/LC_MESSAGES/AW.mo +0 -0
  407. holidays/locale/pap_AW/LC_MESSAGES/AW.po +1 -1
  408. holidays/locale/pap_CW/LC_MESSAGES/CW.mo +0 -0
  409. holidays/locale/pap_CW/LC_MESSAGES/CW.po +1 -1
  410. holidays/locale/pl/LC_MESSAGES/PL.mo +0 -0
  411. holidays/locale/pl/LC_MESSAGES/PL.po +1 -1
  412. holidays/locale/pt_AO/LC_MESSAGES/AO.mo +0 -0
  413. holidays/locale/pt_AO/LC_MESSAGES/AO.po +1 -1
  414. holidays/locale/pt_MZ/LC_MESSAGES/MZ.mo +0 -0
  415. holidays/locale/pt_MZ/LC_MESSAGES/MZ.po +1 -1
  416. holidays/locale/pt_PT/LC_MESSAGES/PT.mo +0 -0
  417. holidays/locale/pt_PT/LC_MESSAGES/PT.po +1 -1
  418. holidays/locale/pt_TL/LC_MESSAGES/TL.mo +0 -0
  419. holidays/locale/pt_TL/LC_MESSAGES/TL.po +17 -5
  420. holidays/locale/ro/LC_MESSAGES/MD.mo +0 -0
  421. holidays/locale/ro/LC_MESSAGES/MD.po +1 -1
  422. holidays/locale/ro/LC_MESSAGES/RO.mo +0 -0
  423. holidays/locale/ro/LC_MESSAGES/RO.po +1 -1
  424. holidays/locale/ru/LC_MESSAGES/RU.mo +0 -0
  425. holidays/locale/ru/LC_MESSAGES/RU.po +1 -1
  426. holidays/locale/sk/LC_MESSAGES/SK.mo +0 -0
  427. holidays/locale/sk/LC_MESSAGES/SK.po +1 -1
  428. holidays/locale/sl/LC_MESSAGES/SI.mo +0 -0
  429. holidays/locale/sl/LC_MESSAGES/SI.po +1 -1
  430. holidays/locale/sq/LC_MESSAGES/AL.mo +0 -0
  431. holidays/locale/sq/LC_MESSAGES/AL.po +106 -0
  432. holidays/locale/sr/LC_MESSAGES/BA.mo +0 -0
  433. holidays/locale/sr/LC_MESSAGES/BA.po +1 -1
  434. holidays/locale/sr/LC_MESSAGES/RS.mo +0 -0
  435. holidays/locale/sr/LC_MESSAGES/RS.po +1 -1
  436. holidays/locale/sv/LC_MESSAGES/SE.mo +0 -0
  437. holidays/locale/sv/LC_MESSAGES/SE.po +1 -1
  438. holidays/locale/sv_FI/LC_MESSAGES/FI.mo +0 -0
  439. holidays/locale/sv_FI/LC_MESSAGES/FI.po +1 -1
  440. holidays/locale/sw/LC_MESSAGES/TZ.mo +0 -0
  441. holidays/locale/sw/LC_MESSAGES/TZ.po +1 -1
  442. holidays/locale/tet/LC_MESSAGES/TL.mo +0 -0
  443. holidays/locale/tet/LC_MESSAGES/TL.po +19 -7
  444. holidays/locale/th/LC_MESSAGES/BN.mo +0 -0
  445. holidays/locale/th/LC_MESSAGES/BN.po +1 -1
  446. holidays/locale/th/LC_MESSAGES/CA.mo +0 -0
  447. holidays/locale/th/LC_MESSAGES/CA.po +1 -1
  448. holidays/locale/th/LC_MESSAGES/CN.mo +0 -0
  449. holidays/locale/th/LC_MESSAGES/CN.po +1 -1
  450. holidays/locale/th/LC_MESSAGES/DE.mo +0 -0
  451. holidays/locale/th/LC_MESSAGES/DE.po +15 -2
  452. holidays/locale/th/LC_MESSAGES/ID.mo +0 -0
  453. holidays/locale/th/LC_MESSAGES/ID.po +195 -0
  454. holidays/locale/th/LC_MESSAGES/JP.mo +0 -0
  455. holidays/locale/th/LC_MESSAGES/JP.po +1 -1
  456. holidays/locale/th/LC_MESSAGES/KH.mo +0 -0
  457. holidays/locale/th/LC_MESSAGES/KH.po +1 -1
  458. holidays/locale/th/LC_MESSAGES/KR.mo +0 -0
  459. holidays/locale/th/LC_MESSAGES/KR.po +1 -1
  460. holidays/locale/th/LC_MESSAGES/LA.mo +0 -0
  461. holidays/locale/th/LC_MESSAGES/LA.po +1 -1
  462. holidays/locale/th/LC_MESSAGES/PH.mo +0 -0
  463. holidays/locale/th/LC_MESSAGES/PH.po +128 -0
  464. holidays/locale/th/LC_MESSAGES/TH.mo +0 -0
  465. holidays/locale/th/LC_MESSAGES/TH.po +1 -1
  466. holidays/locale/th/LC_MESSAGES/TW.mo +0 -0
  467. holidays/locale/th/LC_MESSAGES/TW.po +1 -1
  468. holidays/locale/th/LC_MESSAGES/VN.mo +0 -0
  469. holidays/locale/th/LC_MESSAGES/VN.po +93 -0
  470. holidays/locale/to/LC_MESSAGES/TO.mo +0 -0
  471. holidays/locale/to/LC_MESSAGES/TO.po +1 -1
  472. holidays/locale/tr/LC_MESSAGES/TR.mo +0 -0
  473. holidays/locale/tr/LC_MESSAGES/TR.po +1 -1
  474. holidays/locale/uk/LC_MESSAGES/AL.mo +0 -0
  475. holidays/locale/uk/LC_MESSAGES/AL.po +106 -0
  476. holidays/locale/uk/LC_MESSAGES/AO.mo +0 -0
  477. holidays/locale/uk/LC_MESSAGES/AO.po +1 -1
  478. holidays/locale/uk/LC_MESSAGES/AR.mo +0 -0
  479. holidays/locale/uk/LC_MESSAGES/AR.po +1 -1
  480. holidays/locale/uk/LC_MESSAGES/AT.mo +0 -0
  481. holidays/locale/uk/LC_MESSAGES/AT.po +1 -1
  482. holidays/locale/uk/LC_MESSAGES/AW.mo +0 -0
  483. holidays/locale/uk/LC_MESSAGES/AW.po +1 -1
  484. holidays/locale/uk/LC_MESSAGES/AZ.mo +0 -0
  485. holidays/locale/uk/LC_MESSAGES/AZ.po +1 -1
  486. holidays/locale/uk/LC_MESSAGES/BA.mo +0 -0
  487. holidays/locale/uk/LC_MESSAGES/BA.po +1 -1
  488. holidays/locale/uk/LC_MESSAGES/BE.mo +0 -0
  489. holidays/locale/uk/LC_MESSAGES/BE.po +1 -1
  490. holidays/locale/uk/LC_MESSAGES/BG.mo +0 -0
  491. holidays/locale/uk/LC_MESSAGES/BG.po +1 -1
  492. holidays/locale/uk/LC_MESSAGES/BO.mo +0 -0
  493. holidays/locale/uk/LC_MESSAGES/BO.po +1 -1
  494. holidays/locale/uk/LC_MESSAGES/CH.mo +0 -0
  495. holidays/locale/uk/LC_MESSAGES/CH.po +1 -1
  496. holidays/locale/uk/LC_MESSAGES/CL.mo +0 -0
  497. holidays/locale/uk/LC_MESSAGES/CL.po +1 -1
  498. holidays/locale/uk/LC_MESSAGES/CO.mo +0 -0
  499. holidays/locale/uk/LC_MESSAGES/CO.po +1 -1
  500. holidays/locale/uk/LC_MESSAGES/CR.mo +0 -0
  501. holidays/locale/uk/LC_MESSAGES/CR.po +1 -1
  502. holidays/locale/uk/LC_MESSAGES/CU.mo +0 -0
  503. holidays/locale/uk/LC_MESSAGES/CU.po +1 -1
  504. holidays/locale/uk/LC_MESSAGES/CW.mo +0 -0
  505. holidays/locale/uk/LC_MESSAGES/CW.po +1 -1
  506. holidays/locale/uk/LC_MESSAGES/CY.mo +0 -0
  507. holidays/locale/uk/LC_MESSAGES/CY.po +1 -1
  508. holidays/locale/uk/LC_MESSAGES/CZ.mo +0 -0
  509. holidays/locale/uk/LC_MESSAGES/CZ.po +1 -1
  510. holidays/locale/uk/LC_MESSAGES/DE.mo +0 -0
  511. holidays/locale/uk/LC_MESSAGES/DE.po +17 -4
  512. holidays/locale/uk/LC_MESSAGES/DK.mo +0 -0
  513. holidays/locale/uk/LC_MESSAGES/DK.po +1 -1
  514. holidays/locale/uk/LC_MESSAGES/DO.mo +0 -0
  515. holidays/locale/uk/LC_MESSAGES/DO.po +1 -1
  516. holidays/locale/uk/LC_MESSAGES/EC.mo +0 -0
  517. holidays/locale/uk/LC_MESSAGES/EC.po +1 -1
  518. holidays/locale/uk/LC_MESSAGES/EE.mo +0 -0
  519. holidays/locale/uk/LC_MESSAGES/EE.po +1 -1
  520. holidays/locale/uk/LC_MESSAGES/ES.mo +0 -0
  521. holidays/locale/uk/LC_MESSAGES/ES.po +1 -1
  522. holidays/locale/uk/LC_MESSAGES/FI.mo +0 -0
  523. holidays/locale/uk/LC_MESSAGES/FI.po +1 -1
  524. holidays/locale/uk/LC_MESSAGES/FR.mo +0 -0
  525. holidays/locale/uk/LC_MESSAGES/FR.po +1 -1
  526. holidays/locale/uk/LC_MESSAGES/GE.mo +0 -0
  527. holidays/locale/uk/LC_MESSAGES/GE.po +1 -1
  528. holidays/locale/uk/LC_MESSAGES/GR.mo +0 -0
  529. holidays/locale/uk/LC_MESSAGES/GR.po +1 -1
  530. holidays/locale/uk/LC_MESSAGES/HN.mo +0 -0
  531. holidays/locale/uk/LC_MESSAGES/HN.po +1 -1
  532. holidays/locale/uk/LC_MESSAGES/HR.mo +0 -0
  533. holidays/locale/uk/LC_MESSAGES/HR.po +1 -1
  534. holidays/locale/uk/LC_MESSAGES/HU.mo +0 -0
  535. holidays/locale/uk/LC_MESSAGES/HU.po +1 -1
  536. holidays/locale/uk/LC_MESSAGES/ID.mo +0 -0
  537. holidays/locale/uk/LC_MESSAGES/ID.po +67 -13
  538. holidays/locale/uk/LC_MESSAGES/IL.mo +0 -0
  539. holidays/locale/uk/LC_MESSAGES/IL.po +1 -1
  540. holidays/locale/uk/LC_MESSAGES/IS.mo +0 -0
  541. holidays/locale/uk/LC_MESSAGES/IS.po +1 -1
  542. holidays/locale/uk/LC_MESSAGES/LI.mo +0 -0
  543. holidays/locale/uk/LC_MESSAGES/LI.po +1 -1
  544. holidays/locale/uk/LC_MESSAGES/LT.mo +0 -0
  545. holidays/locale/uk/LC_MESSAGES/LT.po +1 -1
  546. holidays/locale/uk/LC_MESSAGES/LU.mo +0 -0
  547. holidays/locale/uk/LC_MESSAGES/LU.po +1 -1
  548. holidays/locale/uk/LC_MESSAGES/LV.mo +0 -0
  549. holidays/locale/uk/LC_MESSAGES/LV.po +1 -1
  550. holidays/locale/uk/LC_MESSAGES/MC.mo +0 -0
  551. holidays/locale/uk/LC_MESSAGES/MC.po +1 -1
  552. holidays/locale/uk/LC_MESSAGES/MD.mo +0 -0
  553. holidays/locale/uk/LC_MESSAGES/MD.po +1 -1
  554. holidays/locale/uk/LC_MESSAGES/MG.mo +0 -0
  555. holidays/locale/uk/LC_MESSAGES/MG.po +1 -1
  556. holidays/locale/uk/LC_MESSAGES/MX.mo +0 -0
  557. holidays/locale/uk/LC_MESSAGES/MX.po +1 -1
  558. holidays/locale/uk/LC_MESSAGES/MZ.mo +0 -0
  559. holidays/locale/uk/LC_MESSAGES/MZ.po +1 -1
  560. holidays/locale/uk/LC_MESSAGES/NI.mo +0 -0
  561. holidays/locale/uk/LC_MESSAGES/NI.po +1 -1
  562. holidays/locale/uk/LC_MESSAGES/NL.mo +0 -0
  563. holidays/locale/uk/LC_MESSAGES/NL.po +1 -1
  564. holidays/locale/uk/LC_MESSAGES/NO.mo +0 -0
  565. holidays/locale/uk/LC_MESSAGES/NO.po +1 -1
  566. holidays/locale/uk/LC_MESSAGES/PE.mo +0 -0
  567. holidays/locale/uk/LC_MESSAGES/PE.po +1 -1
  568. holidays/locale/uk/LC_MESSAGES/PL.mo +0 -0
  569. holidays/locale/uk/LC_MESSAGES/PL.po +1 -1
  570. holidays/locale/uk/LC_MESSAGES/PT.mo +0 -0
  571. holidays/locale/uk/LC_MESSAGES/PT.po +1 -1
  572. holidays/locale/uk/LC_MESSAGES/PY.mo +0 -0
  573. holidays/locale/uk/LC_MESSAGES/PY.po +1 -1
  574. holidays/locale/uk/LC_MESSAGES/RO.mo +0 -0
  575. holidays/locale/uk/LC_MESSAGES/RO.po +1 -1
  576. holidays/locale/uk/LC_MESSAGES/SE.mo +0 -0
  577. holidays/locale/uk/LC_MESSAGES/SE.po +1 -1
  578. holidays/locale/uk/LC_MESSAGES/SI.mo +0 -0
  579. holidays/locale/uk/LC_MESSAGES/SI.po +1 -1
  580. holidays/locale/uk/LC_MESSAGES/SK.mo +0 -0
  581. holidays/locale/uk/LC_MESSAGES/SK.po +1 -1
  582. holidays/locale/uk/LC_MESSAGES/TR.mo +0 -0
  583. holidays/locale/uk/LC_MESSAGES/TR.po +1 -1
  584. holidays/locale/uk/LC_MESSAGES/UA.mo +0 -0
  585. holidays/locale/uk/LC_MESSAGES/UA.po +1 -1
  586. holidays/locale/uk/LC_MESSAGES/UY.mo +0 -0
  587. holidays/locale/uk/LC_MESSAGES/UY.po +1 -1
  588. holidays/locale/uk/LC_MESSAGES/VE.mo +0 -0
  589. holidays/locale/uk/LC_MESSAGES/VE.po +1 -1
  590. holidays/locale/vi/LC_MESSAGES/VN.mo +0 -0
  591. holidays/locale/vi/LC_MESSAGES/VN.po +32 -14
  592. holidays/locale/zh_CN/LC_MESSAGES/CN.mo +0 -0
  593. holidays/locale/zh_CN/LC_MESSAGES/CN.po +1 -1
  594. holidays/locale/zh_CN/LC_MESSAGES/TW.mo +0 -0
  595. holidays/locale/zh_CN/LC_MESSAGES/TW.po +1 -1
  596. holidays/locale/zh_TW/LC_MESSAGES/CN.mo +0 -0
  597. holidays/locale/zh_TW/LC_MESSAGES/CN.po +1 -1
  598. holidays/locale/zh_TW/LC_MESSAGES/TW.mo +0 -0
  599. holidays/locale/zh_TW/LC_MESSAGES/TW.po +1 -1
  600. holidays/mixins.py +1 -4
  601. holidays/observed_holiday_base.py +5 -5
  602. holidays/registry.py +4 -3
  603. holidays/utils.py +8 -7
  604. holidays/version.py +13 -0
  605. {holidays-0.58.dist-info → holidays-0.60.dist-info}/METADATA +26 -42
  606. holidays-0.60.dist-info/RECORD +797 -0
  607. {holidays-0.58.dist-info → holidays-0.60.dist-info}/WHEEL +1 -1
  608. holidays-0.58.dist-info/RECORD +0 -777
  609. {holidays-0.58.dist-info → holidays-0.60.dist-info}/AUTHORS +0 -0
  610. {holidays-0.58.dist-info → holidays-0.60.dist-info}/LICENSE +0 -0
  611. {holidays-0.58.dist-info → holidays-0.60.dist-info}/top_level.txt +0 -0
@@ -19,11 +19,11 @@ from holidays.groups import InternationalHolidays, StaticHolidays, ThaiCalendarH
19
19
  from holidays.observed_holiday_base import (
20
20
  ObservedHolidayBase,
21
21
  SAT_TO_NEXT_MON,
22
- SAT_TO_NEXT_TUE,
23
- THU_FRI_TO_NEXT_MON,
22
+ THU_FRI_TO_NEXT_WORKDAY,
24
23
  SAT_SUN_TO_NEXT_MON,
25
24
  SAT_SUN_TO_NEXT_TUE,
26
25
  SAT_SUN_TO_NEXT_MON_TUE,
26
+ SAT_SUN_TO_NEXT_WORKDAY,
27
27
  )
28
28
 
29
29
 
@@ -39,6 +39,7 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
39
39
  - https://resolution.soc.go.th/?prep_id=99159317
40
40
  - https://resolution.soc.go.th/?prep_id=196007
41
41
  - https://github.com/vacanza/holidays/pull/929
42
+ - https://www.thairath.co.th/lifestyle/life/2812118
42
43
  - [New Year's Day]
43
44
  `wikisource.org <http://tiny.cc/wa_wiki_thai_newyear_2483>`_
44
45
  - [National Children's Day]
@@ -95,6 +96,7 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
95
96
  https://dl.parliament.go.th/handle/20.500.13072/92816
96
97
  https://e-manage.mju.ac.th/timeline_detail.aspx?key=MTk4
97
98
  https://resolution.soc.go.th/PDF_UPLOAD/2510/932141.pdf
99
+ https://www.myhora.com/ปฏิทิน/วันพืชมงคล.aspx
98
100
  - [Royal Thai Armed Forces Day]
99
101
  `<https://th.wikipedia.org/wiki/วันกองทัพไทย>`_
100
102
  - [Teacher's Day]
@@ -115,7 +117,7 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
115
117
  Applied Automatically for Workday if on Weekends: 2001-Present
116
118
 
117
119
  Limitations:
118
- - This is only 100% accurate for 1997-2024; any future dates are up to the
120
+ - This is only 100% accurate for 1997-2025; any future dates are up to the
119
121
  Royal Thai Government Gazette which updates on a year-by-year basis.
120
122
 
121
123
  - Approx. date only goes as far back as 1941 (B.E. 2484) as the Thai
@@ -129,8 +131,6 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
129
131
  - Royal Ploughing Ceremony Day is date is announced on an annual basis
130
132
  by the Court Astrologers, thus need an annual update to the library here
131
133
 
132
- - This doesn't cover Thai regional public holidays yet, only stubs added
133
-
134
134
  Country created by: `arkid15r <https://github.com/arkid15r>`__
135
135
 
136
136
  Country maintained by: `PPsyrius <https://github.com/PPsyrius>`__
@@ -221,15 +221,16 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
221
221
 
222
222
  # วันหยุดชดเชยวันสงกรานต์
223
223
  # If Songkran happened to be held on the weekends, only one in-lieu
224
- # public holiday is added, No in lieus for SUN-MON-TUE case.
224
+ # public holiday is added.
225
225
  # - CASE 1: THU-FRI-SAT -> 1 in-lieu on MON
226
226
  # - CASE 2: FRI-SAT-SUN -> 1 in-lieu on MON
227
227
  # - CASE 3: SAT-SUN-MON -> 1 in-lieu on TUE
228
+ # - CASE 4: SUN-MON-TUE -> 1 in-lieu on WED
228
229
  # See in lieu logic in `_add_observed(dt: date)`.
229
230
  # Status: In Use.
230
231
 
231
232
  if self._year >= 1995:
232
- self._add_observed(dt, rule=THU_FRI_TO_NEXT_MON + SAT_TO_NEXT_TUE)
233
+ self._add_observed(dt, rule=THU_FRI_TO_NEXT_WORKDAY + SAT_SUN_TO_NEXT_WORKDAY)
233
234
 
234
235
  # วันแรงงานแห่งชาติ
235
236
  # Status: In-Use.
@@ -433,17 +434,13 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
433
434
  # Status: In-Use.
434
435
 
435
436
  # Makha Bucha.
436
- makha_bucha_date = self._add_makha_bucha(tr("วันมาฆบูชา"))
437
- if makha_bucha_date:
438
- self._add_observed(makha_bucha_date)
437
+ self._add_observed(self._add_makha_bucha(tr("วันมาฆบูชา")))
439
438
 
440
439
  # วันวิสาขบูชา
441
440
  # Status: In-Use.
442
441
 
443
442
  # Visakha Bucha.
444
- visakha_bucha_date = self._add_visakha_bucha(tr("วันวิสาขบูชา"))
445
- if visakha_bucha_date:
446
- self._add_observed(visakha_bucha_date)
443
+ self._add_observed(self._add_visakha_bucha(tr("วันวิสาขบูชา")))
447
444
 
448
445
  # วันอาสาฬหบูชา
449
446
  # Status: In-Use.
@@ -451,10 +448,11 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
451
448
  # - CASE 2: SAT-SUN -> 1 in-lieu on MON
452
449
  # - CASE 3: SUN-MON -> 1 in-lieu on TUE
453
450
 
454
- # Asarnha Bucha.
455
- asarnha_bucha_date = self._add_asarnha_bucha(tr("วันอาสาฬหบูชา"))
456
- if asarnha_bucha_date:
457
- self._add_observed(asarnha_bucha_date, rule=SAT_SUN_TO_NEXT_MON_TUE)
451
+ self._add_observed(
452
+ # Asarnha Bucha.
453
+ self._add_asarnha_bucha(tr("วันอาสาฬหบูชา")),
454
+ rule=SAT_SUN_TO_NEXT_MON_TUE,
455
+ )
458
456
 
459
457
  # วันเข้าพรรษา
460
458
  # Status: In-Use.
@@ -463,9 +461,7 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
463
461
  # - CASE 3: SUN-MON -> 1 in-lieu on TUE
464
462
 
465
463
  # Buddhist Lent Day.
466
- khao_phansa_date = self._add_khao_phansa(tr("วันเข้าพรรษา"))
467
- if khao_phansa_date:
468
- self._add_observed(khao_phansa_date, rule=SAT_TO_NEXT_MON)
464
+ self._add_observed(self._add_khao_phansa(tr("วันเข้าพรรษา")), rule=SAT_TO_NEXT_MON)
469
465
 
470
466
  def _populate_armed_forces_holidays(self):
471
467
  # วันกองทัพไทย
@@ -525,8 +521,9 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
525
521
  # Is dated on an annual basis by the Royal Palace, always on weekdays.
526
522
  # For historic research, วันเกษตรแห่งชาติ (National Agricultural Day) also concides with
527
523
  # this from 1966 onwards. For earlier records the date was refered as วันแรกนาขวัญ.
528
- # This isn't even fixed even by the Thai Lunar Calendar, but instead
529
- # by Court Astrologers; All chosen dates are all in the first three weeks of May.
524
+ # This isn't even fixed even by the Thai Lunar Calendar besides being in Month 6
525
+ # to concides with the rainy season, but instead by Court Astrologers; All chosen dates
526
+ # so far are all in the first three weeks of May.
530
527
  # *** NOTE: only observed by government sectors.
531
528
  # TODO: Update this annually around Dec of each year.
532
529
 
@@ -597,8 +594,9 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
597
594
  2022: (MAY, 13),
598
595
  2023: (MAY, 17),
599
596
  2024: (MAY, 10),
597
+ 2025: (MAY, 9),
600
598
  }
601
- if 1960 <= self._year <= 2024 and self._year != 1999:
599
+ if 1960 <= self._year <= 2025 and self._year != 1999:
602
600
  self._add_observed(
603
601
  # Royal Ploughing Ceremony.
604
602
  self._add_holiday(tr("วันพืชมงคล"), raeknakhwan_dates.get(self._year, (MAY, 13)))
@@ -235,6 +235,9 @@ class TimorLesteStaticHolidays:
235
235
  # Parliamentary Election Day.
236
236
  parliamentary_election = tr("Dia de Eleições Parlamentares")
237
237
 
238
+ # Local Election Day.
239
+ local_election = tr("Dia de eleições locais")
240
+
238
241
  # Centenary of the Revolt of Dom Boaventura.
239
242
  dom_boaventura_centenary = tr("Centenário da Revolta de Dom Boaventura")
240
243
 
@@ -244,6 +247,12 @@ class TimorLesteStaticHolidays:
244
247
  # 20th Anniversary Celebrations of the Popular Consultation.
245
248
  popular_consultation_20th = tr("Celebrações do 20.º Aniversário da Consulta Popular")
246
249
 
250
+ # 25th Anniversary Celebrations of the Popular Consultation.
251
+ popular_consultation_25th = tr("Celebrações do 25.º Aniversário da Consulta Popular")
252
+
253
+ # Visit of His Holiness Pope Francis to Timor-Leste.
254
+ pope_francis_visit = tr("Visita de Sua Santidade o Papa Francisco a Timor-Leste")
255
+
247
256
  special_government_holidays = {
248
257
  2010: (
249
258
  # http://timor-leste.gov.tl/?p=4183&lang=en
@@ -427,6 +436,10 @@ class TimorLesteStaticHolidays:
427
436
  (APR, 18, presidential_election),
428
437
  (APR, 19, presidential_election),
429
438
  (APR, 20, presidential_election),
439
+ # https://timor-leste.gov.tl/?p=31107&lang=en
440
+ (AUG, 29, special_national_holidays),
441
+ # https://timor-leste.gov.tl/?p=31152&lang=en
442
+ (SEP, 6, special_national_holidays),
430
443
  # http://timor-leste.gov.tl/?p=31404&lang=en
431
444
  (OCT, 31, special_national_holidays),
432
445
  # http://timor-leste.gov.tl/?p=31574&lang=en
@@ -441,9 +454,37 @@ class TimorLesteStaticHolidays:
441
454
  (JAN, 23, special_national_holidays),
442
455
  # http://timor-leste.gov.tl/?p=32191&lang=en
443
456
  (FEB, 22, special_national_holidays),
457
+ # https://timor-leste.gov.tl/?p=32561&lang=en
458
+ (APR, 6, special_national_holidays),
459
+ (APR, 10, special_national_holidays),
460
+ # https://timor-leste.gov.tl/?p=32590&lang=en
461
+ (APR, 20, special_national_holidays),
462
+ (APR, 21, special_national_holidays),
463
+ # https://timor-leste.gov.tl/?p=32617&lang=en
464
+ (MAY, 19, parliamentary_election),
465
+ (MAY, 22, parliamentary_election),
466
+ # https://timor-leste.gov.tl/?p=34792&lang=en
467
+ (OCT, 27, local_election),
468
+ # https://timor-leste.gov.tl/?p=35060&lang=en
469
+ (NOV, 13, local_election),
470
+ # https://timor-leste.gov.tl/?p=35627&lang=en&
471
+ (DEC, 26, special_national_holidays),
444
472
  ),
445
473
  2024: (
474
+ # https://timor-leste.gov.tl/?p=35627&lang=en
475
+ (JAN, 2, special_national_holidays),
446
476
  # http://timor-leste.gov.tl/?p=36002&lang=en
447
477
  (FEB, 14, special_national_holidays),
478
+ # https://timor-leste.gov.tl/?p=36859&lang=en
479
+ (MAR, 28, special_national_holidays),
480
+ # https://timor-leste.gov.tl/?p=39062&lang=en
481
+ (AUG, 28, popular_consultation_25th),
482
+ (AUG, 29, popular_consultation_25th),
483
+ # https://timor-leste.gov.tl/?p=39068&lang=en
484
+ (SEP, 9, pope_francis_visit),
485
+ (SEP, 10, pope_francis_visit),
486
+ (SEP, 11, pope_francis_visit),
487
+ # https://timor-leste.gov.tl/?p=40592&lang=en
488
+ (OCT, 31, special_national_holidays),
448
489
  ),
449
490
  }
@@ -103,9 +103,7 @@ class Ukraine(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
103
103
  else tr("День перемоги")
104
104
  )
105
105
  dts_observed.add(
106
- self._add_holiday_may_8(name)
107
- if self._year >= 2024
108
- else self._add_world_war_two_victory_day(name)
106
+ self._add_world_war_two_victory_day(name, is_western=(self._year >= 2024))
109
107
  )
110
108
 
111
109
  if self._year >= 1997:
@@ -13,7 +13,7 @@
13
13
  from gettext import gettext as tr
14
14
 
15
15
  from holidays.calendars import _CustomIslamicHolidays
16
- from holidays.calendars.gregorian import APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, FRI, SAT
16
+ from holidays.calendars.gregorian import APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, FRI, SAT, SUN
17
17
  from holidays.groups import InternationalHolidays, IslamicHolidays
18
18
  from holidays.holiday_base import HolidayBase
19
19
 
@@ -35,7 +35,6 @@ class UnitedArabEmirates(HolidayBase, InternationalHolidays, IslamicHolidays):
35
35
  # %s (estimated).
36
36
  estimated_label = tr("(تقدير) %s")
37
37
  supported_languages = ("ar", "en_US")
38
- weekend = {FRI, SAT}
39
38
 
40
39
  def __init__(self, *args, **kwargs):
41
40
  InternationalHolidays.__init__(self)
@@ -43,6 +42,10 @@ class UnitedArabEmirates(HolidayBase, InternationalHolidays, IslamicHolidays):
43
42
  super().__init__(*args, **kwargs)
44
43
 
45
44
  def _populate_public_holidays(self):
45
+ # The resting days are Saturday and Sunday since Jan 1, 2022.
46
+ # https://time.com/6126260/uae-working-days-weekend/
47
+ self.weekend = {FRI, SAT} if self._year <= 2021 else {SAT, SUN}
48
+
46
49
  # New Year's Day.
47
50
  self._add_new_years_day(tr("رأس السنة الميلادية"))
48
51
 
@@ -10,7 +10,7 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
- from typing import Tuple, Union
13
+ from typing import Union
14
14
 
15
15
  from holidays.calendars.gregorian import APR, MAY, JUN, JUL, SEP, DEC
16
16
  from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
@@ -38,7 +38,7 @@ class UnitedKingdom(ObservedHolidayBase, ChristianHolidays, InternationalHoliday
38
38
 
39
39
  country = "GB"
40
40
  observed_label = "%s (observed)"
41
- subdivisions: Union[Tuple[()], Tuple[str, ...]] = (
41
+ subdivisions: Union[tuple[()], tuple[str, ...]] = (
42
42
  "ENG", # England
43
43
  "NIR", # Northern Ireland
44
44
  "SCT", # Scotland
@@ -10,7 +10,7 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
- from typing import Tuple, Union
13
+ from typing import Union
14
14
 
15
15
  from holidays.calendars.gregorian import MON, TUE, WED, THU, FRI, SAT, SUN
16
16
  from holidays.constants import PUBLIC, UNOFFICIAL
@@ -62,7 +62,7 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
62
62
  country = "US"
63
63
  supported_categories = (PUBLIC, UNOFFICIAL)
64
64
  observed_label = "%s (observed)"
65
- subdivisions: Union[Tuple[()], Tuple[str, ...]] = (
65
+ subdivisions: Union[tuple[()], tuple[str, ...]] = (
66
66
  "AK", # Alaska.
67
67
  "AL", # Alabama.
68
68
  "AR", # Arkansas.
@@ -246,7 +246,8 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
246
246
 
247
247
  def _populate_subdiv_ak_public_holidays(self):
248
248
  # Seward's Day
249
- if self._year >= 1918:
249
+ # No observance in 1921: https://chroniclingamerica.loc.gov/lccn/sn86072239/1922-03-29/ed-1/seq-8/
250
+ if self._year >= 1918 and self._year != 1921:
250
251
  name = "Seward's Day"
251
252
  if self._year >= 1955:
252
253
  self._add_holiday_last_mon_of_mar(name)
@@ -260,7 +261,8 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
260
261
  )
261
262
 
262
263
  # Alaska Day
263
- if self._year >= 1867:
264
+ # https://web.archive.org/web/20120502232826/http://www.alaskadispatch.com/article/happy-alaska-day-great-land
265
+ if self._year >= 1917:
264
266
  self._add_observed(self._add_holiday_oct_18("Alaska Day"))
265
267
 
266
268
  def _populate_subdiv_al_public_holidays(self):
@@ -68,7 +68,8 @@ class Uzbekistan(ObservedHolidayBase, InternationalHolidays, IslamicHolidays, St
68
68
  tr("Xotira va qadrlash kuni")
69
69
  if self._year >= 1999
70
70
  # Victory Day.
71
- else tr("G‘alaba kuni")
71
+ else tr("G‘alaba kuni"),
72
+ is_western=False,
72
73
  )
73
74
  )
74
75
 
@@ -10,69 +10,135 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
+ from datetime import date
13
14
  from gettext import gettext as tr
14
15
 
15
- from holidays.groups import ChineseCalendarHolidays, InternationalHolidays
16
- from holidays.observed_holiday_base import ObservedHolidayBase, SAT_SUN_TO_NEXT_WORKDAY
17
-
18
-
19
- class Vietnam(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays):
16
+ from holidays.calendars.gregorian import (
17
+ JAN,
18
+ FEB,
19
+ APR,
20
+ MAY,
21
+ SEP,
22
+ DEC,
23
+ MON,
24
+ TUE,
25
+ WED,
26
+ THU,
27
+ FRI,
28
+ SAT,
29
+ SUN,
30
+ _timedelta,
31
+ )
32
+ from holidays.groups import ChineseCalendarHolidays, InternationalHolidays, StaticHolidays
33
+ from holidays.observed_holiday_base import (
34
+ ObservedHolidayBase,
35
+ ObservedRule,
36
+ SAT_TO_PREV_WORKDAY,
37
+ SUN_TO_NEXT_WORKDAY,
38
+ SAT_SUN_TO_NEXT_WORKDAY,
39
+ )
40
+
41
+ NATIONAL_DAY_RULE = ObservedRule({MON: +1, TUE: -1, WED: -1, THU: +1, FRI: -1, SAT: -1, SUN: +1})
42
+
43
+
44
+ class Vietnam(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays, StaticHolidays):
20
45
  """
21
- https://publicholidays.vn/
22
- http://vbpl.vn/TW/Pages/vbpqen-toanvan.aspx?ItemID=11013 Article.115
23
- https://www.timeanddate.com/holidays/vietnam/
46
+ References:
47
+ - `Labor Code 1994 (Art. 73) (en) <https://vbpl.vn/TW/Pages/vbpqen-toanvan.aspx?ItemID=2835>`_
48
+ - `Labor Code 2012 (Art. 115) (en) <https://vbpl.vn/TW/Pages/vbpqen-toanvan.aspx?ItemID=11013>`_
49
+ - `Labor Code 2012 (Art. 115) (vi) <https://vbpl.vn/TW/Pages/vbpq-toanvan.aspx?ItemID=27615>`_
50
+ - `Labor Code 2019 (Art. 112) (en) <https://vbpl.vn/TW/Pages/vbpqen-toanvan.aspx?ItemID=11135>`_
51
+ - `Labor Code 2019 (Art. 112) (vi) <https://vbpl.vn/TW/Pages/vbpq-van-ban-goc.aspx?ItemID=139264>`_
52
+
53
+ Substituted holidays:
54
+ - `2018-2019 <https://thuvienphapluat.vn/cong-van/EN/Lao-dong-Tien-luong/Official-Dispatch-6519-VPCP-KGVX-2018-national-holidays-for-public-sector-employees/387625/tieng-anh.aspx>`_
55
+ - `2024 <https://thuvienphapluat.vn/cong-van/EN/Lao-dong-Tien-luong/Official-Dispatch-2450-VPCP-KGVX-2024-swap-of-working-days-during-the-Reunification-Day/606458/tieng-anh.aspx>`_
24
56
  """
25
57
 
26
58
  country = "VN"
27
59
  # %s (observed).
28
60
  observed_label = tr("%s (nghỉ bù)")
29
61
  default_language = "vi"
30
- supported_languages = ("en_US", "vi")
62
+ supported_languages = ("en_US", "th", "vi")
31
63
 
32
64
  def __init__(self, *args, **kwargs):
33
65
  ChineseCalendarHolidays.__init__(self)
34
66
  InternationalHolidays.__init__(self)
67
+ StaticHolidays.__init__(self, VietnamStaticHolidays)
35
68
  kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_WORKDAY)
69
+ kwargs.setdefault("observed_since", 1995)
36
70
  super().__init__(*args, **kwargs)
37
71
 
72
+ def _add_lunar_new_year_observed(self, dt_lny: date) -> None:
73
+ if self._year <= 1994:
74
+ return None
75
+
76
+ day_names = {
77
+ # 29 of Lunar New Year.
78
+ -2: tr("29 Tết"),
79
+ # Fourth Day of Lunar New Year.
80
+ 3: tr("Mùng bốn Tết Nguyên Đán"),
81
+ # Fifth Day of Lunar New Year.
82
+ 4: tr("Mùng năm Tết Nguyên Đán"),
83
+ # Sixth Day of Lunar New Year.
84
+ 5: tr("Mùng sáu Tết Nguyên Đán"),
85
+ }
86
+ for delta in range(-1, 4 if self._year >= 2013 else 3):
87
+ dt = _timedelta(dt_lny, delta)
88
+ dt_observed = self._get_observed_date(
89
+ dt,
90
+ rule=(
91
+ SAT_TO_PREV_WORKDAY + SUN_TO_NEXT_WORKDAY
92
+ if self._year >= 2014
93
+ else SAT_SUN_TO_NEXT_WORKDAY
94
+ ),
95
+ )
96
+ if dt_observed != dt:
97
+ self._add_holiday(
98
+ day_names[(dt_observed - dt_lny).days], # type: ignore[operator]
99
+ dt_observed,
100
+ )
101
+
38
102
  def _populate_public_holidays(self):
39
103
  dts_observed = set()
40
104
 
41
- # New Year's Day
105
+ # New Year's Day.
42
106
  dts_observed.add(self._add_new_years_day(tr("Tết Dương lịch")))
43
107
 
44
- # Lunar New Year's Eve
108
+ # Lunar New Year's Eve.
45
109
  self._add_chinese_new_years_eve(tr("Giao thừa Tết Nguyên Đán"))
46
110
 
47
- # Lunar New Year
48
- self._add_chinese_new_years_day(tr("Tết Nguyên Đán"))
111
+ # Lunar New Year.
112
+ lny = self._add_chinese_new_years_day(tr("Tết Nguyên Đán"))
49
113
 
50
- # Second Day of Lunar New Year
114
+ # Second Day of Lunar New Year.
51
115
  self._add_chinese_new_years_day_two(tr("Mùng hai Tết Nguyên Đán"))
52
116
 
53
- # Third Day of Lunar New Year
117
+ # Third Day of Lunar New Year.
54
118
  self._add_chinese_new_years_day_three(tr("Mùng ba Tết Nguyên Đán"))
55
119
 
56
- # Fourth Day of Lunar New Year
57
- self._add_chinese_new_years_day_four(tr("Mùng bốn Tết Nguyên Đán"))
58
-
59
- # Fifth Day of Lunar New Year
60
- self._add_chinese_new_years_day_five(tr("Mùng năm Tết Nguyên Đán"))
120
+ if self._year >= 2013:
121
+ # Fourth Day of Lunar New Year.
122
+ self._add_chinese_new_years_day_four(tr("Mùng bốn Tết Nguyên Đán"))
61
123
 
62
124
  if self._year >= 2007:
63
- # Hung Kings' Commemoration Day
125
+ # Hung Kings' Commemoration Day.
64
126
  dts_observed.add(self._add_hung_kings_day(tr("Ngày Giỗ Tổ Hùng Vương")))
65
127
 
66
- # Liberation Day/Reunification Day
128
+ # Liberation Day/Reunification Day.
67
129
  dts_observed.add(self._add_holiday_apr_30(tr("Ngày Chiến thắng")))
68
130
 
69
- # International Labor Day
131
+ # International Labor Day.
70
132
  dts_observed.add(self._add_labor_day(tr("Ngày Quốc tế Lao động")))
71
133
 
72
- # National Day
73
- dts_observed.add(self._add_holiday_sep_2(tr("Quốc khánh")))
134
+ # National Day.
135
+ name = tr("Quốc khánh")
136
+ dts_observed.add(sep_2 := self._add_holiday_sep_2(name))
137
+ if self._year >= 2021:
138
+ self._add_holiday(name, self._get_observed_date(sep_2, NATIONAL_DAY_RULE))
74
139
 
75
140
  if self.observed:
141
+ self._add_lunar_new_year_observed(lny)
76
142
  self._populate_observed(dts_observed)
77
143
 
78
144
 
@@ -82,3 +148,28 @@ class VN(Vietnam):
82
148
 
83
149
  class VNM(Vietnam):
84
150
  pass
151
+
152
+
153
+ class VietnamStaticHolidays:
154
+ # Date format (see strftime() Format Codes).
155
+ substituted_date_format = tr("%d/%m/%Y")
156
+ # Day off (substituted from %s).
157
+ substituted_label = tr("Ngày nghỉ (thay cho ngày %s)")
158
+
159
+ special_public_holidays = {
160
+ 2010: (FEB, 19, FEB, 27),
161
+ 2012: (JAN, 27, FEB, 4),
162
+ 2013: (APR, 29, MAY, 4),
163
+ 2014: (
164
+ (MAY, 2, APR, 26),
165
+ (SEP, 1, SEP, 6),
166
+ ),
167
+ 2015: (
168
+ (JAN, 2, DEC, 27, 2014),
169
+ (FEB, 16, FEB, 14),
170
+ (APR, 29, APR, 25),
171
+ ),
172
+ 2018: (DEC, 31, JAN, 5, 2019),
173
+ 2019: (APR, 29, MAY, 4),
174
+ 2024: (APR, 29, MAY, 4),
175
+ }
@@ -10,9 +10,13 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
+ import warnings
14
+
15
+ from holidays.version import __version__
16
+
13
17
  FUTURE_INCOMPATIBILITY_WARNING_TEMPLATE = """
14
18
 
15
- This is a future version incompatibility warning from Holidays library v{version}
19
+ This is a future version incompatibility warning from Holidays v{version}
16
20
  to inform you about an upcoming change in our API versioning strategy that may affect your
17
21
  project's dependencies. Starting from version 1.0 onwards, we will be following a loose form of
18
22
  Semantic Versioning (SemVer, https://semver.org) to provide clearer communication regarding any
@@ -22,7 +26,7 @@ This means that while we strive to maintain backward compatibility, there might
22
26
  updates that introduce breaking changes to our API. To ensure the stability of your projects,
23
27
  we highly recommend pinning the version of our API that you rely on. You can pin your current
24
28
  holidays v0.x dependency (e.g., holidays=={version}) or limit it (e.g., holidays<1.0) in order to
25
- avoid potentially unwanted upgrade to the version 1.0 when it's released (ETA 2024Q4 - 2025Q1).
29
+ avoid potentially unwanted upgrade to the version 1.0 when it's released (ETA 2025Q1-Q2).
26
30
 
27
31
  If you have any questions or concerns regarding this change, please don't hesitate to reach out
28
32
  to us via https://github.com/vacanza/holidays/discussions/1800.
@@ -31,3 +35,9 @@ to us via https://github.com/vacanza/holidays/discussions/1800.
31
35
 
32
36
  class FutureIncompatibilityWarning(DeprecationWarning):
33
37
  pass
38
+
39
+
40
+ warnings.warn(
41
+ FUTURE_INCOMPATIBILITY_WARNING_TEMPLATE.format(version=__version__),
42
+ FutureIncompatibilityWarning,
43
+ )
@@ -16,6 +16,7 @@ from holidays.groups.buddhist import BuddhistCalendarHolidays
16
16
  from holidays.groups.chinese import ChineseCalendarHolidays
17
17
  from holidays.groups.christian import ChristianHolidays
18
18
  from holidays.groups.custom import StaticHolidays
19
+ from holidays.groups.eastern import EasternCalendarHolidays
19
20
  from holidays.groups.hindu import HinduCalendarHolidays
20
21
  from holidays.groups.international import InternationalHolidays
21
22
  from holidays.groups.islamic import IslamicHolidays
@@ -11,12 +11,13 @@
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
13
  from datetime import date
14
- from typing import Optional, Tuple
14
+ from typing import Optional
15
15
 
16
16
  from holidays.calendars import _BuddhistLunisolar
17
+ from holidays.groups.eastern import EasternCalendarHolidays
17
18
 
18
19
 
19
- class BuddhistCalendarHolidays:
20
+ class BuddhistCalendarHolidays(EasternCalendarHolidays):
20
21
  """
21
22
  Buddhist lunisolar calendar holidays.
22
23
  """
@@ -26,7 +27,7 @@ class BuddhistCalendarHolidays:
26
27
  self._buddhist_calendar_show_estimated = show_estimated
27
28
 
28
29
  def _add_buddhist_calendar_holiday(
29
- self, name: str, dt_estimated: Tuple[date, bool]
30
+ self, name: str, dt_estimated: tuple[Optional[date], bool]
30
31
  ) -> Optional[date]:
31
32
  """
32
33
  Add Buddhist calendar holiday.
@@ -34,14 +35,8 @@ class BuddhistCalendarHolidays:
34
35
  Adds customizable estimation label to holiday name if holiday date
35
36
  is an estimation.
36
37
  """
37
- estimated_label = getattr(self, "estimated_label", "%s (estimated)")
38
- dt, is_estimated = dt_estimated
39
-
40
- return self._add_holiday(
41
- self.tr(estimated_label) % self.tr(name)
42
- if is_estimated and self._buddhist_calendar_show_estimated
43
- else name,
44
- dt,
38
+ return self._add_eastern_calendar_holiday(
39
+ name, dt_estimated, self._buddhist_calendar_show_estimated
45
40
  )
46
41
 
47
42
  def _add_vesak(self, name) -> Optional[date]:
@@ -11,13 +11,14 @@
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
13
  from datetime import date
14
- from typing import Optional, Tuple
14
+ from typing import Optional
15
15
 
16
16
  from holidays.calendars import _ChineseLunisolar
17
- from holidays.calendars.gregorian import APR, _timedelta
17
+ from holidays.calendars.gregorian import APR
18
+ from holidays.groups.eastern import EasternCalendarHolidays
18
19
 
19
20
 
20
- class ChineseCalendarHolidays:
21
+ class ChineseCalendarHolidays(EasternCalendarHolidays):
21
22
  """
22
23
  Chinese lunisolar calendar holidays.
23
24
  """
@@ -48,7 +49,7 @@ class ChineseCalendarHolidays:
48
49
  return self._chinese_calendar.mid_autumn_date(self._year)[0]
49
50
 
50
51
  def _add_chinese_calendar_holiday(
51
- self, name: str, dt_estimated: Tuple[date, bool], days_delta: int = 0
52
+ self, name: str, dt_estimated: tuple[Optional[date], bool], days_delta: int = 0
52
53
  ) -> Optional[date]:
53
54
  """
54
55
  Add Chinese calendar holiday.
@@ -56,17 +57,8 @@ class ChineseCalendarHolidays:
56
57
  Adds customizable estimation label to holiday name if holiday date
57
58
  is an estimation.
58
59
  """
59
- estimated_label = getattr(self, "estimated_label", "%s (estimated)")
60
- dt, is_estimated = dt_estimated
61
-
62
- if days_delta != 0:
63
- dt = _timedelta(dt, days_delta)
64
-
65
- return self._add_holiday(
66
- self.tr(estimated_label) % self.tr(name)
67
- if is_estimated and self._chinese_calendar_show_estimated
68
- else name,
69
- dt,
60
+ return self._add_eastern_calendar_holiday(
61
+ name, dt_estimated, self._chinese_calendar_show_estimated, days_delta
70
62
  )
71
63
 
72
64
  def _add_chinese_birthday_of_buddha(self, name) -> Optional[date]:
@@ -136,16 +128,6 @@ class ChineseCalendarHolidays:
136
128
  name, self._chinese_calendar.lunar_new_year_date(self._year), days_delta=+3
137
129
  )
138
130
 
139
- def _add_chinese_new_years_day_five(self, name) -> Optional[date]:
140
- """
141
- Add Chinese New Year's Day Five.
142
-
143
- https://en.wikipedia.org/wiki/Chinese_New_Year
144
- """
145
- return self._add_chinese_calendar_holiday(
146
- name, self._chinese_calendar.lunar_new_year_date(self._year), days_delta=+4
147
- )
148
-
149
131
  def _add_qingming_festival(self, name) -> date:
150
132
  """
151
133
  Add Qingming Festival (15th day after the Spring Equinox).