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
@@ -0,0 +1,276 @@
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 import _CustomIslamicHolidays
16
+ from holidays.calendars.gregorian import JAN, MAR, JUN, JUL, AUG, SEP, OCT, NOV, DEC, FRI, SAT
17
+ from holidays.constants import CHRISTIAN, HEBREW, PUBLIC, SABIAN, YAZIDI
18
+ from holidays.groups import (
19
+ ChristianHolidays,
20
+ HebrewCalendarHolidays,
21
+ InternationalHolidays,
22
+ IslamicHolidays,
23
+ MandaeanHolidays,
24
+ )
25
+ from holidays.holiday_base import HolidayBase
26
+
27
+
28
+ class Iraq(
29
+ HolidayBase,
30
+ ChristianHolidays,
31
+ HebrewCalendarHolidays,
32
+ InternationalHolidays,
33
+ IslamicHolidays,
34
+ MandaeanHolidays,
35
+ ):
36
+ """Iraq holidays.
37
+
38
+ References:
39
+ - [Law No. 10 of 1963](https://web.archive.org/web/20200220135833/http://wiki.dorar-aliraq.net:80/iraqilaws/law/1447.html)
40
+ - [1968 Amendment to Law No. 10 of 1963](https://web.archive.org/web/20250730075454/https://wiki.dorar-aliraq.net/iraqilaws/law/18741.html)
41
+ - [Law No. 110 of 1972](https://web.archive.org/web/20240820010527/https://wiki.dorar-aliraq.net/iraqilaws/law/5663.html)
42
+ - [1973 Amendment to Law No. 110 of 1972](https://web.archive.org/web/20250730080337/https://wiki.dorar-aliraq.net/iraqilaws/law/6165.html)
43
+ - [Official Holiday Law 2024](https://web.archive.org/web/20250629123214/https://natlex.ilo.org/dyn/natlex2/natlex2/files/download/116577/قانون%20العطل%20الرسمية%20-%20Copy%20-%20Copy_396.pdf)
44
+ """
45
+
46
+ country = "IQ"
47
+ default_language = "ar"
48
+ # %s (estimated).
49
+ estimated_label = tr("%s (المقدرة)")
50
+ start_year = 1964
51
+ supported_categories = (CHRISTIAN, HEBREW, PUBLIC, SABIAN, YAZIDI)
52
+ supported_languages = ("ar", "en_US")
53
+ weekend = {FRI, SAT}
54
+
55
+ def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
56
+ """
57
+ Args:
58
+ islamic_show_estimated:
59
+ Whether to add "estimated" label to Islamic holidays name
60
+ if holiday date is estimated.
61
+ """
62
+ ChristianHolidays.__init__(self)
63
+ HebrewCalendarHolidays.__init__(self)
64
+ InternationalHolidays.__init__(self)
65
+ IslamicHolidays.__init__(
66
+ self, cls=IraqIslamicHolidays, show_estimated=islamic_show_estimated
67
+ )
68
+ MandaeanHolidays.__init__(self)
69
+ super().__init__(*args, **kwargs)
70
+
71
+ def _populate_public_holidays(self):
72
+ if self._year >= 1973:
73
+ # New Year's Day.
74
+ self._add_new_years_day(tr("رأس السنة الميلادية"))
75
+
76
+ # Army Day.
77
+ self._add_holiday_jan_6(tr("عيد الجيش"))
78
+
79
+ if self._year <= 2024:
80
+ # February 8 Revolution.
81
+ self._add_holiday_feb_8(tr("ثورة 8 شباط"))
82
+
83
+ if self._year >= 2025:
84
+ # Commemoration of the Saddam Baath crimes against the Iraqi people.
85
+ self._add_holiday_mar_16(tr("ذكرى جرائم البعث والأنفال والهجوم على حلبجة"))
86
+
87
+ if self._year >= 1969:
88
+ # Nowruz.
89
+ self._add_holiday_mar_21(tr("عيد نوروز"))
90
+
91
+ # Labor Day.
92
+ self._add_labor_day(tr("عيد العمال العالمي"))
93
+
94
+ if self._year <= 2023:
95
+ # July 14 Revolution.
96
+ self._add_holiday_jul_14(tr("ثورة 14 تموز"))
97
+
98
+ if 1969 <= self._year <= 2023:
99
+ # July 17 Revolution.
100
+ self._add_holiday_jul_17(tr("ثورة 17 تموز"))
101
+
102
+ # Islamic New Year.
103
+ self._add_islamic_new_year_day(tr("رأس السنة الهجرية"))
104
+
105
+ # Ashura.
106
+ self._add_ashura_day(tr("عاشوراء"))
107
+
108
+ # Prophet's Birthday.
109
+ self._add_mawlid_day(tr("المولد النبوي الشريف"))
110
+
111
+ # Eid al-Fitr.
112
+ name = tr("عيد الفطر")
113
+ self._add_eid_al_fitr_day(name)
114
+ self._add_eid_al_fitr_day_two(name)
115
+ self._add_eid_al_fitr_day_three(name)
116
+
117
+ # Day of Arafah.
118
+ self._add_arafah_day(tr("يوم عرفة"))
119
+
120
+ # Eid al-Adha.
121
+ name = tr("عيد الأضحى")
122
+ self._add_eid_al_adha_day(name)
123
+ self._add_eid_al_adha_day_two(name)
124
+ self._add_eid_al_adha_day_three(name)
125
+
126
+ if self._year >= 2024:
127
+ # Eid al-Ghadir.
128
+ self._add_eid_al_ghadir_day(tr("عيد الغدير"))
129
+
130
+ def _populate_christian_holidays(self):
131
+ if self._year <= 1972:
132
+ # New Year's Day.
133
+ self._add_new_years_day(tr("رأس السنة الميلادية"))
134
+
135
+ # Easter Sunday.
136
+ self._add_easter_sunday(tr("أحد الفصح"))
137
+
138
+ # Easter Monday.
139
+ self._add_easter_monday(tr("إثنين الفصح"))
140
+
141
+ # Christmas Day.
142
+ self._add_christmas_day(tr("عيد الميلاد"))
143
+
144
+ def _populate_hebrew_holidays(self):
145
+ if self._year <= 2023:
146
+ # Pesach.
147
+ self._add_passover(tr("عيد الفصح"), range(2))
148
+
149
+ # Yom Kippur.
150
+ self._add_yom_kippur(tr("يوم الكفارة"))
151
+
152
+ # Sukkot.
153
+ self._add_sukkot(tr("عيد المظلة"), range(2))
154
+
155
+ def _populate_sabian_holidays(self):
156
+ if self._year <= 1972:
157
+ return None
158
+
159
+ # Great Feast.
160
+ name = tr("يوما عيد البنجة")
161
+ self._add_great_feast_day(name)
162
+ self._add_great_feast_day_two(name)
163
+ if self._year >= 2024:
164
+ self._add_great_feast_day_three(name)
165
+ self._add_great_feast_day_four(name)
166
+
167
+ # Feast of Creation.
168
+ name = tr("عيد الخليقة")
169
+ self._add_parwanaya_day(name)
170
+ self._add_parwanaya_day_two(name)
171
+ if self._year >= 2024:
172
+ self._add_parwanaya_day_three(name)
173
+ self._add_parwanaya_day_four(name)
174
+ self._add_parwanaya_day_five(name)
175
+
176
+ # Little Feast.
177
+ name = tr("عيد الصغير")
178
+ self._add_dehwa_hanina_day(name)
179
+ if self._year >= 2024:
180
+ self._add_dehwa_hanina_day_two(name)
181
+
182
+ # Prophet Yahya's Birthday.
183
+ self._add_dehwa_daimana_day(tr("مولد النبي يحيى عليه السلام"))
184
+
185
+ def _populate_yazidi_holidays(self):
186
+ # Yazidi New Year.
187
+ self._add_holiday_1st_wed_from_apr_14(tr("رأس السنة الإيزيدية"))
188
+
189
+ # Yazidi Summer Festival.
190
+ name = tr("مهرجان الصيف اليزيدي")
191
+ if self._year <= 2023:
192
+ self._add_holiday_jul_31(name)
193
+ self._add_holiday_aug_1(name)
194
+ self._add_holiday_aug_2(name)
195
+ self._add_holiday_aug_3(name)
196
+
197
+ # Feast of the Assembly.
198
+ name = tr("عيد الجمعية")
199
+ self._add_holiday_oct_6(name)
200
+ self._add_holiday_oct_7(name)
201
+ self._add_holiday_oct_8(name)
202
+ self._add_holiday_oct_9(name)
203
+ self._add_holiday_oct_10(name)
204
+ self._add_holiday_oct_11(name)
205
+ self._add_holiday_oct_12(name)
206
+ self._add_holiday_oct_13(name)
207
+
208
+ # Feast of Êzî.
209
+ self._add_holiday_1st_fri_from_dec_14(tr("عيد إيزي"))
210
+
211
+
212
+ class IQ(Iraq):
213
+ pass
214
+
215
+
216
+ class IRQ(Iraq):
217
+ pass
218
+
219
+
220
+ class IraqIslamicHolidays(_CustomIslamicHolidays):
221
+ # https://web.archive.org/web/20240908214306/https://www.timeanddate.com/holidays/iraq/ashura
222
+ ASHURA_DATES_CONFIRMED_YEARS = (2013, 2025)
223
+ ASHURA_DATES = {
224
+ 2013: (NOV, 14),
225
+ 2015: (OCT, 24),
226
+ 2016: (OCT, 12),
227
+ 2017: (OCT, 1),
228
+ 2019: (SEP, 10),
229
+ 2020: (AUG, 30),
230
+ 2021: (AUG, 19),
231
+ 2023: (JUL, 29),
232
+ }
233
+
234
+ # https://web.archive.org/web/20250524093010/https://www.timeanddate.com/holidays/iraq/eid-al-adha
235
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2013, 2025)
236
+ EID_AL_ADHA_DATES = {
237
+ 2015: (SEP, 24),
238
+ 2016: (SEP, 13),
239
+ 2017: (SEP, 2),
240
+ 2018: (AUG, 22),
241
+ 2019: (AUG, 12),
242
+ }
243
+
244
+ # https://web.archive.org/web/20250514061230/https://www.timeanddate.com/holidays/iraq/eid-al-fitr
245
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2013, 2025)
246
+ EID_AL_FITR_DATES = {
247
+ 2015: (JUL, 18),
248
+ 2016: (JUL, 7),
249
+ 2017: (JUN, 26),
250
+ 2025: (MAR, 31),
251
+ }
252
+
253
+ # https://web.archive.org/web/20241009070642/https://www.timeanddate.com/holidays/iraq/eid-al-ghadeer
254
+ EID_AL_GHADIR_DATES_CONFIRMED_YEARS = (2024, 2025)
255
+ EID_AL_GHADIR_DATES = {
256
+ 2025: (JUN, 15),
257
+ }
258
+
259
+ # https://web.archive.org/web/20240720191242/https://www.timeanddate.com/holidays/iraq/islamic-new-year
260
+ HIJRI_NEW_YEAR_DATES_CONFIRMED_YEARS = (2013, 2025)
261
+ HIJRI_NEW_YEAR_DATES = {
262
+ 2013: (NOV, 5),
263
+ 2015: (OCT, 15),
264
+ 2016: (OCT, 3),
265
+ 2017: (SEP, 22),
266
+ 2020: (AUG, 21),
267
+ }
268
+
269
+ # https://web.archive.org/web/20240918050148/https://www.timeanddate.com/holidays/iraq/prophet-birthday
270
+ MAWLID_DATES_CONFIRMED_YEARS = (2013, 2025)
271
+ MAWLID_DATES = {
272
+ 2014: (JAN, 14),
273
+ 2016: (DEC, 12),
274
+ 2017: (DEC, 1),
275
+ 2018: (NOV, 21),
276
+ }
@@ -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 JAN, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
16
+ from holidays.calendars.gregorian import JAN, MAR, APR, MAY, JUL, AUG, SEP, OCT, DEC
17
17
  from holidays.calendars.julian import JULIAN_CALENDAR
