holidays 0.45__py3-none-any.whl → 0.46__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 (451) hide show
  1. holidays/__init__.py +6 -5
  2. holidays/calendars/__init__.py +5 -4
  3. holidays/calendars/buddhist.py +5 -4
  4. holidays/calendars/chinese.py +5 -4
  5. holidays/calendars/custom.py +5 -4
  6. holidays/calendars/gregorian.py +5 -4
  7. holidays/calendars/hebrew.py +5 -4
  8. holidays/calendars/hindu.py +5 -4
  9. holidays/calendars/islamic.py +5 -4
  10. holidays/calendars/julian.py +5 -4
  11. holidays/calendars/julian_revised.py +5 -4
  12. holidays/calendars/persian.py +5 -4
  13. holidays/calendars/thai.py +5 -4
  14. holidays/constants.py +5 -4
  15. holidays/countries/__init__.py +5 -4
  16. holidays/countries/albania.py +5 -4
  17. holidays/countries/algeria.py +5 -4
  18. holidays/countries/american_samoa.py +5 -4
  19. holidays/countries/andorra.py +5 -4
  20. holidays/countries/angola.py +5 -4
  21. holidays/countries/argentina.py +5 -4
  22. holidays/countries/armenia.py +5 -4
  23. holidays/countries/aruba.py +5 -4
  24. holidays/countries/australia.py +754 -131
  25. holidays/countries/austria.py +5 -4
  26. holidays/countries/azerbaijan.py +5 -4
  27. holidays/countries/bahamas.py +5 -4
  28. holidays/countries/bahrain.py +5 -4
  29. holidays/countries/bangladesh.py +5 -5
  30. holidays/countries/barbados.py +5 -4
  31. holidays/countries/belarus.py +5 -4
  32. holidays/countries/belgium.py +5 -4
  33. holidays/countries/belize.py +5 -4
  34. holidays/countries/bolivia.py +5 -5
  35. holidays/countries/bosnia_and_herzegovina.py +5 -5
  36. holidays/countries/botswana.py +5 -4
  37. holidays/countries/brazil.py +5 -4
  38. holidays/countries/brunei.py +5 -4
  39. holidays/countries/bulgaria.py +5 -4
  40. holidays/countries/burkina_faso.py +5 -4
  41. holidays/countries/burundi.py +5 -4
  42. holidays/countries/cambodia.py +5 -4
  43. holidays/countries/cameroon.py +5 -4
  44. holidays/countries/canada.py +5 -4
  45. holidays/countries/chad.py +5 -4
  46. holidays/countries/chile.py +5 -4
  47. holidays/countries/china.py +5 -4
  48. holidays/countries/colombia.py +5 -4
  49. holidays/countries/costa_rica.py +5 -4
  50. holidays/countries/croatia.py +5 -4
  51. holidays/countries/cuba.py +5 -4
  52. holidays/countries/curacao.py +5 -4
  53. holidays/countries/cyprus.py +5 -4
  54. holidays/countries/czechia.py +5 -4
  55. holidays/countries/denmark.py +5 -4
  56. holidays/countries/djibouti.py +5 -4
  57. holidays/countries/dominican_republic.py +5 -4
  58. holidays/countries/ecuador.py +5 -4
  59. holidays/countries/egypt.py +5 -5
  60. holidays/countries/el_salvador.py +5 -4
  61. holidays/countries/estonia.py +5 -4
  62. holidays/countries/eswatini.py +5 -4
  63. holidays/countries/ethiopia.py +5 -4
  64. holidays/countries/finland.py +5 -4
  65. holidays/countries/france.py +5 -4
  66. holidays/countries/gabon.py +5 -4
  67. holidays/countries/georgia.py +5 -4
  68. holidays/countries/germany.py +5 -4
  69. holidays/countries/ghana.py +5 -4
  70. holidays/countries/greece.py +5 -4
  71. holidays/countries/guam.py +5 -4
  72. holidays/countries/guatemala.py +5 -4
  73. holidays/countries/honduras.py +5 -4
  74. holidays/countries/hongkong.py +5 -4
  75. holidays/countries/hungary.py +5 -4
  76. holidays/countries/iceland.py +5 -4
  77. holidays/countries/india.py +5 -4
  78. holidays/countries/indonesia.py +5 -4
  79. holidays/countries/iran.py +5 -4
  80. holidays/countries/ireland.py +5 -4
  81. holidays/countries/isle_of_man.py +5 -4
  82. holidays/countries/israel.py +5 -4
  83. holidays/countries/italy.py +5 -5
  84. holidays/countries/jamaica.py +5 -4
  85. holidays/countries/japan.py +5 -4
  86. holidays/countries/jersey.py +3 -3
  87. holidays/countries/kazakhstan.py +5 -4
  88. holidays/countries/kenya.py +5 -4
  89. holidays/countries/kuwait.py +5 -4
  90. holidays/countries/kyrgyzstan.py +5 -4
  91. holidays/countries/laos.py +5 -4
  92. holidays/countries/latvia.py +5 -4
  93. holidays/countries/lesotho.py +5 -4
  94. holidays/countries/liechtenstein.py +5 -5
  95. holidays/countries/lithuania.py +5 -4
  96. holidays/countries/luxembourg.py +5 -4
  97. holidays/countries/madagascar.py +5 -4
  98. holidays/countries/malawi.py +5 -4
  99. holidays/countries/malaysia.py +5 -4
  100. holidays/countries/maldives.py +5 -4
  101. holidays/countries/malta.py +5 -4
  102. holidays/countries/marshall_islands.py +5 -4
  103. holidays/countries/mexico.py +5 -4
  104. holidays/countries/moldova.py +11 -10
  105. holidays/countries/monaco.py +5 -4
  106. holidays/countries/montenegro.py +5 -4
  107. holidays/countries/morocco.py +5 -4
  108. holidays/countries/mozambique.py +5 -4
  109. holidays/countries/namibia.py +5 -4
  110. holidays/countries/netherlands.py +5 -4
  111. holidays/countries/new_zealand.py +5 -4
  112. holidays/countries/nicaragua.py +5 -4
  113. holidays/countries/nigeria.py +5 -4
  114. holidays/countries/north_macedonia.py +5 -4
  115. holidays/countries/northern_mariana_islands.py +5 -4
  116. holidays/countries/norway.py +5 -4
  117. holidays/countries/pakistan.py +5 -4
  118. holidays/countries/panama.py +5 -4
  119. holidays/countries/papua_new_guinea.py +5 -4
  120. holidays/countries/paraguay.py +5 -4
  121. holidays/countries/peru.py +5 -5
  122. holidays/countries/philippines.py +5 -5
  123. holidays/countries/poland.py +5 -4
  124. holidays/countries/portugal.py +5 -4
  125. holidays/countries/puerto_rico.py +5 -4
  126. holidays/countries/romania.py +5 -4
  127. holidays/countries/russia.py +5 -4
  128. holidays/countries/san_marino.py +5 -4
  129. holidays/countries/saudi_arabia.py +5 -4
  130. holidays/countries/serbia.py +5 -4
  131. holidays/countries/seychelles.py +5 -4
  132. holidays/countries/singapore.py +5 -4
  133. holidays/countries/slovakia.py +5 -4
  134. holidays/countries/slovenia.py +5 -4
  135. holidays/countries/south_africa.py +5 -4
  136. holidays/countries/south_korea.py +5 -4
  137. holidays/countries/spain.py +5 -4
  138. holidays/countries/sweden.py +5 -4
  139. holidays/countries/switzerland.py +5 -4
  140. holidays/countries/taiwan.py +5 -4
  141. holidays/countries/tanzania.py +5 -4
  142. holidays/countries/thailand.py +6 -5
  143. holidays/countries/timor_leste.py +5 -4
  144. holidays/countries/tonga.py +5 -4
  145. holidays/countries/tunisia.py +5 -5
  146. holidays/countries/turkey.py +5 -4
  147. holidays/countries/ukraine.py +5 -4
  148. holidays/countries/united_arab_emirates.py +5 -4
  149. holidays/countries/united_kingdom.py +7 -5
  150. holidays/countries/united_states.py +5 -4
  151. holidays/countries/united_states_minor_outlying_islands.py +5 -4
  152. holidays/countries/united_states_virgin_islands.py +5 -4
  153. holidays/countries/uruguay.py +5 -4
  154. holidays/countries/uzbekistan.py +5 -4
  155. holidays/countries/vanuatu.py +5 -4
  156. holidays/countries/vatican_city.py +5 -4
  157. holidays/countries/venezuela.py +5 -4
  158. holidays/countries/vietnam.py +5 -4
  159. holidays/countries/zambia.py +5 -4
  160. holidays/countries/zimbabwe.py +5 -4
  161. holidays/financial/__init__.py +5 -4
  162. holidays/financial/european_central_bank.py +5 -4
  163. holidays/financial/ny_stock_exchange.py +5 -4
  164. holidays/groups/__init__.py +5 -4
  165. holidays/groups/buddhist.py +5 -4
  166. holidays/groups/chinese.py +5 -4
  167. holidays/groups/christian.py +5 -4
  168. holidays/groups/custom.py +5 -4
  169. holidays/groups/hindu.py +5 -4
  170. holidays/groups/international.py +5 -4
  171. holidays/groups/islamic.py +5 -4
  172. holidays/groups/persian.py +5 -4
  173. holidays/groups/thai.py +5 -4
  174. holidays/helpers.py +5 -4
  175. holidays/holiday_base.py +5 -4
  176. holidays/locale/am/LC_MESSAGES/ET.po +12 -1
  177. holidays/locale/ar/LC_MESSAGES/AE.po +12 -1
  178. holidays/locale/ar/LC_MESSAGES/BH.po +12 -1
  179. holidays/locale/ar/LC_MESSAGES/CA.po +12 -1
  180. holidays/locale/ar/LC_MESSAGES/DJ.po +13 -1
  181. holidays/locale/ar/LC_MESSAGES/DZ.po +12 -1
  182. holidays/locale/ar/LC_MESSAGES/EG.po +12 -1
  183. holidays/locale/ar/LC_MESSAGES/ET.po +12 -1
  184. holidays/locale/ar/LC_MESSAGES/KW.po +12 -1
  185. holidays/locale/ar/LC_MESSAGES/MA.po +12 -1
  186. holidays/locale/ar/LC_MESSAGES/SA.po +12 -1
  187. holidays/locale/ar/LC_MESSAGES/TN.po +12 -1
  188. holidays/locale/ar/LC_MESSAGES/UA.po +12 -1
  189. holidays/locale/az/LC_MESSAGES/AZ.po +12 -1
  190. holidays/locale/be/LC_MESSAGES/BY.po +12 -1
  191. holidays/locale/bg/LC_MESSAGES/BG.po +12 -1
  192. holidays/locale/bs/LC_MESSAGES/BA.po +12 -1
  193. holidays/locale/cs/LC_MESSAGES/CZ.po +12 -1
  194. holidays/locale/da/LC_MESSAGES/DK.po +12 -1
  195. holidays/locale/de/LC_MESSAGES/AT.po +12 -1
  196. holidays/locale/de/LC_MESSAGES/BE.po +12 -1
  197. holidays/locale/de/LC_MESSAGES/CH.po +12 -1
  198. holidays/locale/de/LC_MESSAGES/DE.po +12 -1
  199. holidays/locale/de/LC_MESSAGES/LI.po +12 -1
  200. holidays/locale/de/LC_MESSAGES/LU.po +12 -1
  201. holidays/locale/el/LC_MESSAGES/CY.po +12 -1
  202. holidays/locale/el/LC_MESSAGES/GR.po +12 -1
  203. holidays/locale/en_CA/LC_MESSAGES/CA.po +12 -1
  204. holidays/locale/en_CY/LC_MESSAGES/CY.po +12 -1
  205. holidays/locale/en_SC/LC_MESSAGES/SC.po +12 -1
  206. holidays/locale/en_US/LC_MESSAGES/AE.po +12 -1
  207. holidays/locale/en_US/LC_MESSAGES/AM.po +12 -1
  208. holidays/locale/en_US/LC_MESSAGES/AO.po +12 -1
  209. holidays/locale/en_US/LC_MESSAGES/AR.po +12 -1
  210. holidays/locale/en_US/LC_MESSAGES/AT.po +12 -1
  211. holidays/locale/en_US/LC_MESSAGES/AW.po +12 -1
  212. holidays/locale/en_US/LC_MESSAGES/AZ.po +12 -1
  213. holidays/locale/en_US/LC_MESSAGES/BA.po +12 -1
  214. holidays/locale/en_US/LC_MESSAGES/BE.po +12 -1
  215. holidays/locale/en_US/LC_MESSAGES/BG.po +12 -1
  216. holidays/locale/en_US/LC_MESSAGES/BH.po +12 -1
  217. holidays/locale/en_US/LC_MESSAGES/BN.po +12 -1
  218. holidays/locale/en_US/LC_MESSAGES/BO.po +12 -1
  219. holidays/locale/en_US/LC_MESSAGES/BY.po +12 -1
  220. holidays/locale/en_US/LC_MESSAGES/CA.po +12 -1
  221. holidays/locale/en_US/LC_MESSAGES/CH.po +12 -1
  222. holidays/locale/en_US/LC_MESSAGES/CL.po +12 -1
  223. holidays/locale/en_US/LC_MESSAGES/CN.po +12 -1
  224. holidays/locale/en_US/LC_MESSAGES/CO.po +12 -1
  225. holidays/locale/en_US/LC_MESSAGES/CR.po +12 -1
  226. holidays/locale/en_US/LC_MESSAGES/CU.po +12 -1
  227. holidays/locale/en_US/LC_MESSAGES/CW.po +12 -1
  228. holidays/locale/en_US/LC_MESSAGES/CY.po +12 -1
  229. holidays/locale/en_US/LC_MESSAGES/CZ.po +12 -1
  230. holidays/locale/en_US/LC_MESSAGES/DE.po +12 -1
  231. holidays/locale/en_US/LC_MESSAGES/DJ.po +12 -1
  232. holidays/locale/en_US/LC_MESSAGES/DK.po +12 -1
  233. holidays/locale/en_US/LC_MESSAGES/DO.po +12 -1
  234. holidays/locale/en_US/LC_MESSAGES/DZ.po +12 -1
  235. holidays/locale/en_US/LC_MESSAGES/EC.po +12 -1
  236. holidays/locale/en_US/LC_MESSAGES/EE.po +12 -1
  237. holidays/locale/en_US/LC_MESSAGES/EG.po +12 -1
  238. holidays/locale/en_US/LC_MESSAGES/ES.po +12 -1
  239. holidays/locale/en_US/LC_MESSAGES/ET.po +12 -1
  240. holidays/locale/en_US/LC_MESSAGES/FI.po +12 -1
  241. holidays/locale/en_US/LC_MESSAGES/FR.po +12 -1
  242. holidays/locale/en_US/LC_MESSAGES/GE.po +12 -1
  243. holidays/locale/en_US/LC_MESSAGES/GR.po +12 -1
  244. holidays/locale/en_US/LC_MESSAGES/GT.po +12 -1
  245. holidays/locale/en_US/LC_MESSAGES/HN.po +12 -1
  246. holidays/locale/en_US/LC_MESSAGES/HR.po +12 -1
  247. holidays/locale/en_US/LC_MESSAGES/HU.po +12 -1
  248. holidays/locale/en_US/LC_MESSAGES/ID.po +12 -1
  249. holidays/locale/en_US/LC_MESSAGES/IL.po +12 -1
  250. holidays/locale/en_US/LC_MESSAGES/IR.po +12 -1
  251. holidays/locale/en_US/LC_MESSAGES/IS.po +12 -1
  252. holidays/locale/en_US/LC_MESSAGES/JP.po +12 -1
  253. holidays/locale/en_US/LC_MESSAGES/KH.po +12 -1
  254. holidays/locale/en_US/LC_MESSAGES/KR.po +12 -1
  255. holidays/locale/en_US/LC_MESSAGES/KW.po +12 -1
  256. holidays/locale/en_US/LC_MESSAGES/LA.po +12 -1
  257. holidays/locale/en_US/LC_MESSAGES/LI.po +12 -1
  258. holidays/locale/en_US/LC_MESSAGES/LT.po +12 -1
  259. holidays/locale/en_US/LC_MESSAGES/LU.po +12 -1
  260. holidays/locale/en_US/LC_MESSAGES/LV.po +12 -1
  261. holidays/locale/en_US/LC_MESSAGES/MA.po +12 -1
  262. holidays/locale/en_US/LC_MESSAGES/MC.po +12 -1
  263. holidays/locale/en_US/LC_MESSAGES/MD.mo +0 -0
  264. holidays/locale/en_US/LC_MESSAGES/MD.po +20 -9
  265. holidays/locale/en_US/LC_MESSAGES/MG.po +12 -1
  266. holidays/locale/en_US/LC_MESSAGES/MT.po +12 -1
  267. holidays/locale/en_US/LC_MESSAGES/MX.po +12 -1
  268. holidays/locale/en_US/LC_MESSAGES/MZ.po +12 -1
  269. holidays/locale/en_US/LC_MESSAGES/NI.po +12 -1
  270. holidays/locale/en_US/LC_MESSAGES/NL.po +12 -1
  271. holidays/locale/en_US/LC_MESSAGES/NO.po +12 -1
  272. holidays/locale/en_US/LC_MESSAGES/PE.po +12 -1
  273. holidays/locale/en_US/LC_MESSAGES/PL.po +12 -1
  274. holidays/locale/en_US/LC_MESSAGES/PT.po +12 -1
  275. holidays/locale/en_US/LC_MESSAGES/PY.po +12 -1
  276. holidays/locale/en_US/LC_MESSAGES/RO.po +12 -1
  277. holidays/locale/en_US/LC_MESSAGES/RS.po +12 -1
  278. holidays/locale/en_US/LC_MESSAGES/RU.po +12 -1
  279. holidays/locale/en_US/LC_MESSAGES/SA.po +12 -1
  280. holidays/locale/en_US/LC_MESSAGES/SC.po +12 -1
  281. holidays/locale/en_US/LC_MESSAGES/SE.po +12 -1
  282. holidays/locale/en_US/LC_MESSAGES/SI.po +12 -1
  283. holidays/locale/en_US/LC_MESSAGES/SK.po +12 -1
  284. holidays/locale/en_US/LC_MESSAGES/TH.po +12 -1
  285. holidays/locale/en_US/LC_MESSAGES/TL.po +12 -1
  286. holidays/locale/en_US/LC_MESSAGES/TN.po +12 -1
  287. holidays/locale/en_US/LC_MESSAGES/TO.po +12 -1
  288. holidays/locale/en_US/LC_MESSAGES/TR.po +12 -1
  289. holidays/locale/en_US/LC_MESSAGES/TW.po +12 -1
  290. holidays/locale/en_US/LC_MESSAGES/TZ.po +12 -1
  291. holidays/locale/en_US/LC_MESSAGES/UA.po +12 -1
  292. holidays/locale/en_US/LC_MESSAGES/UY.po +12 -1
  293. holidays/locale/en_US/LC_MESSAGES/UZ.po +12 -1
  294. holidays/locale/en_US/LC_MESSAGES/VE.po +12 -1
  295. holidays/locale/es/LC_MESSAGES/AR.po +12 -1
  296. holidays/locale/es/LC_MESSAGES/BO.po +12 -1
  297. holidays/locale/es/LC_MESSAGES/CL.po +12 -1
  298. holidays/locale/es/LC_MESSAGES/CO.po +12 -1
  299. holidays/locale/es/LC_MESSAGES/CR.po +12 -1
  300. holidays/locale/es/LC_MESSAGES/CU.po +12 -1
  301. holidays/locale/es/LC_MESSAGES/DO.po +12 -1
  302. holidays/locale/es/LC_MESSAGES/EC.po +12 -1
  303. holidays/locale/es/LC_MESSAGES/ES.po +12 -1
  304. holidays/locale/es/LC_MESSAGES/GT.po +12 -1
  305. holidays/locale/es/LC_MESSAGES/HN.po +12 -1
  306. holidays/locale/es/LC_MESSAGES/MX.po +12 -1
  307. holidays/locale/es/LC_MESSAGES/NI.po +12 -1
  308. holidays/locale/es/LC_MESSAGES/PE.po +12 -1
  309. holidays/locale/es/LC_MESSAGES/PY.po +12 -1
  310. holidays/locale/es/LC_MESSAGES/UY.po +12 -1
  311. holidays/locale/es/LC_MESSAGES/VE.po +12 -1
  312. holidays/locale/et/LC_MESSAGES/EE.po +12 -1
  313. holidays/locale/fa/LC_MESSAGES/IR.po +12 -1
  314. holidays/locale/fi/LC_MESSAGES/FI.po +12 -1
  315. holidays/locale/fr/LC_MESSAGES/BE.po +12 -1
  316. holidays/locale/fr/LC_MESSAGES/CA.po +12 -1
  317. holidays/locale/fr/LC_MESSAGES/CH.po +12 -1
  318. holidays/locale/fr/LC_MESSAGES/DJ.po +12 -1
  319. holidays/locale/fr/LC_MESSAGES/DZ.po +12 -1
  320. holidays/locale/fr/LC_MESSAGES/FR.po +12 -1
  321. holidays/locale/fr/LC_MESSAGES/LU.po +12 -1
  322. holidays/locale/fr/LC_MESSAGES/MA.po +12 -1
  323. holidays/locale/fr/LC_MESSAGES/MC.po +12 -1
  324. holidays/locale/he/LC_MESSAGES/IL.po +12 -1
  325. holidays/locale/hr/LC_MESSAGES/HR.po +12 -1
  326. holidays/locale/hu/LC_MESSAGES/HU.po +12 -1
  327. holidays/locale/hy/LC_MESSAGES/AM.po +12 -1
  328. holidays/locale/id/LC_MESSAGES/ID.po +12 -1
  329. holidays/locale/is/LC_MESSAGES/IS.po +12 -1
  330. holidays/locale/it/LC_MESSAGES/CH.po +12 -1
  331. holidays/locale/ja/LC_MESSAGES/JP.po +12 -1
  332. holidays/locale/ka/LC_MESSAGES/GE.po +12 -1
  333. holidays/locale/km/LC_MESSAGES/KH.po +12 -1
  334. holidays/locale/ko/LC_MESSAGES/KR.po +12 -1
  335. holidays/locale/lb/LC_MESSAGES/LU.po +12 -1
  336. holidays/locale/lo/LC_MESSAGES/LA.po +12 -1
  337. holidays/locale/lt/LC_MESSAGES/LT.po +12 -1
  338. holidays/locale/lv/LC_MESSAGES/LV.po +12 -1
  339. holidays/locale/mg/LC_MESSAGES/MG.po +12 -1
  340. holidays/locale/ms/LC_MESSAGES/BN.po +12 -1
  341. holidays/locale/mt/LC_MESSAGES/MT.po +12 -1
  342. holidays/locale/nl/LC_MESSAGES/AW.po +12 -1
  343. holidays/locale/nl/LC_MESSAGES/BE.po +12 -1
  344. holidays/locale/nl/LC_MESSAGES/CW.po +12 -1
  345. holidays/locale/nl/LC_MESSAGES/NL.po +12 -1
  346. holidays/locale/no/LC_MESSAGES/NO.po +12 -1
  347. holidays/locale/pap/LC_MESSAGES/AW.po +12 -1
  348. holidays/locale/pap/LC_MESSAGES/CW.po +12 -1
  349. holidays/locale/pl/LC_MESSAGES/PL.po +12 -1
  350. holidays/locale/pt_AO/LC_MESSAGES/AO.po +12 -1
  351. holidays/locale/pt_MZ/LC_MESSAGES/MZ.po +12 -1
  352. holidays/locale/pt_PT/LC_MESSAGES/PT.po +12 -1
  353. holidays/locale/pt_TL/LC_MESSAGES/TL.po +12 -1
  354. holidays/locale/ro/LC_MESSAGES/MD.mo +0 -0
  355. holidays/locale/ro/LC_MESSAGES/MD.po +20 -9
  356. holidays/locale/ro/LC_MESSAGES/RO.po +12 -1
  357. holidays/locale/ru/LC_MESSAGES/RU.po +12 -1
  358. holidays/locale/sk/LC_MESSAGES/CZ.po +12 -1
  359. holidays/locale/sk/LC_MESSAGES/SK.po +12 -1
  360. holidays/locale/sl/LC_MESSAGES/SI.po +12 -1
  361. holidays/locale/sr/LC_MESSAGES/BA.po +12 -1
  362. holidays/locale/sr/LC_MESSAGES/RS.po +12 -1
  363. holidays/locale/sv/LC_MESSAGES/FI.po +12 -1
  364. holidays/locale/sv/LC_MESSAGES/SE.po +12 -1
  365. holidays/locale/sw/LC_MESSAGES/TZ.po +12 -1
  366. holidays/locale/tet/LC_MESSAGES/TL.po +12 -1
  367. holidays/locale/th/LC_MESSAGES/BN.po +12 -1
  368. holidays/locale/th/LC_MESSAGES/CA.po +12 -1
  369. holidays/locale/th/LC_MESSAGES/CN.po +12 -1
  370. holidays/locale/th/LC_MESSAGES/JP.po +12 -1
  371. holidays/locale/th/LC_MESSAGES/KH.po +12 -1
  372. holidays/locale/th/LC_MESSAGES/KR.po +12 -1
  373. holidays/locale/th/LC_MESSAGES/LA.po +12 -1
  374. holidays/locale/th/LC_MESSAGES/TH.po +12 -1
  375. holidays/locale/th/LC_MESSAGES/TW.po +12 -1
  376. holidays/locale/to/LC_MESSAGES/TO.po +12 -1
  377. holidays/locale/tr/LC_MESSAGES/TR.po +12 -1
  378. holidays/locale/uk/LC_MESSAGES/AO.po +12 -1
  379. holidays/locale/uk/LC_MESSAGES/AR.po +12 -1
  380. holidays/locale/uk/LC_MESSAGES/AT.po +12 -1
  381. holidays/locale/uk/LC_MESSAGES/AW.po +12 -1
  382. holidays/locale/uk/LC_MESSAGES/AZ.po +12 -1
  383. holidays/locale/uk/LC_MESSAGES/BA.po +12 -1
  384. holidays/locale/uk/LC_MESSAGES/BE.po +12 -1
  385. holidays/locale/uk/LC_MESSAGES/BG.po +12 -1
  386. holidays/locale/uk/LC_MESSAGES/BO.po +12 -1
  387. holidays/locale/uk/LC_MESSAGES/CH.po +12 -1
  388. holidays/locale/uk/LC_MESSAGES/CL.po +12 -1
  389. holidays/locale/uk/LC_MESSAGES/CO.po +12 -1
  390. holidays/locale/uk/LC_MESSAGES/CR.po +12 -1
  391. holidays/locale/uk/LC_MESSAGES/CU.po +12 -1
  392. holidays/locale/uk/LC_MESSAGES/CW.po +12 -1
  393. holidays/locale/uk/LC_MESSAGES/CY.po +12 -1
  394. holidays/locale/uk/LC_MESSAGES/CZ.po +12 -1
  395. holidays/locale/uk/LC_MESSAGES/DE.po +12 -1
  396. holidays/locale/uk/LC_MESSAGES/DK.po +12 -1
  397. holidays/locale/uk/LC_MESSAGES/DO.po +12 -1
  398. holidays/locale/uk/LC_MESSAGES/EC.po +12 -1
  399. holidays/locale/uk/LC_MESSAGES/EE.po +12 -1
  400. holidays/locale/uk/LC_MESSAGES/ES.po +12 -1
  401. holidays/locale/uk/LC_MESSAGES/FI.po +12 -1
  402. holidays/locale/uk/LC_MESSAGES/FR.po +12 -1
  403. holidays/locale/uk/LC_MESSAGES/GE.po +12 -1
  404. holidays/locale/uk/LC_MESSAGES/GR.po +12 -1
  405. holidays/locale/uk/LC_MESSAGES/HN.po +12 -1
  406. holidays/locale/uk/LC_MESSAGES/HR.po +12 -1
  407. holidays/locale/uk/LC_MESSAGES/HU.po +12 -1
  408. holidays/locale/uk/LC_MESSAGES/ID.po +12 -1
  409. holidays/locale/uk/LC_MESSAGES/IL.po +12 -1
  410. holidays/locale/uk/LC_MESSAGES/IS.po +12 -1
  411. holidays/locale/uk/LC_MESSAGES/LI.po +12 -1
  412. holidays/locale/uk/LC_MESSAGES/LT.po +12 -1
  413. holidays/locale/uk/LC_MESSAGES/LU.po +12 -1
  414. holidays/locale/uk/LC_MESSAGES/LV.po +12 -1
  415. holidays/locale/uk/LC_MESSAGES/MC.po +12 -1
  416. holidays/locale/uk/LC_MESSAGES/MD.mo +0 -0
  417. holidays/locale/uk/LC_MESSAGES/MD.po +20 -9
  418. holidays/locale/uk/LC_MESSAGES/MG.po +12 -1
  419. holidays/locale/uk/LC_MESSAGES/MX.po +12 -1
  420. holidays/locale/uk/LC_MESSAGES/MZ.po +12 -1
  421. holidays/locale/uk/LC_MESSAGES/NI.po +12 -1
  422. holidays/locale/uk/LC_MESSAGES/NL.po +12 -1
  423. holidays/locale/uk/LC_MESSAGES/NO.po +12 -1
  424. holidays/locale/uk/LC_MESSAGES/PE.po +12 -1
  425. holidays/locale/uk/LC_MESSAGES/PL.po +12 -1
  426. holidays/locale/uk/LC_MESSAGES/PT.po +12 -1
  427. holidays/locale/uk/LC_MESSAGES/PY.po +12 -1
  428. holidays/locale/uk/LC_MESSAGES/RO.po +12 -1
  429. holidays/locale/uk/LC_MESSAGES/SE.po +12 -1
  430. holidays/locale/uk/LC_MESSAGES/SI.po +12 -1
  431. holidays/locale/uk/LC_MESSAGES/SK.po +12 -1
  432. holidays/locale/uk/LC_MESSAGES/TR.po +12 -1
  433. holidays/locale/uk/LC_MESSAGES/UA.po +12 -1
  434. holidays/locale/uk/LC_MESSAGES/UY.po +12 -1
  435. holidays/locale/uk/LC_MESSAGES/UZ.po +12 -1
  436. holidays/locale/uk/LC_MESSAGES/VE.po +12 -1
  437. holidays/locale/uz/LC_MESSAGES/UZ.po +12 -1
  438. holidays/locale/zh_CN/LC_MESSAGES/CN.po +12 -1
  439. holidays/locale/zh_CN/LC_MESSAGES/TW.po +12 -1
  440. holidays/locale/zh_TW/LC_MESSAGES/CN.po +12 -1
  441. holidays/locale/zh_TW/LC_MESSAGES/TW.po +12 -1
  442. holidays/observed_holiday_base.py +5 -4
  443. holidays/registry.py +5 -4
  444. holidays/utils.py +5 -4
  445. {holidays-0.45.dist-info → holidays-0.46.dist-info}/AUTHORS +3 -0
  446. {holidays-0.45.dist-info → holidays-0.46.dist-info}/LICENSE +5 -2
  447. {holidays-0.45.dist-info → holidays-0.46.dist-info}/METADATA +61 -54
  448. holidays-0.46.dist-info/RECORD +711 -0
  449. holidays-0.45.dist-info/RECORD +0 -711
  450. {holidays-0.45.dist-info → holidays-0.46.dist-info}/WHEEL +0 -0
  451. {holidays-0.45.dist-info → holidays-0.46.dist-info}/top_level.txt +0 -0
