holidays 0.82__py3-none-any.whl → 0.83__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 (71) hide show
  1. holidays/calendars/islamic.py +26 -6
  2. holidays/countries/__init__.py +1 -0
  3. holidays/countries/azerbaijan.py +1 -1
  4. holidays/countries/canada.py +27 -13
  5. holidays/countries/denmark.py +18 -6
  6. holidays/countries/fiji.py +2 -3
  7. holidays/countries/finland.py +3 -6
  8. holidays/countries/guyana.py +24 -32
  9. holidays/countries/india.py +21 -78
  10. holidays/countries/iran.py +133 -269
  11. holidays/countries/ireland.py +1 -1
  12. holidays/countries/israel.py +1 -1
  13. holidays/countries/macau.py +5 -8
  14. holidays/countries/mauritius.py +10 -9
  15. holidays/countries/montserrat.py +1 -1
  16. holidays/countries/myanmar.py +9 -10
  17. holidays/countries/nepal.py +11 -30
  18. holidays/countries/netherlands.py +28 -24
  19. holidays/countries/new_zealand.py +75 -31
  20. holidays/countries/nigeria.py +53 -75
  21. holidays/countries/norway.py +1 -1
  22. holidays/countries/rwanda.py +2 -2
  23. holidays/countries/slovakia.py +23 -4
  24. holidays/countries/sri_lanka.py +21 -58
  25. holidays/countries/suriname.py +1 -2
  26. holidays/countries/sweden.py +1 -1
  27. holidays/countries/switzerland.py +86 -3
  28. holidays/countries/taiwan.py +1 -1
  29. holidays/countries/tanzania.py +19 -29
  30. holidays/countries/thailand.py +8 -7
  31. holidays/countries/trinidad_and_tobago.py +1 -1
  32. holidays/countries/ukraine.py +1 -1
  33. holidays/countries/united_kingdom.py +1 -1
  34. holidays/countries/united_states.py +2 -2
  35. holidays/countries/western_sahara.py +92 -0
  36. holidays/groups/buddhist.py +2 -2
  37. holidays/groups/chinese.py +5 -2
  38. holidays/groups/christian.py +10 -0
  39. holidays/groups/eastern.py +3 -1
  40. holidays/groups/hindu.py +9 -3
  41. holidays/groups/international.py +1 -1
  42. holidays/groups/islamic.py +10 -3
  43. holidays/groups/mongolian.py +5 -2
  44. holidays/groups/sinhala.py +6 -3
  45. holidays/groups/tibetan.py +5 -2
  46. holidays/holiday_base.py +21 -22
  47. holidays/locale/ar/LC_MESSAGES/EH.mo +0 -0
  48. holidays/locale/de/LC_MESSAGES/CH.mo +0 -0
  49. holidays/locale/en_US/LC_MESSAGES/CH.mo +0 -0
  50. holidays/locale/en_US/LC_MESSAGES/EH.mo +0 -0
  51. holidays/locale/en_US/LC_MESSAGES/NL.mo +0 -0
  52. holidays/locale/es/LC_MESSAGES/EH.mo +0 -0
  53. holidays/locale/fr/LC_MESSAGES/CH.mo +0 -0
  54. holidays/locale/fr/LC_MESSAGES/EH.mo +0 -0
  55. holidays/locale/fy/LC_MESSAGES/NL.mo +0 -0
  56. holidays/locale/it/LC_MESSAGES/CH.mo +0 -0
  57. holidays/locale/nl/LC_MESSAGES/NL.mo +0 -0
  58. holidays/locale/th/LC_MESSAGES/CH.mo +0 -0
  59. holidays/locale/th/LC_MESSAGES/DK.mo +0 -0
  60. holidays/locale/th/LC_MESSAGES/NL.mo +0 -0
  61. holidays/locale/uk/LC_MESSAGES/CH.mo +0 -0
  62. holidays/locale/uk/LC_MESSAGES/NL.mo +0 -0
  63. holidays/observed_holiday_base.py +16 -4
  64. holidays/registry.py +2 -0
  65. holidays/version.py +1 -1
  66. {holidays-0.82.dist-info → holidays-0.83.dist-info}/METADATA +18 -16
  67. {holidays-0.82.dist-info → holidays-0.83.dist-info}/RECORD +71 -63
  68. {holidays-0.82.dist-info → holidays-0.83.dist-info}/WHEEL +0 -0
  69. {holidays-0.82.dist-info → holidays-0.83.dist-info}/licenses/CONTRIBUTORS +0 -0
  70. {holidays-0.82.dist-info → holidays-0.83.dist-info}/licenses/LICENSE +0 -0
  71. {holidays-0.82.dist-info → holidays-0.83.dist-info}/top_level.txt +0 -0
