holidays 0.68__py3-none-any.whl → 0.70__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 (254) hide show
  1. holidays/__init__.py +1 -1
  2. holidays/calendars/__init__.py +2 -1
  3. holidays/calendars/balinese_saka.py +112 -0
  4. holidays/calendars/buddhist.py +1 -1
  5. holidays/calendars/chinese.py +1 -1
  6. holidays/calendars/custom.py +1 -1
  7. holidays/calendars/gregorian.py +1 -1
  8. holidays/calendars/hebrew.py +1 -1
  9. holidays/calendars/hindu.py +866 -2
  10. holidays/calendars/islamic.py +161 -1
  11. holidays/calendars/julian.py +1 -1
  12. holidays/calendars/julian_revised.py +1 -1
  13. holidays/calendars/persian.py +1 -1
  14. holidays/calendars/sinhala.py +1 -1
  15. holidays/calendars/thai.py +309 -257
  16. holidays/constants.py +3 -1
  17. holidays/countries/__init__.py +7 -1
  18. holidays/countries/afghanistan.py +17 -7
  19. holidays/countries/albania.py +16 -7
  20. holidays/countries/algeria.py +14 -10
  21. holidays/countries/american_samoa.py +12 -6
  22. holidays/countries/andorra.py +5 -4
  23. holidays/countries/angola.py +15 -14
  24. holidays/countries/antigua_and_barbuda.py +145 -0
  25. holidays/countries/argentina.py +787 -169
  26. holidays/countries/armenia.py +5 -6
  27. holidays/countries/aruba.py +11 -9
  28. holidays/countries/australia.py +21 -20
  29. holidays/countries/austria.py +3 -1
  30. holidays/countries/azerbaijan.py +30 -19
  31. holidays/countries/bahamas.py +13 -11
  32. holidays/countries/bahrain.py +14 -7
  33. holidays/countries/bangladesh.py +5 -4
  34. holidays/countries/barbados.py +11 -9
  35. holidays/countries/belarus.py +15 -15
  36. holidays/countries/belgium.py +8 -6
  37. holidays/countries/belize.py +7 -6
  38. holidays/countries/bolivia.py +12 -11
  39. holidays/countries/bosnia_and_herzegovina.py +21 -11
  40. holidays/countries/botswana.py +8 -6
  41. holidays/countries/brazil.py +8 -7
  42. holidays/countries/brunei.py +56 -62
  43. holidays/countries/bulgaria.py +9 -10
  44. holidays/countries/burkina_faso.py +14 -5
  45. holidays/countries/burundi.py +17 -12
  46. holidays/countries/cambodia.py +15 -24
  47. holidays/countries/cameroon.py +16 -7
  48. holidays/countries/canada.py +13 -12
  49. holidays/countries/chad.py +15 -6
  50. holidays/countries/chile.py +29 -28
  51. holidays/countries/china.py +39 -38
  52. holidays/countries/colombia.py +15 -20
  53. holidays/countries/congo.py +6 -7
  54. holidays/countries/costa_rica.py +11 -10
  55. holidays/countries/croatia.py +8 -5
  56. holidays/countries/cuba.py +30 -27
  57. holidays/countries/curacao.py +6 -4
  58. holidays/countries/cyprus.py +4 -5
  59. holidays/countries/czechia.py +7 -6
  60. holidays/countries/denmark.py +5 -6
  61. holidays/countries/djibouti.py +11 -3
  62. holidays/countries/dominica.py +18 -16
  63. holidays/countries/dominican_republic.py +6 -4
  64. holidays/countries/ecuador.py +5 -4
  65. holidays/countries/egypt.py +10 -11
  66. holidays/countries/el_salvador.py +6 -5
  67. holidays/countries/estonia.py +3 -1
  68. holidays/countries/eswatini.py +6 -4
  69. holidays/countries/ethiopia.py +26 -11
  70. holidays/countries/fiji.py +183 -0
  71. holidays/countries/finland.py +11 -10
  72. holidays/countries/france.py +6 -9
  73. holidays/countries/gabon.py +17 -8
  74. holidays/countries/georgia.py +7 -7
  75. holidays/countries/germany.py +11 -11
  76. holidays/countries/ghana.py +14 -6
  77. holidays/countries/greece.py +4 -5
  78. holidays/countries/greenland.py +5 -6
  79. holidays/countries/guam.py +12 -6
  80. holidays/countries/guatemala.py +7 -9
  81. holidays/countries/guernsey.py +37 -34
  82. holidays/countries/guinea.py +182 -0
  83. holidays/countries/haiti.py +6 -5
  84. holidays/countries/honduras.py +8 -4
  85. holidays/countries/hongkong.py +49 -60
  86. holidays/countries/hungary.py +26 -23
  87. holidays/countries/iceland.py +5 -4
  88. holidays/countries/india.py +494 -174
  89. holidays/countries/indonesia.py +68 -108
  90. holidays/countries/iran.py +18 -9
  91. holidays/countries/ireland.py +5 -4
  92. holidays/countries/isle_of_man.py +2 -2
  93. holidays/countries/israel.py +4 -5
  94. holidays/countries/italy.py +5 -4
  95. holidays/countries/ivory_coast.py +156 -0
  96. holidays/countries/jamaica.py +6 -4
  97. holidays/countries/japan.py +5 -5
  98. holidays/countries/jersey.py +29 -26
  99. holidays/countries/jordan.py +13 -6
  100. holidays/countries/kazakhstan.py +72 -51
  101. holidays/countries/kenya.py +28 -18
  102. holidays/countries/kuwait.py +14 -7
  103. holidays/countries/kyrgyzstan.py +11 -6
  104. holidays/countries/laos.py +21 -29
  105. holidays/countries/latvia.py +7 -5
  106. holidays/countries/lesotho.py +6 -5
  107. holidays/countries/liechtenstein.py +5 -5
  108. holidays/countries/lithuania.py +4 -5
  109. holidays/countries/luxembourg.py +5 -3
  110. holidays/countries/macau.py +480 -0
  111. holidays/countries/madagascar.py +5 -4
  112. holidays/countries/malawi.py +6 -4
  113. holidays/countries/malaysia.py +30 -18
  114. holidays/countries/maldives.py +14 -7
  115. holidays/countries/malta.py +10 -19
  116. holidays/countries/marshall_islands.py +6 -4
  117. holidays/countries/mauritania.py +13 -6
  118. holidays/countries/mexico.py +8 -7
  119. holidays/countries/moldova.py +6 -4
  120. holidays/countries/monaco.py +6 -4
  121. holidays/countries/montenegro.py +16 -7
  122. holidays/countries/morocco.py +13 -8
  123. holidays/countries/mozambique.py +3 -1
  124. holidays/countries/namibia.py +7 -5
  125. holidays/countries/netherlands.py +6 -6
  126. holidays/countries/new_zealand.py +3 -1
  127. holidays/countries/nicaragua.py +6 -5
  128. holidays/countries/nigeria.py +13 -5
  129. holidays/countries/north_macedonia.py +13 -5
  130. holidays/countries/northern_mariana_islands.py +12 -6
  131. holidays/countries/norway.py +15 -15
  132. holidays/countries/pakistan.py +48 -18
  133. holidays/countries/palau.py +13 -11
  134. holidays/countries/panama.py +9 -8
  135. holidays/countries/papua_new_guinea.py +25 -21
  136. holidays/countries/paraguay.py +10 -9
  137. holidays/countries/peru.py +4 -5
  138. holidays/countries/philippines.py +32 -18
  139. holidays/countries/poland.py +7 -6
  140. holidays/countries/portugal.py +13 -15
  141. holidays/countries/puerto_rico.py +12 -6
  142. holidays/countries/qatar.py +172 -0
  143. holidays/countries/romania.py +6 -4
  144. holidays/countries/russia.py +6 -4
  145. holidays/countries/saint_kitts_and_nevis.py +24 -22
  146. holidays/countries/saint_lucia.py +8 -7
  147. holidays/countries/samoa.py +7 -6
  148. holidays/countries/san_marino.py +4 -3
  149. holidays/countries/saudi_arabia.py +15 -15
  150. holidays/countries/serbia.py +3 -4
  151. holidays/countries/seychelles.py +22 -26
  152. holidays/countries/singapore.py +33 -38
  153. holidays/countries/slovakia.py +6 -5
  154. holidays/countries/slovenia.py +7 -6
  155. holidays/countries/south_africa.py +8 -6
  156. holidays/countries/south_korea.py +25 -32
  157. holidays/countries/spain.py +31 -24
  158. holidays/countries/sri_lanka.py +52 -42
  159. holidays/countries/sweden.py +20 -19
  160. holidays/countries/switzerland.py +6 -5
  161. holidays/countries/taiwan.py +230 -31
  162. holidays/countries/tanzania.py +34 -27
  163. holidays/countries/thailand.py +134 -142
  164. holidays/countries/timor_leste.py +38 -17
  165. holidays/countries/tonga.py +46 -42
  166. holidays/countries/tunisia.py +9 -3
  167. holidays/countries/turkey.py +17 -9
  168. holidays/countries/tuvalu.py +12 -11
  169. holidays/countries/ukraine.py +54 -54
  170. holidays/countries/united_arab_emirates.py +43 -30
  171. holidays/countries/united_kingdom.py +7 -6
  172. holidays/countries/united_states.py +130 -86
  173. holidays/countries/united_states_minor_outlying_islands.py +12 -6
  174. holidays/countries/united_states_virgin_islands.py +12 -6
  175. holidays/countries/uruguay.py +10 -9
  176. holidays/countries/uzbekistan.py +16 -7
  177. holidays/countries/vanuatu.py +7 -5
  178. holidays/countries/vatican_city.py +16 -15
  179. holidays/countries/venezuela.py +11 -14
  180. holidays/countries/vietnam.py +15 -11
  181. holidays/countries/zambia.py +8 -6
  182. holidays/countries/zimbabwe.py +6 -4
  183. holidays/deprecations/v1_incompatibility.py +1 -1
  184. holidays/financial/__init__.py +1 -1
  185. holidays/financial/brasil_bolsa_balcao.py +14 -13
  186. holidays/financial/european_central_bank.py +7 -6
  187. holidays/financial/ice_futures_europe.py +7 -6
  188. holidays/financial/ny_stock_exchange.py +13 -10
  189. holidays/groups/__init__.py +2 -1
  190. holidays/groups/balinese_saka.py +45 -0
  191. holidays/groups/buddhist.py +1 -1
  192. holidays/groups/chinese.py +69 -4
  193. holidays/groups/christian.py +1 -1
  194. holidays/groups/custom.py +1 -1
  195. holidays/groups/eastern.py +1 -1
  196. holidays/groups/hebrew.py +1 -1
  197. holidays/groups/hindu.py +256 -1
  198. holidays/groups/international.py +1 -1
  199. holidays/groups/islamic.py +17 -3
  200. holidays/groups/persian.py +1 -1
  201. holidays/groups/sinhala.py +1 -1
  202. holidays/groups/thai.py +1 -7
  203. holidays/helpers.py +1 -1
  204. holidays/holiday_base.py +410 -273
  205. holidays/ical.py +228 -0
  206. holidays/locale/ar_QA/LC_MESSAGES/QA.mo +0 -0
  207. holidays/locale/de/LC_MESSAGES/PL.mo +0 -0
  208. holidays/locale/en_CI/LC_MESSAGES/CI.mo +0 -0
  209. holidays/locale/en_HK/LC_MESSAGES/HK.mo +0 -0
  210. holidays/locale/en_IN/LC_MESSAGES/IN.mo +0 -0
  211. holidays/locale/en_MO/LC_MESSAGES/MO.mo +0 -0
  212. holidays/locale/en_PK/LC_MESSAGES/PK.mo +0 -0
  213. holidays/locale/en_TL/LC_MESSAGES/TL.mo +0 -0
  214. holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
  215. holidays/locale/en_US/LC_MESSAGES/CI.mo +0 -0
  216. holidays/locale/en_US/LC_MESSAGES/GN.mo +0 -0
  217. holidays/locale/en_US/LC_MESSAGES/HK.mo +0 -0
  218. holidays/locale/en_US/LC_MESSAGES/IN.mo +0 -0
  219. holidays/locale/en_US/LC_MESSAGES/MO.mo +0 -0
  220. holidays/locale/en_US/LC_MESSAGES/PK.mo +0 -0
  221. holidays/locale/en_US/LC_MESSAGES/QA.mo +0 -0
  222. holidays/locale/en_US/LC_MESSAGES/TL.mo +0 -0
  223. holidays/locale/en_US/LC_MESSAGES/TW.mo +0 -0
  224. holidays/locale/es/LC_MESSAGES/AR.mo +0 -0
  225. holidays/locale/fr/LC_MESSAGES/CI.mo +0 -0
  226. holidays/locale/fr/LC_MESSAGES/GN.mo +0 -0
  227. holidays/locale/hi/LC_MESSAGES/IN.mo +0 -0
  228. holidays/locale/pt_MO/LC_MESSAGES/MO.mo +0 -0
  229. holidays/locale/pt_TL/LC_MESSAGES/TL.mo +0 -0
  230. holidays/locale/tet/LC_MESSAGES/TL.mo +0 -0
  231. holidays/locale/th/LC_MESSAGES/HK.mo +0 -0
  232. holidays/locale/th/LC_MESSAGES/MO.mo +0 -0
  233. holidays/locale/th/LC_MESSAGES/TL.mo +0 -0
  234. holidays/locale/th/LC_MESSAGES/TW.mo +0 -0
  235. holidays/locale/uk/LC_MESSAGES/AR.mo +0 -0
  236. holidays/locale/ur_PK/LC_MESSAGES/PK.mo +0 -0
  237. holidays/locale/zh_CN/LC_MESSAGES/HK.mo +0 -0
  238. holidays/locale/zh_CN/LC_MESSAGES/MO.mo +0 -0
  239. holidays/locale/zh_CN/LC_MESSAGES/TW.mo +0 -0
  240. holidays/locale/zh_HK/LC_MESSAGES/HK.mo +0 -0
  241. holidays/locale/zh_MO/LC_MESSAGES/MO.mo +0 -0
  242. holidays/locale/zh_TW/LC_MESSAGES/TW.mo +0 -0
  243. holidays/mixins.py +2 -2
  244. holidays/observed_holiday_base.py +5 -2
  245. holidays/registry.py +7 -1
  246. holidays/utils.py +151 -151
  247. holidays/version.py +2 -2
  248. holidays-0.70.dist-info/METADATA +1404 -0
  249. {holidays-0.68.dist-info → holidays-0.70.dist-info}/RECORD +253 -222
  250. {holidays-0.68.dist-info → holidays-0.70.dist-info}/WHEEL +1 -1
  251. holidays-0.68.dist-info/AUTHORS → holidays-0.70.dist-info/licenses/AUTHORS.md +7 -2
  252. {holidays-0.68.dist-info → holidays-0.70.dist-info/licenses}/LICENSE +1 -1
  253. holidays-0.68.dist-info/METADATA +0 -1080
  254. {holidays-0.68.dist-info → holidays-0.70.dist-info}/top_level.txt +0 -0
