holidays 0.67__py3-none-any.whl → 0.69__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 (99) hide show
  1. holidays/calendars/__init__.py +1 -0
  2. holidays/calendars/balinese_saka.py +112 -0
  3. holidays/calendars/chinese.py +1 -1
  4. holidays/calendars/hindu.py +865 -1
  5. holidays/constants.py +1 -0
  6. holidays/countries/__init__.py +1 -0
  7. holidays/countries/afghanistan.py +8 -2
  8. holidays/countries/albania.py +8 -2
  9. holidays/countries/algeria.py +6 -2
  10. holidays/countries/american_samoa.py +6 -2
  11. holidays/countries/azerbaijan.py +26 -4
  12. holidays/countries/bahrain.py +8 -2
  13. holidays/countries/bosnia_and_herzegovina.py +8 -2
  14. holidays/countries/brunei.py +8 -2
  15. holidays/countries/burkina_faso.py +8 -2
  16. holidays/countries/burundi.py +6 -2
  17. holidays/countries/cameroon.py +8 -2
  18. holidays/countries/chad.py +8 -2
  19. holidays/countries/djibouti.py +6 -2
  20. holidays/countries/egypt.py +6 -2
  21. holidays/countries/ethiopia.py +8 -2
  22. holidays/countries/gabon.py +8 -2
  23. holidays/countries/ghana.py +6 -2
  24. holidays/countries/guam.py +6 -2
  25. holidays/countries/hongkong.py +38 -52
  26. holidays/countries/india.py +482 -166
  27. holidays/countries/indonesia.py +14 -58
  28. holidays/countries/iran.py +8 -2
  29. holidays/countries/jordan.py +6 -2
  30. holidays/countries/kazakhstan.py +8 -2
  31. holidays/countries/kenya.py +209 -47
  32. holidays/countries/kuwait.py +6 -2
  33. holidays/countries/kyrgyzstan.py +6 -2
  34. holidays/countries/macau.py +474 -0
  35. holidays/countries/malaysia.py +30 -6
  36. holidays/countries/maldives.py +6 -2
  37. holidays/countries/mauritania.py +6 -2
  38. holidays/countries/montenegro.py +8 -2
  39. holidays/countries/morocco.py +6 -2
  40. holidays/countries/nigeria.py +6 -2
  41. holidays/countries/north_macedonia.py +6 -2
  42. holidays/countries/northern_mariana_islands.py +6 -2
  43. holidays/countries/pakistan.py +8 -2
  44. holidays/countries/philippines.py +13 -3
  45. holidays/countries/poland.py +1 -1
  46. holidays/countries/puerto_rico.py +6 -2
  47. holidays/countries/saudi_arabia.py +6 -2
  48. holidays/countries/singapore.py +7 -2
  49. holidays/countries/spain.py +8 -2
  50. holidays/countries/sri_lanka.py +8 -2
  51. holidays/countries/taiwan.py +226 -29
  52. holidays/countries/tanzania.py +8 -2
  53. holidays/countries/timor_leste.py +21 -2
  54. holidays/countries/tunisia.py +6 -2
  55. holidays/countries/turkey.py +8 -2
  56. holidays/countries/united_arab_emirates.py +8 -2
  57. holidays/countries/united_states.py +84 -35
  58. holidays/countries/united_states_minor_outlying_islands.py +6 -2
  59. holidays/countries/united_states_virgin_islands.py +6 -2
  60. holidays/countries/uzbekistan.py +8 -2
  61. holidays/groups/__init__.py +1 -0
  62. holidays/groups/balinese_saka.py +45 -0
  63. holidays/groups/chinese.py +68 -3
  64. holidays/groups/hindu.py +255 -0
  65. holidays/groups/islamic.py +5 -2
  66. holidays/holiday_base.py +44 -29
  67. holidays/locale/de/LC_MESSAGES/PL.mo +0 -0
  68. holidays/locale/en_HK/LC_MESSAGES/HK.mo +0 -0
  69. holidays/locale/en_IN/LC_MESSAGES/IN.mo +0 -0
  70. holidays/locale/en_KE/LC_MESSAGES/KE.mo +0 -0
  71. holidays/locale/en_MO/LC_MESSAGES/MO.mo +0 -0
  72. holidays/locale/en_US/LC_MESSAGES/HK.mo +0 -0
  73. holidays/locale/en_US/LC_MESSAGES/IN.mo +0 -0
  74. holidays/locale/en_US/LC_MESSAGES/KE.mo +0 -0
  75. holidays/locale/en_US/LC_MESSAGES/MO.mo +0 -0
  76. holidays/locale/en_US/LC_MESSAGES/MY.mo +0 -0
  77. holidays/locale/en_US/LC_MESSAGES/TW.mo +0 -0
  78. holidays/locale/hi/LC_MESSAGES/IN.mo +0 -0
  79. holidays/locale/ms_MY/LC_MESSAGES/MY.mo +0 -0
  80. holidays/locale/pt_MO/LC_MESSAGES/MO.mo +0 -0
  81. holidays/locale/sw/LC_MESSAGES/KE.mo +0 -0
  82. holidays/locale/th/LC_MESSAGES/HK.mo +0 -0
  83. holidays/locale/th/LC_MESSAGES/MO.mo +0 -0
  84. holidays/locale/th/LC_MESSAGES/MY.mo +0 -0
  85. holidays/locale/th/LC_MESSAGES/TW.mo +0 -0
  86. holidays/locale/zh_CN/LC_MESSAGES/HK.mo +0 -0
  87. holidays/locale/zh_CN/LC_MESSAGES/MO.mo +0 -0
  88. holidays/locale/zh_CN/LC_MESSAGES/TW.mo +0 -0
  89. holidays/locale/zh_HK/LC_MESSAGES/HK.mo +0 -0
  90. holidays/locale/zh_MO/LC_MESSAGES/MO.mo +0 -0
  91. holidays/locale/zh_TW/LC_MESSAGES/TW.mo +0 -0
  92. holidays/registry.py +1 -0
  93. holidays/version.py +1 -1
  94. {holidays-0.67.dist-info → holidays-0.69.dist-info}/AUTHORS +1 -0
  95. {holidays-0.67.dist-info → holidays-0.69.dist-info}/METADATA +24 -19
  96. {holidays-0.67.dist-info → holidays-0.69.dist-info}/RECORD +99 -83
  97. {holidays-0.67.dist-info → holidays-0.69.dist-info}/WHEEL +1 -1
  98. {holidays-0.67.dist-info → holidays-0.69.dist-info}/LICENSE +0 -0
  99. {holidays-0.67.dist-info → holidays-0.69.dist-info}/top_level.txt +0 -0
