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
@@ -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 MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV
16
+ from holidays.calendars.gregorian import MAY, JUN, JUL, AUG, SEP, OCT, NOV
17
17
  from holidays.constants import PUBLIC, WORKDAY
18
18
  from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
19
19
  from holidays.holiday_base import HolidayBase
@@ -129,54 +129,29 @@ class TGO(Togo):
129
129
 
130
130
 
131
131
  class TogoIslamicHolidays(_CustomIslamicHolidays):
132
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2010, 2025)
132
133
  EID_AL_ADHA_DATES = {
133
134
  2010: (NOV, 17),
134
135
  2011: (NOV, 7),
135
- 2012: (OCT, 26),
136
- 2013: (OCT, 15),
137
136
  2014: (OCT, 5),
138
137
  2015: (SEP, 24),
139
138
  2016: (SEP, 13),
140
139
  2017: (SEP, 2),
141
140
  2018: (AUG, 22),
142
- 2019: (AUG, 11),
143
- 2020: (JUL, 31),
144
- 2021: (JUL, 20),
145
- 2022: (JUL, 9),
146
- 2023: (JUN, 28),
147
- 2024: (JUN, 16),
148
141
  2025: (JUN, 7),
149
142
  }
150
143
 
144
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2010, 2025)
151
145
  EID_AL_FITR_DATES = {
152
- 2010: (SEP, 10),
153
146
  2011: (AUG, 31),
154
- 2012: (AUG, 19),
155
- 2013: (AUG, 8),
156
147
  2014: (JUL, 29),
157
148
  2015: (JUL, 18),
158
149
  2016: (JUL, 7),
159
150
  2017: (JUN, 26),
160
- 2018: (JUN, 15),
161
151
  2019: (JUN, 5),
162
- 2020: (MAY, 24),
163
- 2021: (MAY, 13),
164
- 2022: (MAY, 2),
165
- 2023: (APR, 21),
166
- 2024: (APR, 10),
167
- 2025: (MAR, 30),
168
152
  }
169
153
 
154
+ RAMADAN_BEGINNING_DATES_CONFIRMED_YEARS = (2015, 2025)
170
155
  RAMADAN_BEGINNING_DATES = {
171
- 2015: (JUN, 18),
172
- 2016: (JUN, 6),
173
- 2017: (MAY, 27),
174
156
  2018: (MAY, 17),
175
- 2019: (MAY, 6),
176
- 2020: (APR, 24),
177
- 2021: (APR, 13),
178
- 2022: (APR, 2),
179
- 2023: (MAR, 23),
180
- 2024: (MAR, 11),
181
- 2025: (MAR, 1),
182
157
  }
@@ -14,7 +14,7 @@ from datetime import date
14
14
  from gettext import gettext as tr
15
15
 
16
16
  from holidays.calendars import _CustomHinduHolidays, _CustomIslamicHolidays
17
- from holidays.calendars.gregorian import MAR, APR, MAY, JUN, JUL, AUG, OCT, NOV
17
+ from holidays.calendars.gregorian import MAR, APR, JUN, JUL, OCT, NOV
18
18
  from holidays.constants import OPTIONAL, PUBLIC
19
19
  from holidays.groups import (
20
20
  ChristianHolidays,
@@ -179,19 +179,12 @@ class TrinidadAndTobagoHinduHolidays(_CustomHinduHolidays):
179
179
 
180
180
 
181
181
  class TrinidadAndTobagoIslamicHolidays(_CustomIslamicHolidays):
182
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2012, 2025)
182
183
  EID_AL_FITR_DATES = {
183
- 2012: (AUG, 19),
184
- 2013: (AUG, 8),
185
184
  2014: (JUL, 29),
186
185
  2015: (JUL, 18),
187
- 2016: (JUL, 6),
188
186
  2017: (JUN, 26),
189
- 2018: (JUN, 15),
190
187
  2019: (JUN, 5),
191
- 2020: (MAY, 24),
192
- 2021: (MAY, 13),
193
- 2022: (MAY, 2),
194
188
  2023: (APR, 22),
195
- 2024: (APR, 10),
196
189
  2025: (MAR, 31),
197
190
  }
@@ -129,204 +129,90 @@ class TUR(Turkey):
129
129
 
130
130
 