18
18
  from holidays.groups import (
19
19
  ChristianHolidays,
@@ -146,27 +146,11 @@ class KAZ(Kazakhstan):
146
146
 
147
147
 
148
148
  class KazakhstanIslamicHolidays(_CustomIslamicHolidays):
149
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2006, 2025)
149
150
  EID_AL_ADHA_DATES = {
150
151
  2006: (JAN, 10),
151
- 2007: (DEC, 20),
152
- 2008: (DEC, 8),
153
- 2009: (NOV, 27),
154
- 2010: (NOV, 16),
155
- 2011: (NOV, 6),
156
- 2012: (OCT, 26),
157
- 2013: (OCT, 15),
158
- 2014: (OCT, 4),
159
152
  2015: (SEP, 24),
160
153
  2016: (SEP, 12),
161
- 2017: (SEP, 1),
162
- 2018: (AUG, 21),
163
- 2019: (AUG, 11),
164
- 2020: (JUL, 31),
165
- 2021: (JUL, 20),
166
- 2022: (JUL, 9),
167
- 2023: (JUN, 28),
168
- 2024: (JUN, 16),
169
- 2025: (JUN, 6),
170
154
  }
171
155
 
172
156
 
@@ -174,32 +174,26 @@ class KenyaHinduHolidays(_CustomHinduHolidays):
174
174
 
