holidays 0.78__py3-none-any.whl → 0.80__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 (161) hide show
  1. holidays/calendars/__init__.py +1 -0
  2. holidays/calendars/chinese.py +14 -4
  3. holidays/calendars/ethiopian.py +31 -0
  4. holidays/calendars/hindu.py +1 -0
  5. holidays/calendars/islamic.py +16 -4
  6. holidays/calendars/julian.py +14 -0
  7. holidays/calendars/mandaean.py +59 -0
  8. holidays/calendars/tibetan.py +1466 -0
  9. holidays/constants.py +2 -1
  10. holidays/countries/__init__.py +20 -0
  11. holidays/countries/afghanistan.py +6 -39
  12. holidays/countries/albania.py +3 -22
  13. holidays/countries/argentina.py +7 -18
  14. holidays/countries/australia.py +191 -295
  15. holidays/countries/azerbaijan.py +6 -39
  16. holidays/countries/bahrain.py +29 -38
  17. holidays/countries/bhutan.py +194 -0
  18. holidays/countries/bosnia_and_herzegovina.py +7 -28
  19. holidays/countries/brunei.py +7 -117
  20. holidays/countries/burkina_faso.py +9 -15
  21. holidays/countries/burundi.py +95 -40
  22. holidays/countries/cameroon.py +8 -34
  23. holidays/countries/canada.py +9 -1
  24. holidays/countries/central_african_republic.py +3 -16
  25. holidays/countries/chad.py +9 -17
  26. holidays/countries/chile.py +20 -4
  27. holidays/countries/christmas_island.py +10 -15
  28. holidays/countries/cocos_islands.py +5 -24
  29. holidays/countries/comoros.py +121 -0
  30. holidays/countries/egypt.py +5 -37
  31. holidays/countries/eritrea.py +104 -0
  32. holidays/countries/ethiopia.py +18 -47
  33. holidays/countries/fiji.py +1 -2
  34. holidays/countries/gabon.py +5 -23
  35. holidays/countries/gambia.py +168 -0
  36. holidays/countries/georgia.py +9 -7
  37. holidays/countries/guinea.py +5 -27
  38. holidays/countries/guinea_bissau.py +96 -0
  39. holidays/countries/guyana.py +2 -17
  40. holidays/countries/india.py +12 -25
  41. holidays/countries/indonesia.py +6 -158
  42. holidays/countries/iran.py +16 -126
  43. holidays/countries/iraq.py +276 -0
  44. holidays/countries/kazakhstan.py +2 -18
  45. holidays/countries/kenya.py +2 -8
  46. holidays/countries/kiribati.py +124 -0
  47. holidays/countries/kyrgyzstan.py +2 -0
  48. holidays/countries/lebanon.py +5 -87
  49. holidays/countries/liberia.py +80 -0
  50. holidays/countries/libya.py +5 -37
  51. holidays/countries/macau.py +65 -63
  52. holidays/countries/malaysia.py +9 -130
  53. holidays/countries/maldives.py +2 -0
  54. holidays/countries/mali.py +4 -9
  55. holidays/countries/mauritania.py +2 -0
  56. holidays/countries/mauritius.py +1 -2
  57. holidays/countries/montenegro.py +3 -18
  58. holidays/countries/nepal.py +42 -44
  59. holidays/countries/niger.py +14 -74
  60. holidays/countries/nigeria.py +198 -27
  61. holidays/countries/north_macedonia.py +3 -39
  62. holidays/countries/oman.py +6 -28
  63. holidays/countries/pakistan.py +5 -30
  64. holidays/countries/palestine.py +2 -5
  65. holidays/countries/philippines.py +3 -33
  66. holidays/countries/qatar.py +3 -45
  67. holidays/countries/rwanda.py +162 -0
  68. holidays/countries/saudi_arabia.py +3 -0
  69. holidays/countries/senegal.py +6 -16
  70. holidays/countries/sierra_leone.py +5 -21
  71. holidays/countries/singapore.py +7 -59
  72. holidays/countries/somalia.py +79 -0
  73. holidays/countries/south_georgia_and_the_south_sandwich_islands.py +160 -0
  74. holidays/countries/south_sudan.py +133 -0
  75. holidays/countries/spain.py +7 -10
  76. holidays/countries/sri_lanka.py +3 -14
  77. holidays/countries/suriname.py +11 -19
  78. holidays/countries/syrian_arab_republic.py +134 -0
  79. holidays/countries/tajikistan.py +116 -0
  80. holidays/countries/tanzania.py +291 -153
  81. holidays/countries/timor_leste.py +2 -17
  82. holidays/countries/togo.py +4 -29
  83. holidays/countries/trinidad_and_tobago.py +2 -9
  84. holidays/countries/turkey.py +2 -116
  85. holidays/countries/turkmenistan.py +164 -0
  86. holidays/countries/uganda.py +101 -0
  87. holidays/countries/united_arab_emirates.py +5 -29
  88. holidays/countries/uzbekistan.py +3 -31
  89. holidays/countries/yemen.py +8 -52
  90. holidays/financial/__init__.py +5 -0
  91. holidays/financial/national_stock_exchange_of_india.py +169 -0
  92. holidays/groups/__init__.py +2 -0
  93. holidays/groups/christian.py +48 -12
  94. holidays/groups/eastern.py +1 -1
  95. holidays/groups/international.py +17 -1
  96. holidays/groups/islamic.py +1 -1
  97. holidays/groups/mandaean.py +107 -0
  98. holidays/groups/tibetan.py +153 -0
  99. holidays/holiday_base.py +14 -0
  100. holidays/locale/ar/LC_MESSAGES/BH.mo +0 -0
  101. holidays/locale/ar/LC_MESSAGES/IQ.mo +0 -0
  102. holidays/locale/ar/LC_MESSAGES/SY.mo +0 -0
  103. holidays/locale/bs/LC_MESSAGES/BA.mo +0 -0
  104. holidays/locale/en_GM/LC_MESSAGES/GM.mo +0 -0
  105. holidays/locale/en_GS/LC_MESSAGES/GS.mo +0 -0
  106. holidays/locale/en_IN/LC_MESSAGES/XNSE.mo +0 -0
  107. holidays/locale/en_MO/LC_MESSAGES/MO.mo +0 -0
  108. holidays/locale/en_NG/LC_MESSAGES/NG.mo +0 -0
  109. holidays/locale/en_SG/LC_MESSAGES/SG.mo +0 -0
  110. holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
  111. holidays/locale/en_US/LC_MESSAGES/BA.mo +0 -0
  112. holidays/locale/en_US/LC_MESSAGES/BH.mo +0 -0
  113. holidays/locale/en_US/LC_MESSAGES/BI.mo +0 -0
  114. holidays/locale/en_US/LC_MESSAGES/CL.mo +0 -0
  115. holidays/locale/en_US/LC_MESSAGES/ES.mo +0 -0
  116. holidays/locale/en_US/LC_MESSAGES/GE.mo +0 -0
  117. holidays/locale/en_US/LC_MESSAGES/GM.mo +0 -0
  118. holidays/locale/en_US/LC_MESSAGES/GS.mo +0 -0
  119. holidays/locale/en_US/LC_MESSAGES/GW.mo +0 -0
  120. holidays/locale/en_US/LC_MESSAGES/IQ.mo +0 -0
  121. holidays/locale/en_US/LC_MESSAGES/MO.mo +0 -0
  122. holidays/locale/en_US/LC_MESSAGES/NG.mo +0 -0
  123. holidays/locale/en_US/LC_MESSAGES/RW.mo +0 -0
  124. holidays/locale/en_US/LC_MESSAGES/SG.mo +0 -0
  125. holidays/locale/en_US/LC_MESSAGES/SY.mo +0 -0
  126. holidays/locale/en_US/LC_MESSAGES/TJ.mo +0 -0
  127. holidays/locale/en_US/LC_MESSAGES/TM.mo +0 -0
  128. holidays/locale/en_US/LC_MESSAGES/TZ.mo +0 -0
  129. holidays/locale/en_US/LC_MESSAGES/XNSE.mo +0 -0
  130. holidays/locale/es/LC_MESSAGES/AR.mo +0 -0
  131. holidays/locale/es/LC_MESSAGES/ES.mo +0 -0
  132. holidays/locale/fr/LC_MESSAGES/RW.mo +0 -0
  133. holidays/locale/fr_BI/LC_MESSAGES/BI.mo +0 -0
  134. holidays/locale/hi/LC_MESSAGES/XNSE.mo +0 -0
  135. holidays/locale/ka/LC_MESSAGES/GE.mo +0 -0
  136. holidays/locale/pt_GW/LC_MESSAGES/GW.mo +0 -0
  137. holidays/locale/pt_MO/LC_MESSAGES/MO.mo +0 -0
  138. holidays/locale/ru/LC_MESSAGES/TJ.mo +0 -0
  139. holidays/locale/ru/LC_MESSAGES/TM.mo +0 -0
  140. holidays/locale/rw/LC_MESSAGES/RW.mo +0 -0
  141. holidays/locale/sr/LC_MESSAGES/BA.mo +0 -0
  142. holidays/locale/sw/LC_MESSAGES/TZ.mo +0 -0
  143. holidays/locale/tg/LC_MESSAGES/TJ.mo +0 -0
  144. holidays/locale/th/LC_MESSAGES/MO.mo +0 -0
  145. holidays/locale/th/LC_MESSAGES/SG.mo +0 -0
  146. holidays/locale/tk/LC_MESSAGES/TM.mo +0 -0
  147. holidays/locale/uk/LC_MESSAGES/AR.mo +0 -0
  148. holidays/locale/uk/LC_MESSAGES/BA.mo +0 -0
  149. holidays/locale/uk/LC_MESSAGES/CL.mo +0 -0
  150. holidays/locale/uk/LC_MESSAGES/ES.mo +0 -0
  151. holidays/locale/uk/LC_MESSAGES/GE.mo +0 -0
  152. holidays/locale/zh_CN/LC_MESSAGES/MO.mo +0 -0
  153. holidays/locale/zh_MO/LC_MESSAGES/MO.mo +0 -0
  154. holidays/registry.py +46 -14
  155. holidays/version.py +1 -1
  156. {holidays-0.78.dist-info → holidays-0.80.dist-info}/METADATA +127 -9
  157. {holidays-0.78.dist-info → holidays-0.80.dist-info}/RECORD +161 -113
  158. {holidays-0.78.dist-info → holidays-0.80.dist-info}/licenses/CONTRIBUTORS +2 -0
  159. {holidays-0.78.dist-info → holidays-0.80.dist-info}/WHEEL +0 -0
  160. {holidays-0.78.dist-info → holidays-0.80.dist-info}/licenses/LICENSE +0 -0
  161. {holidays-0.78.dist-info → holidays-0.80.dist-info}/top_level.txt +0 -0