131
131
  class TurkeyIslamicHolidays(_CustomIslamicHolidays):
132
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (1936, 2032)
132
133
  EID_AL_ADHA_DATES = {
133
- 1936: (MAR, 4),
134
134
  1937: (FEB, 22),
135
135
  1938: (FEB, 11),
136
136
  1939: (JAN, 31),
137
- 1940: (JAN, 20),
138
137
  1941: ((JAN, 8), (DEC, 29)),
139
- 1942: (DEC, 18),
140
138
  1943: (DEC, 8),
141
139
  1944: (NOV, 26),
142
- 1945: (NOV, 15),
143
- 1946: (NOV, 4),
144
- 1947: (OCT, 25),
145
- 1948: (OCT, 13),
146
140
  1949: (OCT, 3),
147
- 1950: (SEP, 23),
148
- 1951: (SEP, 12),
149
- 1952: (AUG, 31),
150
- 1953: (AUG, 20),
151
- 1954: (AUG, 9),
152
- 1955: (JUL, 30),
153
- 1956: (JUL, 19),
154
- 1957: (JUL, 8),
155
141
  1958: (JUN, 28),
156
- 1959: (JUN, 17),
157
142
  1960: (JUN, 5),
158
- 1961: (MAY, 25),
159
- 1962: (MAY, 14),
160
143
  1963: (MAY, 4),
161
144
  1964: (APR, 23),
162
145
  1965: (APR, 12),
163
- 1966: (APR, 1),
164
- 1967: (MAR, 21),
165
146
  1968: (MAR, 10),
166
- 1969: (FEB, 27),
167
147
  1970: (FEB, 17),
168
- 1971: (FEB, 6),
169
148
  1972: (JAN, 27),
170
149
  1973: (JAN, 15),
171
150
  1974: ((JAN, 4), (DEC, 24)),
172
- 1975: (DEC, 13),
173
151
  1976: (DEC, 2),
174
152
  1977: (NOV, 22),
175
153
  1978: (NOV, 11),
176
- 1979: (OCT, 31),
177
- 1980: (OCT, 19),
178
- 1981: (OCT, 8),
179
- 1982: (SEP, 27),
180
- 1983: (SEP, 17),
181
154
  1984: (SEP, 6),
182
- 1985: (AUG, 26),
183
155
  1986: (AUG, 16),
184
156
  1987: (AUG, 5),
185
157
  1988: (JUL, 24),
186
- 1989: (JUL, 13),
187
158
  1990: (JUL, 3),
188
159
  1991: (JUN, 23),
189
- 1992: (JUN, 11),
190
160
  1993: (JUN, 1),
191
161
  1994: (MAY, 21),
192
162
  1995: (MAY, 10),
193
163
  1996: (APR, 28),
194
164
  1997: (APR, 18),
195
- 1998: (APR, 7),
196
165
  1999: (MAR, 28),
197
- 2000: (MAR, 16),
198
- 2001: (MAR, 5),
199
- 2002: (FEB, 22),
200
- 2003: (FEB, 11),
201
- 2004: (FEB, 1),
202
166
  2005: (JAN, 20),
203
- 2006: ((JAN, 10), (DEC, 31)),
204
- 2007: (DEC, 20),
205
- 2008: (DEC, 8),
206
- 2009: (NOV, 27),
207
- 2010: (NOV, 16),
208
- 2011: (NOV, 6),
209
167
  2012: (OCT, 25),
210
- 2013: (OCT, 15),
211
- 2014: (OCT, 4),
212
168
  2015: (SEP, 24),
213
169
  2016: (SEP, 12),
214
- 2017: (SEP, 1),
215
- 2018: (AUG, 21),
216
- 2019: (AUG, 11),
217
- 2020: (JUL, 31),
218
- 2021: (JUL, 20),
219
- 2022: (JUL, 9),
220
- 2023: (JUN, 28),
221
- 2024: (JUN, 16),
222
- 2025: (JUN, 6),
223
- 2026: (MAY, 27),
224
- 2027: (MAY, 16),
225
- 2028: (MAY, 5),
226
- 2029: (APR, 24),
227
- 2030: (APR, 13),
228
- 2031: (APR, 2),
229
- 2032: (MAR, 22),
230
170
  }
231
171
 