@@ -11,7 +11,7 @@
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
13
  from holidays.calendars import _CustomIslamicHolidays, _CustomHinduHolidays
14
- from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV
14
+ from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, AUG, SEP, OCT, NOV
15
15
  from holidays.constants import PUBLIC, WORKDAY
16
16
  from holidays.groups import (
17
17
  ChristianHolidays,
@@ -58,17 +58,23 @@ class Nepal(
58
58
  islamic_show_estimated:
59
59
  Whether to add "estimated" label to Islamic holidays name
60
60
  if holiday date is estimated.
61
+
62
+ In Nepal, the dates of the Islamic calendar usually fall a day later than
63
+ the corresponding dates in the Umm al-Qura calendar.
61
64
  """
62
65
  ChristianHolidays.__init__(self)
63
66
  HinduCalendarHolidays.__init__(self, cls=NepalHinduHolidays)
64
67
  InternationalHolidays.__init__(self)
65
68
  IslamicHolidays.__init__(
66
- self, cls=NepalIslamicHolidays, show_estimated=islamic_show_estimated
69
+ self,
70
+ cls=NepalIslamicHolidays,
71
+ show_estimated=islamic_show_estimated,
72
+ calendar_delta_days=+1,
67
73
  )
68
74
  StaticHolidays.__init__(self, cls=NepalStaticHolidays)
69
75
  super().__init__(*args, **kwargs)
70
76
 
71
- def _add_non_continuous_holidays(self, is_workday: bool = False):
77
+ def _add_non_continuous_holidays(self, *, is_workday: bool = False):
72
78
  """Holidays removed by MoHA between 2019-2020."""
73
79
  if (2019 <= self._year <= 2020) == is_workday:
74
80
  martyrs_day_dates = {
@@ -367,40 +373,15 @@ class NepalHinduHolidays(_CustomHinduHolidays):
367
373
  class NepalIslamicHolidays(_CustomIslamicHolidays):
368
374
  EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2010, 2025)
369
375
  EID_AL_ADHA_DATES = {
370
- 2010: (NOV, 17),
371
- 2011: (NOV, 7),
372
- 2012: (OCT, 27),
373
- 2013: (OCT, 16),
374
376
  2014: (OCT, 6),
375
377
  2015: (SEP, 25),
376
378
  2016: (SEP, 13),
377
- 2017: (SEP, 2),
378
- 2018: (AUG, 22),
379
- 2019: (AUG, 12),
380
- 2020: (AUG, 1),
381
- 2021: (JUL, 21),
382
- 2022: (JUL, 10),
383
- 2023: (JUN, 29),
384
- 2024: (JUN, 17),
385
- 2025: (JUN, 7),
386
379
  }
387
380
 
388
381
  EID_AL_FITR_DATES_CONFIRMED_YEARS = (2010, 2025)
389
382
  EID_AL_FITR_DATES = {
390
- 2011: (AUG, 31),
391
- 2012: (AUG, 20),
392
- 2014: (JUL, 29),
393
- 2015: (JUL, 18),
394
- 2016: (JUL, 7),
395
- 2017: (JUN, 26),
396
- 2018: (JUN, 16),
397
- 2019: (JUN, 5),
398
- 2020: (MAY, 25),
399
- 2021: (MAY, 14),
400
- 2022: (MAY, 3),
401
- 2023: (APR, 22),
402
- 2024: (APR, 11),
403
- 2025: (MAR, 31),
383
+ 2010: (SEP, 10),
384
+ 2013: (AUG, 8),
404
385
  }
405
386
 
406
387
 
@@ -20,17 +20,25 @@ from holidays.observed_holiday_base import ObservedHolidayBase, SUN_TO_PREV_SAT,
20
20
  class Netherlands(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
21
21
  """Netherlands holidays.
22
22
 
23
+ Easter Sunday and Whit Sunday are always on Sunday and are therefore not mentioned separately
24
+ in the Algemene termijnenwet (Atw).
25
+
23
26
  References:
24
27
  * <https://en.wikipedia.org/wiki/Public_holidays_in_the_Netherlands>
25
28
  * <https://nl.wikipedia.org/wiki/Feestdagen_in_Nederland>
26
- * <https://web.archive.org/web/20250427131819/https://www.iamsterdam.com/en/plan-your-trip/practical-info/public-holidays>
29
+ * <https://nl.wikipedia.org/wiki/Algemene_termijnenwet>
30
+ * <https://web.archive.org/web/20251015082530/https://business.gov.nl/regulation/holiday-entitlement/>
31
+ * <https://web.archive.org/save/https://wetten.overheid.nl/BWBR0002448/2010-10-10>
32
+ * <https://web.archive.org/web/20250123145153/https://repository.overheid.nl/frbr/sgd/19811982/0000151909/1/pdf/SGD_19811982_0002862.pdf>
33
+ * <https://web.archive.org/web/20251015082056/https://www.facebook.com/photo.php?fbid=5357926707591435&id=190259871024837&set=a.342400825810740>
27
34
  """
28
35
 
29
36
  country = "NL"
30
37
  default_language = "nl"
31
38
  supported_categories = (OPTIONAL, PUBLIC)
32
- supported_languages = ("en_US", "fy", "nl", "uk")
33
- start_year = 1801
39
+ supported_languages = ("en_US", "fy", "nl", "th", "uk")
40
+ # Algemene termijnenwet (Atw) entered into force on April 1st, 1965.
41
+ start_year = 1966
34
42
 
35
43
  def __init__(self, *args, **kwargs):
36
44
  ChristianHolidays.__init__(self)
@@ -42,29 +50,28 @@ class Netherlands(ObservedHolidayBase, ChristianHolidays, InternationalHolidays)
42
50
  # New Year's Day.
43
51
  self._add_new_years_day(tr("Nieuwjaarsdag"))
44
52
 
53
+ # Good Friday.
54
+ self._add_good_friday(tr("Goede Vrijdag"))
55
+
45
56
  # Easter Sunday.
46
57
  self._add_easter_sunday(tr("Eerste paasdag"))
47
58
 
48
59
  # Easter Monday.
49
60
  self._add_easter_monday(tr("Tweede paasdag"))
50
61
 
51
- if self._year >= 1891:
52
- name = (
53
- # King's Day.
54
- tr("Koningsdag")
55
- if self._year >= 2014
56
- # Queen's Day.
57
- else tr("Koninginnedag")
58
- )
59
- if self._year >= 2014:
60
- dt = self._add_holiday_apr_27(name)
61
- elif self._year >= 1949:
62
- dt = self._add_holiday_apr_30(name)
63
- else:
64
- dt = self._add_holiday_aug_31(name)
65
- self._move_holiday(dt, rule=SUN_TO_PREV_SAT if self._year >= 1980 else SUN_TO_NEXT_MON)
66
-
67
- if self._year >= 1950 and self._year % 5 == 0:
62
+ self._move_holiday(
63
+ # King's Day.
64
+ self._add_holiday_apr_27(tr("Koningsdag"))
65
+ if self._year >= 2014
66
+ # Queen's Day.
67
+ else self._add_holiday_apr_30(tr("Koninginnedag")),
68
+ rule=SUN_TO_PREV_SAT if self._year >= 1980 else SUN_TO_NEXT_MON,
69
+ )
70
+
71
+ # Officially adopted as an annual national holiday in the Atw on January 5th, 1982.
72
+ # In practice, many collective labor agreements (CAOs) stipulate that May 5th is
73
+ # a day off only once every five years (e.g., 2030, 2035, etc.).
74
+ if self._year % 5 == 0:
68
75
  # Liberation Day.
69
76
  self._add_holiday_may_5(tr("Bevrijdingsdag"))
70
77
 
@@ -84,10 +91,7 @@ class Netherlands(ObservedHolidayBase, ChristianHolidays, InternationalHolidays)
84
91
  self._add_christmas_day_two(tr("Tweede Kerstdag"))
85
92
 
86
93
  def _populate_optional_holidays(self):
87
- # Good Friday.
88
- self._add_good_friday(tr("Goede Vrijdag"))
89
-
90
- if self._year >= 1990:
94
+ if self._year >= 1982:
91
95
  # Liberation Day.
92
96
  self._add_holiday_may_5(tr("Bevrijdingsdag"))
93
97
 
@@ -11,9 +11,8 @@
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
13
  from datetime import date
14
- from typing import Optional
15
14
 
16
- from holidays.calendars.gregorian import JAN, FEB, MAR, JUN, JUL, SEP, NOV, DEC, _timedelta
15
+ from holidays.calendars.gregorian import MAR, JUN, JUL, SEP, _timedelta
17
16
  from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
18
17
  from holidays.observed_holiday_base import (
19
18
  ObservedHolidayBase,
@@ -27,6 +26,7 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
27
26
  """New Zealand holidays."""
28
27
 
29
28
  country = "NZ"
29
+ # %s (observed).
30
30
  observed_label = "%s (observed)"
31
31
  start_year = 1894
32
32
  subdivisions = (
@@ -123,9 +123,6 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
123
123
  kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_MON)
124
124
  super().__init__(*args, **kwargs)
125
125
 
126
- def _get_nearest_monday(self, *args) -> Optional[date]:
127
- return self._get_observed_date(date(self._year, *args), rule=ALL_TO_NEAREST_MON)
128
-
129
126
  def _populate_public_holidays(self):
130
127
  # Bank Holidays Act 1873
131
128
  # The Employment of Females Act 1873
@@ -138,32 +135,46 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
138
135
  # Sovereign's Birthday Observance Act 1937, 1952
139
136
  # Holidays Act 1981, 2003
140
137
 
141
- # New Year's Day
138
+ # New Year's Day.
142
139
  self._add_observed(self._add_new_years_day("New Year's Day"), rule=SAT_SUN_TO_NEXT_MON_TUE)
143
140
  self._add_observed(
144
- self._add_new_years_day_two("Day after New Year's Day"), rule=SAT_SUN_TO_NEXT_MON_TUE
141
+ # Day after New Year's Day.
142
+ self._add_new_years_day_two("Day after New Year's Day"),
143
+ rule=SAT_SUN_TO_NEXT_MON_TUE,
145
144
  )
146
145
 
147
- # Waitangi Day
148
146
  if self._year >= 1974:
149
- name = "Waitangi Day" if self._year >= 1977 else "New Zealand Day"
150
- feb_6 = self._add_holiday_feb_6(name)
147
+ feb_6 = self._add_holiday_feb_6(
148
+ # Waitangi Day.
149
+ "Waitangi Day"
150
+ if self._year >= 1977
151
+ # New Zealand Day.
152
+ else "New Zealand Day"
153
+ )
151
154
  if self._year >= 2014:
152
155
  self._add_observed(feb_6)
153
156
 
154
- # Anzac Day
155
157
  if self._year >= 1921:
158
+ # Anzac Day.
156
159
  apr_25 = self._add_anzac_day("Anzac Day")
157
160
  if self._year >= 2014:
158
161
  self._add_observed(apr_25)
159
162
 
160
- # Easter
163
+ # Good Friday.
161
164
  self._add_good_friday("Good Friday")
165
+
166
+ # Easter Monday.
162
167
  self._add_easter_monday("Easter Monday")
163
168
 
164
169
  # Sovereign's Birthday
165
170
  if self._year >= 1902:
166
- name = "Queen's Birthday" if 1952 <= self._year <= 2022 else "King's Birthday"
171
+ name = (
172
+ # Queen's Birthday.
173
+ "Queen's Birthday"
174
+ if 1952 <= self._year <= 2022
175
+ # King's Birthday.
176
+ else "King's Birthday"
177
+ )
167
178
  if self._year == 1952:
168
179
  self._add_holiday_jun_2(name) # Elizabeth II
169
180
  elif self._year >= 1938:
@@ -213,20 +224,21 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
213
224
  2052: (JUN, 21),
214
225
  }
215
226
  if dt := dates_obs.get(self._year):
227
+ # Matariki.
216
228
  self._add_holiday("Matariki", dt)
217
229
 
218
- # Labour Day
219
230
  if self._year >= 1900:
231
+ # Labour Day.
220
232
  name = "Labour Day"
221
233
  if self._year >= 1910:
222
234
  self._add_holiday_4th_mon_of_oct(name)
223
235
  else:
224
236
  self._add_holiday_2nd_wed_of_oct(name)
225
237
 
226
- # Christmas Day
238
+ # Christmas Day.
227
239
  self._add_observed(self._add_christmas_day("Christmas Day"), rule=SAT_SUN_TO_NEXT_MON_TUE)
228
240
 
229
- # Boxing Day
241
+ # Boxing Day.
230
242
  self._add_observed(self._add_christmas_day_two("Boxing Day"), rule=SAT_SUN_TO_NEXT_MON_TUE)
231
243
 
232
244
  if self.subdiv == "New Plymouth":
@@ -237,59 +249,90 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
237
249
  self._populate_subdiv_wtc_public_holidays()
238
250
 
239
251
  def _populate_subdiv_auk_public_holidays(self):
240
- self._add_holiday("Auckland Anniversary Day", self._get_nearest_monday(JAN, 29))
252
+ self._move_holiday_forced(
253
+ # Auckland Anniversary Day.
254
+ self._add_holiday_jan_29("Auckland Anniversary Day"),
255
+ rule=ALL_TO_NEAREST_MON,
256
+ )
241
257
 
242
258
  def _populate_subdiv_can_public_holidays(self):
259
+ # Canterbury Anniversary Day.
243
260
  self._add_holiday_10_days_past_1st_tue_of_nov("Canterbury Anniversary Day")
244
261
 
245
262
  def _populate_subdiv_cit_public_holidays(self):
246
- self._add_holiday("Chatham Islands Anniversary Day", self._get_nearest_monday(NOV, 30))
263
+ self._move_holiday_forced(
264
+ # Chatham Islands Anniversary Day.
265
+ self._add_holiday_nov_30("Chatham Islands Anniversary Day"),
266
+ rule=ALL_TO_NEAREST_MON,
267
+ )
247
268
 
248
269
  def _populate_subdiv_hkb_public_holidays(self):
270
+ # Hawke's Bay Anniversary Day.
249
271
  self._add_holiday_3_days_prior_4th_mon_of_oct("Hawke's Bay Anniversary Day")
250
272
 
251
273
  def _populate_subdiv_mbh_public_holidays(self):
274
+ # Marlborough Anniversary Day.
252
275
  self._add_holiday_7_days_past_4th_mon_of_oct("Marlborough Anniversary Day")
253
276
 
254
277
  def _populate_subdiv_nsn_public_holidays(self):
255
- self._add_holiday("Nelson Anniversary Day", self._get_nearest_monday(FEB, 1))
278
+ self._move_holiday_forced(
279
+ # Nelson Anniversary Day.
280
+ self._add_holiday_feb_1("Nelson Anniversary Day"),
281
+ rule=ALL_TO_NEAREST_MON,
282
+ )
256
283
 
257
284
  def _populate_subdiv_ntl_public_holidays(self):
258
285
  if 1964 <= self._year <= 1973:
259
- self._add_holiday("Waitangi Day", self._get_nearest_monday(FEB, 6))
286
+ self._move_holiday_forced(
287
+ # Waitangi Day.
288
+ self._add_holiday_feb_6("Waitangi Day"),
289
+ rule=ALL_TO_NEAREST_MON,
290
+ )
260
291
  else:
261
- self._add_holiday("Auckland Anniversary Day", self._get_nearest_monday(JAN, 29))
292
+ self._move_holiday_forced(
293
+ # Auckland Anniversary Day.
294
+ self._add_holiday_jan_29("Auckland Anniversary Day"),
295
+ rule=ALL_TO_NEAREST_MON,
296
+ )
262
297
 
263
298
  def _populate_subdiv_ota_public_holidays(self):
264
299
  # there is no easily determined single day of local observance?!?!
265
- dt = self._get_nearest_monday(MAR, 23)
266
- if dt == _timedelta(self._easter_sunday, +1): # Avoid Easter Monday
300
+ # If Easter Monday, observed on Easter Tuesday instead.
301
+ dt = self._get_observed_date(date(self._year, MAR, 23), rule=ALL_TO_NEAREST_MON)
302
+ if dt == _timedelta(self._easter_sunday, +1):
267
303
  dt = _timedelta(dt, +1)
304
+ # Otago Anniversary Day.
268
305
  self._add_holiday("Otago Anniversary Day", dt)
269
306
 
270
307
  def _populate_subdiv_stc_public_holidays(self):
271
308
  self._add_holiday_4th_mon_of_sep("South Canterbury Anniversary Day")
272
309
 
273
310
  def _populate_subdiv_stl_public_holidays(self):
311
+ # Southland Anniversary Day.
274
312
  name = "Southland Anniversary Day"
275
313
  if self._year >= 2012:
276
314
  self._add_easter_tuesday(name)
277
315
  else:
278
- self._add_holiday(name, self._get_nearest_monday(JAN, 17))
316
+ self._move_holiday_forced(self._add_holiday_jan_17(name), rule=ALL_TO_NEAREST_MON)
279
317
 
280
318
  def _populate_subdiv_tki_public_holidays(self):
319
+ # Taranaki Anniversary Day.
281
320
  self._add_holiday_2nd_mon_of_mar("Taranaki Anniversary Day")
282
321
 
283
322
  def _populate_subdiv_wgn_public_holidays(self):
284
- self._add_holiday("Wellington Anniversary Day", self._get_nearest_monday(JAN, 22))
323
+ self._move_holiday_forced(
324
+ # Wellington Anniversary Day.
325
+ self._add_holiday_jan_22("Wellington Anniversary Day"),
326
+ rule=ALL_TO_NEAREST_MON,
327
+ )
285
328
 
286
329
  def _populate_subdiv_wtc_public_holidays(self):
287
- dt = (
288
- date(self._year, DEC, 5)
289
- if self._year == 2005 # special case?!?!
290
- else self._get_nearest_monday(DEC, 1)
291
- )
292
- self._add_holiday("West Coast Anniversary Day", dt)
330
+ # West Coast Anniversary Day.
331
+ name = "West Coast Anniversary Day"
332
+ if self._year == 2005:
333
+ self._add_holiday_dec_5(name)
334
+ else:
335
+ self._move_holiday_forced(self._add_holiday_dec_1(name), rule=ALL_TO_NEAREST_MON)
293
336
 
294
337
 
295
338
  class NZ(NewZealand):
@@ -302,5 +345,6 @@ class NZL(NewZealand):
302
345
 
303
346
  class NewZelandStaticHolidays:
304
347
  special_public_holidays = {
348
+ # Queen Elizabeth II Memorial Day.
305
349
  2022: (SEP, 26, "Queen Elizabeth II Memorial Day"),
306
350
  }
@@ -64,11 +64,17 @@ class Nigeria(
64
64
  islamic_show_estimated:
65
65
  Whether to add "estimated" label to Islamic holidays name
66
66
  if holiday date is estimated.
67
+
68
+ In Nigeria, the dates of the Islamic calendar usually fall a day later than
69
+ the corresponding dates in the Umm al-Qura calendar.
67
70
  """
68
71
  ChristianHolidays.__init__(self)
69
72
  InternationalHolidays.__init__(self)
70
73
  IslamicHolidays.__init__(
71
- self, cls=NigeriaIslamicHolidays, show_estimated=islamic_show_estimated
74
+ self,
75
+ cls=NigeriaIslamicHolidays,
76
+ show_estimated=islamic_show_estimated,
77
+ calendar_delta_days=+1,
72
78
  )
73
79
  StaticHolidays.__init__(self, NigeriaStaticHolidays)
74
80
  kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_WORKDAY)
@@ -147,112 +153,84 @@ class NigeriaIslamicHolidays(_CustomIslamicHolidays):
147
153
  # https://web.archive.org/web/20250829051803/https://www.timeanddate.com/holidays/nigeria/id-el-kabir
148
154
  EID_AL_ADHA_DATES_CONFIRMED_YEARS = (1979, 2025)
149
155
  EID_AL_ADHA_DATES = {
150
- 1979: (NOV, 1),
151
- 1980: (OCT, 20),
152
- 1981: (OCT, 9),
153
156
  1982: (SEP, 29),
154
- 1983: (SEP, 18),
155
- 1984: (SEP, 6),
156
- 1985: (AUG, 27),
157
- 1986: (AUG, 16),
158
157
  1987: (AUG, 6),
159
158
  1988: (JUL, 25),
160
- 1989: (JUL, 14),
161
159
  1990: (JUL, 4),
162
- 1991: (JUN, 23),
163
- 1993: (JUN, 1),
164
- 1994: (MAY, 21),
165
- 1995: (MAY, 10),
160
+ 1992: (JUN, 11),
166
161
  1996: (APR, 29),
167
- 1997: (APR, 18),
168
- 1998: (APR, 8),
169
- 1999: (MAR, 28),
170
- 2001: (MAR, 6),
171
- 2002: (FEB, 23),
172
- 2003: (FEB, 12),
173
- 2004: (FEB, 2),
162
+ 2000: (MAR, 16),
163
+ 2005: (JAN, 21),
164
+ 2006: ((JAN, 10), (DEC, 31)),
174
165
  2007: (DEC, 19),
175
- 2008: (DEC, 9),
176
- 2009: (NOV, 28),
177
- 2010: (NOV, 17),
178
- 2011: (NOV, 7),
166
+ 2012: (OCT, 26),
167
+ 2013: (OCT, 15),
179
168
  2014: (OCT, 6),
180
- 2015: (SEP, 24),
181
- 2016: (SEP, 12),
182
- 2017: (SEP, 2),
183
- 2018: (AUG, 22),
184
- 2019: (AUG, 12),
169
+ 2020: (JUL, 31),
170
+ 2021: (JUL, 20),
171
+ 2022: (JUL, 9),
172
+ 2023: (JUN, 28),
173
+ 2024: (JUN, 16),
174
+ 2025: (JUN, 6),
185
175
  }
186
176
 
187
177
  # https://web.archive.org/web/20250829052410/https://www.timeanddate.com/holidays/nigeria/id-el-fitr
188
178
  EID_AL_FITR_DATES_CONFIRMED_YEARS = (1979, 2025)
189
179
  EID_AL_FITR_DATES = {
190
180
  1979: (AUG, 25),
191
- 1980: (AUG, 13),
192
- 1981: (AUG, 2),
193
181
  1982: (JUL, 23),
194
- 1983: (JUL, 12),
195
- 1985: (JUN, 20),
196
- 1986: (JUN, 9),
182
+ 1984: (JUN, 30),
197
183
  1987: (MAY, 30),
198
184
  1988: (MAY, 18),
199
- 1989: (MAY, 7),
200
- 1990: (APR, 27),
201
- 1991: (APR, 16),
202
- 1993: (MAR, 25),
203
- 1994: (MAR, 14),
204
- 1995: (MAR, 3),
185
+ 1992: (APR, 4),
205
186
  1996: (FEB, 21),
206
- 1997: (FEB, 9),
207
- 1998: (JAN, 30),
208
- 1999: (JAN, 19),
209
187
  2000: ((JAN, 8), (DEC, 28)),
210
- 2001: (DEC, 17),
211
- 2002: (DEC, 6),
212
- 2003: (NOV, 26),
213
- 2005: (NOV, 4),
214
- 2006: (OCT, 24),
188
+ 2004: (NOV, 14),
215
189
  2007: (OCT, 12),
216
190
  2008: (SEP, 29),
217
- 2009: (SEP, 21),
218
191
  2010: (SEP, 9),
219
- 2012: (AUG, 20),
220
- 2017: (JUN, 26),
192
+ 2011: (AUG, 30),
193
+ 2013: (AUG, 8),
194
+ 2014: (JUL, 28),
195
+ 2015: (JUL, 17),
196
+ 2016: (JUL, 6),
197
+ 2018: (JUN, 15),
198
+ 2019: (JUN, 4),
199
+ 2020: (MAY, 24),
200
+ 2021: (MAY, 13),
201
+ 2022: (MAY, 2),
202
+ 2023: (APR, 21),
203
+ 2024: (APR, 10),
204
+ 2025: (MAR, 30),
221
205
  }
222
206
 
223
207
  # https://web.archive.org/web/20250829053435/https://www.timeanddate.com/holidays/nigeria/id-el-maulud
224
208
  # https://web.archive.org/web/20250829054319/https://pmnewsnigeria.com/2012/02/03/fg-declares-6-feb-public-holiday/
225
209
  MAWLID_DATES_CONFIRMED_YEARS = (1979, 2025)
226
210
  MAWLID_DATES = {
227
- 1979: (FEB, 10),
228
- 1982: ((JAN, 8), (DEC, 28)),
229
- 1983: (DEC, 17),
211
+ 1980: (JAN, 30),
212
+ 1981: (JAN, 18),
230
213
  1984: (DEC, 6),
231
- 1985: (NOV, 25),
232
- 1986: (NOV, 15),
233
- 1987: (NOV, 4),
234
- 1988: (OCT, 23),
235
214
  1989: (OCT, 13),
236
- 1990: (OCT, 2),
237
- 1991: (SEP, 21),
238
- 1992: (SEP, 10),
239
- 1993: (AUG, 30),
240
- 1995: (AUG, 9),
241
- 1996: (JUL, 28),
215
+ 1994: (AUG, 19),
242
216
  1997: (JUL, 18),
243
- 1998: (JUL, 7),
244
- 2000: (JUN, 15),
245
- 2003: (MAY, 14),
246
- 2004: (MAY, 2),
247
- 2006: (APR, 11),
248
- 2011: (FEB, 16),
217
+ 1999: (JUN, 26),
218
+ 2001: (JUN, 4),
219
+ 2002: (MAY, 24),
220
+ 2005: (APR, 21),
221
+ 2007: (MAR, 31),
222
+ 2008: (MAR, 20),
223
+ 2009: (MAR, 9),
224
+ 2010: (FEB, 26),
249
225
  2012: (FEB, 6),
226
+ 2013: (JAN, 24),
227
+ 2014: (JAN, 13),
250
228
  2015: ((JAN, 2), (DEC, 24)),
251
- 2016: (DEC, 12),
252
- 2017: (DEC, 1),
253
- 2021: (OCT, 19),
254
- 2024: (SEP, 16),
255
- 2025: (SEP, 5),
229
+ 2018: (NOV, 20),
230
+ 2019: (NOV, 9),
231
+ 2020: (OCT, 29),
232
+ 2022: (OCT, 8),
233
+ 2023: (SEP, 27),
256
234
  }
257
235
 
258
236
 
@@ -84,7 +84,7 @@ class Norway(HolidayBase, ChristianHolidays, InternationalHolidays):
84
84
  "54",
85
85
  )