@@ -1,19 +1,25 @@
1
- # python-holidays
2
- # ---------------
1
+ # holidays
2
+ # --------
3
3
  # A fast, efficient Python library for generating country, province and state
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
7
+ # Authors: Vacanza Team and individual contributors (see AUTHORS file)
8
+ # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
8
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
9
- # Website: https://github.com/dr-prodigy/python-holidays
10
+ # Website: https://github.com/vacanza/python-holidays
10
11
  # License: MIT (see LICENSE file)
11
12
 
12
- from holidays.calendars.gregorian import JUN, AUG, SEP, OCT
13
+ from datetime import timedelta as td
14
+
15
+ from holidays.calendars.gregorian import JAN, APR, JUN, AUG, SEP, OCT, DEC
16
+ from holidays.constants import BANK, HALF_DAY, PUBLIC
13
17
  from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
14
18
  from holidays.observed_holiday_base import (
15
19
  ObservedHolidayBase,
20
+ MON_TO_NEXT_TUE,
16
21
  SUN_TO_NEXT_MON,
22
+ SUN_TO_NEXT_TUE,
17
23
  SAT_SUN_TO_NEXT_MON,
18
24
  SAT_SUN_TO_NEXT_MON_TUE,
19
25
  )
@@ -23,11 +29,39 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
23
29
  """
24
30
  References:
25
31
  - https://www.qld.gov.au/recreation/travel/holidays
32
+ - `ACT Holidays Act 1958 <https://www.legislation.act.gov.au/a/1958-19>`_
33
+ - `ACT 2013-2023 <https://www.cmtedd.act.gov.au/archived-content/holidays/previous-years>`_
34
+ - `NSW Banks and Bank Holidays Act 1912 <https://legislation.nsw.gov.au/view/html/repealed/current/act-1912-043>`_
35
+ - `NSW Public Holidays Act 2010 <https://legislation.nsw.gov.au/view/html/inforce/current/act-2010-115>`_
36
+ - `NT Public Holidays Act 1981 <https://legislation.nt.gov.au/api/sitecore/Act/PDF?id=12145>`_
37
+ - `QLD Holidays Act 1983 <https://www.legislation.qld.gov.au/view/html/inforce/current/act-1983-018>`_
38
+ - `QLD 2012-2024 <https://www.qld.gov.au/recreation/travel/holidays/public>`_
39
+ - `SA Holidays Act 1910 <https://www.legislation.sa.gov.au/LZ/C/A/HOLIDAYS%20ACT%201910.aspx>`_
40
+ - `SA Public Holidays Act 2023 <https://www.legislation.sa.gov.au/LZ/C/A/Public%20Holidays%20Act%202023.aspx>`_
41
+ - `SA 2023-2024 <https://www.safework.sa.gov.au/resources/public-holidays>`_
42
+ - `SA 2007-2021 <https://safework.sa.gov.au/__data/assets/pdf_file/0007/235474/Public-Holidays-since-2007.pdf>`_
43
+ - `TAS Statutory Holidays Act 2000 <https://www.legislation.tas.gov.au/view/html/inforce/current/act-2000-096>`_
44
+ - `VIC Public Holidays Act 1993 <https://www.legislation.vic.gov.au/in-force/acts/public-holidays-act-1993/027>`_
45
+ - `VIC Minister appointment <https://www.gazette.vic.gov.au/gazette/Gazettes2015/GG2015S229.pdf>`_
46
+ - `VIC 2018-2024 <https://business.vic.gov.au/business-information/public-holidays>`_
47
+ - `WA Public and Bank Holidays Act 1972 <https://www.legislation.wa.gov.au/legislation/statutes.nsf/law_a639.html>`_
48
+ - `WA 2019-2023 <https://www.commerce.wa.gov.au/labour-relations/previous-years-public-holiday-dates>`_
26
49
  """
