holidays 0.81__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.
- holidays/calendars/__init__.py +1 -0
- holidays/calendars/burmese.py +319 -0
- holidays/calendars/hebrew.py +2 -2
- holidays/calendars/islamic.py +26 -6
- holidays/calendars/thai.py +49 -2
- holidays/countries/__init__.py +11 -0
- holidays/countries/afghanistan.py +7 -5
- holidays/countries/algeria.py +89 -24
- holidays/countries/antarctica.py +58 -0
- holidays/countries/azerbaijan.py +1 -1
- holidays/countries/bouvet_island.py +31 -0
- holidays/countries/brazil.py +1 -1
- holidays/countries/british_indian_ocean_territory.py +31 -0
- holidays/countries/bulgaria.py +6 -1
- holidays/countries/canada.py +27 -13
- holidays/countries/chile.py +9 -8
- holidays/countries/cuba.py +3 -4
- holidays/countries/denmark.py +18 -6
- holidays/countries/djibouti.py +1 -1
- holidays/countries/fiji.py +2 -3
- holidays/countries/finland.py +3 -6
- holidays/countries/guyana.py +24 -32
- holidays/countries/heard_island_and_mcdonald_islands.py +31 -0
- holidays/countries/hungary.py +4 -5
- holidays/countries/india.py +27 -78
- holidays/countries/iran.py +133 -269
- holidays/countries/ireland.py +1 -1
- holidays/countries/israel.py +1 -1
- holidays/countries/japan.py +22 -18
- holidays/countries/jordan.py +6 -3
- holidays/countries/kuwait.py +6 -3
- holidays/countries/macau.py +5 -8
- holidays/countries/malaysia.py +14 -3
- holidays/countries/mauritius.py +10 -9
- holidays/countries/montserrat.py +1 -1
- holidays/countries/myanmar.py +194 -0
- holidays/countries/nepal.py +11 -30
- holidays/countries/netherlands.py +28 -24
- holidays/countries/new_zealand.py +75 -31
- holidays/countries/nigeria.py +53 -75
- holidays/countries/north_korea.py +161 -0
- holidays/countries/norway.py +24 -9
- holidays/countries/oman.py +6 -2
- holidays/countries/paraguay.py +70 -23
- holidays/countries/portugal.py +5 -6
- holidays/countries/qatar.py +5 -2
- holidays/countries/rwanda.py +8 -3
- holidays/countries/saudi_arabia.py +6 -5
- holidays/countries/serbia.py +5 -0
- holidays/countries/slovakia.py +23 -4
- holidays/countries/south_africa.py +96 -53
- holidays/countries/south_korea.py +6 -1
- holidays/countries/spain.py +4 -4
- holidays/countries/sri_lanka.py +21 -58
- holidays/countries/sudan.py +6 -3
- holidays/countries/suriname.py +1 -2
- holidays/countries/sweden.py +1 -1
- holidays/countries/switzerland.py +255 -6
- holidays/countries/taiwan.py +23 -3
- holidays/countries/tanzania.py +25 -30
- holidays/countries/thailand.py +29 -7
- holidays/countries/tonga.py +6 -1
- holidays/countries/trinidad_and_tobago.py +7 -2
- holidays/countries/ukraine.py +1 -1
- holidays/countries/united_arab_emirates.py +9 -2
- holidays/countries/united_kingdom.py +1 -1
- holidays/countries/united_states.py +18 -2
- holidays/countries/uruguay.py +6 -1
- holidays/countries/vietnam.py +6 -1
- holidays/countries/western_sahara.py +92 -0
- holidays/countries/yemen.py +6 -3
- holidays/groups/__init__.py +1 -0
- holidays/groups/balinese_saka.py +1 -1
- holidays/groups/buddhist.py +3 -3
- holidays/groups/burmese.py +273 -0
- holidays/groups/chinese.py +30 -2
- holidays/groups/christian.py +10 -0
- holidays/groups/custom.py +8 -2
- holidays/groups/eastern.py +26 -0
- holidays/groups/hebrew.py +16 -14
- holidays/groups/hindu.py +23 -15
- holidays/groups/international.py +1 -1
- holidays/groups/islamic.py +52 -50
- holidays/groups/mongolian.py +6 -3
- holidays/groups/sinhala.py +9 -11
- holidays/groups/tibetan.py +8 -6
- holidays/holiday_base.py +26 -26
- holidays/ical.py +6 -4
- holidays/locale/ar/LC_MESSAGES/DZ.mo +0 -0
- holidays/locale/ar/LC_MESSAGES/EH.mo +0 -0
- holidays/locale/ca/LC_MESSAGES/ES.mo +0 -0
- holidays/locale/de/LC_MESSAGES/CH.mo +0 -0
- holidays/locale/en_IN/LC_MESSAGES/IN.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/BR.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/CH.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/DZ.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/EH.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/ES.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/IN.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/JP.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/KP.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/MM.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/NL.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/PY.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/US.mo +0 -0
- holidays/locale/es/LC_MESSAGES/EH.mo +0 -0
- holidays/locale/es/LC_MESSAGES/ES.mo +0 -0
- holidays/locale/es/LC_MESSAGES/PY.mo +0 -0
- holidays/locale/fr/LC_MESSAGES/CH.mo +0 -0
- holidays/locale/fr/LC_MESSAGES/DZ.mo +0 -0
- holidays/locale/fr/LC_MESSAGES/EH.mo +0 -0
- holidays/locale/fy/LC_MESSAGES/NL.mo +0 -0
- holidays/locale/hi/LC_MESSAGES/IN.mo +0 -0
- holidays/locale/it/LC_MESSAGES/CH.mo +0 -0
- holidays/locale/ja/LC_MESSAGES/JP.mo +0 -0
- holidays/locale/ko_KP/LC_MESSAGES/KP.mo +0 -0
- holidays/locale/my/LC_MESSAGES/MM.mo +0 -0
- holidays/locale/nl/LC_MESSAGES/NL.mo +0 -0
- holidays/locale/pt_BR/LC_MESSAGES/BR.mo +0 -0
- holidays/locale/th/LC_MESSAGES/CH.mo +0 -0
- holidays/locale/th/LC_MESSAGES/DK.mo +0 -0
- holidays/locale/th/LC_MESSAGES/JP.mo +0 -0
- holidays/locale/th/LC_MESSAGES/MM.mo +0 -0
- holidays/locale/th/LC_MESSAGES/NL.mo +0 -0
- holidays/locale/th/LC_MESSAGES/US.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/BR.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/CH.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/ES.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/NL.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/PY.mo +0 -0
- holidays/no_holiday_base.py +21 -0
- holidays/observed_holiday_base.py +16 -4
- holidays/registry.py +8 -0
- holidays/utils.py +5 -5
- holidays/version.py +1 -1
- {holidays-0.81.dist-info → holidays-0.83.dist-info}/METADATA +63 -19
- {holidays-0.81.dist-info → holidays-0.83.dist-info}/RECORD +141 -118
- {holidays-0.81.dist-info → holidays-0.83.dist-info}/licenses/CONTRIBUTORS +2 -0
- {holidays-0.81.dist-info → holidays-0.83.dist-info}/WHEEL +0 -0
- {holidays-0.81.dist-info → holidays-0.83.dist-info}/licenses/LICENSE +0 -0
- {holidays-0.81.dist-info → holidays-0.83.dist-info}/top_level.txt +0 -0
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
150
|
-
|
|
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
|
-
#
|
|
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 =
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
266
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
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
|
}
|
holidays/countries/nigeria.py
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
163
|
-
1993: (JUN, 1),
|
|
164
|
-
1994: (MAY, 21),
|
|
165
|
-
1995: (MAY, 10),
|
|
160
|
+
1992: (JUN, 11),
|
|
166
161
|
1996: (APR, 29),
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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
|
-
|
|
176
|
-
|
|
177
|
-
2010: (NOV, 17),
|
|
178
|
-
2011: (NOV, 7),
|
|
166
|
+
2012: (OCT, 26),
|
|
167
|
+
2013: (OCT, 15),
|
|
179
168
|
2014: (OCT, 6),
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
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
|
-
|
|
195
|
-
1985: (JUN, 20),
|
|
196
|
-
1986: (JUN, 9),
|
|
182
|
+
1984: (JUN, 30),
|
|
197
183
|
1987: (MAY, 30),
|
|
198
184
|
1988: (MAY, 18),
|
|
199
|
-
|
|
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
|
-
|
|
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
|
-
|
|
220
|
-
|
|
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
|
-
|
|
228
|
-
|
|
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
|
-
|
|
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
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
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
|
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# holidays
|
|
2
|
+
# --------
|
|
3
|
+
# A fast, efficient Python library for generating country, province and state
|
|
4
|
+
# specific sets of holidays on the fly. It aims to make determining whether a
|
|
5
|
+
# specific date is a holiday as fast and flexible as possible.
|
|
6
|
+
#
|
|
7
|
+
# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
|
|
8
|
+
# dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
|
|
9
|
+
# ryanss <ryanssdev@icloud.com> (c) 2014-2017
|
|
10
|
+
# Website: https://github.com/vacanza/holidays
|
|
11
|
+
# License: MIT (see LICENSE file)
|
|
12
|
+
|
|
13
|
+
from gettext import gettext as tr
|
|
14
|
+
|
|
15
|
+
from holidays.calendars.chinese import KOREAN_CALENDAR
|
|
16
|
+
from holidays.groups import ChineseCalendarHolidays, InternationalHolidays
|
|
17
|
+
from holidays.holiday_base import HolidayBase
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class NorthKorea(HolidayBase, ChineseCalendarHolidays, InternationalHolidays):
|
|
21
|
+
"""North Korea holidays.
|
|
22
|
+
|
|
23
|
+
References:
|
|
24
|
+
* <https://en.wikipedia.org/wiki/Public_holidays_in_North_Korea>
|
|
25
|
+
* <https://en.wikipedia.org/wiki/Day_of_Songun>
|
|
26
|
+
* <https://en.wikipedia.org/wiki/Dano_(festival)>
|
|
27
|
+
* <https://en.wikipedia.org/wiki/Cold_Food_Festival>
|
|
28
|
+
* <https://ko.wikipedia.org/wiki/조국해방전쟁_승리_기념일>
|
|
29
|
+
* [2025 Holidays](https://namu.wiki/w/공휴일/북한)
|
|
30
|
+
* [Korean People's Army](https://web.archive.org/web/20250824194534/https://namu.wiki/w/조선인민군)
|
|
31
|
+
* [Founding Day of the Korean People's Revolutionary Army](https://web.archive.org/web/20250909074255/https://www.nocutnews.co.kr/news/1091995)
|
|
32
|
+
* [Holidays and Anniversaries](http://archive.today/2025.09.21-064344/https://unikorea.go.kr/nkhr/current/life/living/daily/?boardId=bbs_0000000000000078&mode=view&cntId=51400)
|
|
33
|
+
* [Day of Songun](http://archive.today/2025.09.21-063344/https://namu.wiki/w/선군절)
|
|
34
|
+
* [2013 North Korea Calendar](https://web.archive.org/web/20250921062305/https://nk.chosun.com/news/articleView.html?idxno=151905)
|
|
35
|
+
* [Daeboreum in North Korea](https://web.archive.org/web/20230210091341/https://www.newsis.com/view/?id=NISX20200207_0000911479)
|
|
36
|
+
* [Day of the Shining Star](https://web.archive.org/web/20250921063234/https://www.munhwa.com/article/11412228)
|
|
37
|
+
* [Day of the Sun](http://archive.today/2025.09.21-063705/https://namu.wiki/w/태양절)
|
|
38
|
+
* [Cheongmyeong Festival](https://web.archive.org/web/20250324201145/https://namu.wiki/w/청명)
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
country = "KP"
|
|
42
|
+
default_language = "ko_KP"
|
|
43
|
+
# %s (estimated).
|
|
44
|
+
estimated_label = tr("%s (추정된)")
|
|
45
|
+
start_year = 1948
|
|
46
|
+
supported_languages = ("en_US", "ko_KP")
|
|
47
|
+
|
|
48
|
+
def __init__(self, *args, **kwargs):
|
|
49
|
+
ChineseCalendarHolidays.__init__(self, calendar=KOREAN_CALENDAR)
|
|
50
|
+
InternationalHolidays.__init__(self)
|
|
51
|
+
super().__init__(*args, **kwargs)
|
|
52
|
+
|
|
53
|
+
def _populate_public_holidays(self):
|
|
54
|
+
# New Year's Day.
|
|
55
|
+
self._add_new_years_day(tr("양력설"))
|
|
56
|
+
|
|
57
|
+
if self._year <= 1967 or self._year >= 1989:
|
|
58
|
+
# Korean New Year.
|
|
59
|
+
self._add_chinese_new_years_day(tr("설명절"))
|
|
60
|
+
|
|
61
|
+
if self._year >= 2003:
|
|
62
|
+
# Daeboreum.
|
|
63
|
+
self._add_daeboreum_day(tr("대보름"))
|
|
64
|
+
|
|
65
|
+
if self._year <= 1977 or self._year >= 2018:
|
|
66
|
+
# Founding Day of the Korean People's Army.
|
|
67
|
+
self._add_holiday_feb_8(tr("조선인민군창건일"))
|
|
68
|
+
|
|
69
|
+
if self._year >= 1975:
|
|
70
|
+
name = (
|
|
71
|
+
# Day of the Shining Star.
|
|
72
|
+
tr("광명성절")
|
|
73
|
+
if self._year >= 2012
|
|
74
|
+
# Kim Jong Il's Birthday.
|
|
75
|
+
else tr("김정일의 생일")
|
|
76
|
+
)
|
|
77
|
+
self._add_holiday_feb_16(name)
|
|
78
|
+
if self._year >= 1986:
|
|
79
|
+
self._add_holiday_feb_17(name)
|
|
80
|
+
|
|
81
|
+
# International Women's Day.
|
|
82
|
+
self._add_womens_day(tr("국제부녀절"))
|
|
83
|
+
|
|
84
|
+
if self._year >= 2012:
|
|
85
|
+
# Cheongmyeong Festival.
|
|
86
|
+
self._add_qingming_festival(tr("청명"))
|
|
87
|
+
|
|
88
|
+
if self._year <= 1967:
|
|
89
|
+
# Hanshi Festival.
|
|
90
|
+
self._add_hanshi_festival(tr("한식"))
|
|
91
|
+
|
|
92
|
+
if self._year == 1962 or self._year >= 1968:
|
|
93
|
+
name = (
|
|
94
|
+
# Day of the Sun.
|
|
95
|
+
tr("태양절")
|
|
96
|
+
if self._year >= 1998
|
|
97
|
+
# Kim Il-Sung's Birthday.
|
|
98
|
+
else tr("김일성의 생일")
|
|
99
|
+
)
|
|
100
|
+
self._add_holiday_apr_15(name)
|
|
101
|
+
if self._year >= 1998:
|
|
102
|
+
self._add_holiday_apr_16(name)
|
|
103
|
+
|
|
104
|
+
if self._year >= 1978:
|
|
105
|
+
self._add_holiday_apr_25(
|
|
106
|
+
# Founding Day of the Korean People's Revolutionary Army.
|
|
107
|
+
tr("조선인민혁명군 창건일")
|
|
108
|
+
if self._year >= 2018
|
|
109
|
+
# Armed Forces Day.
|
|
110
|
+
else tr("건군절")
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
# International Workers' Day.
|
|
114
|
+
self._add_labor_day(tr("전세계근로자들의 국제적명절"))
|
|
115
|
+
|
|
116
|
+
if self._year <= 1967:
|
|
117
|
+
# Dano.
|
|
118
|
+
self._add_dragon_boat_festival(tr("단오"))
|
|
119
|
+
|
|
120
|
+
# Foundation Day of the Korean Children's Union.
|
|
121
|
+
self._add_holiday_jun_6(tr("조선소년단 창립절"))
|
|
122
|
+
|
|
123
|
+
if self._year >= 1996:
|
|
124
|
+
# Day of Victory in the Great Fatherland Liberation War.
|
|
125
|
+
self._add_holiday_jul_27(tr("조국해방전쟁승리기념일"))
|
|
126
|
+
|
|
127
|
+
# Liberation Day.
|
|
128
|
+
self._add_holiday_aug_15(tr("조국해방절"))
|
|
129
|
+
|
|
130
|
+
if self._year <= 1966 or self._year >= 1989:
|
|
131
|
+
# Chuseok.
|
|
132
|
+
self._add_mid_autumn_festival(tr("추석"))
|
|
133
|
+
|
|
134
|
+
if self._year >= 2013:
|
|
135
|
+
# Day of Songun.
|
|
136
|
+
self._add_holiday_aug_25(tr("선군절"))
|
|
137
|
+
|
|
138
|
+
# Youth Day.
|
|
139
|
+
self._add_holiday_aug_28(tr("청년절"))
|
|
140
|
+
|
|
141
|
+
# Founding Day of the DPRK.
|
|
142
|
+
self._add_holiday_sep_9(tr("조선민주주의인민공화국창건일"))
|
|
143
|
+
|
|
144
|
+
# Foundation Day of the Workers' Party of Korea.
|
|
145
|
+
self._add_holiday_oct_10(tr("조선로동당창건일"))
|
|
146
|
+
|
|
147
|
+
if self._year >= 2012:
|
|
148
|
+
# Mother's Day.
|
|
149
|
+
self._add_holiday_nov_16(tr("어머니날"))
|
|
150
|
+
|
|
151
|
+
if self._year >= 1972:
|
|
152
|
+
# Socialist Constitution Day.
|
|
153
|
+
self._add_holiday_dec_27(tr("사회주의헌법절"))
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
class KP(NorthKorea):
|
|
157
|
+
pass
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class PRK(NorthKorea):
|
|
161
|
+
pass
|
holidays/countries/norway.py
CHANGED
|
@@ -41,13 +41,17 @@ class Norway(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
41
41
|
"18", # Nordland.
|
|
42
42
|
"21", # Svalbard.
|
|
43
43
|
"22", # Jan Mayen.
|
|
44
|
-
"
|
|
44
|
+
"31", # Østfold.
|
|
45
|
+
"32", # Akershus.
|
|
46
|
+
"33", # Buskerud.
|
|
45
47
|
"34", # Innlandet.
|
|
46
|
-
"
|
|
48
|
+
"39", # Vestfold.
|
|
49
|
+
"40", # Telemark.
|
|
47
50
|
"42", # Agder.
|
|
48
51
|
"46", # Vestland.
|
|
49
52
|
"50", # Trøndelag (Trööndelage).
|
|
50
|
-
"
|
|
53
|
+
"55", # Troms (Romssa, Tromssan).
|
|
54
|
+
"56", # Finnmark (Finnmárkku, Finmarkun).
|
|
51
55
|
)
|
|
52
56
|
subdivisions_aliases = {
|
|
53
57
|
"Oslo": "03",
|
|
@@ -56,20 +60,31 @@ class Norway(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
56
60
|
"Nordland": "18",
|
|
57
61
|
"Svalbard": "21",
|
|
58
62
|
"Jan Mayen": "22",
|
|
59
|
-
"
|
|
63
|
+
"Østfold": "31",
|
|
64
|
+
"Akershus": "32",
|
|
65
|
+
"Buskerud": "33",
|
|
60
66
|
"Innlandet": "34",
|
|
61
|
-
"Vestfold
|
|
67
|
+
"Vestfold": "39",
|
|
68
|
+
"Telemark": "40",
|
|
62
69
|
"Agder": "42",
|
|
63
70
|
"Vestland": "46",
|
|
64
71
|
"Trööndelage": "50",
|
|
65
72
|
"Trøndelag": "50",
|
|
66
|
-
"Romssa
|
|
67
|
-
"Troms
|
|
68
|
-
"Tromssan
|
|
73
|
+
"Romssa": "55",
|
|
74
|
+
"Troms": "55",
|
|
75
|
+
"Tromssan": "55",
|
|
76
|
+
"Finmarkun": "56",
|
|
77
|
+
"Finnmark": "56",
|
|
78
|
+
"Finnmárkku": "56",
|
|
69
79
|
}
|
|
70
80
|
supported_languages = ("en_US", "no", "th", "uk")
|
|
81
|
+
_deprecated_subdivisions = (
|
|
82
|
+
"30",
|
|
83
|
+
"38",
|
|
84
|
+
"54",
|
|
85
|
+
)
|
|
71
86
|
|
|
72
|
-
def __init__(self, include_sundays: bool = False,
|
|
87
|
+
def __init__(self, *args, include_sundays: bool = False, **kwargs):
|
|
73
88
|
"""
|
|
74
89
|
Args:
|
|
75
90
|
include_sundays:
|
holidays/countries/oman.py
CHANGED
|
@@ -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
|
|
@@ -17,6 +18,7 @@ from holidays.calendars.gregorian import (
|
|
|
17
18
|
FEB,
|
|
18
19
|
MAR,
|
|
19
20
|
APR,
|
|
21
|
+
MAY,
|
|
20
22
|
JUN,
|
|
21
23
|
JUL,
|
|
22
24
|
AUG,
|
|
@@ -49,6 +51,7 @@ class Oman(HolidayBase, IslamicHolidays):
|
|
|
49
51
|
estimated_label = tr("%s (المقدرة)")
|
|
50
52
|
start_year = 1970
|
|
51
53
|
supported_languages = ("ar", "en_US")
|
|
54
|
+
weekend = {FRI, SAT}
|
|
52
55
|
|
|
53
56
|
def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
|
|
54
57
|
"""
|
|
@@ -62,10 +65,11 @@ class Oman(HolidayBase, IslamicHolidays):
|
|
|
62
65
|
)
|
|
63
66
|
super().__init__(*args, **kwargs)
|
|
64
67
|
|
|
65
|
-
def
|
|
68
|
+
def _get_weekend(self, dt: date) -> set[int]:
|
|
66
69
|
# Oman switches from THU-FRI to FRI-SAT on May 1, 2013.
|
|
67
|
-
|
|
70
|
+
return {FRI, SAT} if dt >= date(2013, MAY, 1) else {THU, FRI}
|
|
68
71
|
|
|
72
|
+
def _populate_public_holidays(self):
|
|
69
73
|
if self._year >= 2020:
|
|
70
74
|
# Sultan's Accession Day.
|
|
71
75
|
self._add_holiday_jan_11(tr("اليوم الوطني لتولي السلطان"))
|