holidays 0.60__py3-none-any.whl → 0.61__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 (59) hide show
  1. holidays/countries/brazil.py +149 -109
  2. holidays/countries/brunei.py +157 -68
  3. holidays/countries/cambodia.py +11 -0
  4. holidays/countries/china.py +21 -5
  5. holidays/countries/finland.py +1 -1
  6. holidays/countries/luxembourg.py +1 -1
  7. holidays/countries/moldova.py +1 -1
  8. holidays/countries/portugal.py +22 -0
  9. holidays/countries/switzerland.py +1 -1
  10. holidays/countries/thailand.py +6 -0
  11. holidays/countries/united_states.py +19 -23
  12. holidays/financial/__init__.py +1 -0
  13. holidays/financial/brasil_bolsa_balcao.py +110 -0
  14. holidays/groups/international.py +11 -0
  15. holidays/helpers.py +4 -4
  16. holidays/holiday_base.py +2 -3
  17. holidays/locale/de/LC_MESSAGES/CH.po +1 -1
  18. holidays/locale/en_US/LC_MESSAGES/BN.mo +0 -0
  19. holidays/locale/en_US/LC_MESSAGES/BN.po +29 -18
  20. holidays/locale/en_US/LC_MESSAGES/BR.mo +0 -0
  21. holidays/locale/en_US/LC_MESSAGES/BR.po +263 -0
  22. holidays/locale/en_US/LC_MESSAGES/BVMF.mo +0 -0
  23. holidays/locale/en_US/LC_MESSAGES/BVMF.po +79 -0
  24. holidays/locale/en_US/LC_MESSAGES/CH.mo +0 -0
  25. holidays/locale/en_US/LC_MESSAGES/CH.po +1 -1
  26. holidays/locale/en_US/LC_MESSAGES/KH.mo +0 -0
  27. holidays/locale/en_US/LC_MESSAGES/KH.po +7 -3
  28. holidays/locale/fr/LC_MESSAGES/CH.mo +0 -0
  29. holidays/locale/fr/LC_MESSAGES/CH.po +1 -1
  30. holidays/locale/it/LC_MESSAGES/CH.mo +0 -0
  31. holidays/locale/it/LC_MESSAGES/CH.po +1 -1
  32. holidays/locale/km/LC_MESSAGES/KH.mo +0 -0
  33. holidays/locale/km/LC_MESSAGES/KH.po +7 -3
  34. holidays/locale/ms/LC_MESSAGES/BN.mo +0 -0
  35. holidays/locale/ms/LC_MESSAGES/BN.po +26 -17
  36. holidays/locale/pt_BR/LC_MESSAGES/BR.mo +0 -0
  37. holidays/locale/pt_BR/LC_MESSAGES/BR.po +263 -0
  38. holidays/locale/pt_BR/LC_MESSAGES/BVMF.mo +0 -0
  39. holidays/locale/pt_BR/LC_MESSAGES/BVMF.po +79 -0
  40. holidays/locale/th/LC_MESSAGES/BN.mo +0 -0
  41. holidays/locale/th/LC_MESSAGES/BN.po +28 -17
  42. holidays/locale/th/LC_MESSAGES/KH.mo +0 -0
  43. holidays/locale/th/LC_MESSAGES/KH.po +7 -3
  44. holidays/locale/uk/LC_MESSAGES/BR.mo +0 -0
  45. holidays/locale/uk/LC_MESSAGES/BR.po +263 -0
  46. holidays/locale/uk/LC_MESSAGES/BVMF.mo +0 -0
  47. holidays/locale/uk/LC_MESSAGES/BVMF.po +79 -0
  48. holidays/locale/uk/LC_MESSAGES/CH.mo +0 -0
  49. holidays/locale/uk/LC_MESSAGES/CH.po +1 -1
  50. holidays/observed_holiday_base.py +2 -1
  51. holidays/registry.py +1 -0
  52. holidays/utils.py +1 -1
  53. holidays/version.py +1 -1
  54. {holidays-0.60.dist-info → holidays-0.61.dist-info}/AUTHORS +1 -0
  55. {holidays-0.60.dist-info → holidays-0.61.dist-info}/METADATA +13 -5
  56. {holidays-0.60.dist-info → holidays-0.61.dist-info}/RECORD +59 -46
  57. {holidays-0.60.dist-info → holidays-0.61.dist-info}/WHEEL +1 -1
  58. {holidays-0.60.dist-info → holidays-0.61.dist-info}/LICENSE +0 -0
  59. {holidays-0.60.dist-info → holidays-0.61.dist-info}/top_level.txt +0 -0