27
50
 
28
51
  country = "AU"
52
+ supported_categories = (BANK, HALF_DAY, PUBLIC)
29
53
  observed_label = "%s (observed)"
30
54
  subdivisions = ("ACT", "NSW", "NT", "QLD", "SA", "TAS", "VIC", "WA")
55
+ subdivisions_aliases = {
56
+ "Australian Capital Territory": "ACT",
57
+ "New South Wales": "NSW",
58
+ "Northern Territory": "NT",
59
+ "Queensland": "QLD",
60
+ "South Australia": "SA",
61
+ "Tasmania": "TAS",
62
+ "Victoria": "VIC",
63
+ "Western Australia": "WA",
64
+ }
31
65
 
32
66
  @property
33
67
  def sovereign_birthday(self) -> str:
@@ -46,95 +80,112 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
46
80
  super().__init__(*args, **kwargs)
47
81
 
48
82
  def _populate_public_holidays(self):
49
- # ACT: Holidays Act 1958
50
- # NSW: Public Holidays Act 2010
51
- # NT: Public Holidays Act 2013
52
- # QLD: Holidays Act 1983
53
- # SA: Holidays Act 1910
54
- # TAS: Statutory Holidays Act 2000
55
- # VIC: Public Holidays Act 1993
56
- # WA: Public and Bank Holidays Act 1972
57
-
58
- # TODO do more research on history of Aus holidays
59
-
60
- # New Year's Day
61
- self._add_observed(self._add_new_years_day("New Year's Day"))
62
-
63
- # Easter
83
+ # Good Friday.
64
84
  self._add_good_friday("Good Friday")