@@ -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
  }
@@ -13,18 +13,7 @@
13
13
  from gettext import gettext as tr
14
14
 
15
15
  from holidays.calendars import _CustomIslamicHolidays
16
- from holidays.calendars.gregorian import (
17
- GREGORIAN_CALENDAR,
18
- MAR,
19
- APR,
20
- MAY,
21
- JUN,
22
- JUL,
23
- AUG,
24
- SEP,
25
- OCT,
26
- NOV,
27
- )
16
+ from holidays.calendars.gregorian import GREGORIAN_CALENDAR, APR, MAY, JUL, SEP, OCT
28
17
  from holidays.calendars.julian import JULIAN_CALENDAR
29
18
  from holidays.constants import (
30
19
  ALBANIAN,
@@ -262,42 +251,17 @@ class MKD(NorthMacedonia):
262
251
 
263
252
 
264
253
  class NorthMacedoniaIslamicHolidays(_CustomIslamicHolidays):
254
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2010, 2025)
265
255
  EID_AL_ADHA_DATES = {
266
- 2010: (NOV, 16),
267
- 2011: (NOV, 6),
268
256
  2012: (OCT, 25),
269
- 2013: (OCT, 15),
270
- 2014: (OCT, 4),
271
257
  2015: (SEP, 24),
272
258
  2016: (SEP, 12),
273
- 2017: (SEP, 1),
274
- 2018: (AUG, 21),
275
- 2019: (AUG, 11),
276
- 2020: (JUL, 31),
277
- 2021: (JUL, 20),
278
- 2022: (JUL, 9),
279
- 2023: (JUN, 28),
280
- 2024: (JUN, 16),
281
- 2025: (JUN, 6),
282
259
  }