172
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (1936, 2032)
232
173
  EID_AL_FITR_DATES = {
233
- 1936: (DEC, 15),
234
- 1937: (DEC, 4),
235
- 1938: (NOV, 23),
236
174
  1939: (NOV, 13),
237
- 1940: (NOV, 1),
238
175
  1941: (OCT, 22),
239
176
  1942: (OCT, 12),
240
177
  1943: (OCT, 1),
241
178
  1944: (SEP, 19),
242
179
  1945: (SEP, 8),
243
180
  1946: (AUG, 29),
244
- 1947: (AUG, 18),
245
- 1948: (AUG, 6),
246
181
  1949: (JUL, 27),
247
- 1950: (JUL, 16),
248
- 1951: (JUL, 6),
249
182
  1952: (JUN, 24),
250
- 1953: (JUN, 13),
251
- 1954: (JUN, 2),
252
- 1955: (MAY, 23),
253
183
  1956: (MAY, 12),
254
- 1957: (MAY, 1),
255
- 1958: (APR, 20),
256
184
  1959: (APR, 9),
257
185
  1960: (MAR, 29),
258
- 1961: (MAR, 18),
259
186
  1962: (MAR, 8),
260
187
  1963: (FEB, 25),
261
188
  1964: (FEB, 15),
262
189
  1965: (FEB, 3),
263
190
  1966: (JAN, 23),
264
- 1967: (JAN, 12),
265
- 1968: ((JAN, 1), (DEC, 21)),
266
191
  1969: (DEC, 11),
267
192
  1970: (DEC, 1),
268
193
  1971: (NOV, 20),
269
194
  1972: (NOV, 8),
270
195
  1973: (OCT, 28),
271
196
  1974: (OCT, 17),
272
- 1975: (OCT, 6),
273
197
  1976: (SEP, 25),
274
198
  1977: (SEP, 15),
275
199
  1978: (SEP, 4),
276
200
  1979: (AUG, 24),
277
- 1980: (AUG, 12),
278
- 1981: (AUG, 1),
279
201
  1982: (JUL, 22),
280
202
  1983: (JUL, 12),
281
- 1984: (JUN, 30),
282
203
  1985: (JUN, 20),
283
204
  1986: (JUN, 9),
284
205
  1987: (MAY, 29),
285
206
  1988: (MAY, 17),
286
- 1989: (MAY, 6),
287
- 1990: (APR, 26),
288
207
  1991: (APR, 16),
289
- 1992: (APR, 4),
290
- 1993: (MAR, 24),
291
- 1994: (MAR, 13),
292
208
  1995: (MAR, 3),
293
209
  1996: (FEB, 20),
294
210
  1997: (FEB, 9),
295
- 1998: (JAN, 29),
296
211
  1999: (JAN, 19),
297
- 2000: ((JAN, 8), (DEC, 27)),
298
- 2001: (DEC, 16),
299
- 2002: (DEC, 5),
300
- 2003: (NOV, 25),
301
- 2004: (NOV, 14),
302
- 2005: (NOV, 3),
303
- 2006: (OCT, 23),
304
212
  2007: (OCT, 12),
305
213
  2008: (SEP, 30),
306
- 2009: (SEP, 20),
307
214
  2010: (SEP, 9),
308
- 2011: (AUG, 30),
309
- 2012: (AUG, 19),
310
- 2013: (AUG, 8),
311
- 2014: (JUL, 28),
312
- 2015: (JUL, 17),
313
215
  2016: (JUL, 5),
314
- 2017: (JUN, 25),
315
- 2018: (JUN, 15),
316
- 2019: (JUN, 4),
317
- 2020: (MAY, 24),
318
- 2021: (MAY, 13),
319
- 2022: (MAY, 2),
320
- 2023: (APR, 21),
321
- 2024: (APR, 10),
322
- 2025: (MAR, 30),
323
- 2026: (MAR, 20),
324
- 2027: (MAR, 9),
325
- 2028: (FEB, 26),
326
- 2029: (FEB, 14),
327
- 2030: (FEB, 4),
328
- 2031: (JAN, 24),
329
- 2032: (JAN, 14),
330
216
  }
331
217
 
332
218
 