85
+
86
+ # Easter Monday.
65
87
  self._add_easter_monday("Easter Monday")
66
88
 
67
- # Sovereign's Birthday
89
+ # Sovereign's Birthday.
68
90
  if 1902 <= self._year <= 1935:
69
91
  if self._year >= 1912:
70
92
  self._add_holiday_jun_3(self.sovereign_birthday) # George V
71
93
  else:
72
94
  self._add_holiday_nov_9(self.sovereign_birthday) # Edward VII
73
95
 
74
- # Christmas Day
75
- self._add_observed(self._add_christmas_day("Christmas Day"), rule=SAT_SUN_TO_NEXT_MON_TUE)
96
+ if self.subdiv:
97
+ return None
76
98
 
77
- def _populate_subdiv_holidays(self):
78
- # Australia Day
99
+ # Common holidays.
100
+
101
+ # New Year's Day.
102
+ self._add_new_years_day("New Year's Day")
103
+
104
+ # Australia Day.
79
105
  if self._year >= 1935:
80
- jan_26 = self._add_holiday_jan_26(
81
- "Anniversary Day"
82
- if self.subdiv == "NSW" and self._year <= 1945
83
- else "Australia Day"
84
- )
85
- if self._year >= 1946:
86
- self._add_observed(jan_26)
87
- elif self._year >= 1888 and self.subdiv != "SA":
88
- self._add_holiday_jan_26("Anniversary Day")
106
+ self._add_holiday_jan_26("Australia Day")
89
107
 
90
- # Anzac Day
108
+ # ANZAC Day.
91
109
  if self._year >= 1921:
92
- self._add_anzac_day("Anzac Day")
110
+ self._add_anzac_day("ANZAC Day")
93
111
 
94
- # Boxing Day
95
- self._add_observed(
96
- self._add_christmas_day_two(
97
- "Proclamation Day" if self.subdiv == "SA" else "Boxing Day"
98
- ),
99
- rule=SAT_SUN_TO_NEXT_MON_TUE,
100
- )
112
+ # Christmas Day.
113
+ self._add_christmas_day("Christmas Day")
101
114
 
102
- super()._populate_subdiv_holidays()
115
+ # Boxing Day.
116
+ self._add_christmas_day_two("Boxing Day")
103
117
 