283
260
 
261
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2010, 2025)
284
262
  EID_AL_FITR_DATES = {
285
263
  2010: (SEP, 9),
286
- 2011: (AUG, 30),
287
- 2012: (AUG, 19),
288
- 2013: (AUG, 8),
289
- 2014: (JUL, 28),
290
- 2015: (JUL, 17),
291
264
  2016: (JUL, 5),
292
- 2017: (JUN, 25),
293
- 2018: (JUN, 15),
294
- 2019: (JUN, 4),
295
- 2020: (MAY, 24),
296
- 2021: (MAY, 13),
297
- 2022: (MAY, 2),
298
- 2023: (APR, 21),
299
- 2024: (APR, 10),
300
- 2025: (MAR, 30),
301
265
  }
302
266
 
303
267
 
@@ -14,17 +14,14 @@ from gettext import gettext as tr
14
14
 
15
15
  from holidays.calendars import _CustomIslamicHolidays
16
16
  from holidays.calendars.gregorian import (
17
- JAN,
18
17
  FEB,
19
18
  MAR,
20
19
  APR,
21
- MAY,
22
20
  JUN,
23
21
  JUL,
24
22
  AUG,
25
23
  SEP,
26
24
  OCT,
27
- NOV,
28
25
  THU,
29
26
  FRI,
30
27
  SAT,
@@ -123,63 +120,44 @@ class OMN(Oman):
123
120
 
124
121
  class OmanIslamicHolidays(_CustomIslamicHolidays):
125
122
  # https://web.archive.org/web/20240911084650/https://www.timeanddate.com/holidays/oman/muharram-new-year
123
+ HIJRI_NEW_YEAR_DATES_CONFIRMED_YEARS = (2018, 2024)
126
124
  HIJRI_NEW_YEAR_DATES = {
127
- 2018: (SEP, 11),
128
125
  2019: (SEP, 1),
129
126
  2020: (AUG, 21),
130
127
  2021: (AUG, 10),
131
- 2022: (JUL, 30),
132
128
  2023: (JUL, 20),
133
- 2024: (JUL, 7),
134
129
  }
135
130
 
136
131
  # https://web.archive.org/web/20240810230306/https://www.timeanddate.com/holidays/oman/prophet-birthday
132
+ MAWLID_DATES_CONFIRMED_YEARS = (2018, 2024)
137
133
  MAWLID_DATES = {
138
- 2018: (NOV, 20),
139
- 2019: (NOV, 9),
140
- 2020: (OCT, 29),
141
134
  2021: (OCT, 19),
142
135
  2022: (OCT, 9),
143
136
  2023: (SEP, 28),
144
- 2024: (SEP, 15),
145
137
  }
146
138
 
147
139
  # https://web.archive.org/web/20241231191036/https://www.timeanddate.com/holidays/oman/isra-miraj
140
+ ISRA_AND_MIRAJ_DATES_CONFIRMED_YEARS = (2018, 2025)
148
141
  ISRA_AND_MIRAJ_DATES = {
149
- 2018: (APR, 13),
150
- 2019: (APR, 3),
151
- 2020: (MAR, 22),
152
- 2021: (MAR, 11),
153
142
  2022: (MAR, 1),
154
143
  2023: (FEB, 19),
155
- 2024: (FEB, 8),
156
- 2025: (JAN, 27),
157
144
  }
158
145
 
159
146
  # https://web.archive.org/web/20240913230603/https://www.timeanddate.com/holidays/oman/eid-al-adha
147
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2019, 2024)
160
148
  EID_AL_ADHA_DATES = {
161
- 2019: (AUG, 11),
162
- 2020: (JUL, 31),
163
- 2021: (JUL, 20),
164
- 2022: (JUL, 9),
165
- 2023: (JUN, 28),
166
149
  2024: (JUN, 17),
167
150
  }
