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
@@ -11,13 +11,23 @@
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
13
  import warnings
14
-
15
- from holidays.calendars.gregorian import MAR, OCT, NOV
16
- from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
14
+ from gettext import gettext as tr
15
+
16
+ from holidays.calendars import _CustomIslamicHolidays
17
+ from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
18
+ from holidays.constants import OPTIONAL, PUBLIC
19
+ from holidays.groups import (
20
+ ChristianHolidays,
21
+ HinduCalendarHolidays,
22
+ InternationalHolidays,
23
+ IslamicHolidays,
24
+ )
17
25
  from holidays.holiday_base import HolidayBase
18
26
 
19
27
 
20
- class India(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays):
28
+ class India(
29
+ HolidayBase, ChristianHolidays, HinduCalendarHolidays, InternationalHolidays, IslamicHolidays
30
+ ):
21
31
  """
22
32
  https://www.india.gov.in/calendar
23
33
  https://www.india.gov.in/state-and-ut-holiday-calendar
@@ -28,41 +38,46 @@ class India(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolida
28
38
  """
29
39
 
30
40
  country = "IN"
41
+ default_language = "en_IN"
42
+ # %s (estimated).
43
+ estimated_label = tr("%s (estimated)")
44
+ supported_categories = (OPTIONAL, PUBLIC)
45
+ supported_languages = ("en_IN", "en_US", "hi")
31
46
  subdivisions = (
32
47
  "AN", # Andaman and Nicobar Islands.
33
48
  "AP", # Andhra Pradesh.
34
- "AR", # Arunāchal Pradesh.
49
+ "AR", # Arunachal Pradesh (Arunāchal Pradesh).
35
50
  "AS", # Assam.
36
- "BR", # Bihār.
37
- "CG", # Chhattīsgarh.
38
- "CH", # Chandīgarh.
39
- "DH", # Dādra and Nagar Haveli and Damān and Diu.
51
+ "BR", # Bihar (Bihār).
52
+ "CG", # Chhattisgarh (Chhattīsgarh).
53
+ "CH", # Chandigarh (Chandīgarh).
54
+ "DH", # Dadra and Nagar Haveli and Daman and Diu(Dādra and Nagar Haveli and Damān and Diu)
40
55
  "DL", # Delhi.
41
56
  "GA", # Goa.
42
- "GJ", # Gujarāt.
43
- "HP", # Himāchal Pradesh.
44
- "HR", # Haryāna.
45
- "JH", # Jhārkhand.
46
- "JK", # Jammu and Kashmīr.
47
- "KA", # Karnātaka.
57
+ "GJ", # Gujarat (Gujarāt).
58
+ "HP", # Himachal Pradesh (Himāchal Pradesh).
59
+ "HR", # Haryana (Haryāna).
60
+ "JH", # Jharkhand (Jhārkhand).
61
+ "JK", # Jammu and Kashmir (Jammu and Kashmīr).
62
+ "KA", # Karnataka (Karnātaka).
48
63
  "KL", # Kerala.
49
- "LA", # Ladākh.
64
+ "LA", # Ladakh (Ladākh).
50
65
  "LD", # Lakshadweep.
51
- "MH", # Mahārāshtra.
52
- "ML", # Meghālaya.
66
+ "MH", # Maharashtra (Mahārāshtra).
67
+ "ML", # Meghalaya (Meghālaya).
53
68
  "MN", # Manipur.
54
69
  "MP", # Madhya Pradesh.
55
70
  "MZ", # Mizoram.
56
- "NL", # Nāgāland.
71
+ "NL", # Nagaland (Nāgāland).
57
72
  "OD", # Odisha.
58
73
  "PB", # Punjab.
59
74
  "PY", # Puducherry.
60
- "RJ", # Rājasthān.
75
+ "RJ", # Rajasthan (Rājasthān).
61
76
  "SK", # Sikkim.
62
- "TN", # Tamil Nādu.
77
+ "TN", # Tamil Nadu (Tamil Nādu).
63
78
  "TR", # Tripura.
64
- "TS", # Telangāna.
65
- "UK", # Uttarākhand.
79
+ "TS", # Telangana (Telangāna).
80
+ "UK", # Uttarakhand (Uttarākhand).
66
81
  "UP", # Uttar Pradesh.
67
82
  "WB", # West Bengal.
68
83
  )