104
118
  def _populate_subdiv_act_public_holidays(self):
105
- # Easter
106
- self._add_holy_saturday("Easter Saturday")
107
- self._add_easter_sunday("Easter Sunday")
119
+ # New Year's Day.
120
+ # 1959-1992: SUN - move to MON.
121
+ # 1993-2014: SAT, SUN - move to MON.
122
+ # from 2015: SAT, SUN - add MON.
108
123
 
109
- # Labour Day
110
- self._add_holiday_1st_mon_of_oct("Labour Day")
124
+ # New Year's Day.
125
+ name = "New Year's Day"
126
+ if self._year >= 2015:
127
+ self._add_observed(self._add_new_years_day(name))
128
+ elif self._year >= 1959:
129
+ jan_1 = (JAN, 1)
130
+ if self._is_sunday(jan_1) or (self._year >= 1993 and self._is_saturday(jan_1)):
131
+ self._add_holiday_1st_mon_from_jan_1(name)
132
+ else:
133
+ self._add_new_years_day(name)
134
+ else:
135
+ self._add_new_years_day(name)
111
136
 
112
- # Sovereign's Birthday
113
- if self._year >= 1936:
114
- self._add_holiday_2nd_mon_of_jun(self.sovereign_birthday)
137
+ # Australia Day.
138
+ # 1959-1989: not MON - move to MON.
139
+ # from 1990: SAT, SUN - move to MON.
115
140
 
116
- # Anzac Day
117
- if self._year >= 1921:
118
- self._add_observed(self._add_anzac_day("Anzac Day"), rule=SUN_TO_NEXT_MON)
141
+ # Australia Day.
142
+ if self._year >= 1888:
143
+ name = "Australia Day" if self._year >= 1935 else "Anniversary Day"
144
+ if 1959 <= self._year <= 1989 or (self._year >= 1990 and self._is_weekend(JAN, 26)):
145
+ self._add_holiday_1st_mon_from_jan_26(name)
146
+ else:
147
+ self._add_holiday_jan_26(name)
119
148
 
120
- # Canberra Day
121
- # Info from https://www.timeanddate.com/holidays/australia/canberra-day
122
- # and https://en.wikipedia.org/wiki/Canberra_Day
149
+ # Canberra Day.
123
150
  if self._year >= 1913:
124
151
  name = "Canberra Day"
125
- if self._year <= 1957 or self._year == 2012:
152
+ if self._year <= 1958 or self._year == 2012:
126
153
  self._add_holiday_mar_12(name)
127
154
  elif self._year <= 2007:
128
155
  self._add_holiday_3rd_mon_of_mar(name)
129
156
  else:
130
157
  self._add_holiday_2nd_mon_of_mar(name)
131
158
 
132
- # Family & Community Day
133
- if 2007 <= self._year <= 2017:
134
- # first Monday of the September/October school holidays
135
- # moved to the second Monday if this falls on Labour day
136
- # TODO need a formula for the ACT school holidays then
137
- # http://www.cmd.act.gov.au/communication/holidays
159
+ # Easter Saturday.
160
+ self._add_holy_saturday("Easter Saturday")
161
+
162
+ # Easter Sunday.
163
+ if self._year >= 2016:
164
+ self._add_easter_sunday("Easter Sunday")
165
+
166
+ # ANZAC Day.
167
+ # from 1959: SUN - move to MON.
168
+
169
+ # ANZAC Day.
170
+ if self._year >= 1921:
171
+ name = "ANZAC Day"
172
+ if self._year >= 1959 and self._is_sunday(APR, 25):
173
+ self._add_holiday_1st_mon_from_apr_25(name)
174
+ else:
175
+ self._add_anzac_day(name)
176
+
177
+ # Reconciliation Day.
178
+ if self._year >= 2018:
179
+ self._add_holiday_1st_mon_from_may_27("Reconciliation Day")
180
+
181
+ # Sovereign's Birthday.
182
+ if self._year >= 1936:
183
+ self._add_holiday_2nd_mon_of_jun(self.sovereign_birthday)
184
+
185
+ # Family & Community Day.
186
+ # (First Monday of the September/October school holidays;
187
+ # moved to the second Monday if this falls on Labour day).
188
+ if 2010 <= self._year <= 2017:
138
189
  fc_dates = {
139
190
  2010: (SEP, 26),
140
191
  2011: (OCT, 10),
@@ -145,74 +196,294 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
145
196
  2016: (SEP, 26),
146
197
  2017: (SEP, 25),
147
198
  }
148
- name = "Family & Community Day"
149
- if self._year in fc_dates:
150
- self._add_holiday(name, fc_dates[self._year])
199
+ self._add_holiday("Family & Community Day", fc_dates[self._year])
200
+
201
+ # Labour Day.
202
+ self._add_holiday_1st_mon_of_oct("Labour Day")
203
+
204
+ # Christmas Day.
205
+ # 1958-1991: SUN - to MON.
206
+ # 1992-2013: SAT, SUN - to MON.
207
+ # from 2014: SAT - add MON, SUN - add TUE.
208
+
209
+ # Christmas Day.
210
+ name = "Christmas Day"
211
+ if self._year >= 2014:
212
+ self._add_observed(self._add_christmas_day(name), rule=SAT_SUN_TO_NEXT_MON_TUE)
213
+ elif self._year >= 1958:
214
+ dec_25 = (DEC, 25)
215
+ if self._is_weekend(dec_25) or (self._year >= 1992 and self._is_saturday(dec_25)):
216
+ self._add_holiday_1st_mon_from_dec_25(name)
217
+ else:
218
+ self._add_christmas_day(name)
219
+ else:
220
+ self._add_christmas_day(name)
221
+
222
+ # Boxing Day.
223
+ # 1958-1991: SUN - to MON, MON - to TUE.
224
+ # 1992-2013: SAT - to MON, SUN - to TUE, MON - to TUE.
225
+ # from 2014: SAT - add MON, SUN - add TUE.
226
+
227
+ # Boxing Day.
228
+ name = "Boxing Day"
229
+ if self._year >= 2014:
230
+ self._add_observed(self._add_christmas_day_two(name), rule=SAT_SUN_TO_NEXT_MON_TUE)
231
+ elif self._year >= 1958:
232
+ dec_26 = (DEC, 26)
233
+ if self._year >= 1992:
234
+ if self._is_saturday(dec_26):
235
+ self._add_holiday_1st_mon_from_dec_26(name)
236
+ elif self._is_sunday(dec_26) or self._is_monday(dec_26):
237
+ self._add_holiday_1st_tue_from_dec_26(name)
238
+ else:
239
+ self._add_christmas_day_two(name)
151
240
  else:
152
- self._add_holiday_1st_tue_of_nov(name)
241
+ if self._is_sunday(dec_26):
242
+ self._add_holiday_1st_mon_from_dec_26(name)
243
+ elif self._is_monday(dec_26):
244
+ self._add_holiday_1st_tue_from_dec_26(name)
245
+ else:
246
+ self._add_christmas_day_two(name)
247
+ else:
248
+ self._add_christmas_day_two(name)
153
249
 
154
- # Reconciliation Day
155
- if self._year >= 2018:
156
- self._add_holiday_1st_mon_from_may_27("Reconciliation Day")
250
+ def _populate_subdiv_act_bank_holidays(self):
251
+ # Bank Holiday.
252
+ self._add_holiday_1st_mon_of_aug("Bank Holiday")
157
253
 
158
254
  def _populate_subdiv_nsw_public_holidays(self):
159
- # Easter
255
+ # New Year's Day.
256
+ # 1912-2010: SUN - add MON.
257
+ # from 2011: SAT, SUN - add MON.
258
+
259
+ # New Year's Day.
260
+ self._add_observed(
261
+ self._add_new_years_day("New Year's Day"),
262
+ rule=SAT_SUN_TO_NEXT_MON if self._year >= 2011 else SUN_TO_NEXT_MON,
263
+ )
264
+
265
+ # Australia Day.
266
+ # 1912-2010: SUN - add MON.
267
+ # from 2011: SAT, SUN - to MON.
268
+
269
+ # Australia Day.
270
+ if self._year >= 1888:
271
+ name = "Australia Day" if self._year >= 1946 else "Anniversary Day"
272
+ if self._year >= 2011:
273
+ if self._is_weekend(JAN, 26):
274
+ self._add_holiday_1st_mon_from_jan_26(name)
275
+ else:
276
+ self._add_holiday_jan_26(name)
277
+ else:
278
+ self._add_observed(self._add_holiday_jan_26(name), rule=SUN_TO_NEXT_MON)
279
+
280
+ # Easter Saturday.
160
281
  self._add_holy_saturday("Easter Saturday")
161
- self._add_easter_sunday("Easter Sunday")
162
282
 
163
- # Labour Day
283
+ # Easter Sunday.
284
+ if self._year >= 2011:
285
+ self._add_easter_sunday("Easter Sunday")
286
+
287
+ # ANZAC Day.
288
+ # 1912-2010: SUN - add MON.
289
+ # from 2011: normal.
290
+
291
+ # ANZAC Day.
292
+ if self._year >= 1921:
293
+ apr_25 = self._add_anzac_day("ANZAC Day")
294
+ if self._year <= 2010:
295
+ self._add_observed(apr_25)
296
+
297
+ # Labour Day.
164
298
  self._add_holiday_1st_mon_of_oct("Labour Day")
165
299
 
166
- # Sovereign's Birthday
300
+ # Sovereign's Birthday.
167
301
  if self._year >= 1936:
168
302
  self._add_holiday_2nd_mon_of_jun(self.sovereign_birthday)
169
303
 