@@ -0,0 +1,164 @@
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 JUN, JUL, AUG, SEP, OCT, NOV
17
+ from holidays.groups import InternationalHolidays, IslamicHolidays
18
+ from holidays.observed_holiday_base import ObservedHolidayBase, SUN_TO_NEXT_WORKDAY
19
+
20
+
21
+ class Turkmenistan(ObservedHolidayBase, InternationalHolidays, IslamicHolidays):
22
+ """Turkmenistan holidays.
23
+
24
+ References:
25
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_Turkmenistan>
26
+ * [Labor Code](https://web.archive.org/web/20250419204037/https://www.tds.gov.tm/en/20-labor-code-of-turkmenistan)
27
+ * [State Flag and Constitution Day](https://en.wikipedia.org/wiki/State_Flag_and_Constitution_Day_(Turkmenistan))
28
+ * [Independence Day](https://en.wikipedia.org/wiki/Independence_Day_(Turkmenistan))
29
+ * [Detailed Research](https://archive.org/details/holiday-research-in-central-asia)
30
+ * [Law of 2008-08-15 on Amendments to Labor Code](https://web.archive.org/web/20250710021455/https://www.parahat.info/law/2008-08-16-zakon-turkmenistana-o-vnesenii-izmeneniya-v-kodeks-zakonov-o-trude-turkmenistana)
31
+ * [Law of 2014-10-05 on Amendments to Labor Code](https://web.archive.org/web/20250615083107/https://www.parahat.info/law/2014-10-06-zakon-turkmenistana-o-vnesenii-izmeneniya-v-trudovoy-kodeks-turkmenistana)
32
+ * [Law of 2017-10-11 on Amendments to Labor Code](https://web.archive.org/web/20250623221410/https://www.parahat.info/law/parahat-info-law-02ai)
33
+ """
34
+
35
+ country = "TM"
36
+ default_language = "tk"
37
+ # %s (estimated).
38
+ estimated_label = tr("%s (çak edilýär)")
39
+ # %s (observed).
40
+ observed_label = tr("%s (dynç güni)")
41
+ # %s (observed, estimated)
42
+ observed_estimated_label = tr("%s (dynç güni, çak edilýär)")
43
+ start_year = 1992
44
+ supported_languages = ("en_US", "ru", "tk")
45
+
46
+ def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
47
+ """
48
+ Args:
49
+ islamic_show_estimated:
50
+ Whether to add "estimated" label to Islamic holidays name
51
+ if holiday date is estimated.
52
+ """
53
+ InternationalHolidays.__init__(self)
54
+ IslamicHolidays.__init__(
55
+ self, cls=TurkmenistanIslamicHolidays, show_estimated=islamic_show_estimated
56
+ )
57
+ kwargs.setdefault("observed_rule", SUN_TO_NEXT_WORKDAY)
58
+ kwargs.setdefault("observed_since", 2010)
59
+ super().__init__(*args, **kwargs)
60
+
61
+ def _populate_public_holidays(self):
62
+ dts_observed = set()
63
+
64
+ # New Year's Day.
65
+ dts_observed.add(self._add_new_years_day(tr("Täze ýyl")))
66
+
67
+ if 1995 <= self._year <= 2017:
68
+ # State Flag Day.
69
+ dts_observed.add(self._add_holiday_feb_19(tr("Türkmenistanyň Döwlet baýdagynyň güni")))
70
+
71
+ # Spring Festival.
72
+ name = tr("Milli bahar baýramy")
73
+ if 2001 <= self._year <= 2007:
74
+ dts_observed.add(self._add_holiday_mar_20(name))
75
+ else:
76
+ # International Women's Day.
77
+ dts_observed.add(self._add_womens_day(tr("Halkara zenanlar güni")))
78
+
79
+ dts_observed.add(self._add_holiday_mar_21(name))
80
+ dts_observed.add(self._add_holiday_mar_22(name))
81
+
82
+ if self._year <= 2017:
83
+ dts_observed.add(
84
+ self._add_holiday_may_9(
85
+ # Victory Day.
86
+ tr("1941-1945-nji ýyllaryň Beýik Watançylyk urşunda ýeňiş güni")
87
+ )
88
+ )
89
+
90
+ if self._year >= 2009:
91
+ if self._year >= 2018:
92
+ # Constitution and State Flag Day.
93
+ name = tr("Türkmenistanyň Konstitusiýasynyň we Döwlet baýdagynyň güni")
94
+ elif self._year >= 2015:
95
+ # Day of the Constitution of Turkmenistan and Poetry of Magtymguly Pyragy.
96
+ name = tr(
97
+ "Türkmenistanyň Konstitusiýasynyň we Makhtumkuli Pyragynyň şygryýet güni"
98
+ )
99
+ else:
100
+ # Day of Revival, Unity and Poetry of Magtymguly Pyragy.
101
+ name = tr("Galkynyş, Agzybirlik we Magtymguly Pyragynyň şygryýet güni")
102
+ dts_observed.add(self._add_holiday_may_18(name))
103
+
104
+ # Independence Day.
105
+ name = tr("Türkmenistanyň Garaşsyzlyk güni")
106
+ if self._year <= 2017:
107
+ dts_observed.add(self._add_holiday_oct_27(name))
108
+ if self._year >= 2008:
109
+ dts_observed.add(self._add_holiday_oct_28(name))
110
+ else:
111
+ dts_observed.add(self._add_holiday_sep_27(name))
112
+
113
+ if self._year >= 1995:
114
+ # Memorial Day.
115
+ name = tr("Hatyra güni")
116
+ if 2009 <= self._year <= 2014:
117
+ dts_observed.add(self._add_holiday_jan_12(name))
118
+ # National Memorial Day.
119
+ dts_observed.add(self._add_holiday_oct_6(tr("Milli ýatlama güni")))
120
+ else:
121
+ dts_observed.add(self._add_holiday_oct_6(name))
122
+
123
+ # International Neutrality Day.
124
+ dts_observed.add(self._add_holiday_dec_12(tr("Halkara Bitaraplyk güni")))
125
+
126
+ # Eid al-Fitr.
127
+ dts_observed.update(self._add_eid_al_fitr_day(tr("Oraza baýramy")))
128
+
129
+ # Eid al-Adha.
130
+ dts_observed.update(self._add_eid_al_adha_day(tr("Gurban baýramy")))
131
+
132
+ self._populate_observed(dts_observed)
133
+
134
+
135
+ class TM(Turkmenistan):
136
+ pass
137
+
138
+
139
+ class TKM(Turkmenistan):
140
+ pass
141
+
142
+
143
+ class TurkmenistanIslamicHolidays(_CustomIslamicHolidays):
144
+ # https://web.archive.org/web/20240908061230/https://www.timeanddate.com/holidays/turkmenistan/eid-al-fitr
145
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2010, 2025)
146
+ EID_AL_FITR_DATES = {
147
+ 2011: (AUG, 31),
148
+ 2014: (JUL, 29),
149
+ 2015: (JUL, 18),
150
+ 2016: (JUL, 7),
151
+ 2017: (JUN, 26),
152
+ }
153
+
154
+ # https://web.archive.org/web/20240912191844/https://www.timeanddate.com/holidays/turkmenistan/eid-al-adha
155
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2010, 2025)
156
+ EID_AL_ADHA_DATES = {
157
+ 2010: (NOV, 17),
158
+ 2011: (NOV, 7),
159
+ 2014: (OCT, 5),
160
+ 2015: (SEP, 24),
161
+ 2016: (SEP, 13),
162
+ 2017: (SEP, 2),
163
+ 2018: (AUG, 22),
164
+ }
@@ -0,0 +1,101 @@
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, IslamicHolidays
14
+ from holidays.holiday_base import HolidayBase
15
+
16
+
17
+ class Uganda(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays):
18
+ """Uganda holidays.
19
+
20
+ References:
21
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_Uganda>
22
+ * [Public Holidays Act, Cap. 255](https://web.archive.org/web/20250621140041/https://ulii.org/akn/ug/act/1965/23/eng@2000-12-31)
23
+ * [National Events and Calendar](https://web.archive.org/web/20250618053410/https://www.vicepresident.go.ug/national-events-and-calender/)
24
+ * [National Heroes Day](https://web.archive.org/web/20230622162351/https://publicholidays.africa/uganda/national-heroes-day/)
25
+ * [NRM Liberation Day](https://web.archive.org/web/20240124064853/https://thenilewires.com/38th-nrm-a-liberation-day-celebrations-minister-outlines-nrm-achievements/)
26
+ * [Archbishop Janani Luwum Day](https://web.archive.org/web/20200805133919/https://www.newvision.co.ug/news/1417242/uganda-declared-february-archbishop-janani-luwum-public-holiday)
27
+ * [School Calendar 2024](https://web.archive.org/web/20240519021615/https://www.education.go.ug/wp-content/uploads/2023/11/SCHOOL-CALENDAR.pdf)
28
+ * [Public Holidays 2025](https://web.archive.org/web/20250710193157/https://publicholidays.co.ug/)
29
+ """
30
+
31
+ country = "UG"
32
+ # %s (estimated).
33
+ estimated_label = "%s (estimated)"
34
+ # Uganda gained independence from the United Kingdom on October 9, 1962.
35
+ start_year = 1963
36
+
37
+ def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
38
+ """
39
+ Args:
40
+ islamic_show_estimated:
41
+ Whether to add "estimated" label to Islamic holidays name
42
+ if holiday date is estimated.
43
+ """
44
+ ChristianHolidays.__init__(self)
45
+ InternationalHolidays.__init__(self)
46
+ IslamicHolidays.__init__(self, show_estimated=islamic_show_estimated)
47
+ super().__init__(*args, **kwargs)
48
+
49
+ def _populate_public_holidays(self):
50
+ # New Year's Day.
51
+ self._add_new_years_day("New Year's Day")
52
+
53
+ if self._year >= 1987:
54
+ # NRM Liberation Day.
55
+ self._add_holiday_jan_26("NRM Liberation Day")
56
+
57
+ if self._year >= 2016:
58
+ # Archbishop Janani Luwum Day.
59
+ self._add_holiday_feb_16("Archbishop Janani Luwum Day")
60
+
61
+ # Women's Day.
62
+ self._add_womens_day("Women's Day")
63
+
64
+ # Good Friday.
65
+ self._add_good_friday("Good Friday")
66
+
67
+ # Easter Monday.
68
+ self._add_easter_monday("Easter Monday")
69
+
70
+ # Labor Day.
71
+ self._add_labor_day("Labour Day")
72
+
73
+ # Uganda Martyrs' Day.
74
+ self._add_holiday_jun_3("Uganda Martyrs' Day")
75
+
76
+ if self._year >= 2001:
77
+ # National Heroes' Day.
78
+ self._add_holiday_jun_9("National Heroes' Day")
79
+
80
+ # Independence Day.
81
+ self._add_holiday_oct_9("Independence Day")
82
+
83
+ # Christmas Day.
84
+ self._add_christmas_day("Christmas Day")
85
+
86
+ # Boxing Day.
87
+ self._add_christmas_day_two("Boxing Day")
88
+
89
+ # Eid al-Fitr.
90
+ self._add_eid_al_fitr_day("Eid al-Fitr")
91
+
92
+ # Eid al-Adha.
93
+ self._add_eid_al_adha_day("Eid al-Adha")
94
+
95
+
96
+ class UG(Uganda):
97
+ pass
98
+
99
+
100
+ class UGA(Uganda):
101
+ pass
@@ -15,7 +15,6 @@ from gettext import gettext as tr
15
15
  from holidays.calendars import _CustomIslamicHolidays