@@ -61,6 +61,42 @@ class Brunei(
61
61
 
62
62
  - Based on: http://www.labour.gov.bn/Lists/Upcomming%20events/AllItems.aspx
63
63
  http://www.labour.gov.bn/Download/GUIDE%20TO%20BRUNEI%20EMPLOYMENT%20LAWS%20-%20english%20version-3.pdf
64
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk12-1997.pdf
65
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk14-1998.pdf
66
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk15-1998.pdf
67
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk14-1999.pdf
68
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk05-2000.pdf
69
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk10-2000.pdf
70
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk13-2000.pdf
71
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk07-2001.pdf
72
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk11-2002.pdf
73
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk02-2003.pdf
74
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk09-2004.pdf
75
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk11-2005.pdf
76
+ https://www.pmo.gov.bn/Circulars%20PDF%20Library/jpmsk12-2005.pdf
77
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk03-2006.pdf
78
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk17-2006.pdf
79
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk10-2007.pdf
80
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk09-2008.pdf
81
+ https://chittychat.wordpress.com/wp-content/uploads/2008/11/school_terms_20091.pdf
82
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk08-2009.pdf
83
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk09-2010.pdf
84
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk10-2011.pdf
85
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk08-2012.pdf
86
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk10-2012.pdf
87
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk07-2013.pdf
88
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk09-14.pdf
89
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk11-2015.pdf
90
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk09-2016.pdf
91
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk07-2017.pdf
92
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk08-2017.pdf
93
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk11-2018.pdf
94
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk06-2019.pdf
95
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk10-2020.pdf
96
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk10-2021.pdf
97
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk04-2022.pdf
98
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk04-2023.pdf
99
+ https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk06-2024.pdf
64
100
  - Checked with: https://asean.org/wp-content/uploads/2021/12/ASEAN-National-Holidays-2022.pdf
65
101
  https://asean.org/wp-content/uploads/2022/12/ASEAN-Public-Holidays-2023.pdf
66
102
  https://www.timeanddate.com/holidays/brunei/
@@ -109,20 +145,20 @@ class Brunei(
109
145
  # Awal Tahun Masihi
110
146
  # Status: In-Use.
111
147
 
112
- # New Year's Day
148
+ # New Year's Day.
113
149
  self._add_observed(self._add_new_years_day(tr("Awal Tahun Masihi")))
114
150
 
115
151
  # Tahun Baru Cina
116
152
  # Status: In-Use.
117
153
 
118
- # Lunar New Year
154
+ # Lunar New Year.
119
155
  self._add_observed(self._add_chinese_new_years_day(tr("Tahun Baru Cina")))
120
156
 
121
157
  # Hari Kebangsaan
122
158
  # Status: In-Use.
123
159
  # Starts in 1984.
124
160
 
125
- # National Day
161
+ # National Day.
126
162
  self._add_observed(self._add_holiday_feb_23(tr("Hari Kebangsaan")))
127
163
 
128
164
  # Hari Angkatan Bersenjata Diraja Brunei
@@ -131,7 +167,7 @@ class Brunei(
131
167
  # Commemorates the formation of Royal Brunei Malay Regiment in 1961.
132
168
 
133
169
  self._add_observed(
134
- # Armed Forces Day
170
+ # Armed Forces Day.
135
171
  self._add_holiday_may_31(tr("Hari Angkatan Bersenjata Diraja Brunei"))
136
172
  )
137
173
 
@@ -140,14 +176,14 @@ class Brunei(
140
176
  # Started in 1968.
141
177
 
142
178
  self._add_observed(
143
- # Sultan Hassanal Bolkiah's Birthday
179
+ # Sultan Hassanal Bolkiah's Birthday.
144
180
  self._add_holiday_jul_15(tr("Hari Keputeraan KDYMM Sultan Brunei"))
145
181
  )
146
182
 
147
183
  # Hari Natal
148
184
  # Status: In-Use.
149
185
 
150
- # Christmas Day
186
+ # Christmas Day.
151
187
  self._add_observed(self._add_christmas_day(tr("Hari Natal")))
152
188
 
153
189
  # Islamic Holidays are placed after Gregorian holidays to prevent
@@ -156,61 +192,75 @@ class Brunei(
156
192
  # Israk dan Mikraj
157
193
  # Status: In-Use.
158
194
 
159
- # Isra' and Mi'raj
195
+ # Isra' and Mi'raj.
160
196
  for dt in self._add_isra_and_miraj_day(tr("Israk dan Mikraj")):
161
197
  self._add_observed(dt)
162
198
 
163
199
  # Hari Pertama Berpuasa
164
200
  # Status: In-Use.
165
201
 
166
- # First Day of Ramadan
202
+ # First Day of Ramadan.
167
203
  for dt in self._add_ramadan_beginning_day(tr("Hari Pertama Berpuasa")):
168
204
  self._add_observed(dt)
169
205
 
170
206
  # Hari Nuzul Al-Quran
171
207
  # Status: In-Use.
172
208
 
173
- # Anniversary of the revelation of the Quran
209
+ # Anniversary of the revelation of the Quran.
174
210
  for dt in self._add_nuzul_al_quran_day(tr("Hari Nuzul Al-Quran")):
175
211
  self._add_observed(dt)
176
212
 
177
213
  # Hari Raya Aidil Fitri
178
214
  # Status: In-Use.
179
215
  # This is celebrate for three days in Brunei.
180
- # Observed as 'Hari Raya Puasa' and only for 2 days at certain point.
181
216
  # 1: If Wed-Thu-Fri -> Sat (3rd Day +1)
182
217
  # 2: If Thu-Fri-Sat -> Mon (2nd Day +3)
183
- # 3: If Fri-Sat-Sun -> Mon (1st Day +3)
218
+ # 3: If Fri-Sat-Sun -> Mon, Tue (1st Day +3, 3rd day +2)
184
219
  # 4: If Sat-Sun-Mon -> Tue (2nd Day +2)
185
220
  # 5: If Sun-Mon-Tue -> Wed (1st Day +3)
186
-
187
- # Eid al-Fitr
221
+ # Observed as 'Hari Raya Puasa' and only for 2 days prior to 2012.
222
+ # 1: If Thu-Fri -> Sat (2nd Day +1)
223
+ # 2: If Fri-Sat -> Mon (1nd Day +2)
224
+ # 3: If Sat-Sun -> Mon (2nd Day +1)
225
+ # 4: If Sun-Mon -> Tue (1st Day +2)
226
+ # This was only observed for a single day in 2000.
227
+
228
+ # Eid al-Fitr.
188
229
  name = tr("Hari Raya Aidil Fitri")
189
- for dt in self._add_eid_al_fitr_day(name):
190
- self._add_observed(dt, rule=FRI_TO_NEXT_MON + SUN_TO_NEXT_WED)
191
- for dt in self._add_eid_al_fitr_day_two(name):
192
- self._add_observed(dt, rule=FRI_TO_NEXT_MON + SUN_TO_NEXT_TUE)
193
- for dt in self._add_eid_al_fitr_day_three(name):
194
- self._add_observed(dt, rule=FRI_TO_NEXT_SAT)
230
+ if self._year >= 2012:
231
+ for dt in self._add_eid_al_fitr_day(name):
232
+ self._add_observed(dt, rule=FRI_TO_NEXT_MON + SUN_TO_NEXT_WED)
233
+ for dt in self._add_eid_al_fitr_day_two(name):
234
+ self._add_observed(dt, rule=FRI_TO_NEXT_MON + SUN_TO_NEXT_TUE)
235
+ for dt in self._add_eid_al_fitr_day_three(name):
236
+ self._add_observed(dt, rule=FRI_TO_NEXT_SAT + SUN_TO_NEXT_TUE)
237
+ elif self._year == 2000:
238
+ for dt in self._add_eid_al_fitr_day(name):
239
+ self._add_observed(dt)
240
+ else:
241
+ for dt in self._add_eid_al_fitr_day(name):
242
+ self._add_observed(dt, rule=FRI_TO_NEXT_MON + SUN_TO_NEXT_TUE)
243
+ for dt in self._add_eid_al_fitr_day_two(name):
244
+ self._add_observed(dt)
195
245
 
196
246
  # Hari Raya Aidil Adha
197
247
  # Status: In-Use.
198
248
 
199
- # Eid al-Adha
249
+ # Eid al-Adha.
200
250
  for dt in self._add_eid_al_adha_day(tr("Hari Raya Aidil Adha")):
201
251
  self._add_observed(dt)
202
252
 
203
253
  # Awal Tahun Hijrah
204
254
  # Status: In-Use.
205
255
 
206
- # Islamic New Year
256
+ # Islamic New Year.
207
257
  for dt in self._add_islamic_new_year_day(tr("Awal Tahun Hijrah")):
208
258
  self._add_observed(dt)
209
259
 
210
260
  # Maulidur Rasul
211
261
  # Status: In-Use.
212
262
 
213
- # Prophet's Birthday
263
+ # Prophet's Birthday.
214
264
  for dt in self._add_mawlid_day(tr("Maulidur Rasul")):
215
265
  self._add_observed(dt)
216
266
 
@@ -225,101 +275,112 @@ class BRN(Brunei):
225
275
 
226
276
  class BruneiIslamicHolidays(_CustomIslamicHolidays):
227
277
  EID_AL_ADHA_DATES = {
228
- 2000: (MAR, 16),
278
+ 1998: (APR, 7),
279
+ 1999: (MAR, 28),
280
+ 2000: (MAR, 17),
229
281
  2001: (MAR, 6),
230
282
  2002: (FEB, 23),
231
283
  2003: (FEB, 12),
232
284
  2004: (FEB, 2),
233
285
  2005: (JAN, 21),
234
- 2006: ((JAN, 10), (DEC, 31)),
286
+ 2006: ((JAN, 11), (DEC, 31)),
235
287
  2007: (DEC, 20),
236
- 2008: (DEC, 9),
237
- 2009: (NOV, 28),
238
- 2010: (NOV, 17),
239
- 2011: (NOV, 7),
288
+ 2008: (DEC, 8),
289
+ 2009: (NOV, 27),
290
+ 2010: (NOV, 16),
291
+ 2011: (NOV, 6),
240
292
  2012: (OCT, 26),
241
293
  2013: (OCT, 15),
242
294
  2014: (OCT, 5),
243
295
  2015: (SEP, 24),
244
- 2016: (SEP, 13),
245
- 2017: (SEP, 2),
296
+ 2016: (SEP, 12),
297
+ 2017: (SEP, 1),
246
298
  2018: (AUG, 22),
247
299
  2019: (AUG, 11),
248
- 2020: (AUG, 1),
300
+ 2020: (JUL, 31),
249
301
  2021: (JUL, 20),
250
- 2022: (JUL, 10),
302
+ 2022: (JUL, 9),
251
303
  2023: (JUN, 29),
252
304
  2024: (JUN, 17),
305
+ 2025: (JUN, 7),
253
306
  }
254
307
 
255
308
  EID_AL_FITR_DATES = {
256
- 2000: ((JAN, 8), (DEC, 28)),
257
- 2001: (DEC, 17),
309
+ 1998: (JAN, 30),
310
+ 1999: (JAN, 19),
311
+ 2000: ((JAN, 8), (DEC, 27)),
312
+ 2001: (DEC, 16),
258
313
  2002: (DEC, 6),
259
- 2003: (NOV, 26),
314
+ 2003: (NOV, 25),
260
315
  2004: (NOV, 14),
261
- 2005: (NOV, 3),
316
+ 2005: (NOV, 4),
262
317
  2006: (OCT, 24),
263
318
  2007: (OCT, 13),
264
319
  2008: (OCT, 1),
265
320
  2009: (SEP, 20),
266
321
  2010: (SEP, 10),
267
- 2011: (AUG, 31),
322
+ 2011: (AUG, 30),
268
323
  2012: (AUG, 19),
269
324
  2013: (AUG, 8),
270
- 2014: (JUL, 29),
271
- 2015: (JUL, 18),
272
- 2016: (JUL, 7),
273
- 2017: (JUN, 26),
325
+ 2014: (JUL, 28),
326
+ 2015: (JUL, 17),
327
+ 2016: (JUL, 6),
328
+ 2017: (JUN, 25),
274
329
  2018: (JUN, 15),
275
330
  2019: (JUN, 5),
276
331
  2020: (MAY, 24),
277
332
  2021: (MAY, 13),
278
- 2022: (MAY, 3),
333
+ 2022: (MAY, 2),
279
334
  2023: (APR, 22),
280
335
  2024: (APR, 10),
336
+ 2025: (MAR, 31),
281
337
  }
282
338
 
283
339
  HIJRI_NEW_YEAR_DATES = {
340
+ 1998: (APR, 28),
341
+ 1999: (APR, 17),
284
342
  2000: (APR, 6),
285
343
  2001: (MAR, 26),
286
344
  2002: (MAR, 15),
287
- 2003: (MAR, 5),
345
+ 2003: (MAR, 4),
288
346
  2004: (FEB, 22),
289
347
  2005: (FEB, 10),
290
348
  2006: (JAN, 31),
291
349
  2007: (JAN, 20),
292
350
  2008: ((JAN, 10), (DEC, 29)),
293
351
  2009: (DEC, 18),
294
- 2010: (DEC, 8),
352
+ 2010: (DEC, 7),
295
353
  2011: (NOV, 27),
296
354
  2012: (NOV, 15),
297
355
  2013: (NOV, 5),
298
356
  2014: (OCT, 25),
299
- 2015: (OCT, 15),
300
- 2016: (OCT, 3),
357
+ 2015: (OCT, 14),
358
+ 2016: (OCT, 2),
301
359
  2017: (SEP, 22),
302
- 2018: (SEP, 12),
360
+ 2018: (SEP, 11),
303
361
  2019: (SEP, 1),
304
362
  2020: (AUG, 20),
305
363
  2021: (AUG, 10),
306
364
  2022: (JUL, 30),
307
365
  2023: (JUL, 19),
308
366
  2024: (JUL, 7),
367
+ 2025: (JUN, 27),
309
368
  }
310
369
 
311
370
  ISRA_AND_MIRAJ_DATES = {
312
- 2000: (OCT, 26),
371
+ 1998: (NOV, 17),
372
+ 1999: (NOV, 6),
373
+ 2000: (OCT, 25),
313
374
  2001: (OCT, 15),
314
375
  2002: (OCT, 4),
315
376
  2003: (SEP, 24),
316
377
  2004: (SEP, 12),
317
378
  2005: (SEP, 1),
318
- 2006: (AUG, 22),
379
+ 2006: (AUG, 21),
319
380
  2007: (AUG, 11),
320
- 2008: (JUL, 31),
381
+ 2008: (JUL, 30),
321
382
  2009: (JUL, 20),
322
- 2010: (JUL, 9),
383
+ 2010: (JUL, 10),
323
384
  2011: (JUN, 29),
324
385
  2012: (JUN, 17),
325
386
  2013: (JUN, 6),
@@ -331,15 +392,18 @@ class BruneiIslamicHolidays(_CustomIslamicHolidays):
331
392
  2019: (APR, 3),
332
393
  2020: (MAR, 22),
333
394
  2021: (MAR, 11),
334
- 2022: (MAR, 1),
395
+ 2022: (FEB, 28),
335
396
  2023: (FEB, 18),
336
397
  2024: (FEB, 8),
398
+ 2025: (JAN, 27),
337
399
  }
338
400
 
339
401
  MAWLID_DATES = {
402
+ 1998: (JUL, 6),
403
+ 1999: (JUN, 26),
340
404
  2000: (JUN, 15),
341
405
  2001: (JUN, 4),
342
- 2002: (MAY, 24),
406
+ 2002: (MAY, 25),
343
407
  2003: (MAY, 14),
344
408
  2004: (MAY, 2),
345
409
  2005: (APR, 21),
@@ -348,24 +412,27 @@ class BruneiIslamicHolidays(_CustomIslamicHolidays):
348
412
  2008: (MAR, 20),
349
413
  2009: (MAR, 9),
350
414
  2010: (FEB, 26),
351
- 2011: (FEB, 16),
415
+ 2011: (FEB, 15),
352
416
  2012: (FEB, 5),
353
417
  2013: (JAN, 24),
354
418
  2014: (JAN, 14),
355
419
  2015: ((JAN, 3), (DEC, 24)),
356
420
  2016: (DEC, 12),
357
421
  2017: (DEC, 1),
358
- 2018: (NOV, 21),
422
+ 2018: (NOV, 20),
359
423
  2019: (NOV, 9),
360
424
  2020: (OCT, 29),
361
425
  2021: (OCT, 19),
362
426
  2022: (OCT, 8),
363
427
  2023: (SEP, 28),
364
428
  2024: (SEP, 16),
429
+ 2025: (SEP, 5),
365
430
  }
366
431
 
367
432
  NUZUL_AL_QURAN_DATES = {
368
- 2000: (DEC, 14),
433
+ 1998: (JAN, 16),
434
+ 1999: ((JAN, 5), (DEC, 25)),
435
+ 2000: (DEC, 13),
369
436
  2001: (DEC, 3),
370
437
  2002: (NOV, 22),
371
438
  2003: (NOV, 12),
@@ -377,23 +444,26 @@ class BruneiIslamicHolidays(_CustomIslamicHolidays):
377
444
  2009: (SEP, 7),
378
445
  2010: (AUG, 27),
379
446
  2011: (AUG, 17),
380
- 2012: (AUG, 5),
381
- 2013: (JUL, 25),
447
+ 2012: (AUG, 6),
448
+ 2013: (JUL, 26),
382
449
  2014: (JUL, 15),
383
450
  2015: (JUL, 4),
384
- 2016: (JUN, 23),
451
+ 2016: (JUN, 22),
385
452
  2017: (JUN, 12),
386
453
  2018: (JUN, 2),
387
- 2019: (MAY, 23),
454
+ 2019: (MAY, 22),
388
455
  2020: (MAY, 10),
389
456
  2021: (APR, 29),
390
457
  2022: (APR, 19),
391
458
  2023: (APR, 8),
392
459
  2024: (MAR, 28),
460
+ 2025: (MAR, 18),
393
461
  }
394
462
 
395
463
  RAMADAN_BEGINNING_DATES = {
396
- 2000: (NOV, 28),
464
+ 1998: (DEC, 20),
465
+ 1999: (DEC, 9),
466
+ 2000: (NOV, 27),
397
467
  2001: (NOV, 17),
398
468
  2002: (NOV, 6),
399
469
  2003: (OCT, 27),
@@ -401,28 +471,47 @@ class BruneiIslamicHolidays(_CustomIslamicHolidays):
401
471
  2005: (OCT, 5),
402
472
  2006: (SEP, 24),
403
473
  2007: (SEP, 13),
404
- 2008: (SEP, 2),
474
+ 2008: (SEP, 1),
405
475
  2009: (AUG, 22),
406
476
  2010: (AUG, 11),
407
477
  2011: (AUG, 1),
408
- 2012: (JUL, 20),
409
- 2013: (JUL, 9),
478
+ 2012: (JUL, 21),
479
+ 2013: (JUL, 10),
410
480
  2014: (JUN, 29),
411
481
  2015: (JUN, 18),
412
- 2016: (JUN, 7),
482
+ 2016: (JUN, 6),
413
483
  2017: (MAY, 27),
414
- 2018: (MAY, 16),
484
+ 2018: (MAY, 17),
415
485
  2019: (MAY, 6),
416
- 2020: (APR, 25),
486
+ 2020: (APR, 24),
417
487
  2021: (APR, 13),
418
488
  2022: (APR, 3),
419
489
  2023: (MAR, 23),
420
490
  2024: (MAR, 12),
491
+ 2025: (MAR, 2),
421
492
  }
422
493
 
423
494
 
424
495
  class BruneiStaticHolidays:
425
496
  special_public_holidays = {
426
- # Sultan Hassanal Bolkiah's Golden Jubilee celebration
497
+ 1998: (
498
+ AUG,
499
+ 10,
500
+ # Proclamation Ceremony of Crown Prince Al-Muhtadee Billah of Brunei.
501
+ tr("Istiadat Pengisytiharan Duli Pengiran Muda Mahkota Al-Muhtadee Billah"),
502
+ ),
503
+ # Royal Wedding of Crown Prince Al-Muhtadee Billah and Crown Princess Sarah of Brunei.
504
+ 2004: (SEP, 9, tr("Istiadat Perkahwinan Diraja Brunei 2004")),
505
+ # Sultan Hassanal Bolkiah's Golden Jubilee celebration.
427
506
  2017: (OCT, 5, tr("Jubli Emas Sultan Hassanal Bolkiah")),
428
507
  }
508
+ special_public_holidays_observed = {
509
+ # Christmas Day.
510
+ 1999: (DEC, 27, tr("Hari Natal")),
511
+ # National Day.
512
+ 2002: (FEB, 25, tr("Hari Kebangsaan")),
513
+ # New Year's Day.
514
+ 2007: (JAN, 2, tr("Awal Tahun Masihi")),
515
+ # Anniversary of the revelation of the Quran.
516
+ 2014: (JUL, 16, tr("Hari Nuzul Al-Quran")),
517
+ }
@@ -27,6 +27,7 @@ class Cambodia(HolidayBase, InternationalHolidays, StaticHolidays, ThaiCalendarH
27
27
  - Based on: https://www.nbc.gov.kh/english/news_and_events/official_holiday.php
28
28
  https://www.nbc.gov.kh/news_and_events/official_holiday.php
29
29
  https://en.wikipedia.org/wiki/Public_holidays_in_Cambodia
30
+ https://admin.taftac-cambodia.org/public/pdf_file/regulation_1704245695_Z7IALJjE.pdf
30
31
 
31
32
  - Checked with: https://asean.org/wp-content/uploads/2021/12/ASEAN-National-Holidays-2022.pdf
32
33
  https://asean.org/wp-content/uploads/2022/12/ASEAN-Public-Holidays-2023.pdf
@@ -278,6 +279,16 @@ class Cambodia(HolidayBase, InternationalHolidays, StaticHolidays, ThaiCalendarH
278
279
  self._add_holiday(bon_om_touk, _timedelta(bon_om_touk_date, -1))
279
280
  self._add_holiday(bon_om_touk, _timedelta(bon_om_touk_date, +1))
280
281
 
282
+ # ទិវាសន្តិភាពនៅកម្ពុជា
283
+ # Status: In-Use.
284
+ # Dec 29, added from 2024 onwards.
285
+ # - https://www.khmertimeskh.com/501424903/24-public-holidays-for-2024-peace-day-now-included/
286
+ # - https://www.khmertimeskh.com/501551204/govt-announces-22-public-holidays-for-next-year/
287
+
288
+ if self._year >= 2024:
289
+ # Peace Day in Cambodia.
290
+ self._add_holiday_dec_29(tr("ទិវាសន្តិភាពនៅកម្ពុជា"))
291
+
281
292
 
282
293
  class KH(Cambodia):
283
294
  pass
@@ -23,6 +23,8 @@ class China(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays,
23
23
  References:
24
24
  - https://en.wikipedia.org/wiki/Public_holidays_in_China
25
25
  - `Festivals and Public Holidays <https://zh.wikipedia.org/wiki/中华人民共和国节日与公众假期>`_
26
+ - 2024 changes (Order #795) `<https://www.gov.cn/zhengce/content/202411/content_6986380.htm>`_
27
+ - `2025 <https://www.gov.cn/zhengce/content/202411/content_6986382.htm>`_
26
28
  - `2024 <https://www.gov.cn/zhengce/content/202310/content_6911527.htm>`_
27
29
  - `2023 <https://www.gov.cn/gongbao/content/2023/content_5736714.htm>`_
28
30
  - `2022 <https://www.gov.cn/gongbao/content/2021/content_5651728.htm>`_
@@ -95,29 +97,34 @@ class China(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays,
95
97
  # Status: In-Use (Statutory).
96
98
  # Day 1-3 of Chinese New Year in 1949, 1999, 2007, and 2013 revision.
97
99
  # 2007 revision introduced New Year's Eve (农历除夕) instead of
98
- # New Year's 3rd day; 2013 revision returned it back.
100
+ # New Year's 3rd day; 2013 revision returned it back;
101
+ # 2024 revision returned also New Year's Eve.
99
102
 
100
103
  # Spring Festival Golden Weekend
101
- # Checked with Official Notice from 2001-2023.
104
+ # Checked with Official Notice from 2001-2025.
102
105
  # Consecutive Holidays are available from 2000 (1999 rev.).
103
106
 
104
107
  # Chinese New Year (Spring Festival).
105
108
  chinese_new_year = tr("春节")
109
+ # Chinese New Year's Eve.
110
+ chinese_new_years_eve = tr("农历除夕")
106
111
  dts_observed.add(self._add_chinese_new_years_day(chinese_new_year))
107
112
  dts_observed.add(self._add_chinese_new_years_day_two(chinese_new_year))
108
113
  if 2008 <= self._year <= 2013:
109
- # Chinese New Year's Eve.
110
- dts_observed.add(self._add_chinese_new_years_eve(tr("农历除夕")))
114
+ dts_observed.add(self._add_chinese_new_years_eve(chinese_new_years_eve))
111
115
  else:
112
116
  dts_observed.add(self._add_chinese_new_years_day_three(chinese_new_year))
117
+ if self._year >= 2025:
118
+ dts_observed.add(self._add_chinese_new_years_eve(chinese_new_years_eve))
113
119
 
114
120
  # 劳动节
115
121
  # Status: In-Use (Statutory).
116
122
  # May 1 in 1949, 1999, 2007, and 2013 revision.
117
123
  # Additional Holidays (May 2-3) are available from 2000 (1999 rev.) - 2007 (2007 rev.).
124
+ # May 2 returned in 2024 revision.
118
125
 
119
126
  # Labor Day Golden Weekend
120
- # Checked with Official Notice from 2001-2023.
127
+ # Checked with Official Notice from 2001-2025.
121
128
  # Consecutive Holidays are available from 2002, with exception of ????-????.
122
129
 
123
130
  # Labor Day.
@@ -126,6 +133,8 @@ class China(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays,
126
133
  if 2000 <= self._year <= 2007:
127
134
  dts_observed.add(self._add_labor_day_two(labor_day))
128
135
  dts_observed.add(self._add_labor_day_three(labor_day))
136
+ elif self._year >= 2025:
137
+ dts_observed.add(self._add_labor_day_two(labor_day))
129
138
 
130
139
  # 国庆节
131
140
  # Status: In-Use (Statutory).
@@ -436,6 +445,13 @@ class ChinaStaticHolidays:
436
445
  (OCT, 4, SEP, 29), # National Day
437
446
  (OCT, 7, OCT, 12), # National Day
438
447
  ),
448
+ 2025: (
449
+ (FEB, 3, JAN, 26), # Spring Festival
450
+ (FEB, 4, FEB, 8), # Spring Festival
451
+ (MAY, 5, APR, 27), # Labor Day
452
+ (OCT, 7, SEP, 28), # National Day
453
+ (OCT, 8, OCT, 11), # National Day
454
+ ),
439
455
  }
440
456
 
441
457
  special_public_holidays_observed = {
@@ -125,7 +125,7 @@ class Finland(HolidayBase, ChristianHolidays, InternationalHolidays):
125
125
 
126
126
  if self._year >= 2019:
127
127
  # Europe Day
128
- self._add_holiday_may_9(tr("Eurooppa-päivä"))
128
+ self._add_europe_day(tr("Eurooppa-päivä"))
129
129
 
130
130
  if self._year >= 1918:
131
131
  # Mothers' Day
@@ -42,7 +42,7 @@ class Luxembourg(HolidayBase, ChristianHolidays, InternationalHolidays):
42
42
 
43
43
  if self._year >= 2019:
44
44
  # Europe Day.
45
- self._add_holiday_may_9(tr("Europadag"))
45
+ self._add_europe_day(tr("Europadag"))
46
46
 
47
47
  # Ascension Day.
48
48
  self._add_ascension_thursday(tr("Christi Himmelfaart"))
@@ -73,7 +73,7 @@ class Moldova(HolidayBase, ChristianHolidays, InternationalHolidays):
73
73
 
74
74
  if self._year >= 2017:
75
75
  # Europe Day.
76
- self._add_holiday_may_9(tr("Ziua Europei"))
76
+ self._add_europe_day(tr("Ziua Europei"))
77
77
 
78
78
  if self._year >= 2016:
79
79
  # International Children's Day.
@@ -63,6 +63,28 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
63
63
  "20",
64
64
  "30",
65
65
  )
66
+ subdivisions_aliases = {
67
+ "Aveiro": "01",
68
+ "Beja": "02",
69
+ "Braga": "03",
70
+ "Bragança": "04",
71
+ "Castelo Branco": "05",
72
+ "Coimbra": "06",
73
+ "Évora": "07",
74
+ "Faro": "08",
75
+ "Guarda": "09",
76
+ "Leiria": "10",
77
+ "Lisboa": "11",
78
+ "Portalegre": "12",
79
+ "Porto": "13",
80
+ "Santarém": "14",
81
+ "Setúbal": "15",
82
+ "Viana do Castelo": "16",
83
+ "Vila Real": "17",
84
+ "Viseu": "18",
85
+ "Região Autónoma dos Açores": "20",
86
+ "Região Autónoma da Madeira": "30",
87
+ }
66
88
  _deprecated_subdivisions = ("Ext",)
67
89
  supported_languages = ("en_US", "pt_PT", "uk")
68
90
 
@@ -66,7 +66,7 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays)
66
66
 
67
67
  def _populate_public_holidays(self):
68
68
  # New Year's Day.
69
- self._add_new_years_day(tr("Neujahrestag"))
69
+ self._add_new_years_day(tr("Neujahrstag"))
70
70
 
71
71
  # Ascension Day.
72
72
  self._add_ascension_thursday(tr("Auffahrt"))
@@ -40,6 +40,7 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
40
40
  - https://resolution.soc.go.th/?prep_id=196007
41
41
  - https://github.com/vacanza/holidays/pull/929
42
42
  - https://www.thairath.co.th/lifestyle/life/2812118
43
+ - https://www.thaipbs.or.th/news/content/346216
43
44
  - [New Year's Day]
44
45
  `wikisource.org <http://tiny.cc/wa_wiki_thai_newyear_2483>`_
45
46
  - [National Children's Day]
@@ -832,6 +833,11 @@ class ThailandStaticHolidays:
832
833
  (APR, 12, thai_bridge_public_holiday),
833
834
  (DEC, 30, thai_bridge_public_holiday),
834
835
  ),
836
+ 2025: (
837
+ (JUN, 2, thai_bridge_public_holiday),
838
+ (AUG, 11, thai_bridge_public_holiday),
839
+ ),
840
+ 2026: (JAN, 2, thai_bridge_public_holiday),
835
841
  }
836
842
  special_workday_holidays = {1999: (MAY, 14, tr("วันพืชมงคล"))}
837
843