@@ -70,227 +85,528 @@ class India(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolida
70
85
  "DD", # Daman and Diu.
71
86
  "OR", # Orissa.
72
87
  )
73
-
74
- def __init__(self, *args, **kwargs):
88
+ subdivisions_aliases = {
89
+ "Andaman and Nicobar Islands": "AN",
90
+ "Andhra Pradesh": "AP",
91
+ "Arunachal Pradesh": "AR",
92
+ "Arunāchal Pradesh": "AR",
93
+ "Assam": "AS",
94
+ "Bihar": "BR",
95
+ "Bihār": "BR",
96
+ "Chhattisgarh": "CG",
97
+ "Chhattīsgarh": "CG",
98
+ "Chandigarh": "CH",
99
+ "Chandīgarh": "CH",
100
+ "Dadra and Nagar Haveli and Daman and Diu": "DH",
101
+ "Dādra and Nagar Haveli and Damān and Diu": "DH",
102
+ "Delhi": "DL",
103
+ "Goa": "GA",
104
+ "Gujarat": "GJ",
105
+ "Gujarāt": "GJ",
106
+ "Himachal Pradesh": "HP",
107
+ "Himāchal Pradesh": "HP",
108
+ "Haryana": "HR",
109
+ "Haryāna": "HR",
110
+ "Jharkhand": "JH",
111
+ "Jhārkhand": "JH",
112
+ "Jammu and Kashmir": "JK",
113
+ "Jammu and Kashmīr": "JK",
114
+ "Karnataka": "KA",
115
+ "Karnātaka": "KA",
116
+ "Kerala": "KL",
117
+ "Ladakh": "LA",
118
+ "Ladākh": "LA",
119
+ "Lakshadweep": "LD",
120
+ "Maharashtra": "MH",
121
+ "Mahārāshtra": "MH",
122
+ "Meghalaya": "ML",
123
+ "Meghālaya": "ML",
124
+ "Manipur": "MN",
125
+ "Madhya Pradesh": "MP",
126
+ "Mizoram": "MZ",
127
+ "Nagaland": "NL",
128
+ "Nāgāland": "NL",
129
+ "Odisha": "OD",
130
+ "Punjab": "PB",
131
+ "Puducherry": "PY",
132
+ "Rajasthan": "RJ",
133
+ "Rājasthān": "RJ",
134
+ "Sikkim": "SK",
135
+ "Tamil Nadu": "TN",
136
+ "Tamil Nādu": "TN",
137
+ "Tripura": "TR",
138
+ "Telangana": "TS",
139
+ "Telangāna": "TS",
140
+ "Uttarakhand": "UK",
141
+ "Uttarākhand": "UK",
142
+ "Uttar Pradesh": "UP",
143
+ "West Bengal": "WB",
144
+ }
145
+
146
+ # India gained independence on August 15, 1947.
147
+ start_year = 1948
148
+
149
+ def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
150
+ """
151
+ :param islamic_show_estimated:
152
+ Whether to add "estimated" label to Islamic holidays name if holiday date is estimated.
153
+ """
75
154
  ChristianHolidays.__init__(self)
76
- IslamicHolidays.__init__(self)
155
+ HinduCalendarHolidays.__init__(self)
156
+ IslamicHolidays.__init__(
157
+ self, cls=IndiaIslamicHolidays, show_estimated=islamic_show_estimated
158
+ )
77
159
  InternationalHolidays.__init__(self)
78
160
  super().__init__(*args, **kwargs)
79
161
 
80
162
  def _populate_public_holidays(self):
81
- # Makar Sankranti / Pongal.
82
- self._add_holiday_jan_14("Makar Sankranti / Pongal")
83
-
84
163
  if self._year >= 1950:
85
164
  # Republic Day.
86
- self._add_holiday_jan_26("Republic Day")
165
+ self._add_holiday_jan_26(tr("Republic Day"))
87
166
 
88
- if self._year >= 1947:
89
- # Independence Day.
90
- self._add_holiday_aug_15("Independence Day")
167
+ # Independence Day.
168
+ self._add_holiday_aug_15(tr("Independence Day"))
91
169
 
92
170
  # Gandhi Jayanti.
93
- self._add_holiday_oct_2("Gandhi Jayanti")
94
-
95
- # Labour Day.
96
- self._add_labor_day("Labour Day")
171
+ self._add_holiday_oct_2(tr("Gandhi Jayanti"))
97
172
 
