holidays 0.79__py3-none-any.whl → 0.81__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 (124) hide show
  1. holidays/calendars/chinese.py +39 -1
  2. holidays/calendars/hindu.py +1 -0
  3. holidays/constants.py +0 -1
  4. holidays/countries/__init__.py +13 -0
  5. holidays/countries/argentina.py +4 -0
  6. holidays/countries/australia.py +191 -295
  7. holidays/countries/bosnia_and_herzegovina.py +5 -1
  8. holidays/countries/burkina_faso.py +5 -0
  9. holidays/countries/burundi.py +95 -40
  10. holidays/countries/cameroon.py +5 -0
  11. holidays/countries/canada.py +7 -0
  12. holidays/countries/chad.py +5 -0
  13. holidays/countries/china.py +4 -0
  14. holidays/countries/christmas_island.py +6 -0
  15. holidays/countries/comoros.py +121 -0
  16. holidays/countries/eritrea.py +104 -0
  17. holidays/countries/gabon.py +2 -0
  18. holidays/countries/georgia.py +9 -7
  19. holidays/countries/guinea_bissau.py +0 -4
  20. holidays/countries/hongkong.py +5 -1
  21. holidays/countries/kyrgyzstan.py +2 -0
  22. holidays/countries/macau.py +74 -63
  23. holidays/countries/maldives.py +2 -0
  24. holidays/countries/mauritania.py +2 -0
  25. holidays/countries/mongolia.py +2 -0
  26. holidays/countries/nigeria.py +198 -27
  27. holidays/countries/philippines.py +11 -2
  28. holidays/countries/rwanda.py +162 -0
  29. holidays/countries/saint_helena_ascension_and_tristan_da_cunha.py +197 -0
  30. holidays/countries/sierra_leone.py +1 -1
  31. holidays/countries/singapore.py +4 -0
  32. holidays/countries/somalia.py +79 -0
  33. holidays/countries/south_korea.py +4 -0
  34. holidays/countries/south_sudan.py +133 -0
  35. holidays/countries/spain.py +26 -0
  36. holidays/countries/sudan.py +115 -0
  37. holidays/countries/taiwan.py +5 -1
  38. holidays/countries/tajikistan.py +116 -0
  39. holidays/countries/tanzania.py +291 -147
  40. holidays/countries/turkmenistan.py +6 -0
  41. holidays/countries/uganda.py +101 -0
  42. holidays/countries/vietnam.py +4 -0
  43. holidays/financial/__init__.py +5 -0
  44. holidays/financial/national_stock_exchange_of_india.py +169 -0
  45. holidays/groups/chinese.py +3 -15
  46. holidays/groups/eastern.py +1 -3
  47. holidays/groups/islamic.py +10 -0
  48. holidays/locale/ar_SD/LC_MESSAGES/SD.mo +0 -0
  49. holidays/locale/bs/LC_MESSAGES/BA.mo +0 -0
  50. holidays/locale/en_GB/LC_MESSAGES/SH.mo +0 -0
  51. holidays/locale/en_HK/LC_MESSAGES/HK.mo +0 -0
  52. holidays/locale/en_IN/LC_MESSAGES/XNSE.mo +0 -0
  53. holidays/locale/en_MO/LC_MESSAGES/MO.mo +0 -0
  54. holidays/locale/en_NG/LC_MESSAGES/NG.mo +0 -0
  55. holidays/locale/en_PH/LC_MESSAGES/PH.mo +0 -0
  56. holidays/locale/en_SG/LC_MESSAGES/SG.mo +0 -0
  57. holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
  58. holidays/locale/en_US/LC_MESSAGES/BA.mo +0 -0
  59. holidays/locale/en_US/LC_MESSAGES/BI.mo +0 -0
  60. holidays/locale/en_US/LC_MESSAGES/CN.mo +0 -0
  61. holidays/locale/en_US/LC_MESSAGES/ES.mo +0 -0
  62. holidays/locale/en_US/LC_MESSAGES/GE.mo +0 -0
  63. holidays/locale/en_US/LC_MESSAGES/GW.mo +0 -0
  64. holidays/locale/en_US/LC_MESSAGES/HK.mo +0 -0
  65. holidays/locale/en_US/LC_MESSAGES/KR.mo +0 -0
  66. holidays/locale/en_US/LC_MESSAGES/MN.mo +0 -0
  67. holidays/locale/en_US/LC_MESSAGES/MO.mo +0 -0
  68. holidays/locale/en_US/LC_MESSAGES/NG.mo +0 -0
  69. holidays/locale/en_US/LC_MESSAGES/PH.mo +0 -0
  70. holidays/locale/en_US/LC_MESSAGES/RW.mo +0 -0
  71. holidays/locale/en_US/LC_MESSAGES/SD.mo +0 -0
  72. holidays/locale/en_US/LC_MESSAGES/SG.mo +0 -0
  73. holidays/locale/en_US/LC_MESSAGES/SH.mo +0 -0
  74. holidays/locale/en_US/LC_MESSAGES/TJ.mo +0 -0
  75. holidays/locale/en_US/LC_MESSAGES/TW.mo +0 -0
  76. holidays/locale/en_US/LC_MESSAGES/TZ.mo +0 -0
  77. holidays/locale/en_US/LC_MESSAGES/VN.mo +0 -0
  78. holidays/locale/en_US/LC_MESSAGES/XNSE.mo +0 -0
  79. holidays/locale/es/LC_MESSAGES/AR.mo +0 -0
  80. holidays/locale/es/LC_MESSAGES/ES.mo +0 -0
  81. holidays/locale/fil/LC_MESSAGES/PH.mo +0 -0
  82. holidays/locale/fr/LC_MESSAGES/RW.mo +0 -0
  83. holidays/locale/fr_BI/LC_MESSAGES/BI.mo +0 -0
  84. holidays/locale/hi/LC_MESSAGES/XNSE.mo +0 -0
  85. holidays/locale/ka/LC_MESSAGES/GE.mo +0 -0
  86. holidays/locale/ko/LC_MESSAGES/KR.mo +0 -0
  87. holidays/locale/mn/LC_MESSAGES/MN.mo +0 -0
  88. holidays/locale/pt_GW/LC_MESSAGES/GW.mo +0 -0
  89. holidays/locale/pt_MO/LC_MESSAGES/MO.mo +0 -0
  90. holidays/locale/ru/LC_MESSAGES/TJ.mo +0 -0
  91. holidays/locale/rw/LC_MESSAGES/RW.mo +0 -0
  92. holidays/locale/sr/LC_MESSAGES/BA.mo +0 -0
  93. holidays/locale/sw/LC_MESSAGES/TZ.mo +0 -0
  94. holidays/locale/tg/LC_MESSAGES/TJ.mo +0 -0
  95. holidays/locale/th/LC_MESSAGES/CN.mo +0 -0
  96. holidays/locale/th/LC_MESSAGES/HK.mo +0 -0
  97. holidays/locale/th/LC_MESSAGES/KR.mo +0 -0
  98. holidays/locale/th/LC_MESSAGES/MO.mo +0 -0
  99. holidays/locale/th/LC_MESSAGES/PH.mo +0 -0
  100. holidays/locale/th/LC_MESSAGES/SG.mo +0 -0
  101. holidays/locale/th/LC_MESSAGES/TW.mo +0 -0
  102. holidays/locale/th/LC_MESSAGES/VN.mo +0 -0
  103. holidays/locale/uk/LC_MESSAGES/AR.mo +0 -0
  104. holidays/locale/uk/LC_MESSAGES/BA.mo +0 -0
  105. holidays/locale/uk/LC_MESSAGES/ES.mo +0 -0
  106. holidays/locale/uk/LC_MESSAGES/GE.mo +0 -0
  107. holidays/locale/vi/LC_MESSAGES/VN.mo +0 -0
  108. holidays/locale/zh_CN/LC_MESSAGES/CN.mo +0 -0
  109. holidays/locale/zh_CN/LC_MESSAGES/HK.mo +0 -0
  110. holidays/locale/zh_CN/LC_MESSAGES/MO.mo +0 -0
  111. holidays/locale/zh_CN/LC_MESSAGES/TW.mo +0 -0
  112. holidays/locale/zh_HK/LC_MESSAGES/HK.mo +0 -0
  113. holidays/locale/zh_MO/LC_MESSAGES/MO.mo +0 -0
  114. holidays/locale/zh_TW/LC_MESSAGES/CN.mo +0 -0
  115. holidays/locale/zh_TW/LC_MESSAGES/TW.mo +0 -0
  116. holidays/observed_holiday_base.py +1 -1
  117. holidays/registry.py +39 -14
  118. holidays/version.py +1 -1
  119. {holidays-0.79.dist-info → holidays-0.81.dist-info}/METADATA +76 -7
  120. {holidays-0.79.dist-info → holidays-0.81.dist-info}/RECORD +124 -97
  121. {holidays-0.79.dist-info → holidays-0.81.dist-info}/WHEEL +0 -0
  122. {holidays-0.79.dist-info → holidays-0.81.dist-info}/licenses/CONTRIBUTORS +0 -0
  123. {holidays-0.79.dist-info → holidays-0.81.dist-info}/licenses/LICENSE +0 -0
  124. {holidays-0.79.dist-info → holidays-0.81.dist-info}/top_level.txt +0 -0