16
16
  from holidays.calendars.gregorian import (
17
17
  FEB,
18
- MAR,
19
18
  APR,
20
19
  MAY,
21
20
  JUN,
@@ -143,56 +142,33 @@ class ARE(UnitedArabEmirates):
143
142
 
144
143
 
145
144
  class UnitedArabEmiratesIslamicHolidays(_CustomIslamicHolidays):
145
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2017, 2025)
146
146
  EID_AL_ADHA_DATES = {
147
- 2017: (SEP, 1),
148
147
  2018: (AUG, 22),
149
- 2019: (AUG, 11),
150
- 2020: (JUL, 31),
151
- 2021: (JUL, 20),
152
- 2022: (JUL, 9),
153
- 2023: (JUN, 28),
154
- 2024: (JUN, 16),
155
148
  2025: (JUN, 4),
156
149
  }
157
150
 
158
- EID_AL_FITR_DATES = {
159
- 2017: (JUN, 25),
160
- 2018: (JUN, 15),
161
- 2019: (JUN, 4),
162
- 2020: (MAY, 24),
163
- 2021: (MAY, 13),
164
- 2022: (MAY, 2),
165
- 2023: (APR, 21),
166
- 2024: (APR, 10),
167
- 2025: (MAR, 30),
168
- }
151
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2017, 2025)
169
152
 