98
- # Directly lifted Diwali and Holi dates from FBProphet from:
99
- # https://github.com/facebook/prophet/blob/main/python/prophet/hdays.py
100
- # Warnings kept in place so that users are aware
101
- if self._year < 2001 or self._year > 2030:
102
- warning_msg = "Diwali and Holi holidays available from 2001 to 2030 only"
173
+ # Hindu Holidays.
174
+ if self._year < 2001 or self._year > 2035:
175
+ warning_msg = "Requested Holidays are available only from 2001 to 2035."
103
176
  warnings.warn(warning_msg, Warning)
104
177
 
105
- # https://www.timeanddate.com/holidays/india/diwali
106
- diwali_dates = {
107
- 2001: (NOV, 14),
108
- 2002: (NOV, 4),
109
- 2003: (OCT, 25),
110
- 2004: (NOV, 12),
111
- 2005: (NOV, 1),
112
- 2006: (OCT, 21),
113
- 2007: (NOV, 9),
114
- 2008: (OCT, 28),
115
- 2009: (OCT, 17),
116
- 2010: (NOV, 5),
117
- 2011: (OCT, 26),
118
- 2012: (NOV, 13),
119
- 2013: (NOV, 3),
120
- 2014: (OCT, 23),
121
- 2015: (NOV, 11),
122
- 2016: (OCT, 30),
123
- 2017: (OCT, 19),
124
- 2018: (NOV, 7),
125
- 2019: (OCT, 27),
126
- 2020: (NOV, 14),
127
- 2021: (NOV, 4),
128
- 2022: (OCT, 24),
129
- 2023: (NOV, 12),
130
- 2024: (NOV, 1),
131
- 2025: (OCT, 20),
132
- 2026: (NOV, 8),
133
- 2027: (OCT, 29),
134
- 2028: (OCT, 17),
135
- 2029: (NOV, 5),
136
- 2030: (OCT, 26),
137
- }
138
-
139
- # https://www.timeanddate.com/holidays/india/holi
140
- holi_dates = {
141
- 2001: (MAR, 10),
142
- 2002: (MAR, 29),
143
- 2003: (MAR, 18),
144
- 2004: (MAR, 7),
145
- 2005: (MAR, 26),
146
- 2006: (MAR, 15),
147
- 2007: (MAR, 4),
148
- 2008: (MAR, 22),
149
- 2009: (MAR, 11),
150
- 2010: (MAR, 1),
151
- 2011: (MAR, 20),
152
- 2012: (MAR, 8),
153
- 2013: (MAR, 27),
154
- 2014: (MAR, 17),
155
- 2015: (MAR, 6),
156
- 2016: (MAR, 24),
157
- 2017: (MAR, 13),
158
- 2018: (MAR, 2),
159
- 2019: (MAR, 21),
160
- 2020: (MAR, 10),
161
- 2021: (MAR, 29),
162
- 2022: (MAR, 18),
163
- 2023: (MAR, 8),
164
- 2024: (MAR, 25),
165
- 2025: (MAR, 14),
166
- 2026: (MAR, 4),
167
- 2027: (MAR, 22),
168
- 2028: (MAR, 11),
169
- 2029: (MAR, 1),
170
- 2030: (MAR, 20),
171
- }
172
-
173
- if self._year in diwali_dates:
174
- self._add_holiday("Diwali", diwali_dates[self._year])
175
-
176
- if self._year in holi_dates:
177
- self._add_holiday("Holi", holi_dates[self._year])
178
+ # Buddha Purnima.
179
+ self._add_buddha_purnima(tr("Buddha Purnima"))
180
+
181
+ # Diwali.
182
+ self._add_diwali_india(tr("Diwali"))
183
+
184
+ # Janmashtami.
185
+ self._add_janmashtami(tr("Janmashtami"))
186
+
187
+ # Dussehra.
188
+ self._add_dussehra(tr("Dussehra"))
189
+
190
+ # Mahavir Jayanti.
191
+ self._add_mahavir_jayanti(tr("Mahavir Jayanti"))
192
+
193
+ # Maha Shivaratri.
194
+ self._add_maha_shivaratri(tr("Maha Shivaratri"))
195
+
196
+ # Guru Nanak Jayanti.
197
+ self._add_guru_nanak_jayanti(tr("Guru Nanak Jayanti"))
178
198
 