175
175
 
176
176
  class KenyaIslamicHolidays(_CustomIslamicHolidays):
177
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2014, 2024)
177
178
  EID_AL_ADHA_DATES = {
178
179
  2014: (OCT, 6),
179
180
  2015: (SEP, 24),
180
181
  2016: (SEP, 12),
181
- 2017: (SEP, 1),
182
- 2018: (AUG, 21),
183
182
  2019: (AUG, 12),
184
- 2020: (JUL, 31),
185
- 2021: (JUL, 20),
186
183
  2022: (JUL, 11),
187
- 2023: (JUN, 28),
188
184
  2024: (JUN, 17),
189
185
  }
190
186
 
187
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2014, 2024)
191
188
  EID_AL_FITR_DATES = {
192
189
  2014: (JUL, 29),
193
190
  2015: (JUL, 18),
194
191
  2016: (JUL, 7),
195
192
  2017: (JUN, 26),
196
- 2018: (JUN, 15),
197
193
  2019: (JUN, 5),
198
194
  2020: (MAY, 25),
199
195
  2021: (MAY, 14),
200
196
  2022: (MAY, 3),
201
- 2023: (APR, 21),
202
- 2024: (APR, 10),
203
197
  }
204
198
 
205
199
 
@@ -0,0 +1,124 @@
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 holidays.groups import ChristianHolidays, InternationalHolidays
14
+ from holidays.observed_holiday_base import (
15
+ ObservedHolidayBase,
16
+ SAT_SUN_TO_NEXT_MON,
17
+ SAT_SUN_TO_NEXT_MON_TUE,
18
+ )
19
+
20
+
21
+ class Kiribati(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
22
+ """Kiribati holidays.
23
+
24
+ References:
25
+ * [Public Holidays Ordinance](https://web.archive.org/web/20250130150749/https://www.paclii.org/ki/legis/consol_act/pho216/)
26
+ * [Public Holidays (Amendment) Act 2002](https://web.archive.org/web/20250130161614/https://www.paclii.org/ki/legis/num_act/pha2002243/)
27
+ * [Public Holidays Act Consolidated](https://web.archive.org/web/20250404213705/https://www.paclii.org/ki/legis/consol_act/pho216.pdf)
28
+
29
+ Note:
30
+ The 2025 holidays list for Kiribati
31
+ (http://web.archive.org/web/20250808191339/https://www.pso.gov.ki/kiribati-national-public-holidays-2025/)
32
+ mentions the following holidays even though they do not appear in the law:
33
+ Labor Day, National Culture and Senior Citizens Day, National Police Day, and World
34
+ Teachers' Day.
35
+
36
+ Additionally, the list shows that traditional holidays (International Women's Day,
37
+ Labor Day, Gospel Day, and Human Rights and Peace Day) were celebrated on different
38
+ dates than usual, seemingly shifting Thursday/Saturday holidays to the adjacent Friday.
39
+ No legal provision or start year was cited for this adjustment.
40
+ """
41
+
42
+ country = "KI"
43
+ observed_label = "%s (observed)"
44
+ start_year = 1980
45
+
46
+ def __init__(self, *args, **kwargs):
47
+ ChristianHolidays.__init__(self)
48
+ InternationalHolidays.__init__(self)
49
+ kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_MON)
50
+ super().__init__(*args, **kwargs)
51
+
52
+ def _populate_public_holidays(self):
53
+ # New Year's Day.
54
+ self._add_observed(self._add_new_years_day("New Year's Day"))
55
+
56
+ if self._year >= 2003:
57
+ # International Women's Day.
58
+ self._add_observed(self._add_womens_day("International Women's Day"))
59
+
60
+ # Good Friday.
61
+ self._add_good_friday("Good Friday")
62
+
63
+ if self._year <= 2002:
64
+ # Holy Saturday.
65
+ self._add_holy_saturday("Holy Saturday")
66
+
67
+ # Easter Monday.
68
+ self._add_easter_monday("Easter Monday")
69
+
70
+ if self._year >= 2003:
71
+ # National Health Day.
72
+ self._add_observed(self._add_holiday_apr_19("National Health Day"))
73
+
74
+ if 1993 <= self._year <= 2002:
75
+ # Public Holiday.
76
+ self._add_observed(self._add_holiday_may_9("Public Holiday"))
77
+
78
+ if self._year >= 2002:
79
+ # Gospel Day.
80
+ self._add_holiday_jul_11("Gospel Day")
81
+
82
+ if self._year >= 1993:
83
+ # National Day - Independence Anniversary.
84
+ self._add_observed(self._add_holiday_jul_12("National Day - Independence Anniversary"))
85
+
86
+ if self._year >= 2002:
87
+ # National Day (in honor of Unimwane).
88
+ self._add_holiday_jul_15("National Day (in honor of Unimwane)")
89
+ # National Day (in honor of Unaine).
90
+ self._add_observed(self._add_holiday_jul_16("National Day (in honor of Unaine)"))
91
+
92
+ if self._year <= 2002:
93
+ # Public Holiday.
94
+ self._add_holiday_1st_mon_of_aug("Public Holiday")
95
+ else:
96
+ # Youth Day.
97
+ self._add_observed(self._add_holiday_aug_5("Youth Day"))
98
+
99
+ if self._year <= 1992:
100
+ # Public Holiday.
101
+ self._add_observed(self._add_holiday_nov_10("Public Holiday"))
102
+
103
+ if self._year >= 1993:
104
+ # Human Rights and Peace Day.
105
+ name = "Human Rights and Peace Day"
106
+ self._add_observed(
107
+ self._add_holiday_dec_9(name)
108
+ if self._year >= 2003
109
+ else self._add_holiday_dec_10(name)
110
+ )
111
+
112
+ # Christmas Day.
113
+ self._add_observed(self._add_christmas_day("Christmas Day"), rule=SAT_SUN_TO_NEXT_MON_TUE)
114
+
115
+ # Boxing Day.
116
+ self._add_observed(self._add_christmas_day_two("Boxing Day"), rule=SAT_SUN_TO_NEXT_MON_TUE)
117
+
118
+
119
+ class KI(Kiribati):
120
+ pass
121
+
122
+
123
+ class KIR(Kiribati):
124
+ pass
@@ -23,6 +23,8 @@ class Kyrgyzstan(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicH
23
23
  """
24
24
 
25
25
  country = "KG"
26
+ # %s (estimated).
27
+ estimated_label = "%s (estimated)"
26
28
 
27
29
  def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
28
30
  """