holidays 0.88__py3-none-any.whl → 0.90__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 (41) hide show
  1. holidays/countries/argentina.py +49 -37
  2. holidays/countries/armenia.py +441 -15
  3. holidays/countries/australia.py +14 -2
  4. holidays/countries/azerbaijan.py +5 -4
  5. holidays/countries/brunei.py +54 -104
  6. holidays/countries/cambodia.py +2 -2
  7. holidays/countries/estonia.py +6 -6
  8. holidays/countries/germany.py +3 -0
  9. holidays/countries/india.py +1 -1
  10. holidays/countries/italy.py +13 -10
  11. holidays/countries/jordan.py +6 -4
  12. holidays/countries/kyrgyzstan.py +3 -2
  13. holidays/countries/laos.py +6 -4
  14. holidays/countries/liberia.py +1 -1
  15. holidays/countries/moldova.py +1 -1
  16. holidays/countries/qatar.py +4 -5
  17. holidays/countries/sudan.py +1 -1
  18. holidays/countries/sweden.py +1 -1
  19. holidays/countries/timor_leste.py +14 -20
  20. holidays/countries/tonga.py +0 -2
  21. holidays/countries/venezuela.py +1 -1
  22. holidays/groups/international.py +0 -10
  23. holidays/locale/en_AU/LC_MESSAGES/AU.mo +0 -0
  24. holidays/locale/en_TL/LC_MESSAGES/TL.mo +0 -0
  25. holidays/locale/en_US/LC_MESSAGES/AM.mo +0 -0
  26. holidays/locale/en_US/LC_MESSAGES/AU.mo +0 -0
  27. holidays/locale/en_US/LC_MESSAGES/IT.mo +0 -0
  28. holidays/locale/en_US/LC_MESSAGES/TL.mo +0 -0
  29. holidays/locale/hy/LC_MESSAGES/AM.mo +0 -0
  30. holidays/locale/it_IT/LC_MESSAGES/IT.mo +0 -0
  31. holidays/locale/pt_TL/LC_MESSAGES/TL.mo +0 -0
  32. holidays/locale/tet/LC_MESSAGES/TL.mo +0 -0
  33. holidays/locale/th/LC_MESSAGES/AU.mo +0 -0
  34. holidays/locale/th/LC_MESSAGES/TL.mo +0 -0
  35. holidays/observed_holiday_base.py +1 -0
  36. {holidays-0.88.dist-info → holidays-0.90.dist-info}/METADATA +3 -10
  37. {holidays-0.88.dist-info → holidays-0.90.dist-info}/RECORD +41 -41
  38. {holidays-0.88.dist-info → holidays-0.90.dist-info}/WHEEL +1 -1
  39. {holidays-0.88.dist-info → holidays-0.90.dist-info}/licenses/CONTRIBUTORS +3 -0
  40. {holidays-0.88.dist-info → holidays-0.90.dist-info}/licenses/LICENSE +0 -0
  41. {holidays-0.88.dist-info → holidays-0.90.dist-info}/top_level.txt +0 -0
@@ -34,6 +34,7 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
34
34
  * <https://web.archive.org/web/20250414072303/https://www.qld.gov.au/recreation/travel/holidays>