@@ -4,65 +4,82 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS file)
7
+ # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
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):
21
- """
22
- https://www.india.gov.in/calendar
23
- https://www.india.gov.in/state-and-ut-holiday-calendar
24
- https://en.wikipedia.org/wiki/Public_holidays_in_India
25
- https://www.calendarlabs.com/holidays/india/2021
26
- https://slusi.dacnet.nic.in/watershedatlas/list_of_state_abbreviation.htm
27
- https://vahan.parivahan.gov.in/vahan4dashboard/
28
+ class India(
29
+ HolidayBase, ChristianHolidays, HinduCalendarHolidays, InternationalHolidays, IslamicHolidays
30
+ ):
31
+ """India holidays.
32
+
33
+ References:
34
+ * <https://www.india.gov.in/calendar>
35
+ * <https://www.india.gov.in/state-and-ut-holiday-calendar>
36
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_India>
37
+ * <https://www.calendarlabs.com/holidays/india/2021>
38
+ * <https://slusi.dacnet.nic.in/watershedatlas/list_of_state_abbreviation.htm>
39
+ * <https://vahan.parivahan.gov.in/vahan4dashboard/>
28
40
  """
29
41
 
30
42
  country = "IN"
43
+ default_language = "en_IN"
44
+ # %s (estimated).
45
+ estimated_label = tr("%s (estimated)")
46
+ supported_categories = (OPTIONAL, PUBLIC)
47
+ supported_languages = ("en_IN", "en_US", "hi")
31
48
  subdivisions = (
32
49
  "AN", # Andaman and Nicobar Islands.
33
50
  "AP", # Andhra Pradesh.
34
- "AR", # Arunāchal Pradesh.
51
+ "AR", # Arunachal Pradesh (Arunāchal Pradesh).
35
52
  "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.
53
+ "BR", # Bihar (Bihār).
54
+ "CG", # Chhattisgarh (Chhattīsgarh).
55
+ "CH", # Chandigarh (Chandīgarh).
56
+ "DH", # Dadra and Nagar Haveli and Daman and Diu(Dādra and Nagar Haveli and Damān and Diu)
40
57
  "DL", # Delhi.
41
58
  "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.
59
+ "GJ", # Gujarat (Gujarāt).
60
+ "HP", # Himachal Pradesh (Himāchal Pradesh).
61
+ "HR", # Haryana (Haryāna).
62
+ "JH", # Jharkhand (Jhārkhand).
63
+ "JK", # Jammu and Kashmir (Jammu and Kashmīr).
64
+ "KA", # Karnataka (Karnātaka).
48
65
  "KL", # Kerala.
49
- "LA", # Ladākh.
66
+ "LA", # Ladakh (Ladākh).
50
67
  "LD", # Lakshadweep.
51
- "MH", # Mahārāshtra.
52
- "ML", # Meghālaya.
68
+ "MH", # Maharashtra (Mahārāshtra).
69
+ "ML", # Meghalaya (Meghālaya).
53
70
  "MN", # Manipur.
54
71
  "MP", # Madhya Pradesh.
55
72
  "MZ", # Mizoram.
56
- "NL", # Nāgāland.
73
+ "NL", # Nagaland (Nāgāland).
57
74
  "OD", # Odisha.
58
75
  "PB", # Punjab.
59
76
  "PY", # Puducherry.
60
- "RJ", # Rājasthān.
77
+ "RJ", # Rajasthan (Rājasthān).
61
78
  "SK", # Sikkim.
62
- "TN", # Tamil Nādu.
79
+ "TN", # Tamil Nadu (Tamil Nādu).
63
80
  "TR", # Tripura.
64
- "TS", # Telangāna.
65
- "UK", # Uttarākhand.
81
+ "TS", # Telangana (Telangāna).
82
+ "UK", # Uttarakhand (Uttarākhand).
66
83
  "UP", # Uttar Pradesh.
67
84
  "WB", # West Bengal.
68
85
  )
@@ -70,227 +87,530 @@ class India(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolida
70
87
  "DD", # Daman and Diu.
71
88
  "OR", # Orissa.
72
89
  )
73
-
74
- def __init__(self, *args, **kwargs):
90
+ subdivisions_aliases = {
91
+ "Andaman and Nicobar Islands": "AN",
92
+ "Andhra Pradesh": "AP",
93
+ "Arunachal Pradesh": "AR",
94
+ "Arunāchal Pradesh": "AR",
95
+ "Assam": "AS",
96
+ "Bihar": "BR",
97
+ "Bihār": "BR",
98
+ "Chhattisgarh": "CG",
99
+ "Chhattīsgarh": "CG",
100
+ "Chandigarh": "CH",
101
+ "Chandīgarh": "CH",
102
+ "Dadra and Nagar Haveli and Daman and Diu": "DH",
103
+ "Dādra and Nagar Haveli and Damān and Diu": "DH",
104
+ "Delhi": "DL",
105
+ "Goa": "GA",
106
+ "Gujarat": "GJ",
107
+ "Gujarāt": "GJ",
108
+ "Himachal Pradesh": "HP",
109
+ "Himāchal Pradesh": "HP",
110
+ "Haryana": "HR",
111
+ "Haryāna": "HR",
112
+ "Jharkhand": "JH",
113
+ "Jhārkhand": "JH",
114
+ "Jammu and Kashmir": "JK",
115
+ "Jammu and Kashmīr": "JK",
116
+ "Karnataka": "KA",
117
+ "Karnātaka": "KA",
118
+ "Kerala": "KL",
119
+ "Ladakh": "LA",
120
+ "Ladākh": "LA",
121
+ "Lakshadweep": "LD",
122
+ "Maharashtra": "MH",
123
+ "Mahārāshtra": "MH",
124
+ "Meghalaya": "ML",
125
+ "Meghālaya": "ML",
126
+ "Manipur": "MN",
127
+ "Madhya Pradesh": "MP",
128
+ "Mizoram": "MZ",
129
+ "Nagaland": "NL",
130
+ "Nāgāland": "NL",
131
+ "Odisha": "OD",
132
+ "Punjab": "PB",
133
+ "Puducherry": "PY",
134
+ "Rajasthan": "RJ",
135
+ "Rājasthān": "RJ",
136
+ "Sikkim": "SK",
137
+ "Tamil Nadu": "TN",
138
+ "Tamil Nādu": "TN",
139
+ "Tripura": "TR",
140
+ "Telangana": "TS",
141
+ "Telangāna": "TS",
142
+ "Uttarakhand": "UK",
143
+ "Uttarākhand": "UK",
144
+ "Uttar Pradesh": "UP",
145
+ "West Bengal": "WB",
146
+ }
147
+
148
+ # India gained independence on August 15, 1947.
149
+ start_year = 1948
150
+
151
+ def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
152
+ """
153
+ Args:
154
+ islamic_show_estimated:
155
+ Whether to add "estimated" label to Islamic holidays name
156
+ if holiday date is estimated.
157
+ """
75
158
  ChristianHolidays.__init__(self)
76
- IslamicHolidays.__init__(self)
159
+ HinduCalendarHolidays.__init__(self)
160
+ IslamicHolidays.__init__(
161
+ self, cls=IndiaIslamicHolidays, show_estimated=islamic_show_estimated
162
+ )
77
163
  InternationalHolidays.__init__(self)
78
164
  super().__init__(*args, **kwargs)
79
165
 
80
166
  def _populate_public_holidays(self):
81
- # Makar Sankranti / Pongal.
82
- self._add_holiday_jan_14("Makar Sankranti / Pongal")
83
-
84
167
  if self._year >= 1950:
85
168
  # Republic Day.
86
- self._add_holiday_jan_26("Republic Day")
169
+ self._add_holiday_jan_26(tr("Republic Day"))
87
170
 
88
- if self._year >= 1947:
89
- # Independence Day.
90
- self._add_holiday_aug_15("Independence Day")
171
+ # Independence Day.
172
+ self._add_holiday_aug_15(tr("Independence Day"))
91
173
 
92
174
  # Gandhi Jayanti.
93
- self._add_holiday_oct_2("Gandhi Jayanti")
175
+ self._add_holiday_oct_2(tr("Gandhi Jayanti"))
94
176
 
95
- # Labour Day.
96
- self._add_labor_day("Labour Day")
97
-
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"
177
+ # Hindu Holidays.
178
+ if self._year < 2001 or self._year > 2035:
179
+ warning_msg = "Requested Holidays are available only from 2001 to 2035."
103
180
  warnings.warn(warning_msg, Warning)
104
181
 
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])
182
+ # Buddha Purnima.
183
+ self._add_buddha_purnima(tr("Buddha Purnima"))
184
+
185
+ # Diwali.
186
+ self._add_diwali_india(tr("Diwali"))
187
+
188
+ # Janmashtami.
189
+ self._add_janmashtami(tr("Janmashtami"))
190
+
191
+ # Dussehra.
192
+ self._add_dussehra(tr("Dussehra"))
193
+
194
+ # Mahavir Jayanti.
195
+ self._add_mahavir_jayanti(tr("Mahavir Jayanti"))
196
+
197
+ # Maha Shivaratri.
198
+ self._add_maha_shivaratri(tr("Maha Shivaratri"))
199
+
200
+ # Guru Nanak Jayanti.
201
+ self._add_guru_nanak_jayanti(tr("Guru Nanak Jayanti"))
178
202
 
179
203
  # Islamic holidays.
180
- # Day of Ashura.
181
- self._add_ashura_day("Day of Ashura")
182
204
 
183
- # Birth of the Prophet.
184
- self._add_mawlid_day("Mawlid")
205
+ # Ashura.
206
+ self._add_ashura_day(tr("Muharram"))
207
+
208
+ # Prophet's Birthday.
209
+ self._add_mawlid_day(tr("Milad-un-Nabi"))
185
210
 
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)
211
+ # Eid al-Fitr.
212
+ self._add_eid_al_fitr_day(tr("Id-ul-Fitr"))
190
213
 
191
214
  # 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)
215
+ self._add_eid_al_adha_day(tr("Bakrid"))
195
216
 
196
217
  # 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")
218
+
219
+ # Good Friday.
220
+ self._add_good_friday(tr("Good Friday"))
221
+
222
+ # Christmas.
223
+ self._add_christmas_day(tr("Christmas"))
202
224
 
203
225
  if self.subdiv == "OR":
204
226
  self._populate_subdiv_od_public_holidays()
205
227
 
228
+ def _populate_optional_holidays(self):
229
+ # Hindu holidays.
230
+
231
+ # Children's Day.
232
+ self._add_holiday_nov_14(tr("Children's Day"))
233
+
234
+ # Holi.
235
+ self._add_holi(tr("Holi"))
236
+
237
+ # Ganesh Chaturthi.
238
+ self._add_ganesh_chaturthi(tr("Ganesh Chaturthi"))
239
+
240
+ # Govardhan Puja.
241
+ self._add_govardhan_puja(tr("Govardhan Puja"))
242
+
243
+ # Labor Day.
244
+ self._add_labor_day(tr("Labour Day"))
245
+
246
+ # Maha Navami.
247
+ self._add_maha_navami(tr("Maha Navami"))
248
+
249
+ # Makar Sankranti.
250
+ self._add_makar_sankranti(tr("Makar Sankranti"))
251
+
252
+ # Raksha Bandhan.
253
+ self._add_raksha_bandhan(tr("Raksha Bandhan"))
254
+
255
+ # Ram Navami.
256
+ self._add_ram_navami(tr("Ram Navami"))
257
+
258
+ # Navratri / Sharad Navratri.
259
+ self._add_sharad_navratri(tr("Navratri / Sharad Navratri"))
260
+
261
+ # Christian holidays.
262
+
263
+ # Easter Sunday.
264
+ self._add_easter_sunday(tr("Easter Sunday"))
265
+
266
+ # Palm Sunday.
267
+ self._add_palm_sunday(tr("Palm Sunday"))
268
+
269
+ # Andaman and Nicobar Islands.
270
+ def _populate_subdiv_an_public_holidays(self):
271
+ # Dr. B. R. Ambedkar Jayanti.
272
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
273
+
206
274
  # Andhra Pradesh.
207
275
  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")
276
+ # Dr. B. R. Ambedkar Jayanti.
277
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
278
+ # Andhra Pradesh Foundation Day.
279
+ self._add_holiday_nov_1(tr("Andhra Pradesh Foundation Day"))
210
280
 
211
281
  # Assam.
212
282
  def _populate_subdiv_as_public_holidays(self):
213
- self._add_holiday_apr_15("Bihu (Assamese New Year)")
283
+ # Magh Bihu.
284
+ self._add_makar_sankranti(tr("Magh Bihu"))
285
+ # Assam Day.
286
+ self._add_holiday_dec_2(tr("Assam Day"))
214
287
 
215
288
  # Bihar.
216
289
  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")
290
+ # Chhath Puja.
291
+ self._add_chhath_puja(tr("Chhath Puja"))
292
+ # Bihar Day.
293
+ self._add_holiday_mar_22(tr("Bihar Day"))
294
+ # Dr. B. R. Ambedkar Jayanti.
295
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
296
+
297
+ # Chandigarh.
298
+ def _populate_subdiv_ch_public_holidays(self):
299
+ # Dr. B. R. Ambedkar Jayanti.
300
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
219
301
 
220
302
  # Chhattisgarh.
221
303
  def _populate_subdiv_cg_public_holidays(self):
222
- self._add_holiday_nov_1("Chhattisgarh Foundation Day")
304
+ # Dr. B. R. Ambedkar Jayanti.
305
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
306
+ # Chhattisgarh Foundation Day.
307
+ self._add_holiday_nov_1(tr("Chhattisgarh Foundation Day"))
308
+
309
+ # Delhi.
310
+ def _populate_subdiv_dl_public_holidays(self):
311
+ # Chhath Puja.
312
+ self._add_chhath_puja(tr("Chhath Puja"))
313
+
314
+ # Goa.
315
+ def _populate_subdiv_ga_public_holidays(self):
316
+ # Dr. B. R. Ambedkar Jayanti.
317
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
318
+ # Goa Liberation Day.
319
+ self._add_holiday_dec_19(tr("Goa Liberation Day"))
223
320
 
224
321
  # Gujarat.
225
322
  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")
323
+ # Makar Sankranti.
324
+ self._add_makar_sankranti(tr("Uttarayan"))
325
+ # Dr. B. R. Ambedkar Jayanti.
326
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
327
+ # Gujarat Day.
328
+ self._add_holiday_may_1(tr("Gujarat Day"))
329
+ # Sardar Vallabhbhai Patel Jayanti.
330
+ self._add_holiday_oct_31(tr("Sardar Vallabhbhai Patel Jayanti"))
229
331
 
230
332
  # Haryana.
231
333
  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")
334
+ # Dr. B. R. Ambedkar Jayanti.
335
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
336
+ # Haryana Foundation Day.
337
+ self._add_holiday_nov_1(tr("Haryana Foundation Day"))
338
+
339
+ # Himachal Pradesh.
340
+ def _populate_subdiv_hp_public_holidays(self):
341
+ # Dr. B. R. Ambedkar Jayanti.
342
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
343
+ # Himachal Day.
344
+ self._add_holiday_apr_15(tr("Himachal Day"))
345
+
346
+ # Jammu and Kashmir
347
+ def _populate_subdiv_jk_public_holidays(self):
348
+ # Dr. B. R. Ambedkar Jayanti.
349
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
350
+
351
+ # Jharkhand.
352
+ def _populate_subdiv_jh_public_holidays(self):
353
+ # Chhath Puja.
354
+ self._add_chhath_puja(tr("Chhath Puja"))
355
+ # Dr. B. R. Ambedkar Jayanti.
356
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
357
+ # Jharkhand Formation Day.
358
+ self._add_holiday_nov_15(tr("Jharkhand Formation Day"))
234
359
 
235
360
  # Karnataka.
236
361
  def _populate_subdiv_ka_public_holidays(self):
237
- self._add_holiday_nov_1("Karnataka Rajyotsava")
362
+ # Dr. B. R. Ambedkar Jayanti.
363
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
364
+ # Karnataka Rajyotsav.
365
+ self._add_holiday_nov_1(tr("Karnataka Rajyotsava"))
238
366
 
239
367
  # Kerala.
240
368
  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")
369
+ # Onam.
370
+ self._add_onam(tr("Onam"))
371
+ # Dr. B. R. Ambedkar Jayanti.
372
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
373
+ # Kerala Foundation Day.
374
+ self._add_holiday_nov_1(tr("Kerala Foundation Day"))
375
+
376
+ # Ladakh.
377
+ def _populate_subdiv_la_public_holidays(self):
378
+ # Dr. B. R. Ambedkar Jayanti.
379
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
243
380
 
244
381
  # Maharashtra.
245
382
  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")
383
+ # Gudi Padwa.
384
+ self._add_gudi_padwa(tr("Gudi Padwa"))
385
+ # Chhatrapati Shivaji Maharaj Jayanti.
386
+ self._add_holiday_feb_19(tr("Chhatrapati Shivaji Maharaj Jayanti"))
387
+ # Dr. B. R. Ambedkar Jayanti.
388
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
389
+ # Maharashtra Day.
390
+ self._add_holiday_may_1(tr("Maharashtra Day"))
249
391
 
250
392
  # Madhya Pradesh.
251
393
  def _populate_subdiv_mp_public_holidays(self):
252
- self._add_holiday_nov_1("Madhya Pradesh Foundation Day")
394
+ # Dr. B. R. Ambedkar Jayanti.
395
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
396
+ # Madhya Pradesh Foundation Day.
397
+ self._add_holiday_nov_1(tr("Madhya Pradesh Foundation Day"))
398
+
399
+ # Mizoram.
400
+ def _populate_subdiv_mz_public_holidays(self):
401
+ # Mizoram State Day.
402
+ self._add_holiday_feb_20(tr("Mizoram State Day"))
403
+
404
+ # Nagaland.
405
+ def _populate_subdiv_nl_public_holidays(self):
406
+ # Nagaland State Inauguration Day.
407
+ self._add_holiday_dec_1(tr("Nagaland State Inauguration Day"))
253
408
 
254
409
  # Orissa / Odisha.
255
410
  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")
411
+ # Odisha Day.
412
+ self._add_holiday_apr_1(tr("Odisha Day (Utkala Dibasa)"))
413
+ # Dr. B. R. Ambedkar Jayanti.
414
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
415
+ # Maha Vishuva Sankranti.
416
+ self._add_holiday_apr_15(tr("Maha Vishuva Sankranti / Pana Sankranti"))
417
+
418
+ # Puducherry.
419
+ def _populate_subdiv_py_public_holidays(self):
420
+ # Dr. B. R. Ambedkar Jayanti.
421
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
422
+ # Puducherry De Jure Transfer Day.
423
+ self._add_holiday_aug_16(tr("Puducherry De Jure Transfer Day"))
424
+ # Puducherry Liberation Day.
425
+ self._add_holiday_nov_1(tr("Puducherry Liberation Day"))
426
+
427
+ # Punjab.
428
+ def _populate_subdiv_pb_public_holidays(self):
429
+ # Guru Gobind Singh Jayanti.
430
+ self._add_guru_gobind_singh_jayanti(tr("Guru Gobind Singh Jayanti"))
431
+ # Vaisakhi.
432
+ self._add_vaisakhi(tr("Vaisakhi"))
433
+ # Lohri.
434
+ self._add_holiday_jan_13(tr("Lohri"))
435
+ # Dr. B. R. Ambedkar Jayanti.
436
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
437
+ # Punjabi Day.
438
+ self._add_holiday_nov_1(tr("Punjab Day"))
259
439
 
260
440
  # Rajasthan.
261
441
  def _populate_subdiv_rj_public_holidays(self):
262
- self._add_holiday_mar_30("Rajasthan Day")
263
- self._add_holiday_jun_15("Maharana Pratap Jayanti")
442
+ # Rajasthan Day.
443
+ self._add_holiday_mar_30(tr("Rajasthan Day"))
444
+ # Dr. B. R. Ambedkar Jayanti.
445
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
446
+ # Maharana Pratap Jayanti.
447
+ self._add_holiday_jun_15(tr("Maharana Pratap Jayanti"))
264
448
 
265
449
  # Sikkim.
266
450
  def _populate_subdiv_sk_public_holidays(self):
267
- self._add_holiday_may_16("Annexation Day")
451
+ # Dr. B. R. Ambedkar Jayanti.
452
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
453
+ # Sikkim State Day.
454
+ self._add_holiday_may_16(tr("Sikkim State Day"))
268
455
 
269
456
  # Tamil Nadu.
270
457
  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)")
458
+ # Pongal.
459
+ self._add_makar_sankranti(tr("Pongal"))
460
+ # Dr. B. R. Ambedkar Jayanti.
461
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
462
+ # Puthandu.
463
+ self._add_holiday_apr_14(tr("Puthandu (Tamil New Year)"))
274
464
 
275
465
  # Telangana.
276
466
  def _populate_subdiv_ts_public_holidays(self):
277
- self._add_holiday_apr_6("Eid al-Fitr")
278
- self._add_holiday_oct_6("Bathukamma Festival")
467
+ # Dr. B. R. Ambedkar Jayanti.
468
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
469
+ # Telangana Formation Day.
470
+ self._add_holiday_jun_2(tr("Telangana Formation Day"))
471
+ # Bathukamma Festival.
472
+ self._add_holiday_oct_6(tr("Bathukamma Festival"))
279
473
 
280
474
  # Uttarakhand.
281
475
  def _populate_subdiv_uk_public_holidays(self):
282
- self._add_holiday_apr_14("Dr. B. R. Ambedkar's Jayanti")
476
+ # Dr. B. R. Ambedkar Jayanti.
477
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
283
478
 
284
479
  # Uttar Pradesh.
285
480
  def _populate_subdiv_up_public_holidays(self):
286
- self._add_holiday_apr_14("Dr. B. R. Ambedkar's Jayanti")
481
+ # Chhath Puja.
482
+ self._add_chhath_puja(tr("Chhath Puja"))
483
+ # UP Formation Day.
484
+ self._add_holiday_jan_24(tr("UP Formation Day"))
485
+ # Dr. B. R. Ambedkar Jayanti.
486
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
287
487
 
288
488
  # West Bengal.
289
489
  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")
490
+ # Dr. B. R. Ambedkar Jayanti.
491
+ self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
492
+ # Pohela Boisakh.
493
+ self._add_holiday_apr_15(tr("Pohela Boishakh"))
494
+ # Rabindra Jayanti.
495
+ self._add_holiday_may_9(tr("Rabindra Jayanti"))
496
+
497
+
498
+ class IndiaIslamicHolidays(_CustomIslamicHolidays):
499
+ # Muharram / Day of Ashura.
500
+ ASHURA_DATES = {
501
+ 2001: (APR, 4),
502
+ 2002: (MAR, 24),
503
+ 2003: (MAR, 14),
504
+ 2004: (MAR, 2),
505
+ 2005: (FEB, 19),
506
+ 2006: (FEB, 9),
507
+ 2007: (JAN, 30),
508
+ 2008: (JAN, 19),
509
+ 2009: ((JAN, 7), (DEC, 28)),
510
+ 2010: (DEC, 17),
511
+ 2011: (DEC, 6),
512
+ 2012: (NOV, 25),
513
+ 2013: (NOV, 14),
514
+ 2014: (NOV, 4),
515
+ 2015: (OCT, 24),
516
+ 2016: (OCT, 12),
517
+ 2017: (OCT, 1),
518
+ 2018: (SEP, 21),
519
+ 2019: (SEP, 10),
520
+ 2020: (AUG, 30),
521
+ 2021: (AUG, 20),
522
+ 2022: (AUG, 9),
523
+ 2023: (JUL, 29),
524
+ 2024: (JUL, 17),
525
+ 2025: (JUL, 6),
526
+ }
527
+
528
+ # Bakrid / Eid-al-Adha.
529
+ EID_AL_ADHA_DATES = {
530
+ 2001: (MAR, 6),
531
+ 2002: (FEB, 23),
532
+ 2003: (FEB, 12),
533
+ 2004: (FEB, 2),
534
+ 2005: (JAN, 21),
535
+ 2006: ((JAN, 11), (DEC, 31)),
536
+ 2007: (DEC, 20),
537
+ 2008: (DEC, 9),
538
+ 2009: (NOV, 28),
539
+ 2010: (NOV, 17),
540
+ 2011: (NOV, 7),
541
+ 2012: (OCT, 27),
542
+ 2013: (OCT, 16),
543
+ 2014: (OCT, 6),
544
+ 2015: (SEP, 25),
545
+ 2016: (SEP, 13),
546
+ 2017: (SEP, 2),
547
+ 2018: (AUG, 22),
548
+ 2019: (AUG, 12),
549
+ 2020: (AUG, 1),
550
+ 2021: (JUL, 21),
551
+ 2022: (JUL, 10),
552
+ 2023: (JUN, 29),
553
+ 2024: (JUN, 17),
554
+ 2025: (JUN, 7),
555
+ }
556
+
557
+ # Id-ul-Fitr / Eid-al-Fitr.
558
+ EID_AL_FITR_DATES = {
559
+ 2001: (DEC, 17),
560
+ 2002: (DEC, 6),
561
+ 2003: (NOV, 26),
562
+ 2004: (NOV, 14),
563
+ 2005: (NOV, 3),
564
+ 2006: (OCT, 24),
565
+ 2007: (OCT, 13),
566
+ 2008: (OCT, 2),
567
+ 2009: (SEP, 21),
568
+ 2010: (SEP, 10),
569
+ 2011: (AUG, 31),
570
+ 2012: (AUG, 20),
571
+ 2013: (AUG, 8),
572
+ 2014: (JUL, 29),
573
+ 2015: (JUL, 18),
574
+ 2016: (JUL, 7),
575
+ 2017: (JUN, 26),
576
+ 2018: (JUN, 16),
577
+ 2019: (JUN, 5),
578
+ 2020: (MAY, 25),
579
+ 2021: (MAY, 14),
580
+ 2022: (MAY, 3),
581
+ 2023: (APR, 22),
582
+ 2024: (APR, 11),
583
+ 2025: (MAR, 31),
584
+ }
585
+
586
+ # Milad-un-Nabi / Mawlid.
587
+ MAWLID_DATES = {
588
+ 2001: (JUN, 5),
589
+ 2002: (MAY, 25),
590
+ 2003: (MAY, 15),
591
+ 2004: (MAY, 3),
592
+ 2005: (APR, 22),
593
+ 2006: (APR, 11),
594
+ 2007: (APR, 1),
595
+ 2008: (MAR, 21),
596
+ 2009: (MAR, 9),
597
+ 2010: (FEB, 27),
598
+ 2011: (FEB, 16),
599
+ 2012: (FEB, 5),
600
+ 2013: (JAN, 25),
601
+ 2014: (JAN, 14),
602
+ 2015: ((JAN, 4), (DEC, 25)),
603
+ 2016: (DEC, 13),
604
+ 2017: (DEC, 2),
605
+ 2018: (NOV, 21),
606
+ 2019: (NOV, 10),
607
+ 2020: (OCT, 30),
608
+ 2021: (OCT, 19),
609
+ 2022: (OCT, 9),
610
+ 2023: (SEP, 28),
611
+ 2024: (SEP, 16),
612
+ 2025: (SEP, 5),
613
+ }
294
614
 
295
615
 
296
616
  class IN(India):