153
+ HIJRI_NEW_YEAR_DATES_CONFIRMED_YEARS = (2017, 2025)
170
154
  HIJRI_NEW_YEAR_DATES = {
171
155
  2017: (SEP, 22),
172
- 2018: (SEP, 11),
173
- 2019: (AUG, 31),
174
156
  2020: (AUG, 23),
175
157
  2021: (AUG, 12),
176
- 2022: (JUL, 30),
177
158
  2023: (JUL, 21),
178
- 2024: (JUL, 7),
179
- 2025: (JUN, 26),
180
159
  }
181
160
 
161
+ ISRA_AND_MIRAJ_DATES_CONFIRMED_YEARS = (2017, 2018)
182
162
  ISRA_AND_MIRAJ_DATES = {
183
163
  2017: (APR, 23),
184
164
  2018: (APR, 14),
185
165
  }
186
166
 
167
+ MAWLID_DATES_CONFIRMED_YEARS = (2017, 2025)
187
168
  MAWLID_DATES = {
188
- 2017: (NOV, 30),
189
169
  2018: (NOV, 18),
190
- 2019: (NOV, 9),
191
- 2020: (OCT, 29),
192
170
  2021: (OCT, 21),
193
- 2022: (OCT, 8),
194
171
  2023: (SEP, 29),
195
- 2024: (SEP, 15),
196
172
  2025: (SEP, 5),
197
173
  }