35
35
  * [ACT Holidays Act 1958](https://web.archive.org/web/20250322061953/https://www.legislation.act.gov.au/a/1958-19/)
36
36
  * [ACT 2013-2023](https://web.archive.org/web/20240401072340/https://www.cmtedd.act.gov.au/archived-content/holidays/previous-years)
37
+ * [ACT Holidays (Anzac Day 2026) Declaration 2025 (No 1)](https://web.archive.org/web/20260116225801/https://legislation.act.gov.au/View/ni/2025-650/current/html/2025-650.html)
37
38
  * [NSW Banks and Bank Holidays Act 1912](https://web.archive.org/web/20241107225523/https://legislation.nsw.gov.au/view/html/repealed/current/act-1912-043)
38
39
  * [NSW Public Holidays Act 2010](https://web.archive.org/web/20250316173922/https://legislation.nsw.gov.au/view/html/inforce/current/act-2010-115)
39
40
  * [NT Public Holidays Act 1981](https://web.archive.org/web/20250315072128/https://legislation.nt.gov.au/api/sitecore/Act/PDF?id=12145)
@@ -189,11 +190,14 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
189
190
 
190
191
  # ANZAC Day.
191
192
  # from 1959: SUN - move to MON.
193
+ # in 2026: move to MON.
192
194
 
193
195
  if self._year >= 1921:
194
196
  # ANZAC Day.
195
197
  dt = self._add_anzac_day(tr("ANZAC Day"))
196
- if self._year >= 1959:
198
+ if self._year == 2026:
199
+ self._move_holiday(dt, rule=SAT_SUN_TO_NEXT_MON, show_observed_label=False)
200
+ elif self._year >= 1959:
197
201
  self._move_holiday(dt, rule=SUN_TO_NEXT_MON, show_observed_label=False)
198
202
 
199
203
  # Easter Saturday.
@@ -532,6 +536,14 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
532
536
  elif self._year >= 1984:
533
537
  self._move_holiday(dt, rule=SUN_TO_NEXT_MON, show_observed_label=False)
534
538
 
539
+ def _populate_subdiv_qld_half_day_holidays(self):
540
+ if self._year >= 2019:
541
+ # %s (from 6pm).
542
+ begin_time_label = self.tr("%s (from 6pm)")
543
+
544
+ # Christmas Eve.
545
+ self._add_christmas_eve(begin_time_label % self.tr("Christmas Eve"))
546
+
535
547
  def _populate_subdiv_sa_public_holidays(self):
536
548
  # New Year's Day.
537
549
  # 1984-2003: SAT, SUN - move to MON.
@@ -566,7 +578,7 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
566
578
  self._move_holiday(dt, rule=ALL_TO_NEXT_MON, show_observed_label=False)
567
579
 
568
580
  # Adelaide Cup Day.
569
- # First observed as Public Holidays in 1973: https://racingsa.com.au/blog/2020/03/06/2380/a-little-adelaide-cup-history
581
+ # First observed as Public Holidays in 1973: https://web.archive.org/web/20260122052707/https://www.racingsa.com.au/news/a-little-adelaide-cup-history
570
582
  # 2006-2023: changed each year by SA Government Proclamation from the 3rd Monday in May
571
583
  # to the 2nd Monday in March.
572
584
  # from 2024: changed to the 2nd Monday in March officially.
@@ -30,7 +30,8 @@ class Azerbaijan(ObservedHolidayBase, InternationalHolidays, IslamicHolidays, St
30
30
  References:
31
31
  * <https://en.wikipedia.org/wiki/Public_holidays_in_Azerbaijan>
32
32
  * <https://az.wikipedia.org/wiki/Azərbaycanın_dövlət_bayramları_və_xüsusi_günləri>
33
- * <https://web.archive.org/web/20240615110243/https://sosial.gov.az/en/prod-calendar>
33
+ * <https://web.archive.org/web/20221007162312/https://sosial.gov.az/en/prod-calendar>
34
+ * <https://web.archive.org/web/20251211151027/https://sosial.gov.az/az/faydali/istehsalat-teqvimi>
34
35
  """
35
36
 
36
37
  country = "AZ"
@@ -162,7 +163,7 @@ class Azerbaijan(ObservedHolidayBase, InternationalHolidays, IslamicHolidays, St
162
163
  # 5. If interweekly rest days and holidays that are not considered working days overlap,
163
164
  # that rest day is immediately transferred to the next working day.
164
165
  if self.observed and self._year >= 2006:
165
- self._populate_observed(dts_observed.union(dts_bairami))
166
+ self._populate_observed(dts_observed.union(dts_bairami), multiple=True)
166
167
 
167
168
  bayrami_names = (self.tr("Qurban bayrami"), self.tr("Ramazan bayrami"))
168
169
  # 6. If the holidays of Qurban and Ramadan coincide with another holiday
@@ -206,7 +207,7 @@ class AZE(Azerbaijan):
206
207
 
207
208
 
208
209
  class AzerbaijanIslamicHolidays(_CustomIslamicHolidays):
209
- EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2002, 2025)
210
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2002, 2026)
210
211
  EID_AL_ADHA_DATES = {
211
212
  2002: (FEB, 21),
212
213
  2005: (JAN, 22),
@@ -217,7 +218,7 @@ class AzerbaijanIslamicHolidays(_CustomIslamicHolidays):
217
218
  2019: (AUG, 12),
218
219
  }
219
220
 
220
- EID_AL_FITR_DATES_CONFIRMED_YEARS = (2002, 2025)
221
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2002, 2026)
221
222
  EID_AL_FITR_DATES = {
222
223
  2002: (DEC, 4),
223
224
  2007: (OCT, 12),
@@ -10,6 +10,7 @@
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
16
  from holidays.calendars import _CustomIslamicHolidays
@@ -26,7 +27,12 @@ from holidays.calendars.gregorian import (
26
27
  OCT,
27
28
  NOV,
28
29
  DEC,
30
+ MON,
31
+ TUE,
32
+ WED,
33
+ THU,
29
34
  FRI,
35
+ SAT,
30
36
  SUN,
31
37
  )
32
38
  from holidays.groups import (
@@ -38,13 +44,12 @@ from holidays.groups import (
38
44
  )
39
45
  from holidays.observed_holiday_base import (
40
46
  ObservedHolidayBase,
41
- FRI_TO_NEXT_MON,
42
- FRI_TO_NEXT_SAT,
43
- SUN_TO_NEXT_TUE,
44
- SUN_TO_NEXT_WED,
45
- FRI_SUN_TO_NEXT_SAT_MON,
47
+ ObservedRule,
48
+ FRI_SUN_TO_NEXT_WORKDAY,
46
49
  )
47
50
 
51
+ BN_WORKDAY_TO_NEXT_WORKDAY = ObservedRule({MON: +7, TUE: +7, WED: +7, THU: +7, SAT: +7})
52
+
48
53
 
49
54
  class Brunei(
50
55
  ObservedHolidayBase,
@@ -95,6 +100,7 @@ class Brunei(
95
100
  * <https://web.archive.org/web/20240901140406/https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk04-2022.pdf>
96
101
  * <https://web.archive.org/web/20250428091155/https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk04-2023.pdf>
97
102
  * <https://web.archive.org/web/20241105052917/https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk06-2024.pdf>
103
+ * <https://web.archive.org/web/20260119103509/https://www.jpm.gov.bn/Circulars%20PDF%20Library/jpmsk04-2025.pdf>
98
104
 
99
105
  Checked with:
100
106
  * <https://web.archive.org/web/20250414071145/https://asean.org/wp-content/uploads/2021/12/ASEAN-National-Holidays-2022.pdf>
@@ -113,7 +119,7 @@ class Brunei(
113
119
  observed_estimated_label = tr("%s (diperhatikan, anggaran)")
114
120
  supported_languages = ("en_US", "ms", "th")
115
121
  weekend = {FRI, SUN}
116
- # Available post-Independence from 1984 afterwards
122
+ # Available post-Independence from 1984 afterwards.
117
123
  start_year = 1984
118
124
 
119
125
  def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
@@ -130,131 +136,79 @@ class Brunei(
130
136
  self, cls=BruneiIslamicHolidays, show_estimated=islamic_show_estimated
131
137
  )
132
138
  StaticHolidays.__init__(self, cls=BruneiStaticHolidays)
133
- kwargs.setdefault("observed_rule", FRI_SUN_TO_NEXT_SAT_MON)
139
+ kwargs.setdefault("observed_rule", FRI_SUN_TO_NEXT_WORKDAY)
134
140
  super().__init__(*args, **kwargs)
135
141
 
142
+ def _populate_observed(self, dts: set[date], *, multiple: bool = False) -> None:
143
+ super()._populate_observed(dts, multiple=multiple)
144
+ for dt in sorted(dts):
145
+ if len(self.get_list(dt)) > 1:
146
+ self._add_observed(dt, rule=BN_WORKDAY_TO_NEXT_WORKDAY)
147
+
136
148
  def _populate_public_holidays(self):
137
- # Awal Tahun Masihi
138
- # Status: In-Use.
149
+ dts_observed = set()
139
150
 
140
151
  # New Year's Day.
141
- self._add_observed(self._add_new_years_day(tr("Awal Tahun Masihi")))
142
-
143
- # Tahun Baru Cina
144
- # Status: In-Use.
152
+ dts_observed.add(self._add_new_years_day(tr("Awal Tahun Masihi")))
145
153
 
146
154
  # Lunar New Year.
147
- self._add_observed(self._add_chinese_new_years_day(tr("Tahun Baru Cina")))
155
+ dts_observed.add(self._add_chinese_new_years_day(tr("Tahun Baru Cina")))
148
156
 
149
- # Hari Kebangsaan
150
- # Status: In-Use.
151
157
  # Starts in 1984.
152
158
 
153
159
  # National Day.
154
- self._add_observed(self._add_holiday_feb_23(tr("Hari Kebangsaan")))
160
+ dts_observed.add(self._add_holiday_feb_23(tr("Hari Kebangsaan")))
155
161
 
156
- # Hari Angkatan Bersenjata Diraja Brunei
157
- # Status: In-Use.
158
162
  # Starts in 1984.
159
163
  # Commemorates the formation of Royal Brunei Malay Regiment in 1961.
160
164
 
161
- self._add_observed(
165
+ dts_observed.add(
162
166
  # Armed Forces Day.
163
167
  self._add_holiday_may_31(tr("Hari Angkatan Bersenjata Diraja Brunei"))
164
168
  )
165
169
 
166
- # Hari Keputeraan KDYMM Sultan Brunei
167
- # Status: In-Use.
168
170
  # Started in 1968.
169
171
 
170
- self._add_observed(
172
+ dts_observed.add(
171
173
  # Sultan Hassanal Bolkiah's Birthday.
172
174
  self._add_holiday_jul_15(tr("Hari Keputeraan KDYMM Sultan Brunei"))
173
175
  )
174
176
 
175
- # Hari Natal
176
- # Status: In-Use.
177
-
178
177
  # Christmas Day.
179
- self._add_observed(self._add_christmas_day(tr("Hari Natal")))
178
+ dts_observed.add(self._add_christmas_day(tr("Hari Natal")))
180
179
 
181
- # Islamic Holidays are placed after Gregorian holidays to prevent
182
- # the duplication of observed tags. - see #1168
180
+ # Islamic New Year.
181
+ dts_observed.update(self._add_islamic_new_year_day(tr("Awal Tahun Hijrah")))
183
182
 
184
- # Israk dan Mikraj
185
- # Status: In-Use.
183
+ # Prophet's Birthday.
184
+ dts_observed.update(self._add_mawlid_day(tr("Maulidur Rasul")))
186
185
 
187
186
  # Isra' and Mi'raj.
188
- for dt in self._add_isra_and_miraj_day(tr("Israk dan Mikraj")):
189
- self._add_observed(dt)
190
-
191
- # Hari Pertama Berpuasa
192
- # Status: In-Use.
187
+ dts_observed.update(self._add_isra_and_miraj_day(tr("Israk dan Mikraj")))
193
188
 
194
189
  # First Day of Ramadan.
195
- for dt in self._add_ramadan_beginning_day(tr("Hari Pertama Berpuasa")):
196
- self._add_observed(dt)
197
-
198
- # Hari Nuzul Al-Quran
199
- # Status: In-Use.
190
+ dts_observed.update(self._add_ramadan_beginning_day(tr("Hari Pertama Berpuasa")))
200
191
 
201
192
  # Anniversary of the revelation of the Quran.
202
- for dt in self._add_nuzul_al_quran_day(tr("Hari Nuzul Al-Quran")):
203
- self._add_observed(dt)
193
+ dts_observed.update(self._add_nuzul_al_quran_day(tr("Hari Nuzul Al-Quran")))
204
194
 
205
- # Hari Raya Aidil Fitri
206
- # Status: In-Use.
207
195
  # This is celebrate for three days in Brunei.
208
- # 1: If Wed-Thu-Fri -> Sat (3rd Day +1)
209
- # 2: If Thu-Fri-Sat -> Mon (2nd Day +3)
210
- # 3: If Fri-Sat-Sun -> Mon, Tue (1st Day +3, 3rd day +2)
211
- # 4: If Sat-Sun-Mon -> Tue (2nd Day +2)
212
- # 5: If Sun-Mon-Tue -> Wed (1st Day +3)
213
196
  # Observed as 'Hari Raya Puasa' and only for 2 days prior to 2012.
214
- # 1: If Thu-Fri -> Sat (2nd Day +1)
215
- # 2: If Fri-Sat -> Mon (1nd Day +2)
216
- # 3: If Sat-Sun -> Mon (2nd Day +1)
217
- # 4: If Sun-Mon -> Tue (1st Day +2)
218
197
  # This was only observed for a single day in 2000.
219
198
 
220
199
  # Eid al-Fitr.
221
200
  name = tr("Hari Raya Aidil Fitri")
201
+ dts_observed.update(self._add_eid_al_fitr_day(name))
202
+ if self._year != 2000:
203
+ dts_observed.update(self._add_eid_al_fitr_day_two(name))
222
204
  if self._year >= 2012:
223
- for dt in self._add_eid_al_fitr_day(name):
224
- self._add_observed(dt, rule=FRI_TO_NEXT_MON + SUN_TO_NEXT_WED)
225
- for dt in self._add_eid_al_fitr_day_two(name):
226
- self._add_observed(dt, rule=FRI_TO_NEXT_MON + SUN_TO_NEXT_TUE)
227
- for dt in self._add_eid_al_fitr_day_three(name):
228
- self._add_observed(dt, rule=FRI_TO_NEXT_SAT + SUN_TO_NEXT_TUE)
229
- elif self._year == 2000:
230
- for dt in self._add_eid_al_fitr_day(name):
231
- self._add_observed(dt)
232
- else:
233
- for dt in self._add_eid_al_fitr_day(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_two(name):
236
- self._add_observed(dt)
237
-
238
- # Hari Raya Aidil Adha
239
- # Status: In-Use.
205
+ dts_observed.update(self._add_eid_al_fitr_day_three(name))
240
206
 
241
207
  # Eid al-Adha.
242
- for dt in self._add_eid_al_adha_day(tr("Hari Raya Aidil Adha")):
243
- self._add_observed(dt)
244
-
245
- # Awal Tahun Hijrah
246
- # Status: In-Use.
208
+ dts_observed.update(self._add_eid_al_adha_day(tr("Hari Raya Aidil Adha")))
247
209
 
248
- # Islamic New Year.
249
- for dt in self._add_islamic_new_year_day(tr("Awal Tahun Hijrah")):
250
- self._add_observed(dt)
251
-
252
- # Maulidur Rasul
253
- # Status: In-Use.
254
-
255
- # Prophet's Birthday.
256
- for dt in self._add_mawlid_day(tr("Maulidur Rasul")):
257
- self._add_observed(dt)
210
+ if self.observed:
211
+ self._populate_observed(dts_observed, multiple=True)
258
212
 
259
213
 
260
214
  class BN(Brunei):
@@ -266,7 +220,7 @@ class BRN(Brunei):
266
220
 
267
221
 
268
222
  class BruneiIslamicHolidays(_CustomIslamicHolidays):
269
- EID_AL_ADHA_DATES_CONFIRMED_YEARS = (1998, 2025)
223
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (1998, 2026)
270
224
  EID_AL_ADHA_DATES = {
271
225
  1999: (MAR, 28),
272
226
  2000: (MAR, 17),
@@ -274,7 +228,8 @@ class BruneiIslamicHolidays(_CustomIslamicHolidays):
274
228
  2002: (FEB, 23),
275
229
  2003: (FEB, 12),
276
230
  2004: (FEB, 2),
277
- 2006: ((JAN, 11), (DEC, 31)),
231
+ 2006: (JAN, 11),
232
+ 2007: ((JAN, 1), (DEC, 20)),
278
233
  2014: (OCT, 5),
279
234
  2015: (SEP, 24),
280
235
  2016: (SEP, 12),
@@ -284,7 +239,7 @@ class BruneiIslamicHolidays(_CustomIslamicHolidays):
284
239
  2025: (JUN, 7),
285
240
  }
286
241
 
287
- EID_AL_FITR_DATES_CONFIRMED_YEARS = (1998, 2025)
242
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (1998, 2026)
288
243
  EID_AL_FITR_DATES = {
289
244
  1998: (JAN, 30),
290
245
  1999: (JAN, 19),
@@ -294,9 +249,10 @@ class BruneiIslamicHolidays(_CustomIslamicHolidays):
294
249
  2019: (JUN, 5),
295
250
  2023: (APR, 22),
296
251
  2025: (MAR, 31),
252
+ 2026: (MAR, 21),
297
253
  }
298
254
 
299
- HIJRI_NEW_YEAR_DATES_CONFIRMED_YEARS = (1998, 2025)
255
+ HIJRI_NEW_YEAR_DATES_CONFIRMED_YEARS = (1998, 2026)
300
256
  HIJRI_NEW_YEAR_DATES = {
301
257
  1998: (APR, 28),
302
258
  2004: (FEB, 22),
@@ -306,9 +262,10 @@ class BruneiIslamicHolidays(_CustomIslamicHolidays):
306
262
  2019: (SEP, 1),
307
263
  2021: (AUG, 10),
308
264
  2025: (JUN, 27),
265
+ 2026: (JUN, 17),
309
266
  }
310
267
 
311
- ISRA_AND_MIRAJ_DATES_CONFIRMED_YEARS = (1998, 2025)
268
+ ISRA_AND_MIRAJ_DATES_CONFIRMED_YEARS = (1998, 2026)
312
269
  ISRA_AND_MIRAJ_DATES = {
313
270
  1998: (NOV, 17),
314
271
  1999: (NOV, 6),
@@ -319,9 +276,10 @@ class BruneiIslamicHolidays(_CustomIslamicHolidays):
319
276
  2014: (MAY, 27),
320
277
  2016: (MAY, 5),
321
278
  2018: (APR, 14),
279
+ 2026: (JAN, 17),
322
280
  }
323
281
 
324
- MAWLID_DATES_CONFIRMED_YEARS = (1998, 2025)
282
+ MAWLID_DATES_CONFIRMED_YEARS = (1998, 2026)
325
283
  MAWLID_DATES = {
326
284
  2000: (JUN, 15),
327
285
  2002: (MAY, 25),
@@ -339,7 +297,7 @@ class BruneiIslamicHolidays(_CustomIslamicHolidays):
339
297
  2025: (SEP, 5),
340
298
  }
341
299
 
342
- NUZUL_AL_QURAN_DATES_CONFIRMED_YEARS = (1998, 2025)
300
+ NUZUL_AL_QURAN_DATES_CONFIRMED_YEARS = (1998, 2026)
343
301
  NUZUL_AL_QURAN_DATES = {
344
302
  1998: (JAN, 16),
345
303
  1999: ((JAN, 5), (DEC, 25)),
@@ -355,9 +313,10 @@ class BruneiIslamicHolidays(_CustomIslamicHolidays):
355
313
  2022: (APR, 19),
356
314
  2024: (MAR, 28),
357
315
  2025: (MAR, 18),
316
+ 2026: (MAR, 7),
358
317
  }
359
318
 
360
- RAMADAN_BEGINNING_DATES_CONFIRMED_YEARS = (1998, 2025)
319
+ RAMADAN_BEGINNING_DATES_CONFIRMED_YEARS = (1998, 2026)
361
320
  RAMADAN_BEGINNING_DATES = {
362
321
  1998: (DEC, 20),
363
322
  2001: (NOV, 17),
@@ -371,6 +330,7 @@ class BruneiIslamicHolidays(_CustomIslamicHolidays):
371
330
  2022: (APR, 3),
372
331
  2024: (MAR, 12),
373
332
  2025: (MAR, 2),
333
+ 2026: (FEB, 19),
374
334
  }
375
335
 
376
336
 
@@ -387,13 +347,3 @@ class BruneiStaticHolidays:
387
347
  # Sultan Hassanal Bolkiah's Golden Jubilee celebration.
388
348
  2017: (OCT, 5, tr("Jubli Emas Sultan Hassanal Bolkiah")),
389
349
  }
390
- special_public_holidays_observed = {
391
- # Christmas Day.
392
- 1999: (DEC, 27, tr("Hari Natal")),
393
- # National Day.
394
- 2002: (FEB, 25, tr("Hari Kebangsaan")),
395
- # New Year's Day.
396
- 2007: (JAN, 2, tr("Awal Tahun Masihi")),
397
- # Anniversary of the revelation of the Quran.
398
- 2014: (JUL, 16, tr("Hari Nuzul Al-Quran")),
399
- }
@@ -26,6 +26,8 @@ class Cambodia(HolidayBase, InternationalHolidays, StaticHolidays, ThaiCalendarH
26
26
  * <https://web.archive.org/web/20250401111433/https://www.nbc.gov.kh/news_and_events/official_holiday.php>
27
27
  * <https://en.wikipedia.org/wiki/Public_holidays_in_Cambodia>
28
28
  * <https://web.archive.org/web/20250427180236/https://admin.taftac-cambodia.org/public/pdf_file/regulation_1704245695_Z7IALJjE.pdf>
29
+ * <http://archive.today/2026.01.22-052218/https://www.khmertimeskh.com/501424903/24-public-holidays-for-2024-peace-day-now-included/>
30
+ * <http://archive.today/2026.01.22-051938/https://www.khmertimeskh.com/501551204/govt-announces-22-public-holidays-for-next-year/>
29
31
 
30
32
  Checked with:
31
33
  * <https://web.archive.org/web/20250414071145/https://asean.org/wp-content/uploads/2021/12/ASEAN-National-Holidays-2022.pdf>
@@ -270,8 +272,6 @@ class Cambodia(HolidayBase, InternationalHolidays, StaticHolidays, ThaiCalendarH
270
272
  # ទិវាសន្តិភាពនៅកម្ពុជា
271
273
  # Status: In-Use.
272
274
  # Dec 29, added from 2024 onwards.
273
- # - https://www.khmertimeskh.com/501424903/24-public-holidays-for-2024-peace-day-now-included/
274
- # - https://www.khmertimeskh.com/501551204/govt-announces-22-public-holidays-for-next-year/
275
275
 
276
276
  if self._year >= 2024:
277
277
  # Peace Day in Cambodia.
@@ -23,13 +23,13 @@ class Estonia(HolidayBase, ChristianHolidays, InternationalHolidays):
23
23
  References:
24
24
  * <https://et.wikipedia.org/wiki/Eesti_riigipühad>
25
25
  * <https://en.wikipedia.org/wiki/Public_holidays_in_Estonia>
26
- * [Decree on State Holidays and on Amending the Labour Code of the Estonian SSR (09.10.1990)](https://www.riigiteataja.ee/akt/28395)
27
- * [Holidays and Anniversaries Act (08.02.1994)](https://www.riigiteataja.ee/akt/29913)
28
- * [Public Holidays and Days of National Importance Act (27.01.1998, in force since 23.02.1998)](https://www.riigiteataja.ee/akt/13276841)
26
+ * [Decree on State Holidays and on Amending the Labour Code of the Estonian SSR (09.10.1990)](https://web.archive.org/web/20260117043713/https://www.riigiteataja.ee/akt/28395)
27
+ * [Holidays and Anniversaries Act (08.02.1994)](https://web.archive.org/web/20250122175021/https://www.riigiteataja.ee/akt/29913)
28
+ * [Public Holidays and Days of National Importance Act (27.01.1998, in force since 23.02.1998)](https://web.archive.org/web/20260108041502/https://www.riigiteataja.ee/akt/13276841)
29
29
  * [Act amending § 2 of the Holidays and Anniversaries Act
30
- and § 25 of the Working and Rest Hours Act](https://www.riigiteataja.ee/akt/895511)
31
- * [Working and Rest Hours Act (24.01.2001)](https://www.riigiteataja.ee/akt/72738)
32
- * [Employment Contracts Act (17.12.2008, in force since 01.07.2009)](https://www.riigiteataja.ee/akt/122122012029)
30
+ and § 25 of the Working and Rest Hours Act](https://web.archive.org/web/20250815032316/https://www.riigiteataja.ee/akt/895511)
31
+ * [Working and Rest Hours Act (24.01.2001)](https://web.archive.org/web/20250429084533/https://www.riigiteataja.ee/akt/72738)
32
+ * [Employment Contracts Act (17.12.2008, in force since 01.07.2009)](https://web.archive.org/web/20250520105700/https://www.riigiteataja.ee/akt/122122012029)
33
33
  """
34
34
 
35
35
  country = "EE"
@@ -267,6 +267,9 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
267
267
  def _populate_subdiv_augsburg_public_holidays(self):
268
268
  self._populate_subdiv_by_public_holidays()
269
269
 
270
+ # Assumption Day.
271
+ self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
272
+
270
273
  # Augsburg Peace Festival.
271
274
  self._add_holiday_aug_8(tr("Augsburger Hohes Friedensfest"))
272
275
 
@@ -38,7 +38,7 @@ class India(
38
38
  * <https://web.archive.org/web/20231118175007/http://slusi.dacnet.nic.in/watershedatlas/list_of_state_abbreviation.htm>
39
39
  * <https://web.archive.org/web/20231008063930/https://vahan.parivahan.gov.in/vahan4dashboard/>
40
40
  * Gujarat:
41
- * <https://gad.gujarat.gov.in/personnel/Images/pdf/general_holidays_2026_guj.pdf>
41
+ * <https://web.archive.org/web/20260122052040/https://images-gujarati.indianexpress.com/2025/11/gujarat-government-Year-2026-holiday-list.pdf>
42
42
  * Tamil Nadu:
43
43
  * [Tamil Monthly Calendar](https://web.archive.org/web/20231228103352/https://www.tamildailycalendar.com/tamil_monthly_calendar.php)
44
44
  * [Tamil Calendar](https://web.archive.org/web/20250429125140/https://www.prokerala.com/general/calendar/tamilcalendar.php)
@@ -22,7 +22,7 @@ class Italy(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoliday
22
22
 
23
23
  References:
24
24
  * <https://it.wikipedia.org/wiki/Festività_in_Italia>
25
- * <https://www.normattiva.it>
25
+ * <https://web.archive.org/web/20260115032712/https://www.normattiva.it/>
26
26
  * [Royal Decree 5342 of Oct 17, 1869](https://web.archive.org/web/20240405131328/https://www.gazzettaufficiale.it/eli/gu/1869/11/23/320/sg/pdf)
27
27
  * [Law 1968 of Jun 23, 1874](https://web.archive.org/web/20240101200400/https://www.gazzettaufficiale.it/eli/gu/1874/07/11/164/sg/pdf)
28
28
  * [Law 401 of Jul 19, 1895](https://web.archive.org/web/20240405131313/https://www.gazzettaufficiale.it/eli/gu/1895/07/19/169/sg/pdf)
@@ -45,6 +45,7 @@ class Italy(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoliday
45
45
  * [Law 336 of Nov 20, 2000](https://web.archive.org/web/20230604111415/https://www.gazzettaufficiale.it/eli/gu/2000/11/22/273/sg/pdf)
46
46
  * [Law 151 of Oct 8, 2025](https://web.archive.org/web/20251027040938/https://www.gazzettaufficiale.it/eli/gu/2025/10/10/236/sg/pdf)
47
47
  * [Provinces holidays](https://it.wikipedia.org/wiki/Santi_patroni_cattolici_delle_città_capoluogo_di_provincia_italiane)
48
+ * [Bolzano Province Law 36 of Oct 16, 1992](https://web.archive.org/web/20260121223715/https://www.edizionieuropee.it/LAW/HTML/103/bz2_01_100.html)
48
49
  """
49
50
 
50
51
  country = "IT"
@@ -549,8 +550,10 @@ class Italy(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoliday
549
550
  self._add_holiday_dec_30(tr("San Ruggero"))
550
551
 
551
552
  def _populate_subdiv_bz_public_holidays(self):
552
- # Assumption Day.
553
- self._add_assumption_of_mary_day(tr("Maria Santissima Assunta"))
553
+ # Province Law 36 of Oct 16, 1992.
554
+ if self._year >= 1993:
555
+ # Whit Monday.
556
+ self._add_whit_monday(tr("Lunedì di Pentecoste"))
554
557
 
555
558
  def _populate_subdiv_ca_public_holidays(self):
556
559
  # Saint Saturninus of Cagliari's Day.
@@ -980,13 +983,13 @@ class ItalyStaticHolidays:
980
983
  """Italy special holidays.
981
984
 
982
985
  References:
983
- * [Law 366 of Jun 28, 1907](https://www.gazzettaufficiale.it/eli/gu/1907/06/28/152/sg/pdf)
984
- * [Law 450 of Jul 7, 1910](https://www.gazzettaufficiale.it/eli/gu/1910/07/18/167/sg/pdf)
985
- * [Royal Decree 269 of Mar 11, 1920](https://www.gazzettaufficiale.it/eli/gu/1920/03/19/66/sg/pdf)
986
- * [Royal Decree 1208 of Aug 21, 1921](https://www.gazzettaufficiale.it/eli/gu/1921/09/10/215/sg/pdf)
987
- * [Royal Decree 1207 of Jul 10, 1925](https://www.gazzettaufficiale.it/eli/gu/1925/07/24/170/sg/pdf)
988
- * [Royal Decree-Law 376 of Apr 25, 1938](https://www.gazzettaufficiale.it/eli/gu/1938/04/28/97/sg/pdf)
989
- * [Presidential Legislative Decree 2 of Jun 19, 1946](https://www.normattiva.it/atto/caricaDettaglioAtto?atto.dataPubblicazioneGazzetta=1946-06-20&atto.codiceRedazionale=046U0002&tipoDettaglio=originario&qId=0c1f85e7-d249-4987-966d-d9a4073ef48f)
986
+ * [Law 366 of Jun 28, 1907](https://web.archive.org/web/20251124204309/https://www.gazzettaufficiale.it/eli/gu/1907/06/28/152/sg/pdf)
987
+ * [Law 450 of Jul 7, 1910](https://web.archive.org/web/20251027060106/https://www.gazzettaufficiale.it/eli/gu/1910/07/18/167/sg/pdf)
988
+ * [Royal Decree 269 of Mar 11, 1920](https://web.archive.org/web/20251027093344/https://www.gazzettaufficiale.it/eli/gu/1920/03/19/66/sg/pdf)
989
+ * [Royal Decree 1208 of Aug 21, 1921](https://web.archive.org/web/20260117043612/https://www.gazzettaufficiale.it/eli/gu/1921/09/10/215/sg/pdf)
990
+ * [Royal Decree 1207 of Jul 10, 1925](https://web.archive.org/web/20251027092027/https://www.gazzettaufficiale.it/eli/gu/1925/07/24/170/sg/pdf)
991
+ * [Royal Decree-Law 376 of Apr 25, 1938](https://web.archive.org/web/20251027093701/https://www.gazzettaufficiale.it/eli/gu/1938/04/28/97/sg/pdf)
992
+ * [Presidential Legislative Decree 2 of Jun 19, 1946](https://web.archive.org/web/20251213235623/https://www.normattiva.it/atto/caricaDettaglioAtto?atto.dataPubblicazioneGazzetta=1946-06-20&atto.codiceRedazionale=046U0002&tipoDettaglio=originario&qId=0c1f85e7-d249-4987-966d-d9a4073ef48f)
990
993
  """
991
994
 
992
995
  # Anniversary of the Unification of Italy.
@@ -75,8 +75,9 @@ class Jordan(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolid
75
75
  # Eid al-Fitr.
76
76
  self._add_eid_al_fitr_day(tr("عيد الفطر"))
77
77
  # Eid al-Fitr Holiday.
78
- self._add_eid_al_fitr_day_two(tr("عطلة عيد الفطر"))
79
- self._add_eid_al_fitr_day_three(tr("عطلة عيد الفطر"))
78
+ name = tr("عطلة عيد الفطر")
79
+ self._add_eid_al_fitr_day_two(name)
80
+ self._add_eid_al_fitr_day_three(name)
80
81
 
81
82
  # Arafat Day.
82
83
  self._add_arafah_day(tr("يوم عرفة"))
@@ -84,8 +85,9 @@ class Jordan(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolid
84
85
  # Eid al-Adha.
85
86
  self._add_eid_al_adha_day(tr("عيد الأضحى"))
86
87
  # Eid al-Adha Holiday.
87
- self._add_eid_al_adha_day_two(tr("عطلة عيد الأضحى"))
88
- self._add_eid_al_adha_day_three(tr("عطلة عيد الأضحى"))
88
+ name = tr("عطلة عيد الأضحى")
89
+ self._add_eid_al_adha_day_two(name)
90
+ self._add_eid_al_adha_day_three(name)
89
91
 
90
92
 
91
93
  class JO(Jordan):
@@ -42,10 +42,10 @@ class Kyrgyzstan(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicH
42
42
  # New Year's Day.
43
43
  self._add_new_years_day("New Year's Day")
44
44
 
45
- # Orthodox Christmas.
45
+ # Christmas Day.
46
46
  self._add_christmas_day("Christmas Day")
47
47
 
48
- # Feb. 23 Fatherland Defender's Day.
48
+ # Fatherland Defender's Day.
49
49
  self._add_holiday_feb_23("Fatherland Defender's Day")
50
50
 
51
51
  # International Women's Day.
@@ -79,6 +79,7 @@ class Kyrgyzstan(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicH
79
79
  self._add_new_years_eve("New Year's Eve")
80
80
 
81
81
  # Islamic Holidays.
82
+
82
83
  # Orozo Ait.
83
84
  name = "Orozo Ait"
84
85
  self._add_eid_al_fitr_day(name)
@@ -30,10 +30,12 @@ class Laos(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiCalen
30
30
  * <https://web.archive.org/web/20250414071145/https://asean.org/wp-content/uploads/2021/12/ASEAN-National-Holidays-2022.pdf>
31
31
  * <https://web.archive.org/web/20250414071156/https://asean.org/wp-content/uploads/2022/12/ASEAN-Public-Holidays-2023.pdf>
32
32
  * <https://web.archive.org/web/20250414071331/https://www.timeanddate.com/holidays/laos/>
33
- * <https://web.archive.org/web/20250414071244/https://www.bcel.com.la/bcel/bcel-calendar.html?y=2022>
34
- * <https://web.archive.org/web/20250414071349/https://www.bcel.com.la/bcel/bcel-calendar.html?y=2023>
35
- * <https://web.archive.org/web/20250414071245/https://www.bcel.com.la/bcel/bcel-calendar.html?y=2024>
36
- * <http://www.lsx.com.la/cal/getStockCalendar.do?lang=lo> (from 2011 onwards)
33
+ * [2022](https://web.archive.org/web/20250414071244/https://www.bcel.com.la/bcel/bcel-calendar.html?y=2022)
34
+ * [2023](https://web.archive.org/web/20250414071349/https://www.bcel.com.la/bcel/bcel-calendar.html?y=2023)
35
+ * [2024](https://web.archive.org/web/20250414071245/https://www.bcel.com.la/bcel/bcel-calendar.html?y=2024)
36
+ * [2025](https://web.archive.org/web/20260122075248/https://www.bcel.com.la/bcel/bcel-calendar.html?y=2025)
37
+ * [2026](https://web.archive.org/web/20260122075256/https://www.bcel.com.la/bcel/bcel-calendar.html?y=2026)
38
+ * [Lao Securities eXchange (from 2011 onwards)](https://web.archive.org/web/20260122074030/http://lsx.com.la/en/about/holiday]
37
39
 
38
40
  !!! note "If Public Holiday falls on weekends, (in lieu) on workday"
39
41
  Despite the wording, this usually only applies to Monday only for holidays,
@@ -18,7 +18,7 @@ class Liberia(HolidayBase, ChristianHolidays, InternationalHolidays):
18
18
  """Liberia holidays.
19
19
 
20
20
  References:
21
- * [Patriotic and Cultural Observances Law 1956](http://www.liberlii.org/lr/legis/codes/pacolt25lcolr654/)
21
+ * [Patriotic and Cultural Observances Law 1956](http://archive.today/2026.01.22-053103/http://www.liberlii.org/lr/legis/codes/pacolt25lcolr654/)
22
22
 
23
23
  Inauguration Day is celebrated on the first Monday of January in the year after the
24
24
  Presidential elections.
@@ -23,7 +23,7 @@ class Moldova(HolidayBase, ChristianHolidays, InternationalHolidays):
23
23
 
24
24
  References:
25
25
  * <https://en.wikipedia.org/wiki/Public_holidays_in_Moldova>
26
- * <https://www.legis.md/cautare/getResults?doc_id=133686>
26
+ * <https://archive.org/details/httpswww.legis.mdcautaregetresultsdoc_id133686langro>
27
27
  """
28
28
 
29
29
  country = "MD"
@@ -96,8 +96,8 @@ class QAT(Qatar):
96
96
 
97
97
 
98
98
  class QatarIslamicHolidays(_CustomIslamicHolidays):
99
- # https://web.archive.org/web/20250422212912/https://www.timeanddate.com/holidays/qatar/eid-al-adha
100
- EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2005, 2024)
99
+ # https://web.archive.org/web/20260107122007/https://www.timeanddate.com/holidays/qatar/eid-al-adha
100
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2005, 2025)
101
101
  EID_AL_ADHA_DATES = {
102
102
  2008: (DEC, 9),
103
103
  2009: (NOV, 28),
@@ -126,8 +126,7 @@ class QatarStaticHolidays:
126
126
  * [New Year's Holiday](https://web.archive.org/web/20250119073018/https://www.expatica.com/qa/lifestyle/holidays/qatar-public-holidays-74585/)
127
127
  """
128
128
 
129
- # New Year's Holiday.
130
- name = tr("عطلة رأس السنة")
131
129
  special_public_holidays = {
132
- 2025: (JAN, 2, name),
130
+ # New Year's Holiday.
131
+ 2025: (JAN, 2, tr("عطلة رأس السنة")),
133
132
  }
@@ -46,7 +46,7 @@ class Sudan(HolidayBase, ChristianHolidays, IslamicHolidays):
46
46
 
47
47
  def _get_weekend(self, dt: date) -> set[int]:
48
48
  # The resting days are Friday and Saturday since January 26th, 2008.
49
- # https://sudantribune.com/article25544/
49
+ # https://sudantribune.com/article/25544
50
50
  return {FRI, SAT} if dt >= date(2008, JAN, 26) else {FRI}
51
51
 
52
52
  def _populate_public_holidays(self):
@@ -37,7 +37,7 @@ class Sweden(HolidayBase, ChristianHolidays, InternationalHolidays):
37
37
  * <https://sv.wikipedia.org/wiki/Sveriges_nationaldag>
38
38
  * <https://sv.wikipedia.org/wiki/Midsommarafton>
39
39
  * [Bank Holidays 2025](https://web.archive.org/web/20250811112642/https://www.riksbank.se/sv/press-och-publicerat/kalender/helgdagar-2025/)
40
- * [Swedish Annual Leave Law (SFS 1977:480)](https://www.riksdagen.se/sv/dokument-och-lagar/dokument/svensk-forfattningssamling/semesterlag-1977480_sfs-1977-480/)
40
+ * [Swedish Annual Leave Law (SFS 1977:480)](https://web.archive.org/web/20260106114757/https://www.riksdagen.se/sv/dokument-och-lagar/dokument/svensk-forfattningssamling/semesterlag-1977480_sfs-1977-480/)
41
41
 
42
42
  In Sweden, ALL sundays are considered a holiday.
43
43
  Initialize this class with `include_sundays=False` to not include sundays as a holiday.