179
199
  # Islamic holidays.
180
- # Day of Ashura.
181
- self._add_ashura_day("Day of Ashura")
182
200
 
183
- # Birth of the Prophet.
184
- self._add_mawlid_day("Mawlid")
201
+ # Ashura.
202
+ self._add_ashura_day(tr("Muharram"))
185
203
 
186
- # Eid ul-Fitr.
187
- name = "Eid ul-Fitr"
188
- self._add_eid_al_fitr_day(name)
189
- self._add_eid_al_fitr_day_two(name)
204
+ # Prophet's Birthday.
205
+ self._add_mawlid_day(tr("Milad-un-Nabi"))
206
+
207
+ # Eid al-Fitr.
208
+ self._add_eid_al_fitr_day(tr("Id-ul-Fitr"))
190
209
 
191
210
  # Eid al-Adha.
192
- name = "Eid al-Adha"
193
- self._add_eid_al_adha_day(name)
194
- self._add_eid_al_adha_day_two(name)
211
+ self._add_eid_al_adha_day(tr("Bakrid"))
195
212
 
196
213
  # Christian holidays.
197
- self._add_palm_sunday("Palm Sunday")
198
- self._add_good_friday("Good Friday")
199
- self._add_easter_sunday("Easter Sunday")
200
- self._add_whit_sunday("Feast of Pentecost")
201
- self._add_christmas_day("Christmas Day")
214
+
215
+ # Good Friday.
216
+ self._add_good_friday(tr("Good Friday"))
217
+
218
+ # Christmas.
219
+ self._add_christmas_day(tr("Christmas"))
202
220
 
203
221
  if self.subdiv == "OR":
204
222
  self._populate_subdiv_od_public_holidays()
205
223
 
224
+ def _populate_optional_holidays(self):
225
+ # Hindu holidays.
226
+
227
+ # Children's Day.
228
+ self._add_holiday_nov_14(tr("Children's Day"))
229
+
230
+ # Holi.
231
+ self._add_holi(tr("Holi"))
232
+
233
+ # Ganesh Chaturthi.
234
+ self._add_ganesh_chaturthi(tr("Ganesh Chaturthi"))
235
+
236
+ # Govardhan Puja.
237
+ self._add_govardhan_puja(tr("Govardhan Puja"))
238
+
239
+ # Labor Day.
240
+ self._add_labor_day(tr("Labour Day"))
241
+
242
+ # Maha Navami.
243
+ self._add_maha_navami(tr("Maha Navami"))
244
+
245
+ # Makar Sankranti.
246
+ self._add_makar_sankranti(tr("Makar Sankranti"))
247
+
248
+ # Raksha Bandhan.
249
+ self._add_raksha_bandhan(tr("Raksha Bandhan"))
250
+
251
+ # Ram Navami.
252
+ self._add_ram_navami(tr("Ram Navami"))
253
+
254
+ # Navratri / Sharad Navratri.
255
+ self._add_sharad_navratri(tr("Navratri / Sharad Navratri"))
256
+
257
+ # Christian holidays.
258
+
259
+ # Easter Sunday.
260
+ self._add_easter_sunday(tr("Easter Sunday"))
261
+
262
+ # Palm Sunday.
263
+ self._add_palm_sunday(tr("Palm Sunday"))
264
+
265
+ # Andaman and Nicobar Islands.
266
+ def _populate_subdiv_an_public_holidays(self):
267
+ # Dr. B. R. Ambedkar Jayanti.
268
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
269
+
206
270
  # Andhra Pradesh.
207
271
  def _populate_subdiv_ap_public_holidays(self):
208
- self._add_holiday_apr_14("Dr. B. R. Ambedkar's Jayanti")
209
- self._add_holiday_nov_1("Andhra Pradesh Foundation Day")
272
+ # Dr. B. R. Ambedkar Jayanti.
273
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
274
+ # Andhra Pradesh Foundation Day.
275
+ self._add_holiday_nov_1(tr("Andhra Pradesh Foundation Day"))
210
276
 
211
277
  # Assam.
212
278
  def _populate_subdiv_as_public_holidays(self):
213
- self._add_holiday_apr_15("Bihu (Assamese New Year)")
279
+ # Magh Bihu.
280
+ self._add_makar_sankranti(tr("Magh Bihu"))
281
+ # Assam Day.
282
+ self._add_holiday_dec_2(tr("Assam Day"))
214
283
 