@@ -13,7 +13,7 @@
13
13
  from gettext import gettext as tr
14
14
 
15
15
  from holidays.calendars.gregorian import FEB, SEP, OCT, DEC
16
- from holidays.constants import GOVERNMENT, MANDATORY, PUBLIC
16
+ from holidays.constants import GOVERNMENT, OPTIONAL, PUBLIC
17
17
  from holidays.groups import (
18
18
  ChineseCalendarHolidays,
19
19
  ChristianHolidays,
@@ -62,6 +62,8 @@ class Macau(
62
62
 
63
63
  country = "MO"
64
64
  default_language = "zh_MO"
65
+ # %s (estimated).
66
+ estimated_label = tr("%s(推定)")
65
67
  # Decreto-Lei n.º 4/82/M.
66
68
  start_year = 1982
67
69
  subdivisions = (
@@ -77,7 +79,7 @@ class Macau(
77
79
  "澳門市": "M",
78
80
  "澳门市": "M",
79
81
  }
80
- supported_categories = (GOVERNMENT, MANDATORY, PUBLIC)
82
+ supported_categories = (GOVERNMENT, OPTIONAL, PUBLIC)
81
83
  supported_languages = ("en_MO", "en_US", "pt_MO", "th", "zh_CN", "zh_MO")
82
84
 
83
85
  def __init__(self, *args, **kwargs):
@@ -91,6 +93,63 @@ class Macau(
91
93
  super().__init__(*args, **kwargs)
92
94
 
93
95
  def _populate_public_holidays(self):
96
+ """Macau Mandatory (Statutory) Holidays.
97
+
98
+ Decreto-Lei n.º 101/84/M - Earliest Available Version Online.
99
+ Decreto-Lei n.º 24/89/M - Added Ching Ming Festival.
100
+ Lei n.º 8/2000 - Removed Day of Portugal
101
+ - Added Macao S.A.R. Establishment Day.
102
+ - Moved Mid-Autumn to Day following Mid-Autumn to match Public Holidays.
103
+ Lei n.º 7/2008 - Consolidated with other laws, reaffirming 2000 Amendment list.
104
+ """
105
+ if self._year <= 1984:
106
+ return None
107
+
108
+ # New Year's Day.
109
+ self._add_new_years_day(tr("元旦"))
110
+
111
+ # Chinese New Year's Day.
112
+ self._add_chinese_new_years_day(tr("農曆正月初一"))
113
+
114
+ # The second day of Chinese New Year.
115
+ self._add_chinese_new_years_day_two(tr("農曆正月初二"))
116
+
117
+ # The third day of Chinese New Year.
118
+ self._add_chinese_new_years_day_three(tr("農曆正月初三"))
119
+
120
+ # Labor Day.
121
+ self._add_labor_day(tr("勞動節"))
122
+
123
+ # Double Ninth Festival.
124
+ self._add_double_ninth_festival(tr("重陽節"))
125
+
126
+ # National Day of the People's Republic of China.
127
+ self._add_holiday_oct_1(tr("中華人民共和國國慶日"))
128
+
129
+ # Decreto-Lei n.º 24/89/M - Adds Ching Ming as a Mandatory Holiday.
130
+ if self._year >= 1989:
131
+ # Tomb-Sweeping Day.
132
+ self._add_qingming_festival(tr("清明節"))
133
+
134
+ # Lei n.º 8/2000 - Removed Day of Portugal as a Mandatory Holiday.
135
+ # - Changed observance from Mid-Autumn to the following day.
136
+ # - Adds Macao S.A.R. Establishment Day as a Mandatory Holiday.
137
+ if self._year <= 1999:
138
+ # Day of Portugal, Camões, and the Portuguese Communities.
139
+ self._add_holiday_jun_10(tr("葡國日、賈梅士日暨葡僑日"))
140
+
141
+ # Mid-Autumn Festival.
142
+ self._add_mid_autumn_festival(tr("中秋節"))
143
+
144
+ else:
145
+ # The Day following Mid-Autumn Festival.
146
+ self._add_mid_autumn_festival_day_two(tr("中秋節翌日"))
147
+
148
+ # Macao S.A.R. Establishment Day.
149
+ self._add_holiday_dec_20(tr("澳門特別行政區成立紀念日"))
150
+
151
+ def _populate_optional_holidays(self):
152
+ """Macau General Holidays."""
94
153
  # New Year's Day.
95
154
  self._add_new_years_day(tr("元旦"))
96
155
 
@@ -223,61 +282,6 @@ class Macau(
223
282
  # Macao S.A.R. Establishment Day.
224
283
  self._add_holiday_dec_20(tr("澳門特別行政區成立紀念日"))
225
284
 
226
- def _populate_mandatory_holidays(self):
227
- """
228
- Decreto-Lei n.º 101/84/M - Earliest Available Version Online.
229
- Decreto-Lei n.º 24/89/M - Added Ching Ming Festival.
230
- Lei n.º 8/2000 - Removed Day of Portugal
231
- - Added Macao S.A.R. Establishment Day.
232
- - Moved Mid-Autumn to Day following Mid-Autumn to match Public Holidays.
233
- Lei n.º 7/2008 - Consolidated with other laws, reaffirming 2000 Amendment list.
234
- """
235
- if self._year <= 1984:
236
- return None
237
-
238
- # New Year's Day.
239
- self._add_new_years_day(tr("元旦"))
240
-
241
- # Chinese New Year's Day.
242
- self._add_chinese_new_years_day(tr("農曆正月初一"))
243
-
244
- # The second day of Chinese New Year.
245
- self._add_chinese_new_years_day_two(tr("農曆正月初二"))
246
-
247
- # The third day of Chinese New Year.
248
- self._add_chinese_new_years_day_three(tr("農曆正月初三"))
249
-
250
- # Labor Day.
251
- self._add_labor_day(tr("勞動節"))
252
-
253
- # Double Ninth Festival.
254
- self._add_double_ninth_festival(tr("重陽節"))
255
-
256
- # National Day of the People's Republic of China.
257
- self._add_holiday_oct_1(tr("中華人民共和國國慶日"))
258
-
259
- # Decreto-Lei n.º 24/89/M - Adds Ching Ming as a Mandatory Holiday.
260
- if self._year >= 1989:
261
- # Tomb-Sweeping Day.
262
- self._add_qingming_festival(tr("清明節"))
263
-
264
- # Lei n.º 8/2000 - Removed Day of Portugal as a Mandatory Holiday.
265
- # - Changed observance from Mid-Autumn to the following day.
266
- # - Adds Macao S.A.R. Establishment Day as a Mandatory Holiday.
267
- if self._year <= 1999:
268
- # Day of Portugal, Camões, and the Portuguese Communities.
269
- self._add_holiday_jun_10(tr("葡國日、賈梅士日暨葡僑日"))
270
-
271
- # Mid-Autumn Festival.
272
- self._add_mid_autumn_festival(tr("中秋節"))
273
-
274
- else:
275
- # The Day following Mid-Autumn Festival.
276
- self._add_mid_autumn_festival_day_two(tr("中秋節翌日"))
277
-
278
- # Macao S.A.R. Establishment Day.
279
- self._add_holiday_dec_20(tr("澳門特別行政區成立紀念日"))
280
-
281
285
  def _populate_government_holidays(self):
282
286
  # While Cross-Checking References are available for from 2005-2025,
283
287
  # SUN in-lieus starts in 2011; SAT-SUN in-lieus starts in 2012.
@@ -372,13 +376,20 @@ class Macau(
372
376
  # The first working day after %s.
373
377
  else self.tr("%s後首個工作日")
374
378
  )
379
+ self.observed_estimated_label = (
380
+ # Compensatory rest day for %s (estimated).
381
+ self.tr("%s的補假(推定)")
382
+ if self._year >= 2020
383
+ # The first working day after %s (estimated).
384
+ else self.tr("%s後首個工作日(推定)")
385
+ )
375
386
  # Prior to 2012, in-lieus are only given for holidays which falls on Sunday.
376
387
  self._observed_rule = (
377
388
  SUN_TO_NEXT_WORKDAY if self._year <= 2011 else SAT_SUN_TO_NEXT_WORKDAY
378
389
  )
379
390
  self._populate_observed(dts_observed, multiple=True)
380
391
 
381
- def _populate_subdiv_i_public_holidays(self):
392
+ def _populate_subdiv_i_optional_holidays(self):
382
393
  # Decreto-Lei n.º 15/93/M - Moved Day of the Municipality of Ilhas from JUL 13 to NOV 30.
383
394
  # Regulamento Administrativo n.º 4/1999 - Removed as a Public Holiday.
384
395
  if self._year <= 1999:
@@ -389,7 +400,7 @@ class Macau(
389
400
  else:
390
401
  self._add_holiday_jul_13(name)
391
402
 
392
- def _populate_subdiv_m_public_holidays(self):
403
+ def _populate_subdiv_m_optional_holidays(self):
393
404
  # Regulamento Administrativo n.º 4/1999 - Removed Macau City Day as a Public Holiday.
394
405
  if self._year <= 1999:
395
406
  # Macau City Day.
@@ -407,10 +418,10 @@ class MAC(Macau):
407
418
  class MacauStaticHolidays:
408
419
  """Macau special holidays.
409
420
 
410
- Special Public and Government Holidays:
421
+ Special General and Government Holidays:
411
422
  * <https://web.archive.org/web/20240421052702/https://www.io.gov.mo/pt/legis/rec/111020>
412
423
 
413
- Special Mandatory Holidays:
424
+ Special Mandatory (Statutory) Holidays:
414
425
  * <https://web.archive.org/web/20250421090753/https://www.dsal.gov.mo/pt/standard/holiday_table.html>
415
426
 
416
427
  Cross-Checking:
@@ -457,10 +468,10 @@ class MacauStaticHolidays:
457
468
  2014: (OCT, 3, name_double_ninth_festival_national_day_2_overlap),
458
469
  2020: (OCT, 5, name_mid_autumn_festival_day_2_national_day_2_overlap),
459
470
  }
460
- special_mandatory_holidays = {
471
+ special_public_holidays = {
461
472
  2015: (SEP, 3, name_70th_war_of_resistance),
462
473
  }
463
- special_public_holidays = {
474
+ special_optional_holidays = {
464
475
  1998: (
465
476
  (DEC, 23, name_fullday),
466
477
  (DEC, 31, name_halfday),
@@ -25,6 +25,8 @@ class Maldives(HolidayBase, InternationalHolidays, IslamicHolidays):
25
25
  """
26
26
 
27
27
  country = "MV"
28
+ # %s (estimated).
29
+ estimated_label = "%s (estimated)"
28
30
  weekend = {FRI, SAT}
29
31
 
30
32
  def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
@@ -24,6 +24,8 @@ class Mauritania(HolidayBase, InternationalHolidays, IslamicHolidays):
24
24
  """
25
25
 
26
26
  country = "MR"
27
+ # %s (estimated).
28
+ estimated_label = "%s (estimated)"
27
29
  weekend = {FRI, SAT}
28
30
 
29
31
  def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
@@ -32,6 +32,8 @@ class Mongolia(HolidayBase, InternationalHolidays, MongolianCalendarHolidays):
32
32
 
33
33
  country = "MN"
34
34
  default_language = "mn"
35
+ # %s (estimated).
36
+ estimated_label = tr("%s (урьдчилсан)")
35
37
  start_year = 2004
36
38
  supported_categories = (PUBLIC, WORKDAY)
37
39
  supported_languages = ("en_US", "mn")
@@ -10,7 +10,10 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
- from holidays.calendars.gregorian import FEB, MAY
13
+ from gettext import gettext as tr
14
+
15
+ from holidays.calendars import _CustomIslamicHolidays
16
+ from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
14
17
  from holidays.groups import (
15
18
  ChristianHolidays,
16
19
  InternationalHolidays,
@@ -27,11 +30,33 @@ class Nigeria(
27
30
 
28
31
  References:
29
32
  * <https://en.wikipedia.org/wiki/Public_holidays_in_Nigeria>
33
+ * [Public Holidays Decree 1979](https://web.archive.org/web/20240616072641/https://archive.gazettes.africa/archive/ng/1979/ng-government-gazette-supplement-dated-1979-02-01-no-5.pdf)
34
+ * [Public Holidays (Amendment) Decree 1984](https://web.archive.org/web/20240615185836/https://archive.gazettes.africa/archive/ng/1984/ng-government-gazette-supplement-dated-1984-08-30-no-52-part-a.pdf)
35
+ * [Public Holidays Act (2004 Consolidated Version)](https://web.archive.org/web/20250822094939/https://placng.org/lawsofnigeria/view2.php?sn=467)
36
+ * <https://web.archive.org/web/20250829024504/https://fmino.gov.ng/may-29th-in-nigerias-history/>
37
+ * <https://web.archive.org/web/20250829084254/https://www.iita.org/wp-content/uploads/2017/01/The-Bulletin-23-27-May-2011-No.-2070.pdf>
38
+ * <https://web.archive.org/web/20170618031224/http://pulse.ng/local/inauguration-day-fg-declares-may-29-public-holiday-id3795830.html>
39
+ * <https://web.archive.org/web/20250829081956/https://dailypost.ng/2019/05/27/fg-declares-may-29-public-holiday/>
40
+ * <https://web.archive.org/web/20230620060859/https://interior.gov.ng/fg-declares-monday-may-29th-2023-work-free-day-for-presidential-inauguration/>
41
+ * <https://web.archive.org/web/20250829060151/https://statehouse.gov.ng/news/president-buhari-declares-june-12-the-new-democracy-day/>
42
+ * <https://web.archive.org/web/20250829085227/https://www.nairaland.com/4548139/may-29-remains-inauguration-day>
43
+ * <https://web.archive.org/web/20250829030023/https://www.timeanddate.com/holidays/nigeria/2025?hol=9>
44
+
45
+ In-lieu holidays have been in effect since at least 2010:
46
+ * <http://archive.today/2025.08.30-142719/https://www.vanguardngr.com/2010/05/fg-declares-may-31-public-holiday-for-democracy/>
30
47
  """
31
48
 
32
49
  country = "NG"
33
- observed_label = "%s (observed)"
50
+ default_language = "en_NG"
51
+ # %s (estimated).
52
+ estimated_label = tr("%s (estimated)")
53
+ # %s (observed, estimated).
54
+ observed_estimated_label = tr("%s (observed, estimated)")
55
+ # %s (observed).
56
+ observed_label = tr("%s (observed)")
57
+ # Public Holidays Decree 1979, in effect from January 1st, 1979.
34
58
  start_year = 1979
59
+ supported_languages = ("en_NG", "en_US")
35
60
 
36
61
  def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
37
62
  """
@@ -42,53 +67,69 @@ class Nigeria(
42
67
  """
43
68
  ChristianHolidays.__init__(self)
44
69
  InternationalHolidays.__init__(self)
45
- IslamicHolidays.__init__(self, show_estimated=islamic_show_estimated)
70
+ IslamicHolidays.__init__(
71
+ self, cls=NigeriaIslamicHolidays, show_estimated=islamic_show_estimated
72
+ )
46
73
  StaticHolidays.__init__(self, NigeriaStaticHolidays)
47
74
  kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_WORKDAY)
48
- kwargs.setdefault("observed_since", 2016)
75
+ kwargs.setdefault("observed_since", 2010)
49
76
  super().__init__(*args, **kwargs)
50
77
 
51
78
  def _populate_public_holidays(self):
52
79
  dts_observed = set()
53
80
 
54
81
  # New Year's Day.
55
- dts_observed.add(self._add_new_years_day("New Year's Day"))
82
+ dts_observed.add(self._add_new_years_day(tr("New Year's Day")))
83
+
84
+ # Good Friday.
85
+ self._add_good_friday(tr("Good Friday"))
56
86
 
57
- self._add_good_friday("Good Friday")
58
- self._add_easter_monday("Easter Monday")
87
+ # Easter Monday.
88
+ self._add_easter_monday(tr("Easter Monday"))
59
89
 
60
- # Worker's day.
61
- if self._year >= 1981:
62
- dts_observed.add(self._add_labor_day("Workers' Day"))
90
+ # Added via Public Holidays (Amendment) Decree 1984 on August 28th, 1984.
91
+ if self._year >= 1985:
92
+ # Workers' Day.
93
+ dts_observed.add(self._add_labor_day(tr("Workers' Day")))
63
94
 
64
- # Democracy Day.
95
+ # Added via Public Holidays (Amendment) Decree 2000.
96
+ # Changed to June 12th for 2019 onwards on July 6th, 2018.
65
97
  if self._year >= 2000:
66
- name = "Democracy Day"
98
+ # Democracy Day.
99
+ name = tr("Democracy Day")
67
100
  dts_observed.add(
68
101
  self._add_holiday_jun_12(name)
69
102
  if self._year >= 2019
70
103
  else self._add_holiday_may_29(name)
71
104
  )
72
105
 
73
- # Independence Day.
74
- dts_observed.add(self._add_holiday_oct_1("Independence Day"))
106
+ if self._year >= 1999 and self._year % 4 == 3:
107
+ # Presidential Inauguration Day.
108
+ self._add_holiday_may_29(tr("Presidential Inauguration Day"))
109
+
110
+ # National Day.
111
+ dts_observed.add(self._add_holiday_oct_1(tr("National Day")))
112
+
113
+ # Christmas Day.
114
+ dts_observed.add(self._add_christmas_day(tr("Christmas Day")))
75
115
 
76
- # Christmas day.
77
- dts_observed.add(self._add_christmas_day("Christmas Day"))
116
+ # Boxing Day.
117
+ dts_observed.add(self._add_christmas_day_two(tr("Boxing Day")))
78
118
 
79
- # Boxing day.
80
- dts_observed.add(self._add_christmas_day_two("Boxing Day"))
119
+ # Prophet's Birthday.
120
+ dts_observed.update(self._add_mawlid_day(tr("Id el Maulud")))
81
121
 
82
122
  # Eid al-Fitr.
83
- dts_observed.update(self._add_eid_al_fitr_day("Eid-el-Fitr"))
84
- dts_observed.update(self._add_eid_al_fitr_day_two("Eid-el-Fitr Holiday"))
123
+ dts_observed.update(self._add_eid_al_fitr_day(tr("Id el Fitr")))
124
+
125
+ # Eid al-Fitr Holiday.
126
+ dts_observed.update(self._add_eid_al_fitr_day_two(tr("Id el Fitr Holiday")))
85
127
 
86
128
  # Eid al-Adha.
87
- dts_observed.update(self._add_eid_al_adha_day("Eid-el-Kabir"))
88
- dts_observed.update(self._add_eid_al_adha_day_two("Eid-el-Kabir Holiday"))
129
+ dts_observed.update(self._add_eid_al_adha_day(tr("Id el Kabir")))
89
130
 
90
- # Birthday of Prophet Muhammad.
91
- dts_observed.update(self._add_mawlid_day("Eid-el-Mawlid"))
131
+ # Eid al-Adha Holiday.
132
+ dts_observed.update(self._add_eid_al_adha_day_two(tr("Id el Kabir Holiday")))
92
133
 
93
134
  if self.observed:
94
135
  self._populate_observed(dts_observed)
@@ -102,10 +143,140 @@ class NGA(Nigeria):
102
143
  pass
103
144
 
104
145
 
146
+ class NigeriaIslamicHolidays(_CustomIslamicHolidays):
147
+ # https://web.archive.org/web/20250829051803/https://www.timeanddate.com/holidays/nigeria/id-el-kabir
148
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (1979, 2025)
149
+ EID_AL_ADHA_DATES = {
150
+ 1979: (NOV, 1),
151
+ 1980: (OCT, 20),
152
+ 1981: (OCT, 9),
153
+ 1982: (SEP, 29),
154
+ 1983: (SEP, 18),
155
+ 1984: (SEP, 6),
156
+ 1985: (AUG, 27),
157
+ 1986: (AUG, 16),
158
+ 1987: (AUG, 6),
159
+ 1988: (JUL, 25),
160
+ 1989: (JUL, 14),
161
+ 1990: (JUL, 4),
162
+ 1991: (JUN, 23),
163
+ 1993: (JUN, 1),
164
+ 1994: (MAY, 21),
165
+ 1995: (MAY, 10),
166
+ 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),
174
+ 2007: (DEC, 19),
175
+ 2008: (DEC, 9),
176
+ 2009: (NOV, 28),
177
+ 2010: (NOV, 17),
178
+ 2011: (NOV, 7),
179
+ 2014: (OCT, 6),
180
+ 2015: (SEP, 24),
181
+ 2016: (SEP, 12),
182
+ 2017: (SEP, 2),
183
+ 2018: (AUG, 22),
184
+ 2019: (AUG, 12),
185
+ }
186
+
187
+ # https://web.archive.org/web/20250829052410/https://www.timeanddate.com/holidays/nigeria/id-el-fitr
188
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (1979, 2025)
189
+ EID_AL_FITR_DATES = {
190
+ 1979: (AUG, 25),
191
+ 1980: (AUG, 13),
192
+ 1981: (AUG, 2),
193
+ 1982: (JUL, 23),
194
+ 1983: (JUL, 12),
195
+ 1985: (JUN, 20),
196
+ 1986: (JUN, 9),
197
+ 1987: (MAY, 30),
198
+ 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),
205
+ 1996: (FEB, 21),
206
+ 1997: (FEB, 9),
207
+ 1998: (JAN, 30),
208
+ 1999: (JAN, 19),
209
+ 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),
215
+ 2007: (OCT, 12),
216
+ 2008: (SEP, 29),
217
+ 2009: (SEP, 21),
218
+ 2010: (SEP, 9),
219
+ 2012: (AUG, 20),
220
+ 2017: (JUN, 26),
221
+ }
222
+
223
+ # https://web.archive.org/web/20250829053435/https://www.timeanddate.com/holidays/nigeria/id-el-maulud
224
+ # https://web.archive.org/web/20250829054319/https://pmnewsnigeria.com/2012/02/03/fg-declares-6-feb-public-holiday/
225
+ MAWLID_DATES_CONFIRMED_YEARS = (1979, 2025)
226
+ MAWLID_DATES = {
227
+ 1979: (FEB, 10),
228
+ 1982: ((JAN, 8), (DEC, 28)),
229
+ 1983: (DEC, 17),
230
+ 1984: (DEC, 6),
231
+ 1985: (NOV, 25),
232
+ 1986: (NOV, 15),
233
+ 1987: (NOV, 4),
234
+ 1988: (OCT, 23),
235
+ 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),
242
+ 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),
249
+ 2012: (FEB, 6),
250
+ 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),
256
+ }
257
+
258
+
105
259
  class NigeriaStaticHolidays:
260
+ """Nigeria special holidays.
261
+
262
+ References:
263
+ * <https://web.archive.org/web/20250829090324/https://www.pambazuka.org/governance/nigeria-holiday-blow-presidential-hopeful>
264
+ * <https://web.archive.org/web/20250829084913/https://www.nbcnews.com/id/wbna36974655>
265
+ * <https://web.archive.org/web/20250829081641/https://businessday.ng/uncategorized/article/2019-elections-fg-declares-friday-public-holiday-excludes-banksothers/>
266
+ * <https://web.archive.org/web/20250829024209/https://statehouse.gov.ng/news/new-date-for-special-federal-executive-council-session-in-honour-of-president-muhammadu-buhari-to-be-announced/>
267
+ """
268
+
269
+ # Public Holiday for Elections.
270
+ name_elections = tr("Public Holiday for Elections")
271
+
106
272
  special_public_holidays = {
107
- 2019: (
108
- (FEB, 22, "Public Holiday for Elections"),
109
- (MAY, 29, "Presidential Inauguration Day"),
273
+ 2007: (
274
+ (APR, 12, name_elections),
275
+ (APR, 13, name_elections),
110
276
  ),
277
+ # Day of Mourning for President Umaru Yar'Adua.
278
+ 2010: (MAY, 6, tr("Day of Mourning for President Umaru Yar'Adua")),
279
+ 2019: (FEB, 22, name_elections),
280
+ # Day of Mourning for President Muhammadu Buhari.
281
+ 2025: (JUL, 15, tr("Day of Mourning for President Muhammadu Buhari")),
111
282
  }
@@ -53,6 +53,7 @@ class Philippines(
53
53
  * [Proclamation No. 839/2025](https://archive.org/details/20250320-proc-839-frm_202506)
54
54
  * [Proclamation No. 878/2025](https://archive.org/details/20250506-proc-878-frm_202506)
55
55
  * [Proclamation No. 911/2025](https://archive.org/details/20250521-proc-911-frm_20250606_1800)
56
+ * [Proclamation No. 1006/2025](https://archive.org/details/20250903-proc-1006-frm)
56
57
  """
57
58
 
58
59
  country = "PH"
@@ -240,9 +241,13 @@ class PhilippinesIslamicHolidays(_CustomIslamicHolidays):
240
241
  class PhilippinesStaticHolidays:
241
242
  # Additional special (non-working) day.
242
243
  additional_special = tr("Additional special (non-working) day")
244
+
243
245
  # Elections special (non-working) day.
244
246
  election_special = tr("Elections special (non-working) day")
245
247
 
248
+ # Christmas Eve.
249
+ christmas_eve = tr("Christmas Eve")
250
+
246
251
  special_public_holidays = {
247
252
  2008: (
248
253
  (DEC, 26, additional_special),
@@ -309,7 +314,11 @@ class PhilippinesStaticHolidays:
309
314
  (JUL, 27, additional_special),
310
315
  # All Saints' Day Eve.
311
316
  (OCT, 31, tr("All Saints' Day Eve")),
312
- # Christmas Eve.
313
- (DEC, 24, tr("Christmas Eve")),
317
+ (DEC, 24, christmas_eve),
318
+ ),
319
+ 2026: (
320
+ # All Souls' Day.
321
+ (NOV, 2, tr("All Souls' Day")),
322
+ (DEC, 24, christmas_eve),
314
323
  ),
315
324
  }