170
- # Bank Holiday
171
- if self._year >= 1912:
304
+ # Bank Holiday.
305
+ if 1912 <= self._year <= 2010:
306
+ self._add_holiday_1st_mon_of_aug("Bank Holiday")
307
+
308
+ # Christmas Day.
309
+ # 1912-2010: SUN - add TUE.
310
+ # from 2011: SAT - add MON, SUN - add TUE.
311
+
312
+ # Christmas Day.
313
+ self._add_observed(
314
+ self._add_christmas_day("Christmas Day"),
315
+ rule=SAT_SUN_TO_NEXT_MON_TUE if self._year >= 2011 else SUN_TO_NEXT_TUE,
316
+ )
317
+
318
+ # Boxing Day.
319
+ # 1912-2010: SUN - add MON.
320
+ # from 2011: SAT - add MON, SUN - add TUE.
321
+
322
+ # Boxing Day.
323
+ self._add_observed(
324
+ self._add_christmas_day_two("Boxing Day"),
325
+ rule=SAT_SUN_TO_NEXT_MON_TUE if self._year >= 2011 else SUN_TO_NEXT_MON,
326
+ )
327
+
328
+ def _populate_subdiv_nsw_bank_holidays(self):
329
+ # Bank Holiday.
330
+ if self._year >= 2011:
172
331
  self._add_holiday_1st_mon_of_aug("Bank Holiday")
173
332
 
174
333
  def _populate_subdiv_nt_public_holidays(self):
175
- # Easter
334
+ # New Year's Day.
335
+ # 1982-2016: SAT, SUN - move to MON.
336
+ # from 2017: SAT, SUN - add MON.
337
+
338
+ # New Year's Day.
339
+ name = "New Year's Day"
340
+ if self._year >= 2017:
341
+ self._add_observed(self._add_new_years_day(name))
342
+ elif self._year >= 1982 and self._is_weekend(JAN, 1):
343
+ self._add_holiday_1st_mon_from_jan_1(name)
344
+ else:
345
+ self._add_new_years_day(name)
346
+
347
+ # Australia Day.
348
+ # from 1982: SAT, SUN - move to MON.
349
+
350
+ # Australia Day.
351
+ if self._year >= 1888:
352
+ name = "Australia Day" if self._year >= 1935 else "Anniversary Day"
353
+ if self._year >= 1982 and self._is_weekend(JAN, 26):
354
+ self._add_holiday_1st_mon_from_jan_26(name)
355
+ else:
356
+ self._add_holiday_jan_26(name)
357
+
358
+ # Easter Saturday.
176
359
  self._add_holy_saturday("Easter Saturday")
177
360
 
178
- # Labour Day
361
+ # Easter Sunday.
362
+ if self._year >= 2024:
363
+ self._add_easter_sunday("Easter Sunday")
364
+
365
+ # ANZAC Day.
366
+ # from 1982: SUN - to MON.
367
+
368
+ # ANZAC Day.
369
+ if self._year >= 1921:
370
+ name = "ANZAC Day"
371
+ if self._year >= 1982 and self._is_sunday(APR, 25):
372
+ self._add_holiday_1st_mon_from_apr_25(name)
373
+ else:
374
+ self._add_anzac_day(name)
375
+
376
+ # Labour Day.
179
377
  self._add_holiday_1st_mon_of_may("May Day")
180
378
 
181
- # Sovereign's Birthday
379
+ # Sovereign's Birthday.
182
380
  if self._year >= 1936:
183
381
  self._add_holiday_2nd_mon_of_jun(self.sovereign_birthday)
184
382
 
185
- # Anzac Day
186
- if self._year >= 1921:
187
- self._add_observed(self._add_anzac_day("Anzac Day"))
188
-
189
- # Picnic Day
383
+ # Picnic Day.
190
384
  self._add_holiday_1st_mon_of_aug("Picnic Day")
191
385
 
386
+ # Christmas Day.
387
+ # 1981-2015: SAT, SUN - to MON.
388
+ # from 2016: SAT, SUN - add MON.
389
+
390
+ # Christmas Day.
391
+ name = "Christmas Day"
392
+ if self._year >= 2016:
393
+ self._add_observed(self._add_christmas_day(name))
394
+ elif self._year >= 1981 and self._is_weekend(DEC, 25):
395
+ self._add_holiday_1st_mon_from_dec_25(name)
396
+ else:
397
+ self._add_christmas_day(name)
398
+
399
+ # Boxing Day.
400
+ # 1981-2022: SAT - to MON, SUN - to TUE, MON - to TUE.
401
+ # from 2023: SAT - add MON, SUN - add TUE, MON - add TUE.
402
+ name = "Boxing Day"
403
+ if self._year >= 2023:
404
+ self._add_observed(
405
+ self._add_christmas_day_two(name), rule=SAT_SUN_TO_NEXT_MON_TUE + MON_TO_NEXT_TUE
406
+ )
407
+ elif self._year >= 1981:
408
+ dec_26 = (DEC, 26)
409
+ if self._is_saturday(dec_26):
410
+ self._add_holiday_1st_mon_from_dec_26(name)
411
+ elif self._is_sunday(dec_26) or self._is_monday(dec_26):
412
+ self._add_holiday_1st_tue_from_dec_26(name)
413
+ else:
414
+ self._add_christmas_day_two(name)
415
+ else:
416
+ self._add_christmas_day_two(name)
417
+
418
+ def _populate_subdiv_nt_half_day_holidays(self):
419
+ if self._year >= 2016:
420
+ begin_time_label = "%s (from 7pm)"
421
+
422
+ # Christmas Eve.
423
+ self._add_christmas_eve(begin_time_label % "Christmas Eve")
424
+
425
+ # New Year's Eve.
426
+ self._add_new_years_eve(begin_time_label % "New Year's Eve")
427
+
192
428
  def _populate_subdiv_qld_public_holidays(self):
193
- # Easter
429
+ # New Year's Day.
430
+ # 1984-2011: SUN - move to MON.
431
+ # from 2012: SAT, SUN - add MON.
432
+
433
+ # New Year's Day.
434
+ name = "New Year's Day"
435
+ if self._year >= 2012:
436
+ self._add_observed(self._add_new_years_day(name))
437
+ elif self._year >= 1984 and self._is_sunday(JAN, 1):
438
+ self._add_holiday_1st_mon_from_jan_1(name)
439
+ else:
440
+ self._add_new_years_day(name)
441
+
442
+ # Australia Day.
443
+ # 1984-1995: not MON - move to MON.
444
+ # from 1996: SAT, SUN - move to MON.
445
+
446
+ # Australia Day.
447
+ if self._year >= 1888:
448
+ name = "Australia Day" if self._year >= 1935 else "Anniversary Day"
449
+ if 1984 <= self._year <= 1995 or (self._year >= 1996 and self._is_weekend(JAN, 26)):
450
+ self._add_holiday_1st_mon_from_jan_26(name)
451
+ else:
452
+ self._add_holiday_jan_26(name)
453
+
454
+ # Easter Saturday.
194
455
  self._add_holy_saturday("Easter Saturday")
195
- self._add_easter_sunday("Easter Sunday")
196
456
 
197
- # Labour Day
457
+ # Easter Sunday.
458
+ if self._year >= 2017:
459
+ self._add_easter_sunday("Easter Sunday")
460
+
461
+ # ANZAC Day.
462
+ # from 1984: SUN - move to MON.
463
+
464
+ # ANZAC Day.
465
+ if self._year >= 1921:
466
+ name = "ANZAC Day"
467
+ if self._year >= 1984 and self._is_sunday(APR, 25):
468
+ self._add_holiday_1st_mon_from_apr_25(name)
469
+ else:
470
+ self._add_anzac_day(name)
471
+
472
+ # Labour Day.
198
473
  name = "Labour Day"
199
474
  if 2013 <= self._year <= 2015:
200
475
  self._add_holiday_1st_mon_of_oct(name)
201
476
  else:
202
477
  self._add_holiday_1st_mon_of_may(name)
203
478
 
204
- # Sovereign's Birthday
479
+ # Sovereign's Birthday.
205
480
  if self._year >= 1936:
206
481
  if self._year <= 2015 and self._year != 2012:
207
482
  self._add_holiday_2nd_mon_of_jun(self.sovereign_birthday)
208
483
  else:
209
484
  self._add_holiday_1st_mon_of_oct(self.sovereign_birthday)
210
485
 
211
- # Anzac Day
212
- if self._year >= 1921:
213
- self._add_observed(self._add_anzac_day("Anzac Day"), rule=SUN_TO_NEXT_MON)
214
-
215
- # The Royal Queensland Show (Ekka)
486
+ # The Royal Queensland Show (Ekka).
216
487
  # The Show starts on the first Friday of August - providing this is
217
488
  # not prior to the 5th - in which case it will begin on the second
218
489
  # Friday. The Wednesday during the show is a public holiday.
@@ -227,84 +498,426 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
227
498
  # [1st FRI after Aug 5] + 5 days = [1st WED after Aug 10]
228
499
  self._add_holiday_1st_wed_from_aug_10(name)
229
500
 
501
+ # Christmas Day.
502
+ # 1984-2010: SUN - to MON.
503
+ # from 2011: SAT - add MON, SUN - add TUE.
504
+
505
+ # Christmas Day.
506
+ name = "Christmas Day"
507
+ if self._year >= 2011:
508
+ self._add_observed(self._add_christmas_day(name), rule=SAT_SUN_TO_NEXT_MON_TUE)
509
+ elif self._year >= 1984 and self._is_sunday(DEC, 25):
510
+ self._add_holiday_1st_mon_from_dec_25(name)
511
+ else:
512
+ self._add_christmas_day(name)
513
+
514
+ # Boxing Day.
515
+ # 1984-1910: SUN - to MON, MON - to TUE.
516
+ # from 2011: SAT - add MON, SUN - add TUE.
517
+
518
+ # Boxing Day.
519
+ name = "Boxing Day"
520
+ if self._year >= 2011:
521
+ self._add_observed(self._add_christmas_day_two(name), rule=SAT_SUN_TO_NEXT_MON_TUE)
522
+ elif self._year >= 1984:
523
+ dec_26 = (DEC, 26)
524
+ if self._is_sunday(dec_26):
525
+ self._add_holiday_1st_mon_from_dec_26(name)
526
+ elif self._is_monday(dec_26):
527
+ self._add_holiday_1st_tue_from_dec_26(name)
528
+ else:
529
+ self._add_christmas_day_two(name)
530
+ else:
531
+ self._add_christmas_day_two(name)
532
+
230
533
  def _populate_subdiv_sa_public_holidays(self):