215
284
  # Bihar.
216
285
  def _populate_subdiv_br_public_holidays(self):
217
- self._add_holiday_mar_22("Bihar Day")
218
- self._add_holiday_apr_14("Dr. B. R. Ambedkar's Jayanti")
286
+ # Chhath Puja.
287
+ self._add_chhath_puja(tr("Chhath Puja"))
288
+ # Bihar Day.
289
+ self._add_holiday_mar_22(tr("Bihar Day"))
290
+ # Dr. B. R. Ambedkar Jayanti.
291
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
292
+
293
+ # Chandigarh.
294
+ def _populate_subdiv_ch_public_holidays(self):
295
+ # Dr. B. R. Ambedkar Jayanti.
296
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
219
297
 
220
298
  # Chhattisgarh.
221
299
  def _populate_subdiv_cg_public_holidays(self):
222
- self._add_holiday_nov_1("Chhattisgarh Foundation Day")
300
+ # Dr. B. R. Ambedkar Jayanti.
301
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
302
+ # Chhattisgarh Foundation Day.
303
+ self._add_holiday_nov_1(tr("Chhattisgarh Foundation Day"))
304
+
305
+ # Delhi.
306
+ def _populate_subdiv_dl_public_holidays(self):
307
+ # Chhath Puja.
308
+ self._add_chhath_puja(tr("Chhath Puja"))
309
+
310
+ # Goa.
311
+ def _populate_subdiv_ga_public_holidays(self):
312
+ # Dr. B. R. Ambedkar Jayanti.
313
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
314
+ # Goa Liberation Day.
315
+ self._add_holiday_dec_19(tr("Goa Liberation Day"))
223
316
 
224
317
  # Gujarat.
225
318
  def _populate_subdiv_gj_public_holidays(self):
226
- self._add_holiday_jan_14("Uttarayan")
227
- self._add_holiday_may_1("Gujarat Day")
228
- self._add_holiday_oct_31("Sardar Patel Jayanti")
319
+ # Makar Sankranti.
320
+ self._add_makar_sankranti(tr("Uttarayan"))
321
+ # Dr. B. R. Ambedkar Jayanti.
322
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
323
+ # Gujarat Day.
324
+ self._add_holiday_may_1(tr("Gujarat Day"))
325
+ # Sardar Vallabhbhai Patel Jayanti.
326
+ self._add_holiday_oct_31(tr("Sardar Vallabhbhai Patel Jayanti"))
229
327
 
230
328
  # Haryana.
231
329
  def _populate_subdiv_hr_public_holidays(self):
232
- self._add_holiday_apr_14("Dr. B. R. Ambedkar's Jayanti")
233
- self._add_holiday_nov_1("Haryana Foundation Day")
330
+ # Dr. B. R. Ambedkar Jayanti.
331
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
332
+ # Haryana Foundation Day.
333
+ self._add_holiday_nov_1(tr("Haryana Foundation Day"))
334
+
335
+ # Himachal Pradesh.
336
+ def _populate_subdiv_hp_public_holidays(self):
337
+ # Dr. B. R. Ambedkar Jayanti.
338
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
339
+ # Himachal Day.
340
+ self._add_holiday_apr_15(tr("Himachal Day"))
341
+
342
+ # Jammu and Kashmir
343
+ def _populate_subdiv_jk_public_holidays(self):
344
+ # Dr. B. R. Ambedkar Jayanti.
345
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
346
+
347
+ # Jharkhand.
348
+ def _populate_subdiv_jh_public_holidays(self):
349
+ # Chhath Puja.
350
+ self._add_chhath_puja(tr("Chhath Puja"))
351
+ # Dr. B. R. Ambedkar Jayanti.
352
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
353
+ # Jharkhand Formation Day.
354
+ self._add_holiday_nov_15(tr("Jharkhand Formation Day"))
234
355
 
235
356
  # Karnataka.
236
357
  def _populate_subdiv_ka_public_holidays(self):
237
- self._add_holiday_nov_1("Karnataka Rajyotsava")
358
+ # Dr. B. R. Ambedkar Jayanti.
359
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
360
+ # Karnataka Rajyotsav.
361
+ self._add_holiday_nov_1(tr("Karnataka Rajyotsava"))
238
362
 
239
363
  # Kerala.