198
174
 
@@ -14,7 +14,7 @@ from datetime import date
14
14
  from gettext import gettext as tr
15
15
 
16
16
  from holidays.calendars import _CustomIslamicHolidays
17
- from holidays.calendars.gregorian import JAN, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
17
+ from holidays.calendars.gregorian import JAN, MAR, APR, MAY, JUN, JUL, AUG, SEP, DEC
18
18
  from holidays.groups import InternationalHolidays, IslamicHolidays, StaticHolidays
19
19
  from holidays.observed_holiday_base import ObservedHolidayBase, SAT_SUN_TO_NEXT_WORKDAY
20
20
 
@@ -113,50 +113,22 @@ class UZB(Uzbekistan):
113
113
 
114
114
 
115
115
  class UzbekistanIslamicHolidays(_CustomIslamicHolidays):
116
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2006, 2025)
116
117
  EID_AL_ADHA_DATES = {
117
118
  2006: ((JAN, 10), (DEC, 30)),
118
119
  2007: (DEC, 19),
119
- 2008: (DEC, 8),
120
- 2009: (NOV, 27),
121
- 2010: (NOV, 16),
122
- 2011: (NOV, 6),
123
- 2012: (OCT, 26),
124
- 2013: (OCT, 15),
125
- 2014: (OCT, 4),
126
120
  2015: (SEP, 24),
127
121
  2016: (SEP, 12),
128
- 2017: (SEP, 1),
129
- 2018: (AUG, 21),
130
- 2019: (AUG, 11),
131
- 2020: (JUL, 31),
132
- 2021: (JUL, 20),
133
- 2022: (JUL, 9),
134
- 2023: (JUN, 28),
135
- 2024: (JUN, 16),
136
- 2025: (JUN, 6),
137
122
  }
138
123
 
124
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2006, 2025)
139
125
  EID_AL_FITR_DATES = {
140
- 2006: (OCT, 23),
141
- 2007: (OCT, 13),
142
- 2008: (OCT, 1),
143
126
  2009: (SEP, 21),
144
- 2010: (SEP, 10),
145
127
  2011: (AUG, 31),
146
- 2012: (AUG, 19),
147
128
  2013: (AUG, 9),
148
- 2014: (JUL, 28),
149
129
  2015: (JUL, 18),
150
- 2016: (JUL, 6),
151
130
  2017: (JUN, 26),
152
- 2018: (JUN, 15),
153
131
  2019: (JUN, 5),
154
- 2020: (MAY, 24),
155
- 2021: (MAY, 13),
156
- 2022: (MAY, 2),
157
- 2023: (APR, 21),
158
- 2024: (APR, 10),
159
- 2025: (MAR, 30),
160
132
  }
161
133
 
162
134