@@ -20,6 +20,7 @@ from holidays.calendars import (
20
20
  from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
21
21
  from holidays.constants import GOVERNMENT, PUBLIC
22
22
  from holidays.groups import (
23
+ BalineseSakaCalendarHolidays,
23
24
  BuddhistCalendarHolidays,
24
25
  ChineseCalendarHolidays,
25
26
  ChristianHolidays,
@@ -32,6 +33,7 @@ from holidays.observed_holiday_base import ObservedHolidayBase
32
33
 
33
34
  class Indonesia(
34
35
  ObservedHolidayBase,
36
+ BalineseSakaCalendarHolidays,
35
37
  BuddhistCalendarHolidays,
36
38
  ChineseCalendarHolidays,
37
39
  ChristianHolidays,
@@ -44,10 +46,8 @@ class Indonesia(
44
46
  - https://en.wikipedia.org/wiki/Public_holidays_in_Indonesia
45
47
  - https://id.wikipedia.org/wiki/Hari_libur_di_Indonesia
46
48
  - https://www.liburnasional.com/sejarah/
47
- - https://id.wikipedia.org/wiki/Indonesia_dalam_tahun_1963 (1963-2024)
49
+ - https://id.wikipedia.org/wiki/Indonesia_dalam_tahun_1963 (1963-2025)
48
50
  - https://www.timeanddate.com/holidays/indonesia
49
- - https://en.wikipedia.org/wiki/Nyepi
50
- - https://bali.com/bali/travel-guide/culture/nyepi-balinese-new-year/
51
51
  """
52
52
 
53
53
  country = "ID"
@@ -62,12 +62,19 @@ class Indonesia(
62
62
  supported_categories = (GOVERNMENT, PUBLIC)
63
63
  start_year = 1946
64
64
 
65
- def __init__(self, *args, **kwargs):
65
+ def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
66
+ """
67
+ :param islamic_show_estimated:
68
+ Whether to add "estimated" label to Islamic holidays name if holiday date is estimated.
69
+ """
70
+ BalineseSakaCalendarHolidays.__init__(self)
66
71
  BuddhistCalendarHolidays.__init__(self, cls=IndonesiaBuddhistHolidays, show_estimated=True)
67
72
  ChineseCalendarHolidays.__init__(self, cls=IndonesiaChineseHolidays, show_estimated=True)
68
73
  ChristianHolidays.__init__(self)
69
74
  InternationalHolidays.__init__(self)
70
- IslamicHolidays.__init__(self, cls=IndonesiaIslamicHolidays)
75
+ IslamicHolidays.__init__(
76
+ self, cls=IndonesiaIslamicHolidays, show_estimated=islamic_show_estimated
77
+ )
71
78
  StaticHolidays.__init__(self, cls=IndonesiaStaticHolidays)
72
79
  super().__init__(*args, **kwargs)
73
80
 
@@ -148,59 +155,8 @@ class Indonesia(
148
155
 
149
156
  # Keputusan Presiden no 3 tahun 1983. (1983-01-19; Added Nationally)
150
157
  if self._year >= 1983:
151
- dates_obs = {
152
- 1983: (MAR, 15),
153
- 1984: (MAR, 4),
154
- 1985: (MAR, 22),
155
- 1986: (MAR, 12),
156
- 1987: (MAR, 31),
157
- 1988: (MAR, 19),
158
- 1989: (MAR, 9),
159
- 1990: (MAR, 27),
160
- 1991: (MAR, 17),
161
- 1992: (MAR, 5),
162
- 1993: (MAR, 24),
163
- 1994: (MAR, 12),
164
- 1995: (APR, 1),
165
- 1996: (MAR, 21),
166
- 1997: (APR, 9),
167
- 1998: (MAR, 29),
168
- 1999: (MAR, 18),
169
- 2000: (APR, 4),
170
- 2001: (MAR, 25),
171
- 2002: (APR, 13),
172
- 2003: (APR, 2),
173
- 2004: (MAR, 22),
174
- 2005: (MAR, 11),
175
- 2006: (MAR, 30),
176
- 2007: (MAR, 19),
177
- 2008: (MAR, 7),
178
- 2009: (MAR, 26),
179
- 2010: (MAR, 16),
180
- 2011: (MAR, 5),
181
- 2012: (MAR, 23),
182
- 2013: (MAR, 12),
183
- 2014: (MAR, 31),
184
- 2015: (MAR, 21),
185
- 2016: (MAR, 9),
186
- 2017: (MAR, 28),
187
- 2018: (MAR, 17),
188
- 2019: (MAR, 7),
189
- 2020: (MAR, 25),
190
- 2021: (MAR, 14),
191
- 2022: (MAR, 3),
192
- 2023: (MAR, 22),
193
- 2024: (MAR, 11),
194
- 2025: (MAR, 29),
195
- 2026: (MAR, 19),
196
- 2027: (MAR, 8),
197
- 2028: (MAR, 26),
198
- 2029: (MAR, 15),
199
- 2030: (MAR, 5),
200
- }
201
- if self._year in dates_obs:
202
- # Day of Silence.
203
- self._add_holiday(tr("Hari Suci Nyepi"), dates_obs[self._year])
158
+ # Day of Silence.
159
+ self._add_nyepi(tr("Hari Suci Nyepi"))
204
160
 
205
161
  # Vesak Day.
206
162
  self._add_vesak(tr("Hari Raya Waisak"))
@@ -50,8 +50,14 @@ class Iran(HolidayBase, IslamicHolidays, PersianCalendarHolidays):
50
50
  start_year = 1980
51
51
  weekend = {FRI}
52
52
 
53
- def __init__(self, *args, **kwargs):
54
- IslamicHolidays.__init__(self, IranIslamicHolidays)
53
+ def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
54
+ """
55
+ :param islamic_show_estimated:
56
+ Whether to add "estimated" label to Islamic holidays name if holiday date is estimated.
57
+ """
58
+ IslamicHolidays.__init__(
59
+ self, cls=IranIslamicHolidays, show_estimated=islamic_show_estimated
60
+ )
55
61
  PersianCalendarHolidays.__init__(self)
56
62
  super().__init__(*args, **kwargs)
57
63
 
@@ -30,10 +30,14 @@ class Jordan(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolid
30
30
  estimated_label = tr("(تقدير) %s")
31
31
  supported_languages = ("ar", "en_US")
32
32
 
33
- def __init__(self, *args, **kwargs):
33
+ def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
34
+ """
35
+ :param islamic_show_estimated:
36
+ Whether to add "estimated" label to Islamic holidays name if holiday date is estimated.
37
+ """
34
38
  ChristianHolidays.__init__(self)
35
39
  InternationalHolidays.__init__(self)
36
- IslamicHolidays.__init__(self)
40
+ IslamicHolidays.__init__(self, show_estimated=islamic_show_estimated)
37
41
  super().__init__(*args, **kwargs)
38
42
 
39
43
  def _populate_public_holidays(self):
@@ -92,10 +92,16 @@ class Kazakhstan(
92
92
  # Kazakhstan declared its sovereignty on 25 October 1990.
93
93
  start_year = 1991
94
94
 
95
- def __init__(self, *args, **kwargs):
95
+ def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
96
+ """
97
+ :param islamic_show_estimated:
98
+ Whether to add "estimated" label to Islamic holidays name if holiday date is estimated.
99
+ """
96
100
  ChristianHolidays.__init__(self, JULIAN_CALENDAR)
97
101
  InternationalHolidays.__init__(self)
98
- IslamicHolidays.__init__(self, KazakhstanIslamicHolidays)
102
+ IslamicHolidays.__init__(
103
+ self, cls=KazakhstanIslamicHolidays, show_estimated=islamic_show_estimated
104
+ )
99
105
  StaticHolidays.__init__(self, KazakhstanStaticHolidays)
100
106
  kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_WORKDAY)
101
107
  kwargs.setdefault("observed_since", 2002)
@@ -10,65 +10,140 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
- from holidays.calendars.gregorian import FEB, APR, AUG, SEP
14
- from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
15
- from holidays.observed_holiday_base import ObservedHolidayBase, SUN_TO_NEXT_MON, SUN_TO_NEXT_TUE
16
-
17
-
18
- class Kenya(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
13
+ from gettext import gettext as tr
14
+
15
+ from holidays.calendars import _CustomHinduHolidays, _CustomIslamicHolidays
16
+ from holidays.calendars.gregorian import FEB, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV
17
+ from holidays.constants import HINDU, ISLAMIC, PUBLIC
18
+ from holidays.groups import (
19
+ ChristianHolidays,
20
+ HinduCalendarHolidays,
21
+ InternationalHolidays,
22
+ IslamicHolidays,
23
+ StaticHolidays,
24
+ )
25
+ from holidays.observed_holiday_base import ObservedHolidayBase, SUN_TO_NEXT_WORKDAY
26
+
27
+
28
+ class Kenya(
29
+ ObservedHolidayBase,
30
+ ChristianHolidays,
31
+ HinduCalendarHolidays,
32
+ InternationalHolidays,
33
+ IslamicHolidays,
34
+ StaticHolidays,
35
+ ):
19
36
  """
20
- https://en.wikipedia.org/wiki/Public_holidays_in_Kenya
21
- http://kenyaembassyberlin.de/Public-Holidays-in-Kenya.48.0.html
22
- https://www.officeholidays.com/holidays/kenya/moi-day
37
+ References:
38
+ - https://en.wikipedia.org/wiki/Public_holidays_in_Kenya
39
+ - `Public Holidays Act Cap. 110 <https://new.kenyalaw.org/akn/ke/act/1912/21/eng@2024-04-26>`_
40
+ - `Constitution of Kenya (Art. 9) <https://new.kenyalaw.org/akn/ke/act/2010/constitution/eng@2010-09-03#chp_Two__sec_9>`_
23
41
  """
24
42
 
25
43
  country = "KE"
26
- observed_label = "%s (observed)"
27
- start_year = 1963
28
-
29
- def __init__(self, *args, **kwargs):
44
+ default_language = "en_KE"
45
+ # %s (estimated).
46
+ estimated_label = tr("%s (estimated)")
47
+ # %s (observed).
48
+ observed_label = tr("%s (observed)")
49
+ # %s (observed, estimated).
50
+ observed_estimated_label = tr("%s (observed, estimated)")
51
+ supported_categories = (HINDU, ISLAMIC, PUBLIC)
52
+ supported_languages = ("en_KE", "en_US", "sw")
53
+ # Kenya gained independence on December 12, 1963.
54
+ start_year = 1964
55
+
56
+ def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
57
+ """
58
+ :param islamic_show_estimated:
59
+ Whether to add "estimated" label to Islamic holidays name if holiday date is estimated.
60
+ """
30
61
  ChristianHolidays.__init__(self)
62
+ HinduCalendarHolidays.__init__(self, cls=KenyaHinduHolidays)
31
63
  InternationalHolidays.__init__(self)
64
+ IslamicHolidays.__init__(
65
+ self, cls=KenyaIslamicHolidays, show_estimated=islamic_show_estimated
66
+ )
32
67
  StaticHolidays.__init__(self, cls=KenyaStaticHolidays)
33
- kwargs.setdefault("observed_rule", SUN_TO_NEXT_MON)
68
+ kwargs.setdefault("observed_rule", SUN_TO_NEXT_WORKDAY)
69
+ kwargs.setdefault("observed_since", 1985)
34
70
  super().__init__(*args, **kwargs)
35
71
 
36
72
  def _populate_public_holidays(self):
37
- # New Year's Day
38
- self._add_observed(self._add_new_years_day("New Year's Day"))
73
+ dts_observed = set()
74
+
75
+ # New Year's Day.
76
+ dts_observed.add(self._add_new_years_day(tr("New Year's Day")))
77
+
78
+ # Good Friday.
79
+ self._add_good_friday(tr("Good Friday"))
80
+
81
+ # Easter Monday.
82
+ self._add_easter_monday(tr("Easter Monday"))
83
+
84
+ # Labor Day.
85
+ dts_observed.add(self._add_labor_day(tr("Labour Day")))
86
+
87
+ if self._year >= 2011:
88
+ # Madaraka Day.
89
+ dts_observed.add(self._add_holiday_jun_1(tr("Madaraka Day")))
90
+
91
+ if 1990 <= self._year <= 2009 or self._year >= 2018:
92
+ if self._year >= 2025:
93
+ # Mazingira Day.
94
+ name = tr("Mazingira Day")
95
+ elif self._year >= 2021:
96
+ # Utamaduni Day.
97
+ name = tr("Utamaduni Day")
98
+ else:
99
+ # Moi Day.
100
+ name = tr("Moi Day")
101
+ dts_observed.add(self._add_holiday_oct_10(name))
102
+
103
+ dts_observed.add(
104
+ self._add_holiday_oct_20(
105
+ # Mashujaa Day.
106
+ tr("Mashujaa Day")
107
+ if self._year >= 2011
108
+ # Kenyatta Day.
109
+ else tr("Kenyatta Day")
110
+ )
111
+ )
39
112
 
40
- # Good Friday
41
- self._add_good_friday("Good Friday")
113
+ dts_observed.add(
114
+ self._add_holiday_dec_12(
115
+ # Jamhuri Day.
116
+ tr("Jamhuri Day")
117
+ if self._year >= 2011
118
+ # Independence Day.
119
+ else tr("Independence Day")
120
+ )
121
+ )
42
122
 
43
- # Easter Monday
44
- self._add_easter_monday("Easter Monday")
123
+ # Christmas Day.
124
+ dts_observed.add(self._add_christmas_day(tr("Christmas Day")))
45
125
 
46
- # Labour Day
47
- self._add_observed(self._add_labor_day("Labour Day"))
126
+ # Boxing Day.
127
+ dts_observed.add(self._add_christmas_day_two(tr("Boxing Day")))
48
128
 
49
- if self._year >= 2010:
50
- # Mandaraka Day
51
- self._add_observed(self._add_holiday_jun_1("Madaraka Day"))
129
+ # Eid-al-Fitr.
130
+ dts_observed.update(self._add_eid_al_fitr_day(tr("Idd-ul-Fitr")))
52
131
 
53
- if 2002 <= self._year <= 2009 or self._year >= 2018:
54
- self._add_observed(
55
- # Utamaduni/Moi Day
56
- self._add_holiday_oct_10("Utamaduni Day" if self._year >= 2021 else "Moi Day")
57
- )
132
+ if self.observed:
133
+ self._populate_observed(dts_observed)
58
134
 
59
- self._add_observed(
60
- # Mashuja/Kenyatta Day
61
- self._add_holiday_oct_20("Mashujaa Day" if self._year >= 2010 else "Kenyatta Day")
62
- )
135
+ def _populate_hindu_holidays(self):
136
+ """Additional Hindu public holidays."""
63
137
 
64
- # Jamhuri Day
65
- self._add_observed(self._add_holiday_dec_12("Jamhuri Day"))
138
+ if self._year >= 1984:
139
+ # Diwali.
140
+ self._add_diwali(tr("Diwali"))
66
141
 
67
- # Christmas Day
68
- self._add_observed(self._add_christmas_day("Christmas Day"), rule=SUN_TO_NEXT_TUE)
142
+ def _populate_islamic_holidays(self):
143
+ """Additional Islamic public holidays."""
69
144
 
70
- # Boxing Day
71
- self._add_observed(self._add_christmas_day_two("Boxing Day"))
145
+ # Eid-al-Adha.
146
+ self._add_eid_al_adha_day(tr("Idd-ul-Azha"))
72
147
 
73
148
 
74
149
  class KE(Kenya):
@@ -79,15 +154,102 @@ class KEN(Kenya):
79
154
  pass
80
155
 
81
156
 
157
+ class KenyaHinduHolidays(_CustomHinduHolidays):
158
+ DIWALI_DATES = {
159
+ 2014: (OCT, 22),
160
+ 2015: (NOV, 10),
161
+ 2016: (OCT, 29),
162
+ 2017: (OCT, 18),
163
+ 2018: (NOV, 6),
164
+ 2019: (OCT, 28),
165
+ 2020: (NOV, 14),
166
+ 2021: (NOV, 4),
167
+ 2022: (OCT, 24),
168
+ 2023: (NOV, 12),
169
+ 2024: (OCT, 31),
170
+ }
171
+
172
+
173
+ class KenyaIslamicHolidays(_CustomIslamicHolidays):
174
+ EID_AL_ADHA_DATES = {
175
+ 2014: (OCT, 6),
176
+ 2015: (SEP, 24),
177
+ 2016: (SEP, 12),
178
+ 2017: (SEP, 1),
179
+ 2018: (AUG, 21),
180
+ 2019: (AUG, 12),
181
+ 2020: (JUL, 31),
182
+ 2021: (JUL, 20),
183
+ 2022: (JUL, 11),
184
+ 2023: (JUN, 28),
185
+ 2024: (JUN, 17),
186
+ }
187
+
188
+ EID_AL_FITR_DATES = {
189
+ 2014: (JUL, 29),
190
+ 2015: (JUL, 18),
191
+ 2016: (JUL, 7),
192
+ 2017: (JUN, 26),
193
+ 2018: (JUN, 15),
194
+ 2019: (JUN, 5),
195
+ 2020: (MAY, 25),
196
+ 2021: (MAY, 14),
197
+ 2022: (MAY, 3),
198
+ 2023: (APR, 21),
199
+ 2024: (APR, 10),
200
+ }
201
+
202
+
82
203
  class KenyaStaticHolidays:
204
+ """
205
+ References:
206
+ - https://new.kenyalaw.org/akn/ke/officialGazette/2015-11-24/129/eng@2015-11-24
207
+ - https://new.kenyalaw.org/akn/ke/officialGazette/2017-08-01/107/eng@2017-08-01
208
+ - https://new.kenyalaw.org/akn/ke/officialGazette/2017-10-19/156/eng@2017-10-19
209
+ - https://new.kenyalaw.org/akn/ke/officialGazette/2017-10-24/159/eng@2017-10-24
210
+ - https://new.kenyalaw.org/akn/ke/officialGazette/2017-11-23/174/eng@2017-11-23
211
+ - https://new.kenyalaw.org/akn/ke/officialGazette/gazette/2022-07-29/147/eng@2022-07-29
212
+ - https://new.kenyalaw.org/akn/ke/officialGazette/gazette/2022-09-08/182/eng@2022-09-08
213
+ - https://new.kenyalaw.org/akn/ke/officialGazette/gazette/2023-11-06/238/eng@2023-11-06
214
+ - https://new.kenyalaw.org/akn/ke/officialGazette/gazette/2024-05-08/61/eng@2024-05-08
215
+ - https://new.kenyalaw.org/akn/ke/officialGazette/2024-10-31/184/eng@2024-10-31
216
+ """
217
+
218
+ # Election Day.
219
+ election_day = tr("Election Day")
220
+
221
+ # Inauguration Day.
222
+ inauguration_day = tr("Inauguration Day")
223
+
224
+ # Day of Mourning for Queen Elizabeth II.
225
+ mourning_for_queen_elizabeth = tr("Day of Mourning for Queen Elizabeth II")
226
+
227
+ # National Tree Growing Day.
228
+ national_tree_growing_day = tr("National Tree Growing Day")
229
+
83
230
  special_public_holidays = {
84
- 2020: (FEB, 11, "President Moi Celebration of Life Day"),
231
+ # Visit of Pope Francis to Kenya.
232
+ 2015: (NOV, 26, tr("Visit of Pope Francis to Kenya")),
233
+ 2017: (
234
+ (AUG, 8, election_day),
235
+ (OCT, 25, election_day),
236
+ (OCT, 26, election_day),
237
+ (NOV, 28, inauguration_day),
238
+ ),
239
+ # President Moi Memorial Day.
240
+ 2020: (FEB, 11, tr("President Moi Memorial Day")),
85
241
  2022: (
86
- (APR, 29, "State Funeral for Former President Mwai Kibaki"),
87
- (AUG, 9, "Election Day"),
88
- (SEP, 10, "Day of Mourning for Queen Elizabeth II"),
89
- (SEP, 11, "Day of Mourning for Queen Elizabeth II"),
90
- (SEP, 12, "Day of Mourning for Queen Elizabeth II"),
91
- (SEP, 13, "Inauguration Day"),
242
+ # State Funeral for Former President Mwai Kibaki.
243
+ (APR, 29, tr("State Funeral for Former President Mwai Kibaki")),
244
+ (AUG, 9, election_day),
245
+ (SEP, 10, mourning_for_queen_elizabeth),
246
+ (SEP, 11, mourning_for_queen_elizabeth),
247
+ (SEP, 12, mourning_for_queen_elizabeth),
248
+ (SEP, 13, inauguration_day),
249
+ ),
250
+ 2023: (NOV, 13, national_tree_growing_day),
251
+ 2024: (
252
+ (MAY, 10, national_tree_growing_day),
253
+ (NOV, 1, inauguration_day),
92
254
  ),
93
255
  }
@@ -31,9 +31,13 @@ class Kuwait(HolidayBase, InternationalHolidays, IslamicHolidays):
31
31
  estimated_label = tr("(تقدير) %s")
32
32
  supported_languages = ("ar", "en_US")
33
33
 
34
- def __init__(self, *args, **kwargs):
34
+ def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
35
+ """
36
+ :param islamic_show_estimated:
37
+ Whether to add "estimated" label to Islamic holidays name if holiday date is estimated.
38
+ """
35
39
  InternationalHolidays.__init__(self)
36
- IslamicHolidays.__init__(self)
40
+ IslamicHolidays.__init__(self, show_estimated=islamic_show_estimated)
37
41
  super().__init__(*args, **kwargs)
38
42
 
39
43
  def _populate_public_holidays(self):
@@ -25,10 +25,14 @@ class Kyrgyzstan(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicH
25
25
 
26
26
  country = "KG"
27
27
 
28
- def __init__(self, *args, **kwargs):
28
+ def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
29
+ """
30
+ :param islamic_show_estimated:
31
+ Whether to add "estimated" label to Islamic holidays name if holiday date is estimated.
32
+ """
29
33
  ChristianHolidays.__init__(self, JULIAN_CALENDAR)
30
34
  InternationalHolidays.__init__(self)
31
- IslamicHolidays.__init__(self)
35
+ IslamicHolidays.__init__(self, show_estimated=islamic_show_estimated)
32
36
  super().__init__(*args, **kwargs)
33
37
 
34
38
  def _populate_public_holidays(self):