86
86
 
87
- def __init__(self, include_sundays: bool = False, *args, **kwargs):
87
+ def __init__(self, *args, include_sundays: bool = False, **kwargs):
88
88
  """
89
89
  Args:
90
90
  include_sundays:
@@ -60,7 +60,7 @@ class Rwanda(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Isla
60
60
  kwargs.setdefault("observed_since", 2017)
61
61
  super().__init__(*args, **kwargs)
62
62
 
63
- def _populate_observed(self, dts: set[date], multiple: bool = False) -> None:
63
+ def _populate_observed(self, dts: set[date], *, multiple: bool = False) -> None:
64
64
  """
65
65
  Applies `SAT_TO_NEXT_WORKDAY` instead of `SAT_SUN_TO_NEXT_WORKDAY`
66
66
  observed_rule for Day after New Year's Day and Boxing Day.
@@ -76,7 +76,7 @@ class Rwanda(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Isla
76
76
  self._add_observed(
77
77
  dt,
78
78
  name,
79
- SAT_TO_NEXT_WORKDAY if name in special_cases else SAT_SUN_TO_NEXT_WORKDAY,
79
+ rule=SAT_TO_NEXT_WORKDAY if name in special_cases else SAT_SUN_TO_NEXT_WORKDAY,
80
80
  )
81
81
 
82
82
  def _populate_public_holidays(self):
@@ -25,6 +25,9 @@ class Slovakia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
25
25
  * <https://en.wikipedia.org/wiki/Public_holidays_in_Slovakia>
26
26
  * <https://sk.wikipedia.org/wiki/Zoznam_sviatkov_na_Slovensku>
27
27
  * <https://web.archive.org/web/20250413192257/https://www.slov-lex.sk/pravne-predpisy/SK/ZZ/1993/241/>
28
+ * [Law 326/2020](https://web.archive.org/web/20250713005858/https://static.slov-lex.sk/static/SK/ZZ/2020/326/20210101.html)
29
+ * [Law 530/2023](https://web.archive.org/web/20250424165411/https://static.slov-lex.sk/static/SK/ZZ/2023/530/20240101.html)
30
+ * [Law 261/2025](https://web.archive.org/web/20251014224441/https://static.slov-lex.sk/static/SK/ZZ/2025/261/20251101.html)
28
31
  """
29
32
 
30
33
  country = "SK"
@@ -58,7 +61,7 @@ class Slovakia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
58
61
  # Labor Day.
59
62
  self._add_labor_day(tr("Sviatok práce"))
60
63
 
61
- if self._year >= 1997:
64
+ if self._year >= 1997 and self._year != 2026:
62
65
  # Day of Victory over Fascism.
63
66
  self._add_world_war_two_victory_day(tr("Deň víťazstva nad fašizmom"))
64
67
 
@@ -72,13 +75,14 @@ class Slovakia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
72
75
  # Constitution Day.
73
76
  self._add_holiday_sep_1(tr("Deň Ústavy Slovenskej republiky"))
74
77
 
75
- # Day of Our Lady of the Seven Sorrows.
76
- self._add_holiday_sep_15(tr("Sedembolestná Panna Mária"))
78
+ if self._year != 2026:
79
+ # Day of Our Lady of the Seven Sorrows.
80
+ self._add_holiday_sep_15(tr("Sedembolestná Panna Mária"))
77
81
 
78
82
  # All Saints' Day.
79
83
  self._add_all_saints_day(tr("Sviatok Všetkých svätých"))
80
84
 
81
- if self._year >= 2001:
85
+ if 2001 <= self._year <= 2024:
82
86
  # Struggle for Freedom and Democracy Day.
83
87
  self._add_holiday_nov_17(tr("Deň boja za slobodu a demokraciu"))
84
88
 
@@ -94,14 +98,29 @@ class Slovakia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
94
98
  def _populate_workday_holidays(self):
95
99
  # According to Law 241/1993, these state holidays are not non-working days.
96
100
 
101
+ # Law 261/2025.
102
+ if self._year == 2026:
103
+ # Day of Victory over Fascism.
104
+ self._add_world_war_two_victory_day(tr("Deň víťazstva nad fašizmom"))
105
+
106
+ # Day of Our Lady of the Seven Sorrows.
107
+ self._add_holiday_sep_15(tr("Sedembolestná Panna Mária"))
108
+
109
+ # Law 530/2023.
97
110
  if self._year >= 2024:
98
111
  # Constitution Day.
99
112
  self._add_holiday_sep_1(tr("Deň Ústavy Slovenskej republiky"))
100
113
 
114
+ # Law 326/2020.
101
115
  if self._year >= 2021:
102
116
  # Day of the Establishment of the Independent Czech-Slovak State.
103
117
  self._add_holiday_oct_28(tr("Deň vzniku samostatného česko-slovenského štátu"))
104
118
 
119
+ # Law 261/2025.
120
+ if self._year >= 2025:
121
+ # Struggle for Freedom and Democracy Day.
122
+ self._add_holiday_nov_17(tr("Deň boja za slobodu a demokraciu"))
123
+
105
124
 
106
125
  class SK(Slovakia):
107
126
  pass