240
364
  def _populate_subdiv_kl_public_holidays(self):
241
- self._add_holiday_apr_14("Dr. B. R. Ambedkar's Jayanti")
242
- self._add_holiday_nov_1("Kerala Foundation Day")
365
+ # Onam.
366
+ self._add_onam(tr("Onam"))
367
+ # Dr. B. R. Ambedkar Jayanti.
368
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
369
+ # Kerala Foundation Day.
370
+ self._add_holiday_nov_1(tr("Kerala Foundation Day"))
371
+
372
+ # Ladakh.
373
+ def _populate_subdiv_la_public_holidays(self):
374
+ # Dr. B. R. Ambedkar Jayanti.
375
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
243
376
 
244
377
  # Maharashtra.
245
378
  def _populate_subdiv_mh_public_holidays(self):
246
- self._add_holiday_apr_14("Dr. B. R. Ambedkar's Jayanti")
247
- self._add_holiday_may_1("Maharashtra Day")
248
- self._add_holiday_oct_15("Dussehra")
379
+ # Gudi Padwa.
380
+ self._add_gudi_padwa(tr("Gudi Padwa"))
381
+ # Chhatrapati Shivaji Maharaj Jayanti.
382
+ self._add_holiday_feb_19(tr("Chhatrapati Shivaji Maharaj Jayanti"))
383
+ # Dr. B. R. Ambedkar Jayanti.
384
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
385
+ # Maharashtra Day.
386
+ self._add_holiday_may_1(tr("Maharashtra Day"))
249
387
 
250
388
  # Madhya Pradesh.
251
389
  def _populate_subdiv_mp_public_holidays(self):
252
- self._add_holiday_nov_1("Madhya Pradesh Foundation Day")
390
+ # Dr. B. R. Ambedkar Jayanti.
391
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
392
+ # Madhya Pradesh Foundation Day.
393
+ self._add_holiday_nov_1(tr("Madhya Pradesh Foundation Day"))
394
+
395
+ # Mizoram.
396
+ def _populate_subdiv_mz_public_holidays(self):
397
+ # Mizoram State Day.
398
+ self._add_holiday_feb_20(tr("Mizoram State Day"))
399
+
400
+ # Nagaland.
401
+ def _populate_subdiv_nl_public_holidays(self):
402
+ # Nagaland State Inauguration Day.
403
+ self._add_holiday_dec_1(tr("Nagaland State Inauguration Day"))
253
404
 
254
405
  # Orissa / Odisha.
255
406
  def _populate_subdiv_od_public_holidays(self):
256
- self._add_holiday_apr_1("Odisha Day (Utkala Dibasa)")
257
- self._add_holiday_apr_14("Dr. B. R. Ambedkar's Jayanti")
258
- self._add_holiday_apr_15("Maha Vishuva Sankranti / Pana Sankranti")
407
+ # Odisha Day.
408
+ self._add_holiday_apr_1(tr("Odisha Day (Utkala Dibasa)"))
409
+ # Dr. B. R. Ambedkar Jayanti.
410
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
411
+ # Maha Vishuva Sankranti.
412
+ self._add_holiday_apr_15(tr("Maha Vishuva Sankranti / Pana Sankranti"))
413
+
414
+ # Puducherry.
415
+ def _populate_subdiv_py_public_holidays(self):
416
+ # Dr. B. R. Ambedkar Jayanti.
417
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
418
+ # Puducherry De Jure Transfer Day.
419
+ self._add_holiday_aug_16(tr("Puducherry De Jure Transfer Day"))
420
+ # Puducherry Liberation Day.
421
+ self._add_holiday_nov_1(tr("Puducherry Liberation Day"))
422
+
423
+ # Punjab.
424
+ def _populate_subdiv_pb_public_holidays(self):
425
+ # Guru Gobind Singh Jayanti.
426
+ self._add_guru_gobind_singh_jayanti(tr("Guru Gobind Singh Jayanti"))
427
+ # Vaisakhi.
428
+ self._add_vaisakhi(tr("Vaisakhi"))
429
+ # Lohri.
430
+ self._add_holiday_jan_13(tr("Lohri"))
431
+ # Dr. B. R. Ambedkar Jayanti.
432
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
433
+ # Punjabi Day.
434
+ self._add_holiday_nov_1(tr("Punjab Day"))
259
435
 
260
436
  # Rajasthan.