168
151
 
169
152
  # https://web.archive.org/web/20241231191036/https://www.timeanddate.com/holidays/oman/eid-al-fitr
153
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2019, 2025)
170
154
  EID_AL_FITR_DATES = {
171
- 2019: (JUN, 4),
172
- 2020: (MAY, 24),
173
- 2021: (MAY, 13),
174
- 2022: (MAY, 2),
175
155
  2023: (APR, 22),
176
- 2024: (APR, 10),
177
156
  2025: (MAR, 31),
178
157
  }
179
158
 
180
159
  # https://web.archive.org/web/20240814104839/https://www.timeanddate.com/holidays/oman/ramadan-begins
160
+ RAMADAN_BEGINNING_DATES_CONFIRMED_YEARS = (2023, 2025)
181
161
  RAMADAN_BEGINNING_DATES = {
182
- 2023: (MAR, 23),
183
162
  2024: (MAR, 12),
184
- 2025: (MAR, 1),
185
163
  }
@@ -107,48 +107,32 @@ class PAK(Pakistan):
107
107
 
108
108
  class PakistanIslamicHolidays(_CustomIslamicHolidays):
109
109
  # https://web.archive.org/web/20250724060822/https://www.timeanddate.com/holidays/pakistan/ashura
110
+ ASHURA_DATES_CONFIRMED_YEARS = (2005, 2025)
110
111
  ASHURA_DATES = {
111
112
  2005: (FEB, 18),
112
113
  2006: (FEB, 8),
113
114
  2007: (JAN, 28),
114
115
  2008: (JAN, 18),
115
116
  2009: ((JAN, 6), (DEC, 26)),
116
- 2010: (DEC, 16),
117
- 2011: (DEC, 5),
118
117
  2012: (NOV, 23),
119
- 2013: (NOV, 13),
120
- 2014: (NOV, 3),
121
- 2015: (OCT, 23),
122
- 2016: (OCT, 11),
123
- 2017: (SEP, 30),
124
118
  2018: (SEP, 21),
125
- 2019: (SEP, 9),
126
- 2020: (AUG, 29),
127
- 2021: (AUG, 18),
128
119
  2022: (AUG, 9),
129
- 2023: (JUL, 28),
130
- 2024: (JUL, 16),
131
120
  2025: (JUL, 6),
132
121
  }