231
- # Easter
534
+ # New Year's Day.
535
+ # 1984-2003: SAT, SUN - move to MON.
536
+ # 2004-2023: SAT - move to MON, SUN - add MON.
537
+ # from 2024: SAT, SUN - add MON.
538
+
539
+ # New Year's Day.
540
+ name = "New Year's Day"
541
+ jan_1 = (JAN, 1)
542
+ if self._year >= 2024:
543
+ self._add_observed(self._add_new_years_day(name))
544
+ elif self._year >= 2004:
545
+ if self._is_saturday(jan_1):
546
+ self._add_holiday_1st_mon_from_jan_1(name)
547
+ else:
548
+ self._add_observed(self._add_new_years_day(name), rule=SUN_TO_NEXT_MON)
549
+ elif self._year >= 1984 and self._is_weekend(jan_1):
550
+ self._add_holiday_1st_mon_from_jan_1(name)
551
+ else:
552
+ self._add_new_years_day(name)
553
+
554
+ # Australia Day.
555
+ # 1984-1993: not MON - move to MON.
556
+ # 1994-2003: SAT, SUN - move to MON.
557
+ # 2004-2023: SAT - move to MON, SUN - add MON.
558
+ # from 2024: SAT, SUN - move to MON.
559
+
560
+ # Australia Day.
561
+ if self._year >= 1935:
562
+ name = "Australia Day"
563
+ jan_26 = (JAN, 26)
564
+ if 1994 <= self._year <= 2003 or self._year >= 2024:
565
+ if self._is_weekend(jan_26):
566
+ self._add_holiday_1st_mon_from_jan_26(name)
567
+ else:
568
+ self._add_holiday_jan_26(name)
569
+ elif self._year >= 2004:
570
+ if self._is_saturday(jan_26):
571
+ self._add_holiday_1st_mon_from_jan_26(name)
572
+ else:
573
+ self._add_observed(self._add_holiday_jan_26(name), rule=SUN_TO_NEXT_MON)
574
+ elif self._year >= 1984:
575
+ self._add_holiday_1st_mon_from_jan_26(name)
576
+ else:
577
+ self._add_holiday_jan_26(name)
578
+
579
+ # Adelaide Cup Day.
580
+ # 2006-2023: changed each year by SA Government Proclamation from the 3rd Monday in May
581
+ # to the 2nd Monday in March.
582
+ # from 2024: changed to the 2nd Monday in March officially.
583
+
584
+ # Adelaide Cup Day.
585
+ name = "Adelaide Cup Day"
586
+ if self._year >= 2006:
587
+ self._add_holiday_2nd_mon_of_mar(name)
588
+ else:
589
+ self._add_holiday_3rd_mon_of_may(name)
590
+
591
+ # Easter Saturday.
232
592
  self._add_holy_saturday("Easter Saturday")
233
593
 
234
- # Labour Day
235
- self._add_holiday_1st_mon_of_oct("Labour Day")
594
+ # Easter Sunday.
595
+ if self._year >= 2024:
596
+ self._add_easter_sunday("Easter Sunday")
597
+
598
+ # ANZAC Day.
599
+ if self._year >= 1921:
600
+ apr_25 = self._add_anzac_day("ANZAC Day")
601
+ if self._year <= 2023:
602
+ self._add_observed(apr_25, rule=SUN_TO_NEXT_MON)
236
603
 
237
- # Sovereign's Birthday
604
+ # Sovereign's Birthday.
238
605
  if self._year >= 1936:
239
606
  self._add_holiday_2nd_mon_of_jun(self.sovereign_birthday)
240
607
 
241
- # Anzac Day
242
- if self._year >= 1921:
243
- self._add_observed(self._add_anzac_day("Anzac Day"), rule=SUN_TO_NEXT_MON)
608
+ # Labour Day.
609
+ self._add_holiday_1st_mon_of_oct("Labour Day")
244
610
 
245
- # Adelaide Cup
246
- name = "Adelaide Cup"
247
- if self._year >= 2006:
248
- self._add_holiday_2nd_mon_of_mar(name)
611
+ # Proclamation Day.
612
+ # 1984-1992: SAT, SUN - move to MON.
613
+ # 1993-2002: SAT - to MON, SUN - to TUE, MON - to TUE.
614
+ # 2003-2023: SAT - to MON, SUN - add TUE, MON - add TUE.
615
+ # from 2024: SAT - add MON, SUN - add TUE, MON - add TUE.
616
+ # (Placed before Christmas Day for proper observed calculation).
617
+
618
+ # Proclamation Day.
619
+ name = "Proclamation Day"
620
+ dec_26 = (DEC, 26)
621
+ if self._year >= 2024:
622
+ self._add_observed(
623
+ self._add_christmas_day_two(name), rule=SAT_SUN_TO_NEXT_MON_TUE + MON_TO_NEXT_TUE
624
+ )
625
+ elif self._year >= 2003:
626
+ if self._is_saturday(dec_26):
627
+ self._add_holiday_1st_mon_from_dec_26(name)
628
+ else:
629
+ self._add_observed(
630
+ self._add_christmas_day_two(name), rule=SUN_TO_NEXT_TUE + MON_TO_NEXT_TUE
631
+ )
632
+ elif self._year >= 1993:
633
+ if self._is_saturday(dec_26):
634
+ self._add_holiday_1st_mon_from_dec_26(name)
635
+ elif self._is_sunday(dec_26) or self._is_monday(dec_26):
636
+ self._add_holiday_1st_tue_from_dec_26(name)
637
+ else:
638
+ self._add_christmas_day_two(name)
639
+ elif self._year >= 1984 and self._is_weekend(dec_26):
640
+ self._add_holiday_1st_mon_from_dec_26(name)
249
641
  else:
250
- self._add_holiday_3rd_mon_of_mar(name)
642
+ self._add_christmas_day_two(name)
643
+
644
+ # Christmas Day.
645
+ # 1984-2002: SAT, SUN - move to MON.
646
+ # 2003-2023: SAT - move to MON, SUN - add MON.
647
+ # from 2024: SAT, SUN - add MON.
648
+
649
+ # Christmas Day.
650
+ name = "Christmas Day"
651
+ dec_25 = (DEC, 25)
652
+ if self._year >= 2024:
653
+ self._add_observed(self._add_christmas_day(name))
654
+ elif self._year >= 2003:
655
+ if self._is_saturday(dec_25):
656
+ self._add_holiday_1st_mon_from_dec_25(name)
657
+ else:
658
+ self._add_observed(self._add_christmas_day(name), rule=SUN_TO_NEXT_MON)
659
+ elif self._year >= 1984 and self._is_weekend(dec_25):
660
+ self._add_holiday_1st_mon_from_dec_25(name)
661
+ else:
662
+ self._add_christmas_day(name)
663
+
664
+ def _populate_subdiv_sa_half_day_holidays(self):
665
+ if self._year >= 2012:
666
+ begin_time_label = "%s (from 7pm)"
667
+
668
+ # Christmas Eve.
669
+ self._add_christmas_eve(begin_time_label % "Christmas Eve")
670
+
671
+ # New Year's Eve.
672
+ self._add_new_years_eve(begin_time_label % "New Year's Eve")
251
673
 
252
674
  def _populate_subdiv_tas_public_holidays(self):
253
- # Labour Day
675
+ # New Year's Day.
676
+ # from 2001: SAT, SUN - move to MON.
677
+
678
+ # New Year's Day.
679
+ name = "New Year's Day"
680
+ if self._year >= 2001 and self._is_weekend(JAN, 1):
681
+ self._add_holiday_1st_mon_from_jan_1(name)
682
+ else:
683
+ self._add_new_years_day(name)
684
+
685
+ # Australia Day.
686
+ # from 2001: SAT, SUN - move to MON.
687
+
688
+ # Australia Day.
689
+ if self._year >= 1888:
690
+ name = "Australia Day" if self._year >= 1935 else "Anniversary Day"
691
+ if self._year >= 2001 and self._is_weekend(JAN, 26):
692
+ self._add_holiday_1st_mon_from_jan_26(name)
693
+ else:
694
+ self._add_holiday_jan_26(name)
695
+
696
+ # Labour Day.
254
697
  self._add_holiday_2nd_mon_of_mar("Eight Hours Day")
255
698
 
256
- # Sovereign's Birthday
699
+ # Easter Tuesday.
700
+ if self._year <= 2010:
701
+ self._add_holiday("Easter Tuesday", self._easter_sunday + td(days=+2))
702
+
703
+ # ANZAC Day.
704
+ if self._year >= 1921:
705
+ self._add_anzac_day("ANZAC Day")
706
+
707
+ # Sovereign's Birthday.
257
708
  if self._year >= 1936:
258
709
  self._add_holiday_2nd_mon_of_jun(self.sovereign_birthday)
259
710
 
711
+ # Christmas Day.
712
+ # 2000-2009: SAT - to MON, SUN - to TUE.
713
+ # from 2010: SAT - add MON, SUN - add TUE.
714
+
715
+ # Christmas Day.
716
+ name = "Christmas Day"
717
+ if self._year >= 2010:
718
+ self._add_observed(self._add_christmas_day(name), rule=SAT_SUN_TO_NEXT_MON_TUE)
719
+ elif self._year >= 2000:
720
+ dec_25 = (DEC, 25)
721
+ if self._is_saturday(dec_25):
722
+ self._add_holiday_1st_mon_from_dec_25(name)
723
+ elif self._is_sunday(dec_25):
724
+ self._add_holiday_1st_tue_from_dec_25(name)
725
+ else:
726
+ self._add_christmas_day(name)
727
+ else:
728
+ self._add_christmas_day(name)
729
+
730
+ # Boxing Day.
731
+ # from 2000: SAT - to MON, SUN - to TUE.
732
+
733
+ # Boxing Day.
734
+ name = "Boxing Day"
735
+ if self._year >= 2000:
736
+ dec_26 = (DEC, 26)
737
+ if self._is_saturday(dec_26):
738
+ self._add_holiday_1st_mon_from_dec_26(name)
739
+ elif self._is_sunday(dec_26):
740
+ self._add_holiday_1st_tue_from_dec_26(name)
741
+ else:
742
+ self._add_christmas_day_two(name)
743
+ else:
744
+ self._add_christmas_day_two(name)
745
+
260
746
  def _populate_subdiv_vic_public_holidays(self):