261
437
  def _populate_subdiv_rj_public_holidays(self):
262
- self._add_holiday_mar_30("Rajasthan Day")
263
- self._add_holiday_jun_15("Maharana Pratap Jayanti")
438
+ # Rajasthan Day.
439
+ self._add_holiday_mar_30(tr("Rajasthan Day"))
440
+ # Dr. B. R. Ambedkar Jayanti.
441
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
442
+ # Maharana Pratap Jayanti.
443
+ self._add_holiday_jun_15(tr("Maharana Pratap Jayanti"))
264
444
 
265
445
  # Sikkim.
266
446
  def _populate_subdiv_sk_public_holidays(self):
267
- self._add_holiday_may_16("Annexation Day")
447
+ # Dr. B. R. Ambedkar Jayanti.
448
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
449
+ # Sikkim State Day.
450
+ self._add_holiday_may_16(tr("Sikkim State Day"))
268
451
 
269
452
  # Tamil Nadu.
270
453
  def _populate_subdiv_tn_public_holidays(self):
271
- self._add_holiday_apr_14("Dr. B. R. Ambedkar's Jayanti")
272
- self._add_holiday_apr_14("Puthandu (Tamil New Year)")
273
- self._add_holiday_apr_15("Puthandu (Tamil New Year)")
454
+ # Pongal.
455
+ self._add_makar_sankranti(tr("Pongal"))
456
+ # Dr. B. R. Ambedkar Jayanti.
457
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
458
+ # Puthandu.
459
+ self._add_holiday_apr_14(tr("Puthandu (Tamil New Year)"))
274
460
 
275
461
  # Telangana.
276
462
  def _populate_subdiv_ts_public_holidays(self):
277
- self._add_holiday_apr_6("Eid al-Fitr")
278
- self._add_holiday_oct_6("Bathukamma Festival")
463
+ # Dr. B. R. Ambedkar Jayanti.
464
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
465
+ # Telangana Formation Day.
466
+ self._add_holiday_jun_2(tr("Telangana Formation Day"))
467
+ # Bathukamma Festival.
468
+ self._add_holiday_oct_6(tr("Bathukamma Festival"))
279
469
 
280
470
  # Uttarakhand.
281
471
  def _populate_subdiv_uk_public_holidays(self):
282
- self._add_holiday_apr_14("Dr. B. R. Ambedkar's Jayanti")
472
+ # Dr. B. R. Ambedkar Jayanti.
473
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
283
474
 
284
475
  # Uttar Pradesh.
285
476
  def _populate_subdiv_up_public_holidays(self):
286
- self._add_holiday_apr_14("Dr. B. R. Ambedkar's Jayanti")
477
+ # Chhath Puja.
478
+ self._add_chhath_puja(tr("Chhath Puja"))
479
+ # UP Formation Day.
480
+ self._add_holiday_jan_24(tr("UP Formation Day"))
481
+ # Dr. B. R. Ambedkar Jayanti.
482
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
287
483
 
288
484
  # West Bengal.
289
485
  def _populate_subdiv_wb_public_holidays(self):