133
122
 
134
123
  # https://web.archive.org/web/20250724060629/https://www.timeanddate.com/holidays/pakistan/eid-ul-azha
124
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2005, 2025)
135
125
  EID_AL_ADHA_DATES = {
136
- 2005: (JAN, 21),
137
- 2006: ((JAN, 10), (DEC, 31)),
138
- 2007: (DEC, 20),
139
126
  2008: (DEC, 9),
140
127
  2009: (NOV, 28),
141
128
  2010: (NOV, 17),
142
129
  2011: (NOV, 7),
143
- 2012: (OCT, 26),
144
- 2013: (OCT, 15),
145
130
  2014: (OCT, 6),
146
131
  2015: (SEP, 24),
147
132
  2016: (SEP, 12),
148
133
  2017: (SEP, 2),
149
134
  2018: (AUG, 22),
150
135
  2019: (AUG, 12),
151
- 2020: (JUL, 31),
152
136
  2021: (JUL, 21),
153
137
  2022: (JUL, 10),
154
138
  2023: (JUN, 29),
@@ -157,41 +141,32 @@ class PakistanIslamicHolidays(_CustomIslamicHolidays):
157
141
  }
158
142
 
159
143
  # https://web.archive.org/web/20250724060834/https://www.timeanddate.com/holidays/pakistan/eid-ul-fitr-1
144
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2005, 2025)
160
145
  EID_AL_FITR_DATES = {
161
146
  2005: (NOV, 4),
162
147
  2006: (OCT, 24),
163
- 2007: (OCT, 13),
164
148
  2008: (OCT, 2),
165
149
  2009: (SEP, 21),
166
- 2010: (SEP, 10),
167
150
  2011: (AUG, 31),
168
- 2012: (AUG, 19),
169
- 2013: (AUG, 8),
170
151
  2014: (JUL, 29),
171
- 2015: (JUL, 17),
172
- 2016: (JUL, 6),
173
152
  2017: (JUN, 26),
174
153
  2018: (JUN, 16),
175
154
  2019: (JUN, 5),
176
- 2020: (MAY, 24),
177
- 2021: (MAY, 13),
178
155
  2022: (MAY, 3),
179
156
  2023: (APR, 22),
180
- 2024: (APR, 10),
181
157
  2025: (MAR, 31),
182
158
  }
183
159
 
184
160
  # https://web.archive.org/web/20250724061027/https://www.timeanddate.com/holidays/pakistan/eid-milad-un-nabi