261
- # Easter
262
- self._add_holy_saturday("Easter Saturday")
263
- self._add_easter_sunday("Easter Sunday")
747
+ # New Year's Day.
748
+ # 1994-1997: SUN - add MON.
749
+ # 1998-2008: SUN - move to MON.
750
+ # from 2009: SAT, SUN - add MON.
751
+
752
+ # New Year's Day.
753
+ name = "New Year's Day"
754
+ if self._year >= 2009:
755
+ self._add_observed(self._add_new_years_day(name))
756
+ elif self._year >= 1998:
757
+ if self._is_sunday(JAN, 1):
758
+ self._add_holiday_1st_mon_from_jan_1(name)
759
+ else:
760
+ self._add_new_years_day(name)
761
+ elif self._year >= 1994:
762
+ self._add_observed(self._add_new_years_day(name), rule=SUN_TO_NEXT_MON)
763
+ else:
764
+ self._add_new_years_day(name)
765
+
766
+ # Australia Day.
767
+ # from 2009: SAT, SUN - move to MON.
264
768
 
265
- # Labour Day
769
+ # Australia Day.
770
+ if self._year >= 1888:
771
+ name = "Australia Day" if self._year >= 1935 else "Anniversary Day"
772
+ if self._year >= 2009 and self._is_weekend(JAN, 26):
773
+ self._add_holiday_1st_mon_from_jan_26(name)
774
+ else:
775
+ self._add_holiday_jan_26(name)
776
+
777
+ # Labour Day.
266
778
  self._add_holiday_2nd_mon_of_mar("Labour Day")
267
779
 
268
- # Sovereign's Birthday
780
+ # Easter Saturday.
781
+ if self._year >= 2003:
782
+ self._add_holy_saturday("Easter Saturday")
783
+
784
+ # Easter Sunday.
785
+ if self._year >= 2016:
786
+ self._add_easter_sunday("Easter Sunday")
787
+
788
+ # ANZAC Day.
789
+ if self._year >= 1921:
790
+ self._add_anzac_day("ANZAC Day")
791
+
792
+ # Sovereign's Birthday.
269
793
  if self._year >= 1936:
270
794
  self._add_holiday_2nd_mon_of_jun(self.sovereign_birthday)
271
795
 
272
- # Melbourne Cup
273
- self._add_holiday_1st_tue_of_nov("Melbourne Cup")
274
-
796
+ # Grand Final Day.
275
797
  if self._year >= 2015:
276
- # Grand Final Day
277
798
  grand_final_dates = {
278
- # Rescheduled due to COVID-19
799
+ 2015: (OCT, 2),
800
+ 2016: (SEP, 30),
801
+ # Rescheduled due to COVID-19.
279
802
  2020: (OCT, 23),
280
- # Rescheduled due to COVID-19
281
- 2021: (SEP, 24),
282
- 2022: (SEP, 23),
283
803
  }
284
804
  name = "Grand Final Day"
285
805
  if self._year in grand_final_dates:
286
806
  self._add_holiday(name, grand_final_dates[self._year])
287
807
  else:
288
- self._add_holiday_1st_fri_from_sep_24(name)
808
+ self._add_holiday_1_day_prior_last_sat_of_sep(name)
809
+
810
+ # Melbourne Cup Day.
811
+ if self._year >= 2009:
812
+ self._add_holiday_1st_tue_of_nov("Melbourne Cup Day")
813
+
814
+ # Christmas Day.
815
+ # 2008-2018: SAT - to MON, SUN - to TUE.
816
+ # from 2019: SAT - add MON, SUN - add TUE.
817
+
818
+ # Christmas Day.
819
+ name = "Christmas Day"
820
+ if self._year >= 2019:
821
+ self._add_observed(self._add_christmas_day(name), rule=SAT_SUN_TO_NEXT_MON_TUE)
822
+ elif self._year >= 2000:
823
+ dec_25 = (DEC, 25)
824
+ if self._is_saturday(dec_25):
825
+ self._add_holiday_1st_mon_from_dec_25(name)
826
+ elif self._is_sunday(dec_25):
827
+ self._add_holiday_1st_tue_from_dec_25(name)
828
+ else:
829
+ self._add_christmas_day(name)
830
+ else:
831
+ self._add_christmas_day(name)
832
+
833
+ # Boxing Day.
834
+ # 1994-2008: SUN - to MON.
835
+ # from 2009: SAT - add MON, SUN - add TUE.
836
+
837
+ # Boxing Day.
838
+ name = "Boxing Day"
839
+ if self._year >= 2009:
840
+ self._add_observed(self._add_christmas_day_two(name), rule=SAT_SUN_TO_NEXT_MON_TUE)
841
+ elif self._year >= 1994 and self._is_sunday(DEC, 26):
842
+ self._add_holiday_1st_tue_from_dec_26(name)
843
+ else:
844
+ self._add_christmas_day_two(name)
289
845
 
290
846
  def _populate_subdiv_wa_public_holidays(self):
291
- # Labour Day
847
+ # New Year's Day.
848
+ # from 1973: SAT, SUN - add MON.
849
+
850
+ # New Year's Day.
851
+ jan_1 = self._add_new_years_day("New Year's Day")
852
+ if self._year >= 1973:
853
+ self._add_observed(jan_1)
854
+
855
+ # Australia Day.
856
+ # 1973-1993: not MON - move to MON.
857
+ # from 1994: SAT, SUN - move to MON.
858
+
859
+ # Australia Day.
860
+ if self._year >= 1888:
861
+ name = "Australia Day" if self._year >= 1935 else "Anniversary Day"
862
+ if self._year >= 1994:
863
+ if self._is_weekend(JAN, 26):
864
+ self._add_holiday_1st_mon_from_jan_26(name)
865
+ else:
866
+ self._add_holiday_jan_26(name)
867
+ elif self._year >= 1973:
868
+ self._add_holiday_1st_mon_from_jan_26(name)
869
+ else:
870
+ self._add_holiday_jan_26(name)
871
+
872
+ # Labour Day.
292
873
  self._add_holiday_1st_mon_of_mar("Labour Day")
293
874
 
294
- # Sovereign's Birthday
295
- if self._year >= 1936:
296
- self._add_holiday_1st_mon_before_oct_1(self.sovereign_birthday)
875
+ # Easter Sunday.
876
+ if self._year >= 2022:
877
+ self._add_easter_sunday("Easter Sunday")
297
878
 
298
- # Anzac Day
879
+ # ANZAC Day.
299
880
  if self._year >= 1921:
300
- self._add_observed(self._add_anzac_day("Anzac Day"))
881
+ apr_25 = self._add_anzac_day("ANZAC Day")
882
+ if self._year >= 1973:
883
+ self._add_observed(apr_25)
301
884
 
302
- # Western Australia Day
885
+ # Western Australia Day.
303
886
  if self._year >= 1833:
304
887
  self._add_holiday_1st_mon_of_jun(
305
- "Western Australia Day" if self._year >= 2015 else "Foundation Day"
888
+ "Western Australia Day" if self._year >= 2012 else "Foundation Day"
306
889
  )
307
890
 
891
+ # Sovereign's Birthday.
892
+ if self._year >= 1936:
893
+ if self._year >= 1984:
894
+ self._add_holiday_last_mon_of_sep(self.sovereign_birthday)
895
+ else:
896
+ self._add_holiday_2nd_mon_of_oct(self.sovereign_birthday)
897
+
898
+ # Boxing Day.
899
+ # 1972-1975: SAT - add MON, SUN - add TUE.
900
+ # from 1976: SAT - add MON, SUN - add TUE, MON - add TUE.
901
+ # (Placed before Christmas Day for proper observed calculation).
902
+
903
+ # Boxing Day.
904
+ dec_26 = self._add_christmas_day_two("Boxing Day")
905
+ if self._year >= 1972:
906
+ self._add_observed(
907
+ dec_26,
908
+ rule=SAT_SUN_TO_NEXT_MON_TUE + MON_TO_NEXT_TUE
909
+ if self._year >= 1976
910
+ else SAT_SUN_TO_NEXT_MON_TUE,
911
+ )
912
+
913
+ # Christmas Day.
914
+ # from 1972: SAT, SUN - add MON.
915
+
916
+ # Christmas Day.
917
+ dec_25 = self._add_christmas_day("Christmas Day")
918
+ if self._year >= 1972:
919
+ self._add_observed(dec_25)
920
+
308
921
 
309
922
  class AU(Australia):
310
923
  pass
@@ -319,6 +932,16 @@ class AustraliaStaticHolidays:
319
932
  2022: (SEP, 22, "National Day of Mourning for Queen Elizabeth II"),
320
933
  }
321
934
 
935
+ special_act_public_holidays = {
936
+ 2020: (APR, 20, "Declared public holiday"),
937
+ 2021: (APR, 25, "Additional public holiday"),
938
+ }
939
+
322
940
  special_qld_public_holidays = {
323
941
  2012: (JUN, 11, "Queen's Diamond Jubilee"),
324
942
  }
943
+
944
+ special_qld_public_holidays_observed = {
945
+ 2010: (DEC, 28, "Christmas Day"),
946
+ 2011: (JAN, 3, "New Year's Day"),
947
+ }