290
- self._add_holiday_apr_14("Dr. B. R. Ambedkar's Jayanti")
291
- self._add_holiday_apr_14("Pohela Boishakh")
292
- self._add_holiday_apr_15("Pohela Boishakh")
293
- self._add_holiday_may_9("Rabindra Jayanti")
486
+ # Dr. B. R. Ambedkar Jayanti.
487
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
488
+ # Pohela Boisakh.
489
+ self._add_holiday_apr_15(tr("Pohela Boishakh"))
490
+ # Rabindra Jayanti.
491
+ self._add_holiday_may_9(tr("Rabindra Jayanti"))
492
+
493
+
494
+ class IndiaIslamicHolidays(_CustomIslamicHolidays):
495
+ # Muharram / Day of Ashura.
496
+ ASHURA_DATES = {
497
+ 2001: (APR, 4),
498
+ 2002: (MAR, 24),
499
+ 2003: (MAR, 14),
500
+ 2004: (MAR, 2),
501
+ 2005: (FEB, 19),
502
+ 2006: (FEB, 9),
503
+ 2007: (JAN, 30),
504
+ 2008: (JAN, 19),
505
+ 2009: ((JAN, 7), (DEC, 28)),
506
+ 2010: (DEC, 17),
507
+ 2011: (DEC, 6),
508
+ 2012: (NOV, 25),
509
+ 2013: (NOV, 14),
510
+ 2014: (NOV, 4),
511
+ 2015: (OCT, 24),
512
+ 2016: (OCT, 12),
513
+ 2017: (OCT, 1),
514
+ 2018: (SEP, 21),
515
+ 2019: (SEP, 10),
516
+ 2020: (AUG, 30),
517
+ 2021: (AUG, 20),
518
+ 2022: (AUG, 9),
519
+ 2023: (JUL, 29),
520
+ 2024: (JUL, 17),
521
+ 2025: (JUL, 6),
522
+ }
523
+
524
+ # Bakrid / Eid-al-Adha.
525
+ EID_AL_ADHA_DATES = {
526
+ 2001: (MAR, 6),
527
+ 2002: (FEB, 23),
528
+ 2003: (FEB, 12),
529
+ 2004: (FEB, 2),
530
+ 2005: (JAN, 21),
531
+ 2006: ((JAN, 11), (DEC, 31)),
532
+ 2007: (DEC, 20),
533
+ 2008: (DEC, 9),
534
+ 2009: (NOV, 28),
535
+ 2010: (NOV, 17),
536
+ 2011: (NOV, 7),
537
+ 2012: (OCT, 27),
538
+ 2013: (OCT, 16),
539
+ 2014: (OCT, 6),
540
+ 2015: (SEP, 25),
541
+ 2016: (SEP, 13),
542
+ 2017: (SEP, 2),
543
+ 2018: (AUG, 22),
544
+ 2019: (AUG, 12),
545
+ 2020: (AUG, 1),
546
+ 2021: (JUL, 21),
547
+ 2022: (JUL, 10),
548
+ 2023: (JUN, 29),
549
+ 2024: (JUN, 17),
550
+ 2025: (JUN, 7),
551
+ }
552
+
553
+ # Id-ul-Fitr / Eid-al-Fitr.
554
+ EID_AL_FITR_DATES = {
555
+ 2001: (DEC, 17),
556
+ 2002: (DEC, 6),
557
+ 2003: (NOV, 26),
558
+ 2004: (NOV, 14),
559
+ 2005: (NOV, 3),
560
+ 2006: (OCT, 24),
561
+ 2007: (OCT, 13),
562
+ 2008: (OCT, 2),
563
+ 2009: (SEP, 21),
564
+ 2010: (SEP, 10),
565
+ 2011: (AUG, 31),
566
+ 2012: (AUG, 20),
567
+ 2013: (AUG, 8),
568
+ 2014: (JUL, 29),
569
+ 2015: (JUL, 18),
570
+ 2016: (JUL, 7),
571
+ 2017: (JUN, 26),
572
+ 2018: (JUN, 16),
573
+ 2019: (JUN, 5),
574
+ 2020: (MAY, 25),
575
+ 2021: (MAY, 14),
576
+ 2022: (MAY, 3),
577
+ 2023: (APR, 22),
578
+ 2024: (APR, 11),
579
+ 2025: (MAR, 31),
580
+ }
581
+
582
+ # Milad-un-Nabi / Mawlid.
583
+ MAWLID_DATES = {
584
+ 2001: (JUN, 5),
585
+ 2002: (MAY, 25),
586
+ 2003: (MAY, 15),
587
+ 2004: (MAY, 3),
588
+ 2005: (APR, 22),
589
+ 2006: (APR, 11),
590
+ 2007: (APR, 1),
591
+ 2008: (MAR, 21),
592
+ 2009: (MAR, 9),
593
+ 2010: (FEB, 27),
594
+ 2011: (FEB, 16),
595
+ 2012: (FEB, 5),
596
+ 2013: (JAN, 25),
597
+ 2014: (JAN, 14),
598
+ 2015: ((JAN, 4), (DEC, 25)),
599
+ 2016: (DEC, 13),
600
+ 2017: (DEC, 2),
601
+ 2018: (NOV, 21),
602
+ 2019: (NOV, 10),
603
+ 2020: (OCT, 30),
604
+ 2021: (OCT, 19),
605
+ 2022: (OCT, 9),
606
+ 2023: (SEP, 28),
607
+ 2024: (SEP, 16),
608
+ 2025: (SEP, 5),
609
+ }
294
610
 
295
611
 
296
612
  class IN(India):