161
+
162
+ MAWLID_DATES_CONFIRMED_YEARS = (2005, 2024)
185
163
  MAWLID_DATES = {
186
164
  2005: (APR, 22),
187
165
  2006: (APR, 11),
188
- 2007: (MAR, 31),
189
166
  2008: (MAR, 21),
190
- 2009: (MAR, 9),
191
167
  2010: (MAR, 1),
192
168
  2011: (FEB, 17),
193
169
  2012: (FEB, 5),
194
- 2013: (JAN, 24),
195
170
  2014: (JAN, 14),
196
171
  2015: (JAN, 4),
197
172
  2016: (DEC, 12),
@@ -13,7 +13,7 @@
13
13
  from gettext import gettext as tr
14
14
 
15
15
  from holidays.calendars import _CustomIslamicHolidays
16
- from holidays.calendars.gregorian import GREGORIAN_CALENDAR, SEP
16
+ from holidays.calendars.gregorian import GREGORIAN_CALENDAR
17
17
  from holidays.calendars.julian import JULIAN_CALENDAR
18
18
  from holidays.constants import CATHOLIC, ORTHODOX, PUBLIC
19
19
  from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
@@ -171,7 +171,4 @@ class PSE(Palestine):
171
171
 
172
172
 
173
173
  class PalestineIslamicHolidays(_CustomIslamicHolidays):
174
- # All other dates follow Umm al-Qura calendar.
175
- MAWLID_DATES = {
176
- 2023: (SEP, 27),
177
- }
174
+ MAWLID_DATES_CONFIRMED_YEARS = (2020, 2024)
@@ -201,68 +201,38 @@ class PHL(Philippines):
201
201
 
202
202
 
203
203
  class PhilippinesChineseHolidays(_CustomChineseHolidays):
204
- LUNAR_NEW_YEAR_DATES = {
205
- 2012: (JAN, 23),
206
- 2013: (FEB, 10),
207
- 2014: (JAN, 31),
208
- 2015: (FEB, 19),
209
- 2016: (FEB, 8),
210
- 2017: (JAN, 28),
211
- 2018: (FEB, 16),
212
- 2019: (FEB, 5),
213
- 2020: (JAN, 25),
214
- 2021: (FEB, 12),
215
- 2022: (FEB, 1),
216
- 2023: (JAN, 22),
217
- 2024: (FEB, 10),
218
- 2025: (JAN, 29),
219
- }
204
+ LUNAR_NEW_YEAR_DATES_CONFIRMED_YEARS = (2012, 2025)
220
205
 
221
206
 
222
207
  class PhilippinesIslamicHolidays(_CustomIslamicHolidays):
208
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2010, 2025)
223
209
  EID_AL_ADHA_DATES = {
224
210
  2010: (NOV, 17),
225
211
  2011: (NOV, 7),
226
- 2012: (OCT, 26),
227
- 2013: (OCT, 15),
228
212
  2014: (OCT, 6),
229
213
  2015: (SEP, 25),
230
214
  2016: (SEP, 10),
231
215
  2017: (SEP, 2),
232
- 2018: (AUG, 21),
233
216
  2019: (AUG, 12),
234
- 2020: (JUL, 31),
235
- 2021: (JUL, 20),
236
- 2022: (JUL, 9),
237
- 2023: (JUN, 28),
238
217
  2024: (JUN, 17),
239
- 2025: (JUN, 6),
240
218
  }
241
219
 
220
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2002, 2025)
242
221
  EID_AL_FITR_DATES = {
243
222
  2002: (DEC, 6),
244
223
  2003: (NOV, 26),
245
- 2004: (NOV, 14),
246
224
  2005: (NOV, 4),
247
225
  2006: (OCT, 24),
248
226
  2007: (OCT, 12),
249
- 2008: (OCT, 1),
250
227
  2009: (SEP, 21),
251
- 2010: (SEP, 10),
252
- 2011: (AUG, 30),
253
228
  2012: (AUG, 20),
254
229
  2013: (AUG, 9),
255
230
  2014: (JUL, 29),
256
- 2015: (JUL, 17),
257
231
  2016: (JUL, 7),
258
232
  2017: (JUN, 26),
259
- 2018: (JUN, 15),
260
233
  2019: (JUN, 5),
261
234
  2020: (MAY, 25),
262
- 2021: (MAY, 13),
263
235
  2022: (MAY, 3),
264
- 2023: (APR, 21),
265
- 2024: (APR, 10),
266
236
  2025: (APR, 1),
267
237
  }
268
238