holidays 0.25__py3-none-any.whl → 0.27__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 (331) hide show
  1. holidays/__init__.py +1 -1
  2. holidays/calendars/__init__.py +9 -7
  3. holidays/calendars/buddhist.py +445 -0
  4. holidays/calendars/chinese.py +1238 -431
  5. holidays/calendars/custom.py +1 -3
  6. holidays/calendars/hebrew.py +2 -2
  7. holidays/calendars/hindu.py +445 -0
  8. holidays/calendars/islamic.py +1347 -1347
  9. holidays/calendars/thai.py +229 -38
  10. holidays/countries/__init__.py +8 -0
  11. holidays/countries/albania.py +6 -17
  12. holidays/countries/andorra.py +2 -6
  13. holidays/countries/angola.py +53 -39
  14. holidays/countries/argentina.py +25 -35
  15. holidays/countries/armenia.py +1 -0
  16. holidays/countries/aruba.py +109 -48
  17. holidays/countries/australia.py +31 -69
  18. holidays/countries/austria.py +1 -0
  19. holidays/countries/azerbaijan.py +44 -71
  20. holidays/countries/bahrain.py +7 -7
  21. holidays/countries/bangladesh.py +1 -3
  22. holidays/countries/belarus.py +2 -3
  23. holidays/countries/belize.py +128 -0
  24. holidays/countries/bolivia.py +2 -6
  25. holidays/countries/bosnia_and_herzegovina.py +5 -17
  26. holidays/countries/botswana.py +37 -44
  27. holidays/countries/brazil.py +4 -7
  28. holidays/countries/brunei.py +427 -0
  29. holidays/countries/bulgaria.py +3 -6
  30. holidays/countries/burkina_faso.py +141 -0
  31. holidays/countries/burundi.py +2 -5
  32. holidays/countries/cambodia.py +323 -0
  33. holidays/countries/cameroon.py +183 -0
  34. holidays/countries/canada.py +20 -28
  35. holidays/countries/chad.py +133 -0
  36. holidays/countries/chile.py +6 -13
  37. holidays/countries/china.py +21 -25
  38. holidays/countries/colombia.py +18 -15
  39. holidays/countries/costa_rica.py +25 -27
  40. holidays/countries/cuba.py +28 -15
  41. holidays/countries/curacao.py +100 -46
  42. holidays/countries/cyprus.py +3 -6
  43. holidays/countries/czechia.py +4 -12
  44. holidays/countries/denmark.py +2 -3
  45. holidays/countries/dominican_republic.py +2 -3
  46. holidays/countries/ecuador.py +55 -54
  47. holidays/countries/egypt.py +2 -5
  48. holidays/countries/el_salvador.py +101 -0
  49. holidays/countries/eswatini.py +34 -44
  50. holidays/countries/ethiopia.py +7 -14
  51. holidays/countries/finland.py +2 -3
  52. holidays/countries/france.py +1 -0
  53. holidays/countries/gabon.py +139 -0
  54. holidays/countries/georgia.py +1 -0
  55. holidays/countries/germany.py +1 -0
  56. holidays/countries/greece.py +7 -6
  57. holidays/countries/honduras.py +17 -13
  58. holidays/countries/hongkong.py +117 -126
  59. holidays/countries/hungary.py +93 -92
  60. holidays/countries/iceland.py +1 -0
  61. holidays/countries/india.py +4 -11
  62. holidays/countries/indonesia.py +178 -142
  63. holidays/countries/ireland.py +5 -15
  64. holidays/countries/isle_of_man.py +23 -5
  65. holidays/countries/israel.py +12 -24
  66. holidays/countries/italy.py +6 -7
  67. holidays/countries/jamaica.py +10 -18
  68. holidays/countries/japan.py +11 -16
  69. holidays/countries/kazakhstan.py +7 -22
  70. holidays/countries/kenya.py +44 -26
  71. holidays/countries/kyrgyzstan.py +2 -5
  72. holidays/countries/latvia.py +2 -6
  73. holidays/countries/lesotho.py +52 -32
  74. holidays/countries/liechtenstein.py +1 -0
  75. holidays/countries/lithuania.py +4 -12
  76. holidays/countries/madagascar.py +3 -9
  77. holidays/countries/malawi.py +34 -26
  78. holidays/countries/malaysia.py +335 -343
  79. holidays/countries/marshall_islands.py +4 -9
  80. holidays/countries/mexico.py +2 -3
  81. holidays/countries/moldova.py +4 -6
  82. holidays/countries/monaco.py +17 -26
  83. holidays/countries/montenegro.py +34 -24
  84. holidays/countries/morocco.py +8 -5
  85. holidays/countries/mozambique.py +35 -31
  86. holidays/countries/namibia.py +54 -35
  87. holidays/countries/netherlands.py +1 -0
  88. holidays/countries/new_zealand.py +166 -134
  89. holidays/countries/nicaragua.py +27 -22
  90. holidays/countries/nigeria.py +6 -17
  91. holidays/countries/north_macedonia.py +3 -8
  92. holidays/countries/norway.py +2 -3
  93. holidays/countries/pakistan.py +73 -75
  94. holidays/countries/panama.py +25 -24
  95. holidays/countries/paraguay.py +55 -47
  96. holidays/countries/peru.py +1 -0
  97. holidays/countries/philippines.py +6 -2
  98. holidays/countries/poland.py +4 -9
  99. holidays/countries/portugal.py +4 -11
  100. holidays/countries/romania.py +4 -5
  101. holidays/countries/russia.py +1 -0
  102. holidays/countries/san_marino.py +26 -27
  103. holidays/countries/saudi_arabia.py +8 -22
  104. holidays/countries/serbia.py +22 -31
  105. holidays/countries/singapore.py +181 -189
  106. holidays/countries/slovakia.py +2 -4
  107. holidays/countries/south_africa.py +60 -62
  108. holidays/countries/south_korea.py +59 -26
  109. holidays/countries/spain.py +7 -10
  110. holidays/countries/sweden.py +2 -3
  111. holidays/countries/switzerland.py +1 -0
  112. holidays/countries/taiwan.py +20 -20
  113. holidays/countries/thailand.py +36 -82
  114. holidays/countries/turkey.py +1 -3
  115. holidays/countries/ukraine.py +7 -18
  116. holidays/countries/united_arab_emirates.py +23 -31
  117. holidays/countries/united_kingdom.py +124 -116
  118. holidays/countries/united_states.py +42 -72
  119. holidays/countries/uruguay.py +1 -0
  120. holidays/countries/vatican_city.py +64 -32
  121. holidays/countries/venezuela.py +9 -6
  122. holidays/countries/vietnam.py +6 -20
  123. holidays/countries/zambia.py +63 -33
  124. holidays/countries/zimbabwe.py +56 -37
  125. holidays/financial/european_central_bank.py +15 -16
  126. holidays/financial/ny_stock_exchange.py +80 -86
  127. holidays/groups/__init__.py +18 -0
  128. holidays/groups/buddhist.py +71 -0
  129. holidays/groups/chinese.py +235 -0
  130. holidays/groups/christian.py +483 -0
  131. holidays/groups/hindu.py +71 -0
  132. holidays/groups/international.py +157 -0
  133. holidays/groups/islamic.py +288 -0
  134. holidays/groups/thai.py +157 -0
  135. holidays/helpers.py +20 -0
  136. holidays/holiday_base.py +54 -76
  137. holidays/holiday_groups.py +11 -1053
  138. holidays/locale/am/LC_MESSAGES/ET.mo +0 -0
  139. holidays/locale/am/LC_MESSAGES/ET.po +20 -15
  140. holidays/locale/ar/LC_MESSAGES/CA.mo +0 -0
  141. holidays/locale/ar/LC_MESSAGES/CA.po +184 -0
  142. holidays/locale/ar/LC_MESSAGES/ET.mo +0 -0
  143. holidays/locale/ar/LC_MESSAGES/ET.po +92 -0
  144. holidays/locale/ar/LC_MESSAGES/UA.mo +0 -0
  145. holidays/locale/ar/LC_MESSAGES/UA.po +97 -0
  146. holidays/locale/be/LC_MESSAGES/BY.po +11 -13
  147. holidays/locale/bg/LC_MESSAGES/BG.po +13 -15
  148. holidays/locale/da/LC_MESSAGES/DK.po +13 -12
  149. holidays/locale/de/LC_MESSAGES/AT.po +14 -14
  150. holidays/locale/de/LC_MESSAGES/CH.po +91 -56
  151. holidays/locale/de/LC_MESSAGES/DE.po +32 -32
  152. holidays/locale/de/LC_MESSAGES/LI.po +23 -23
  153. holidays/locale/el/LC_MESSAGES/CY.po +16 -16
  154. holidays/locale/el/LC_MESSAGES/GR.mo +0 -0
  155. holidays/locale/el/LC_MESSAGES/GR.po +21 -17
  156. holidays/locale/en/LC_MESSAGES/CA.po +43 -43
  157. holidays/locale/en_US/LC_MESSAGES/AM.mo +0 -0
  158. holidays/locale/en_US/LC_MESSAGES/AM.po +20 -20
  159. holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
  160. holidays/locale/en_US/LC_MESSAGES/AR.po +34 -33
  161. holidays/locale/en_US/LC_MESSAGES/AT.po +13 -13
  162. holidays/locale/en_US/LC_MESSAGES/AW.mo +0 -0
  163. holidays/locale/en_US/LC_MESSAGES/AW.po +87 -0
  164. holidays/locale/en_US/LC_MESSAGES/BG.po +13 -15
  165. holidays/locale/en_US/LC_MESSAGES/BN.mo +0 -0
  166. holidays/locale/en_US/LC_MESSAGES/BN.po +96 -0
  167. holidays/locale/en_US/LC_MESSAGES/BY.po +11 -13
  168. holidays/locale/en_US/LC_MESSAGES/CA.mo +0 -0
  169. holidays/locale/en_US/LC_MESSAGES/CA.po +70 -37
  170. holidays/locale/en_US/LC_MESSAGES/CH.po +91 -56
  171. holidays/locale/en_US/LC_MESSAGES/CL.po +39 -38
  172. holidays/locale/en_US/LC_MESSAGES/CO.mo +0 -0
  173. holidays/locale/en_US/LC_MESSAGES/CO.po +27 -27
  174. holidays/locale/en_US/LC_MESSAGES/CR.mo +0 -0
  175. holidays/locale/en_US/LC_MESSAGES/CR.po +19 -19
  176. holidays/locale/en_US/LC_MESSAGES/CU.po +10 -10
  177. holidays/locale/en_US/LC_MESSAGES/CW.mo +0 -0
  178. holidays/locale/en_US/LC_MESSAGES/CW.po +82 -0
  179. holidays/locale/en_US/LC_MESSAGES/CY.po +16 -16
  180. holidays/locale/en_US/LC_MESSAGES/DE.po +30 -30
  181. holidays/locale/en_US/LC_MESSAGES/DK.po +12 -11
  182. holidays/locale/en_US/LC_MESSAGES/DO.po +12 -12
  183. holidays/locale/en_US/LC_MESSAGES/EC.po +11 -12
  184. holidays/locale/en_US/LC_MESSAGES/ET.mo +0 -0
  185. holidays/locale/en_US/LC_MESSAGES/ET.po +20 -15
  186. holidays/locale/en_US/LC_MESSAGES/FI.po +15 -15
  187. holidays/locale/en_US/LC_MESSAGES/FR.po +27 -24
  188. holidays/locale/en_US/LC_MESSAGES/GE.po +23 -27
  189. holidays/locale/en_US/LC_MESSAGES/GR.mo +0 -0
  190. holidays/locale/en_US/LC_MESSAGES/GR.po +21 -17
  191. holidays/locale/en_US/LC_MESSAGES/HN.mo +0 -0
  192. holidays/locale/en_US/LC_MESSAGES/HN.po +17 -12
  193. holidays/locale/en_US/LC_MESSAGES/HU.mo +0 -0
  194. holidays/locale/en_US/LC_MESSAGES/HU.po +109 -0
  195. holidays/locale/en_US/LC_MESSAGES/IS.po +17 -17
  196. holidays/locale/en_US/LC_MESSAGES/JP.po +25 -25
  197. holidays/locale/en_US/LC_MESSAGES/KH.mo +0 -0
  198. holidays/locale/en_US/LC_MESSAGES/KH.po +139 -0
  199. holidays/locale/en_US/LC_MESSAGES/LI.po +22 -22
  200. holidays/locale/en_US/LC_MESSAGES/MC.mo +0 -0
  201. holidays/locale/en_US/LC_MESSAGES/MC.po +27 -27
  202. holidays/locale/en_US/LC_MESSAGES/MD.po +13 -13
  203. holidays/locale/en_US/LC_MESSAGES/MX.po +9 -12
  204. holidays/locale/en_US/LC_MESSAGES/NI.mo +0 -0
  205. holidays/locale/en_US/LC_MESSAGES/NI.po +15 -15
  206. holidays/locale/en_US/LC_MESSAGES/NL.po +12 -12
  207. holidays/locale/en_US/LC_MESSAGES/NO.po +13 -13
  208. holidays/locale/en_US/LC_MESSAGES/PE.po +30 -30
  209. holidays/locale/en_US/LC_MESSAGES/PL.po +38 -21
  210. holidays/locale/en_US/LC_MESSAGES/PT.po +39 -36
  211. holidays/locale/en_US/LC_MESSAGES/PY.po +16 -16
  212. holidays/locale/en_US/LC_MESSAGES/RO.po +12 -12
  213. holidays/locale/en_US/LC_MESSAGES/RS.mo +0 -0
  214. holidays/locale/en_US/LC_MESSAGES/RS.po +17 -19
  215. holidays/locale/en_US/LC_MESSAGES/RU.po +11 -10
  216. holidays/locale/en_US/LC_MESSAGES/SE.po +19 -19
  217. holidays/locale/en_US/LC_MESSAGES/SK.po +17 -18
  218. holidays/locale/en_US/LC_MESSAGES/TH.po +41 -41
  219. holidays/locale/en_US/LC_MESSAGES/UA.po +18 -19
  220. holidays/locale/en_US/LC_MESSAGES/UY.po +15 -15
  221. holidays/locale/en_US/LC_MESSAGES/VE.po +16 -16
  222. holidays/locale/es/LC_MESSAGES/AR.mo +0 -0
  223. holidays/locale/es/LC_MESSAGES/AR.po +34 -33
  224. holidays/locale/es/LC_MESSAGES/CL.po +39 -38
  225. holidays/locale/es/LC_MESSAGES/CO.mo +0 -0
  226. holidays/locale/es/LC_MESSAGES/CO.po +24 -24
  227. holidays/locale/es/LC_MESSAGES/CR.mo +0 -0
  228. holidays/locale/es/LC_MESSAGES/CR.po +19 -19
  229. holidays/locale/es/LC_MESSAGES/CU.po +10 -10
  230. holidays/locale/es/LC_MESSAGES/DO.po +12 -12
  231. holidays/locale/es/LC_MESSAGES/EC.po +11 -12
  232. holidays/locale/es/LC_MESSAGES/HN.mo +0 -0
  233. holidays/locale/es/LC_MESSAGES/HN.po +17 -12
  234. holidays/locale/es/LC_MESSAGES/MX.po +9 -12
  235. holidays/locale/es/LC_MESSAGES/NI.po +12 -12
  236. holidays/locale/es/LC_MESSAGES/PE.po +30 -30
  237. holidays/locale/es/LC_MESSAGES/PY.po +16 -16
  238. holidays/locale/es/LC_MESSAGES/UY.po +15 -15
  239. holidays/locale/es/LC_MESSAGES/VE.po +16 -16
  240. holidays/locale/fi/LC_MESSAGES/FI.po +16 -16
  241. holidays/locale/fr/LC_MESSAGES/CA.po +43 -43
  242. holidays/locale/fr/LC_MESSAGES/CH.po +91 -56
  243. holidays/locale/fr/LC_MESSAGES/FR.po +27 -24
  244. holidays/locale/fr/LC_MESSAGES/MC.po +23 -23
  245. holidays/locale/hu/LC_MESSAGES/HU.mo +0 -0
  246. holidays/locale/hu/LC_MESSAGES/HU.po +109 -0
  247. holidays/locale/hy/LC_MESSAGES/AM.po +16 -16
  248. holidays/locale/is/LC_MESSAGES/IS.po +18 -18
  249. holidays/locale/it/LC_MESSAGES/CH.po +91 -56
  250. holidays/locale/ja/LC_MESSAGES/JP.po +25 -25
  251. holidays/locale/ka/LC_MESSAGES/GE.po +23 -27
  252. holidays/locale/km/LC_MESSAGES/KH.mo +0 -0
  253. holidays/locale/km/LC_MESSAGES/KH.po +139 -0
  254. holidays/locale/ms/LC_MESSAGES/BN.mo +0 -0
  255. holidays/locale/ms/LC_MESSAGES/BN.po +96 -0
  256. holidays/locale/nl/LC_MESSAGES/AW.mo +0 -0
  257. holidays/locale/nl/LC_MESSAGES/AW.po +87 -0
  258. holidays/locale/nl/LC_MESSAGES/CW.mo +0 -0
  259. holidays/locale/nl/LC_MESSAGES/CW.po +82 -0
  260. holidays/locale/nl/LC_MESSAGES/NL.po +13 -13
  261. holidays/locale/no/LC_MESSAGES/NO.po +14 -14
  262. holidays/locale/pap/LC_MESSAGES/AW.mo +0 -0
  263. holidays/locale/pap/LC_MESSAGES/AW.po +87 -0
  264. holidays/locale/pap/LC_MESSAGES/CW.mo +0 -0
  265. holidays/locale/pap/LC_MESSAGES/CW.po +82 -0
  266. holidays/locale/pl/LC_MESSAGES/PL.po +38 -21
  267. holidays/locale/pt_PT/LC_MESSAGES/PT.po +39 -36
  268. holidays/locale/ro/LC_MESSAGES/MD.po +14 -15
  269. holidays/locale/ro/LC_MESSAGES/RO.po +13 -14
  270. holidays/locale/ru/LC_MESSAGES/RU.po +11 -9
  271. holidays/locale/sk/LC_MESSAGES/SK.po +17 -18
  272. holidays/locale/sr/LC_MESSAGES/RS.mo +0 -0
  273. holidays/locale/sr/LC_MESSAGES/RS.po +15 -17
  274. holidays/locale/sv/LC_MESSAGES/FI.po +16 -16
  275. holidays/locale/sv/LC_MESSAGES/SE.po +20 -20
  276. holidays/locale/th/LC_MESSAGES/BN.mo +0 -0
  277. holidays/locale/th/LC_MESSAGES/BN.po +96 -0
  278. holidays/locale/th/LC_MESSAGES/CA.po +42 -42
  279. holidays/locale/th/LC_MESSAGES/KH.mo +0 -0
  280. holidays/locale/th/LC_MESSAGES/KH.po +145 -0
  281. holidays/locale/th/LC_MESSAGES/TH.po +41 -41
  282. holidays/locale/uk/LC_MESSAGES/AR.mo +0 -0
  283. holidays/locale/uk/LC_MESSAGES/AR.po +35 -35
  284. holidays/locale/uk/LC_MESSAGES/AT.po +15 -16
  285. holidays/locale/uk/LC_MESSAGES/AW.mo +0 -0
  286. holidays/locale/uk/LC_MESSAGES/AW.po +87 -0
  287. holidays/locale/uk/LC_MESSAGES/CH.po +92 -58
  288. holidays/locale/uk/LC_MESSAGES/CL.po +40 -40
  289. holidays/locale/uk/LC_MESSAGES/CO.mo +0 -0
  290. holidays/locale/uk/LC_MESSAGES/CO.po +28 -29
  291. holidays/locale/uk/LC_MESSAGES/CR.mo +0 -0
  292. holidays/locale/uk/LC_MESSAGES/CR.po +20 -21
  293. holidays/locale/uk/LC_MESSAGES/CU.po +11 -12
  294. holidays/locale/uk/LC_MESSAGES/CW.mo +0 -0
  295. holidays/locale/uk/LC_MESSAGES/CW.po +82 -0
  296. holidays/locale/uk/LC_MESSAGES/DE.po +33 -34
  297. holidays/locale/uk/LC_MESSAGES/DK.po +14 -14
  298. holidays/locale/uk/LC_MESSAGES/DO.po +13 -14
  299. holidays/locale/uk/LC_MESSAGES/EC.po +12 -14
  300. holidays/locale/uk/LC_MESSAGES/FI.po +17 -18
  301. holidays/locale/uk/LC_MESSAGES/FR.po +28 -26
  302. holidays/locale/uk/LC_MESSAGES/HN.mo +0 -0
  303. holidays/locale/uk/LC_MESSAGES/HN.po +18 -14
  304. holidays/locale/uk/LC_MESSAGES/HU.mo +0 -0
  305. holidays/locale/uk/LC_MESSAGES/HU.po +109 -0
  306. holidays/locale/uk/LC_MESSAGES/IS.po +19 -20
  307. holidays/locale/uk/LC_MESSAGES/LI.po +24 -25
  308. holidays/locale/uk/LC_MESSAGES/MC.po +27 -28
  309. holidays/locale/uk/LC_MESSAGES/MD.po +14 -15
  310. holidays/locale/uk/LC_MESSAGES/MX.po +10 -14
  311. holidays/locale/uk/LC_MESSAGES/NI.mo +0 -0
  312. holidays/locale/uk/LC_MESSAGES/NI.po +16 -17
  313. holidays/locale/uk/LC_MESSAGES/NL.po +14 -15
  314. holidays/locale/uk/LC_MESSAGES/NO.po +15 -16
  315. holidays/locale/uk/LC_MESSAGES/PE.po +31 -32
  316. holidays/locale/uk/LC_MESSAGES/PL.po +38 -21
  317. holidays/locale/uk/LC_MESSAGES/PY.po +17 -18
  318. holidays/locale/uk/LC_MESSAGES/RO.po +13 -14
  319. holidays/locale/uk/LC_MESSAGES/SE.po +21 -22
  320. holidays/locale/uk/LC_MESSAGES/SK.po +18 -20
  321. holidays/locale/uk/LC_MESSAGES/UA.po +17 -17
  322. holidays/locale/uk/LC_MESSAGES/UY.po +16 -17
  323. holidays/locale/uk/LC_MESSAGES/VE.po +17 -18
  324. holidays/registry.py +21 -12
  325. holidays/utils.py +87 -17
  326. {holidays-0.25.dist-info → holidays-0.27.dist-info}/METADATA +282 -265
  327. holidays-0.27.dist-info/RECORD +449 -0
  328. holidays-0.25.dist-info/RECORD +0 -390
  329. {holidays-0.25.dist-info → holidays-0.27.dist-info}/LICENSE +0 -0
  330. {holidays-0.25.dist-info → holidays-0.27.dist-info}/WHEEL +0 -0
  331. {holidays-0.25.dist-info → holidays-0.27.dist-info}/top_level.txt +0 -0
@@ -12,9 +12,9 @@
12
12
  from datetime import date
13
13
  from typing import Iterable, Tuple
14
14
 
15
- from holidays.calendars.custom import _CustomCalendarType
16
- from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP
17
- from holidays.constants import OCT, NOV, DEC
15
+ from holidays.calendars.custom import _CustomCalendar
16
+ from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
17
+ from holidays.helpers import _normalize_tuple
18
18
 
19
19
  ASHURA = "ASHURA"
20
20
  EID_AL_ADHA = "EID_AL_ADHA"
@@ -29,1422 +29,1420 @@ RAMADAN_BEGINNING = "RAMADAN_BEGINNING"
29
29
 
30
30
  class _IslamicLunar:
31
31
  ASHURA_DATES = {
32
- 1924: ((AUG, 10),),
33
- 1925: ((AUG, 1),),
34
- 1926: ((JUL, 20),),
35
- 1927: ((JUL, 10),),
36
- 1928: ((JUN, 28),),
37
- 1929: ((JUN, 17),),
38
- 1930: ((JUN, 6),),
39
- 1931: ((MAY, 28),),
40
- 1932: ((MAY, 16),),
41
- 1933: ((MAY, 5),),
42
- 1934: ((APR, 24),),
43
- 1935: ((APR, 14),),
44
- 1936: ((APR, 2),),
45
- 1937: ((MAR, 23),),
46
- 1938: ((MAR, 11),),
47
- 1939: ((MAR, 1),),
48
- 1940: ((FEB, 18),),
49
- 1941: ((FEB, 6),),
50
- 1942: ((JAN, 27),),
51
- 1943: ((JAN, 16),),
32
+ 1924: (AUG, 10),
33
+ 1925: (AUG, 1),
34
+ 1926: (JUL, 20),
35
+ 1927: (JUL, 10),
36
+ 1928: (JUN, 28),
37
+ 1929: (JUN, 17),
38
+ 1930: (JUN, 6),
39
+ 1931: (MAY, 28),
40
+ 1932: (MAY, 16),
41
+ 1933: (MAY, 5),
42
+ 1934: (APR, 24),
43
+ 1935: (APR, 14),
44
+ 1936: (APR, 2),
45
+ 1937: (MAR, 23),
46
+ 1938: (MAR, 11),
47
+ 1939: (MAR, 1),
48
+ 1940: (FEB, 18),
49
+ 1941: (FEB, 6),
50
+ 1942: (JAN, 27),
51
+ 1943: (JAN, 16),
52
52
  1944: ((JAN, 5), (DEC, 25)),
53
- 1945: ((DEC, 14),),
54
- 1946: ((DEC, 4),),
55
- 1947: ((NOV, 23),),
56
- 1948: ((NOV, 11),),
57
- 1949: ((NOV, 1),),
58
- 1950: ((OCT, 22),),
59
- 1951: ((OCT, 11),),
60
- 1952: ((SEP, 30),),
61
- 1953: ((SEP, 19),),
62
- 1954: ((SEP, 8),),
63
- 1955: ((AUG, 29),),
64
- 1956: ((AUG, 17),),
65
- 1957: ((AUG, 6),),
66
- 1958: ((JUL, 27),),
67
- 1959: ((JUL, 16),),
68
- 1960: ((JUL, 4),),
69
- 1961: ((JUN, 23),),
70
- 1962: ((JUN, 12),),
71
- 1963: ((JUN, 2),),
72
- 1964: ((MAY, 21),),
73
- 1965: ((MAY, 10),),
74
- 1966: ((APR, 30),),
75
- 1967: ((APR, 20),),
76
- 1968: ((APR, 8),),
77
- 1969: ((MAR, 28),),
78
- 1970: ((MAR, 18),),
79
- 1971: ((MAR, 7),),
80
- 1972: ((FEB, 25),),
81
- 1973: ((FEB, 13),),
82
- 1974: ((FEB, 2),),
83
- 1975: ((JAN, 22),),
53
+ 1945: (DEC, 14),
54
+ 1946: (DEC, 4),
55
+ 1947: (NOV, 23),
56
+ 1948: (NOV, 11),
57
+ 1949: (NOV, 1),
58
+ 1950: (OCT, 22),
59
+ 1951: (OCT, 11),
60
+ 1952: (SEP, 30),
61
+ 1953: (SEP, 19),
62
+ 1954: (SEP, 8),
63
+ 1955: (AUG, 29),
64
+ 1956: (AUG, 17),
65
+ 1957: (AUG, 6),
66
+ 1958: (JUL, 27),
67
+ 1959: (JUL, 16),
68
+ 1960: (JUL, 4),
69
+ 1961: (JUN, 23),
70
+ 1962: (JUN, 12),
71
+ 1963: (JUN, 2),
72
+ 1964: (MAY, 21),
73
+ 1965: (MAY, 10),
74
+ 1966: (APR, 30),
75
+ 1967: (APR, 20),
76
+ 1968: (APR, 8),
77
+ 1969: (MAR, 28),
78
+ 1970: (MAR, 18),
79
+ 1971: (MAR, 7),
80
+ 1972: (FEB, 25),
81
+ 1973: (FEB, 13),
82
+ 1974: (FEB, 2),
83
+ 1975: (JAN, 22),
84
84
  1976: ((JAN, 11), (DEC, 31)),
85
- 1977: ((DEC, 20),),
86
- 1978: ((DEC, 10),),
87
- 1979: ((NOV, 29),),
88
- 1980: ((NOV, 18),),
89
- 1981: ((NOV, 6),),
90
- 1982: ((OCT, 27),),
91
- 1983: ((OCT, 16),),
92
- 1984: ((OCT, 5),),
93
- 1985: ((SEP, 24),),
94
- 1986: ((SEP, 14),),
95
- 1987: ((SEP, 3),),
96
- 1988: ((AUG, 22),),
97
- 1989: ((AUG, 11),),
98
- 1990: ((AUG, 1),),
99
- 1991: ((JUL, 21),),
100
- 1992: ((JUL, 10),),
101
- 1993: ((JUN, 30),),
102
- 1994: ((JUN, 19),),
103
- 1995: ((JUN, 8),),
104
- 1996: ((MAY, 27),),
105
- 1997: ((MAY, 16),),
106
- 1998: ((MAY, 6),),
107
- 1999: ((APR, 26),),
108
- 2000: ((APR, 15),),
109
- 2001: ((APR, 4),),
110
- 2002: ((MAR, 24),),
111
- 2003: ((MAR, 13),),
112
- 2004: ((MAR, 1),),
113
- 2005: ((FEB, 19),),
114
- 2006: ((FEB, 9),),
115
- 2007: ((JAN, 29),),
116
- 2008: ((JAN, 19),),
85
+ 1977: (DEC, 20),
86
+ 1978: (DEC, 10),
87
+ 1979: (NOV, 29),
88
+ 1980: (NOV, 18),
89
+ 1981: (NOV, 6),
90
+ 1982: (OCT, 27),
91
+ 1983: (OCT, 16),
92
+ 1984: (OCT, 5),
93
+ 1985: (SEP, 24),
94
+ 1986: (SEP, 14),
95
+ 1987: (SEP, 3),
96
+ 1988: (AUG, 22),
97
+ 1989: (AUG, 11),
98
+ 1990: (AUG, 1),
99
+ 1991: (JUL, 21),
100
+ 1992: (JUL, 10),
101
+ 1993: (JUN, 30),
102
+ 1994: (JUN, 19),
103
+ 1995: (JUN, 8),
104
+ 1996: (MAY, 27),
105
+ 1997: (MAY, 16),
106
+ 1998: (MAY, 6),
107
+ 1999: (APR, 26),
108
+ 2000: (APR, 15),
109
+ 2001: (APR, 4),
110
+ 2002: (MAR, 24),
111
+ 2003: (MAR, 13),
112
+ 2004: (MAR, 1),
113
+ 2005: (FEB, 19),
114
+ 2006: (FEB, 9),
115
+ 2007: (JAN, 29),
116
+ 2008: (JAN, 19),
117
117
  2009: ((JAN, 7), (DEC, 27)),
118
- 2010: ((DEC, 16),),
119
- 2011: ((DEC, 5),),
120
- 2012: ((NOV, 24),),
121
- 2013: ((NOV, 13),),
122
- 2014: ((NOV, 3),),
123
- 2015: ((OCT, 23),),
124
- 2016: ((OCT, 11),),
125
- 2017: ((SEP, 30),),
126
- 2018: ((SEP, 20),),
127
- 2019: ((SEP, 9),),
128
- 2020: ((AUG, 29),),
129
- 2021: ((AUG, 18),),
130
- 2022: ((AUG, 8),),
131
- 2023: ((JUL, 28),),
132
- 2024: ((JUL, 16),),
133
- 2025: ((JUL, 5),),
134
- 2026: ((JUN, 25),),
135
- 2027: ((JUN, 15),),
136
- 2028: ((JUN, 3),),
137
- 2029: ((MAY, 23),),
138
- 2030: ((MAY, 12),),
139
- 2031: ((MAY, 2),),
140
- 2032: ((APR, 20),),
141
- 2033: ((APR, 10),),
142
- 2034: ((MAR, 30),),
143
- 2035: ((MAR, 20),),
144
- 2036: ((MAR, 8),),
145
- 2037: ((FEB, 25),),
146
- 2038: ((FEB, 14),),
147
- 2039: ((FEB, 4),),
148
- 2040: ((JAN, 24),),
149
- 2041: ((JAN, 13),),
118
+ 2010: (DEC, 16),
119
+ 2011: (DEC, 5),
120
+ 2012: (NOV, 24),
121
+ 2013: (NOV, 13),
122
+ 2014: (NOV, 3),
123
+ 2015: (OCT, 23),
124
+ 2016: (OCT, 11),
125
+ 2017: (SEP, 30),
126
+ 2018: (SEP, 20),
127
+ 2019: (SEP, 9),
128
+ 2020: (AUG, 29),
129
+ 2021: (AUG, 18),
130
+ 2022: (AUG, 8),
131
+ 2023: (JUL, 28),
132
+ 2024: (JUL, 16),
133
+ 2025: (JUL, 5),
134
+ 2026: (JUN, 25),
135
+ 2027: (JUN, 15),
136
+ 2028: (JUN, 3),
137
+ 2029: (MAY, 23),
138
+ 2030: (MAY, 12),
139
+ 2031: (MAY, 2),
140
+ 2032: (APR, 20),
141
+ 2033: (APR, 10),
142
+ 2034: (MAR, 30),
143
+ 2035: (MAR, 20),
144
+ 2036: (MAR, 8),
145
+ 2037: (FEB, 25),
146
+ 2038: (FEB, 14),
147
+ 2039: (FEB, 4),
148
+ 2040: (JAN, 24),
149
+ 2041: (JAN, 13),
150
150
  2042: ((JAN, 2), (DEC, 23)),
151
- 2043: ((DEC, 12),),
152
- 2044: ((NOV, 30),),
153
- 2045: ((NOV, 19),),
154
- 2046: ((NOV, 9),),
155
- 2047: ((OCT, 29),),
156
- 2048: ((OCT, 18),),
157
- 2049: ((OCT, 7),),
158
- 2050: ((SEP, 26),),
159
- 2051: ((SEP, 15),),
160
- 2052: ((SEP, 4),),
161
- 2053: ((AUG, 24),),
162
- 2054: ((AUG, 14),),
163
- 2055: ((AUG, 3),),
164
- 2056: ((JUL, 23),),
165
- 2057: ((JUL, 12),),
166
- 2058: ((JUL, 1),),
167
- 2059: ((JUN, 20),),
168
- 2060: ((JUN, 9),),
169
- 2061: ((MAY, 29),),
170
- 2062: ((MAY, 19),),
171
- 2063: ((MAY, 9),),
172
- 2064: ((APR, 27),),
173
- 2065: ((APR, 16),),
174
- 2066: ((APR, 5),),
175
- 2067: ((MAR, 25),),
176
- 2068: ((MAR, 14),),
177
- 2069: ((MAR, 4),),
178
- 2070: ((FEB, 21),),
179
- 2071: ((FEB, 10),),
180
- 2072: ((JAN, 30),),
181
- 2073: ((JAN, 18),),
151
+ 2043: (DEC, 12),
152
+ 2044: (NOV, 30),
153
+ 2045: (NOV, 19),
154
+ 2046: (NOV, 9),
155
+ 2047: (OCT, 29),
156
+ 2048: (OCT, 18),
157
+ 2049: (OCT, 7),
158
+ 2050: (SEP, 26),
159
+ 2051: (SEP, 15),
160
+ 2052: (SEP, 4),
161
+ 2053: (AUG, 24),
162
+ 2054: (AUG, 14),
163
+ 2055: (AUG, 3),
164
+ 2056: (JUL, 23),
165
+ 2057: (JUL, 12),
166
+ 2058: (JUL, 1),
167
+ 2059: (JUN, 20),
168
+ 2060: (JUN, 9),
169
+ 2061: (MAY, 29),
170
+ 2062: (MAY, 19),
171
+ 2063: (MAY, 9),
172
+ 2064: (APR, 27),
173
+ 2065: (APR, 16),
174
+ 2066: (APR, 5),
175
+ 2067: (MAR, 25),
176
+ 2068: (MAR, 14),
177
+ 2069: (MAR, 4),
178
+ 2070: (FEB, 21),
179
+ 2071: (FEB, 10),
180
+ 2072: (JAN, 30),
181
+ 2073: (JAN, 18),
182
182
  2074: ((JAN, 8), (DEC, 28)),
183
- 2075: ((DEC, 18),),
184
- 2076: ((DEC, 6),),
183
+ 2075: (DEC, 18),
184
+ 2076: (DEC, 6),
185
185
  }
186
186
 
187
187
  EID_AL_ADHA_DATES = {
188
- 1925: ((JUL, 2),),
189
- 1926: ((JUN, 21),),
190
- 1927: ((JUN, 10),),
191
- 1928: ((MAY, 30),),
192
- 1929: ((MAY, 19),),
193
- 1930: ((MAY, 9),),
194
- 1931: ((APR, 28),),
195
- 1932: ((APR, 16),),
196
- 1933: ((APR, 5),),
197
- 1934: ((MAR, 26),),
198
- 1935: ((MAR, 15),),
199
- 1936: ((MAR, 4),),
200
- 1937: ((FEB, 21),),
201
- 1938: ((FEB, 10),),
202
- 1939: ((JAN, 30),),
203
- 1940: ((JAN, 20),),
188
+ 1925: (JUL, 2),
189
+ 1926: (JUN, 21),
190
+ 1927: (JUN, 10),
191
+ 1928: (MAY, 30),
192
+ 1929: (MAY, 19),
193
+ 1930: (MAY, 9),
194
+ 1931: (APR, 28),
195
+ 1932: (APR, 16),
196
+ 1933: (APR, 5),
197
+ 1934: (MAR, 26),
198
+ 1935: (MAR, 15),
199
+ 1936: (MAR, 4),
200
+ 1937: (FEB, 21),
201
+ 1938: (FEB, 10),
202
+ 1939: (JAN, 30),
203
+ 1940: (JAN, 20),
204
204
  1941: ((JAN, 8), (DEC, 28)),
205
- 1942: ((DEC, 18),),
206
- 1943: ((DEC, 7),),
207
- 1944: ((NOV, 25),),
208
- 1945: ((NOV, 15),),
209
- 1946: ((NOV, 4),),
210
- 1947: ((OCT, 25),),
211
- 1948: ((OCT, 13),),
212
- 1949: ((OCT, 2),),
213
- 1950: ((SEP, 23),),
214
- 1951: ((SEP, 12),),
215
- 1952: ((AUG, 31),),
216
- 1953: ((AUG, 20),),
217
- 1954: ((AUG, 9),),
218
- 1955: ((JUL, 30),),
219
- 1956: ((JUL, 19),),
220
- 1957: ((JUL, 8),),
221
- 1958: ((JUN, 27),),
222
- 1959: ((JUN, 17),),
223
- 1960: ((JUN, 4),),
224
- 1961: ((MAY, 25),),
225
- 1962: ((MAY, 14),),
226
- 1963: ((MAY, 3),),
227
- 1964: ((APR, 22),),
228
- 1965: ((APR, 11),),
229
- 1966: ((APR, 1),),
230
- 1967: ((MAR, 21),),
231
- 1968: ((MAR, 9),),
232
- 1969: ((FEB, 27),),
233
- 1970: ((FEB, 16),),
234
- 1971: ((FEB, 6),),
235
- 1972: ((JAN, 26),),
236
- 1973: ((JAN, 14),),
205
+ 1942: (DEC, 18),
206
+ 1943: (DEC, 7),
207
+ 1944: (NOV, 25),
208
+ 1945: (NOV, 15),
209
+ 1946: (NOV, 4),
210
+ 1947: (OCT, 25),
211
+ 1948: (OCT, 13),
212
+ 1949: (OCT, 2),
213
+ 1950: (SEP, 23),
214
+ 1951: (SEP, 12),
215
+ 1952: (AUG, 31),
216
+ 1953: (AUG, 20),
217
+ 1954: (AUG, 9),
218
+ 1955: (JUL, 30),
219
+ 1956: (JUL, 19),
220
+ 1957: (JUL, 8),
221
+ 1958: (JUN, 27),
222
+ 1959: (JUN, 17),
223
+ 1960: (JUN, 4),
224
+ 1961: (MAY, 25),
225
+ 1962: (MAY, 14),
226
+ 1963: (MAY, 3),
227
+ 1964: (APR, 22),
228
+ 1965: (APR, 11),
229
+ 1966: (APR, 1),
230
+ 1967: (MAR, 21),
231
+ 1968: (MAR, 9),
232
+ 1969: (FEB, 27),
233
+ 1970: (FEB, 16),
234
+ 1971: (FEB, 6),
235
+ 1972: (JAN, 26),
236
+ 1973: (JAN, 14),
237
237
  1974: ((JAN, 3), (DEC, 24)),
238
- 1975: ((DEC, 13),),
239
- 1976: ((DEC, 1),),
240
- 1977: ((NOV, 21),),
241
- 1978: ((NOV, 10),),
242
- 1979: ((OCT, 31),),
243
- 1980: ((OCT, 19),),
244
- 1981: ((OCT, 8),),
245
- 1982: ((SEP, 27),),
246
- 1983: ((SEP, 17),),
247
- 1984: ((SEP, 5),),
248
- 1985: ((AUG, 26),),
249
- 1986: ((AUG, 15),),
250
- 1987: ((AUG, 4),),
251
- 1988: ((JUL, 23),),
252
- 1989: ((JUL, 13),),
253
- 1990: ((JUL, 2),),
254
- 1991: ((JUN, 22),),
255
- 1992: ((JUN, 11),),
256
- 1993: ((MAY, 31),),
257
- 1994: ((MAY, 20),),
258
- 1995: ((MAY, 9),),
259
- 1996: ((APR, 27),),
260
- 1997: ((APR, 17),),
261
- 1998: ((APR, 7),),
262
- 1999: ((MAR, 27),),
263
- 2000: ((MAR, 16),),
264
- 2001: ((MAR, 5),),
265
- 2002: ((FEB, 22),),
266
- 2003: ((FEB, 11),),
267
- 2004: ((FEB, 1),),
268
- 2005: ((JAN, 21),),
238
+ 1975: (DEC, 13),
239
+ 1976: (DEC, 1),
240
+ 1977: (NOV, 21),
241
+ 1978: (NOV, 10),
242
+ 1979: (OCT, 31),
243
+ 1980: (OCT, 19),
244
+ 1981: (OCT, 8),
245
+ 1982: (SEP, 27),
246
+ 1983: (SEP, 17),
247
+ 1984: (SEP, 5),
248
+ 1985: (AUG, 26),
249
+ 1986: (AUG, 15),
250
+ 1987: (AUG, 4),
251
+ 1988: (JUL, 23),
252
+ 1989: (JUL, 13),
253
+ 1990: (JUL, 2),
254
+ 1991: (JUN, 22),
255
+ 1992: (JUN, 11),
256
+ 1993: (MAY, 31),
257
+ 1994: (MAY, 20),
258
+ 1995: (MAY, 9),
259
+ 1996: (APR, 27),
260
+ 1997: (APR, 17),
261
+ 1998: (APR, 7),
262
+ 1999: (MAR, 27),
263
+ 2000: (MAR, 16),
264
+ 2001: (MAR, 5),
265
+ 2002: (FEB, 22),
266
+ 2003: (FEB, 11),
267
+ 2004: (FEB, 1),
268
+ 2005: (JAN, 21),
269
269
  2006: ((JAN, 10), (DEC, 31)),
270
- 2007: ((DEC, 20),),
271
- 2008: ((DEC, 8),),
272
- 2009: ((NOV, 27),),
273
- 2010: ((NOV, 16),),
274
- 2011: ((NOV, 6),),
275
- 2012: ((OCT, 26),),
276
- 2013: ((OCT, 15),),
277
- 2014: ((OCT, 4),),
278
- 2015: ((SEP, 23),),
279
- 2016: ((SEP, 11),),
280
- 2017: ((SEP, 1),),
281
- 2018: ((AUG, 21),),
282
- 2019: ((AUG, 11),),
283
- 2020: ((JUL, 31),),
284
- 2021: ((JUL, 20),),
285
- 2022: ((JUL, 9),),
286
- 2023: ((JUN, 28),),
287
- 2024: ((JUN, 16),),
288
- 2025: ((JUN, 6),),
289
- 2026: ((MAY, 27),),
290
- 2027: ((MAY, 16),),
291
- 2028: ((MAY, 5),),
292
- 2029: ((APR, 24),),
293
- 2030: ((APR, 13),),
294
- 2031: ((APR, 2),),
295
- 2032: ((MAR, 22),),
296
- 2033: ((MAR, 11),),
297
- 2034: ((MAR, 1),),
298
- 2035: ((FEB, 18),),
299
- 2036: ((FEB, 7),),
300
- 2037: ((JAN, 26),),
301
- 2038: ((JAN, 16),),
270
+ 2007: (DEC, 20),
271
+ 2008: (DEC, 8),
272
+ 2009: (NOV, 27),
273
+ 2010: (NOV, 16),
274
+ 2011: (NOV, 6),
275
+ 2012: (OCT, 26),
276
+ 2013: (OCT, 15),
277
+ 2014: (OCT, 4),
278
+ 2015: (SEP, 23),
279
+ 2016: (SEP, 11),
280
+ 2017: (SEP, 1),
281
+ 2018: (AUG, 21),
282
+ 2019: (AUG, 11),
283
+ 2020: (JUL, 31),
284
+ 2021: (JUL, 20),
285
+ 2022: (JUL, 9),
286
+ 2023: (JUN, 28),
287
+ 2024: (JUN, 16),
288
+ 2025: (JUN, 6),
289
+ 2026: (MAY, 27),
290
+ 2027: (MAY, 16),
291
+ 2028: (MAY, 5),
292
+ 2029: (APR, 24),
293
+ 2030: (APR, 13),
294
+ 2031: (APR, 2),
295
+ 2032: (MAR, 22),
296
+ 2033: (MAR, 11),
297
+ 2034: (MAR, 1),
298
+ 2035: (FEB, 18),
299
+ 2036: (FEB, 7),
300
+ 2037: (JAN, 26),
301
+ 2038: (JAN, 16),
302
302
  2039: ((JAN, 5), (DEC, 26)),
303
- 2040: ((DEC, 14),),
304
- 2041: ((DEC, 4),),
305
- 2042: ((NOV, 23),),
306
- 2043: ((NOV, 12),),
307
- 2044: ((OCT, 31),),
308
- 2045: ((OCT, 21),),
309
- 2046: ((OCT, 10),),
310
- 2047: ((SEP, 30),),
311
- 2048: ((SEP, 19),),
312
- 2049: ((SEP, 8),),
313
- 2050: ((AUG, 28),),
314
- 2051: ((AUG, 17),),
315
- 2052: ((AUG, 5),),
316
- 2053: ((JUL, 26),),
317
- 2054: ((JUL, 15),),
318
- 2055: ((JUL, 5),),
319
- 2056: ((JUN, 23),),
320
- 2057: ((JUN, 12),),
321
- 2058: ((JUN, 1),),
322
- 2059: ((MAY, 22),),
323
- 2060: ((MAY, 10),),
324
- 2061: ((APR, 30),),
325
- 2062: ((APR, 20),),
326
- 2063: ((APR, 9),),
327
- 2064: ((MAR, 28),),
328
- 2065: ((MAR, 17),),
329
- 2066: ((MAR, 6),),
330
- 2067: ((FEB, 24),),
331
- 2068: ((FEB, 13),),
332
- 2069: ((FEB, 2),),
333
- 2070: ((JAN, 22),),
303
+ 2040: (DEC, 14),
304
+ 2041: (DEC, 4),
305
+ 2042: (NOV, 23),
306
+ 2043: (NOV, 12),
307
+ 2044: (OCT, 31),
308
+ 2045: (OCT, 21),
309
+ 2046: (OCT, 10),
310
+ 2047: (SEP, 30),
311
+ 2048: (SEP, 19),
312
+ 2049: (SEP, 8),
313
+ 2050: (AUG, 28),
314
+ 2051: (AUG, 17),
315
+ 2052: (AUG, 5),
316
+ 2053: (JUL, 26),
317
+ 2054: (JUL, 15),
318
+ 2055: (JUL, 5),
319
+ 2056: (JUN, 23),
320
+ 2057: (JUN, 12),
321
+ 2058: (JUN, 1),
322
+ 2059: (MAY, 22),
323
+ 2060: (MAY, 10),
324
+ 2061: (APR, 30),
325
+ 2062: (APR, 20),
326
+ 2063: (APR, 9),
327
+ 2064: (MAR, 28),
328
+ 2065: (MAR, 17),
329
+ 2066: (MAR, 6),
330
+ 2067: (FEB, 24),
331
+ 2068: (FEB, 13),
332
+ 2069: (FEB, 2),
333
+ 2070: (JAN, 22),
334
334
  2071: ((JAN, 11), (DEC, 31)),
335
- 2072: ((DEC, 20),),
336
- 2073: ((DEC, 9),),
337
- 2074: ((NOV, 29),),
338
- 2075: ((NOV, 18),),
339
- 2076: ((NOV, 7),),
340
- 2077: ((OCT, 27),),
335
+ 2072: (DEC, 20),
336
+ 2073: (DEC, 9),
337
+ 2074: (NOV, 29),
338
+ 2075: (NOV, 18),
339
+ 2076: (NOV, 7),
340
+ 2077: (OCT, 27),
341
341
  }
342
342
 
343
343
  EID_AL_FITR_DATES = {
344
- 1925: ((APR, 24),),
345
- 1926: ((APR, 14),),
346
- 1927: ((APR, 3),),
347
- 1928: ((MAR, 22),),
348
- 1929: ((MAR, 12),),
349
- 1930: ((MAR, 1),),
350
- 1931: ((FEB, 19),),
351
- 1932: ((FEB, 8),),
352
- 1933: ((JAN, 27),),
353
- 1934: ((JAN, 17),),
344
+ 1925: (APR, 24),
345
+ 1926: (APR, 14),
346
+ 1927: (APR, 3),
347
+ 1928: (MAR, 22),
348
+ 1929: (MAR, 12),
349
+ 1930: (MAR, 1),
350
+ 1931: (FEB, 19),
351
+ 1932: (FEB, 8),
352
+ 1933: (JAN, 27),
353
+ 1934: (JAN, 17),
354
354
  1935: ((JAN, 7), (DEC, 27)),
355
- 1936: ((DEC, 15),),
356
- 1937: ((DEC, 4),),
357
- 1938: ((NOV, 23),),
358
- 1939: ((NOV, 12),),
359
- 1940: ((NOV, 1),),
360
- 1941: ((OCT, 21),),
361
- 1942: ((OCT, 11),),
362
- 1943: ((SEP, 30),),
363
- 1944: ((SEP, 18),),
364
- 1945: ((SEP, 7),),
365
- 1946: ((AUG, 28),),
366
- 1947: ((AUG, 18),),
367
- 1948: ((AUG, 6),),
368
- 1949: ((JUL, 26),),
369
- 1950: ((JUL, 16),),
370
- 1951: ((JUL, 6),),
371
- 1952: ((JUN, 23),),
372
- 1953: ((JUN, 13),),
373
- 1954: ((JUN, 2),),
374
- 1955: ((MAY, 23),),
375
- 1956: ((MAY, 11),),
376
- 1957: ((MAY, 1),),
377
- 1958: ((APR, 20),),
378
- 1959: ((APR, 10),),
379
- 1960: ((MAR, 28),),
380
- 1961: ((MAR, 18),),
381
- 1962: ((MAR, 7),),
382
- 1963: ((FEB, 24),),
383
- 1964: ((FEB, 14),),
384
- 1965: ((FEB, 2),),
385
- 1966: ((JAN, 22),),
386
- 1967: ((JAN, 12),),
355
+ 1936: (DEC, 15),
356
+ 1937: (DEC, 4),
357
+ 1938: (NOV, 23),
358
+ 1939: (NOV, 12),
359
+ 1940: (NOV, 1),
360
+ 1941: (OCT, 21),
361
+ 1942: (OCT, 11),
362
+ 1943: (SEP, 30),
363
+ 1944: (SEP, 18),
364
+ 1945: (SEP, 7),
365
+ 1946: (AUG, 28),
366
+ 1947: (AUG, 18),
367
+ 1948: (AUG, 6),
368
+ 1949: (JUL, 26),
369
+ 1950: (JUL, 16),
370
+ 1951: (JUL, 6),
371
+ 1952: (JUN, 23),
372
+ 1953: (JUN, 13),
373
+ 1954: (JUN, 2),
374
+ 1955: (MAY, 23),
375
+ 1956: (MAY, 11),
376
+ 1957: (MAY, 1),
377
+ 1958: (APR, 20),
378
+ 1959: (APR, 10),
379
+ 1960: (MAR, 28),
380
+ 1961: (MAR, 18),
381
+ 1962: (MAR, 7),
382
+ 1963: (FEB, 24),
383
+ 1964: (FEB, 14),
384
+ 1965: (FEB, 2),
385
+ 1966: (JAN, 22),
386
+ 1967: (JAN, 12),
387
387
  1968: ((JAN, 1), (DEC, 21)),
388
- 1969: ((DEC, 10),),
389
- 1970: ((NOV, 30),),
390
- 1971: ((NOV, 19),),
391
- 1972: ((NOV, 7),),
392
- 1973: ((OCT, 27),),
393
- 1974: ((OCT, 16),),
394
- 1975: ((OCT, 6),),
395
- 1976: ((SEP, 24),),
396
- 1977: ((SEP, 14),),
397
- 1978: ((SEP, 3),),
398
- 1979: ((AUG, 23),),
399
- 1980: ((AUG, 12),),
400
- 1981: ((AUG, 1),),
401
- 1982: ((JUL, 21),),
402
- 1983: ((JUL, 11),),
403
- 1984: ((JUN, 30),),
404
- 1985: ((JUN, 19),),
405
- 1986: ((JUN, 8),),
406
- 1987: ((MAY, 28),),
407
- 1988: ((MAY, 16),),
408
- 1989: ((MAY, 6),),
409
- 1990: ((APR, 26),),
410
- 1991: ((APR, 15),),
411
- 1992: ((APR, 4),),
412
- 1993: ((MAR, 24),),
413
- 1994: ((MAR, 13),),
414
- 1995: ((MAR, 2),),
415
- 1996: ((FEB, 19),),
416
- 1997: ((FEB, 8),),
417
- 1998: ((JAN, 29),),
418
- 1999: ((JAN, 18),),
388
+ 1969: (DEC, 10),
389
+ 1970: (NOV, 30),
390
+ 1971: (NOV, 19),
391
+ 1972: (NOV, 7),
392
+ 1973: (OCT, 27),
393
+ 1974: (OCT, 16),
394
+ 1975: (OCT, 6),
395
+ 1976: (SEP, 24),
396
+ 1977: (SEP, 14),
397
+ 1978: (SEP, 3),
398
+ 1979: (AUG, 23),
399
+ 1980: (AUG, 12),
400
+ 1981: (AUG, 1),
401
+ 1982: (JUL, 21),
402
+ 1983: (JUL, 11),
403
+ 1984: (JUN, 30),
404
+ 1985: (JUN, 19),
405
+ 1986: (JUN, 8),
406
+ 1987: (MAY, 28),
407
+ 1988: (MAY, 16),
408
+ 1989: (MAY, 6),
409
+ 1990: (APR, 26),
410
+ 1991: (APR, 15),
411
+ 1992: (APR, 4),
412
+ 1993: (MAR, 24),
413
+ 1994: (MAR, 13),
414
+ 1995: (MAR, 2),
415
+ 1996: (FEB, 19),
416
+ 1997: (FEB, 8),
417
+ 1998: (JAN, 29),
418
+ 1999: (JAN, 18),
419
419
  2000: ((JAN, 8), (DEC, 27)),
420
- 2001: ((DEC, 16),),
421
- 2002: ((DEC, 5),),
422
- 2003: ((NOV, 25),),
423
- 2004: ((NOV, 14),),
424
- 2005: ((NOV, 3),),
425
- 2006: ((OCT, 23),),
426
- 2007: ((OCT, 13),),
427
- 2008: ((OCT, 1),),
428
- 2009: ((SEP, 20),),
429
- 2010: ((SEP, 10),),
430
- 2011: ((AUG, 30),),
431
- 2012: ((AUG, 19),),
432
- 2013: ((AUG, 8),),
433
- 2014: ((JUL, 28),),
434
- 2015: ((JUL, 17),),
435
- 2016: ((JUL, 6),),
436
- 2017: ((JUN, 25),),
437
- 2018: ((JUN, 15),),
438
- 2019: ((JUN, 4),),
439
- 2020: ((MAY, 24),),
440
- 2021: ((MAY, 13),),
441
- 2022: ((MAY, 2),),
442
- 2023: ((APR, 21),),
443
- 2024: ((APR, 10),),
444
- 2025: ((MAR, 30),),
445
- 2026: ((MAR, 20),),
446
- 2027: ((MAR, 9),),
447
- 2028: ((FEB, 26),),
448
- 2029: ((FEB, 14),),
449
- 2030: ((FEB, 4),),
450
- 2031: ((JAN, 24),),
451
- 2032: ((JAN, 14),),
420
+ 2001: (DEC, 16),
421
+ 2002: (DEC, 5),
422
+ 2003: (NOV, 25),
423
+ 2004: (NOV, 14),
424
+ 2005: (NOV, 3),
425
+ 2006: (OCT, 23),
426
+ 2007: (OCT, 13),
427
+ 2008: (OCT, 1),
428
+ 2009: (SEP, 20),
429
+ 2010: (SEP, 10),
430
+ 2011: (AUG, 30),
431
+ 2012: (AUG, 19),
432
+ 2013: (AUG, 8),
433
+ 2014: (JUL, 28),
434
+ 2015: (JUL, 17),
435
+ 2016: (JUL, 6),
436
+ 2017: (JUN, 25),
437
+ 2018: (JUN, 15),
438
+ 2019: (JUN, 4),
439
+ 2020: (MAY, 24),
440
+ 2021: (MAY, 13),
441
+ 2022: (MAY, 2),
442
+ 2023: (APR, 21),
443
+ 2024: (APR, 10),
444
+ 2025: (MAR, 30),
445
+ 2026: (MAR, 20),
446
+ 2027: (MAR, 9),
447
+ 2028: (FEB, 26),
448
+ 2029: (FEB, 14),
449
+ 2030: (FEB, 4),
450
+ 2031: (JAN, 24),
451
+ 2032: (JAN, 14),
452
452
  2033: ((JAN, 2), (DEC, 23)),
453
- 2034: ((DEC, 12),),
454
- 2035: ((DEC, 1),),
455
- 2036: ((NOV, 19),),
456
- 2037: ((NOV, 8),),
457
- 2038: ((OCT, 29),),
458
- 2039: ((OCT, 19),),
459
- 2040: ((OCT, 7),),
460
- 2041: ((SEP, 26),),
461
- 2042: ((SEP, 15),),
462
- 2043: ((SEP, 4),),
463
- 2044: ((AUG, 24),),
464
- 2045: ((AUG, 14),),
465
- 2046: ((AUG, 3),),
466
- 2047: ((JUL, 24),),
467
- 2048: ((JUL, 12),),
468
- 2049: ((JUL, 1),),
469
- 2050: ((JUN, 20),),
470
- 2051: ((JUN, 10),),
471
- 2052: ((MAY, 29),),
472
- 2053: ((MAY, 19),),
473
- 2054: ((MAY, 9),),
474
- 2055: ((APR, 28),),
475
- 2056: ((APR, 16),),
476
- 2057: ((APR, 5),),
477
- 2058: ((MAR, 25),),
478
- 2059: ((MAR, 15),),
479
- 2060: ((MAR, 4),),
480
- 2061: ((FEB, 21),),
481
- 2062: ((FEB, 10),),
482
- 2063: ((JAN, 30),),
483
- 2064: ((JAN, 20),),
453
+ 2034: (DEC, 12),
454
+ 2035: (DEC, 1),
455
+ 2036: (NOV, 19),
456
+ 2037: (NOV, 8),
457
+ 2038: (OCT, 29),
458
+ 2039: (OCT, 19),
459
+ 2040: (OCT, 7),
460
+ 2041: (SEP, 26),
461
+ 2042: (SEP, 15),
462
+ 2043: (SEP, 4),
463
+ 2044: (AUG, 24),
464
+ 2045: (AUG, 14),
465
+ 2046: (AUG, 3),
466
+ 2047: (JUL, 24),
467
+ 2048: (JUL, 12),
468
+ 2049: (JUL, 1),
469
+ 2050: (JUN, 20),
470
+ 2051: (JUN, 10),
471
+ 2052: (MAY, 29),
472
+ 2053: (MAY, 19),
473
+ 2054: (MAY, 9),
474
+ 2055: (APR, 28),
475
+ 2056: (APR, 16),
476
+ 2057: (APR, 5),
477
+ 2058: (MAR, 25),
478
+ 2059: (MAR, 15),
479
+ 2060: (MAR, 4),
480
+ 2061: (FEB, 21),
481
+ 2062: (FEB, 10),
482
+ 2063: (JAN, 30),
483
+ 2064: (JAN, 20),
484
484
  2065: ((JAN, 8), (DEC, 28)),
485
- 2066: ((DEC, 18),),
486
- 2067: ((DEC, 8),),
487
- 2068: ((NOV, 26),),
488
- 2069: ((NOV, 15),),
489
- 2070: ((NOV, 4),),
490
- 2071: ((OCT, 24),),
491
- 2072: ((OCT, 13),),
492
- 2073: ((OCT, 2),),
493
- 2074: ((SEP, 22),),
494
- 2075: ((SEP, 11),),
495
- 2076: ((AUG, 30),),
496
- 2077: ((AUG, 19),),
485
+ 2066: (DEC, 18),
486
+ 2067: (DEC, 8),
487
+ 2068: (NOV, 26),
488
+ 2069: (NOV, 15),
489
+ 2070: (NOV, 4),
490
+ 2071: (OCT, 24),
491
+ 2072: (OCT, 13),
492
+ 2073: (OCT, 2),
493
+ 2074: (SEP, 22),
494
+ 2075: (SEP, 11),
495
+ 2076: (AUG, 30),
496
+ 2077: (AUG, 19),
497
497
  }
498
498
 
499
499
  HARI_HOL_JOHOR_DATES = {
500
- 1924: ((SEP, 5),),
501
- 1925: ((AUG, 26),),
502
- 1926: ((AUG, 15),),
503
- 1927: ((AUG, 4),),
504
- 1928: ((JUL, 23),),
505
- 1929: ((JUL, 13),),
506
- 1930: ((JUL, 2),),
507
- 1931: ((JUN, 22),),
508
- 1932: ((JUN, 11),),
509
- 1933: ((MAY, 31),),
510
- 1934: ((MAY, 20),),
511
- 1935: ((MAY, 9),),
512
- 1936: ((APR, 28),),
513
- 1937: ((APR, 17),),
514
- 1938: ((APR, 6),),
515
- 1939: ((MAR, 27),),
516
- 1940: ((MAR, 15),),
517
- 1941: ((MAR, 4),),
518
- 1942: ((FEB, 22),),
519
- 1943: ((FEB, 11),),
520
- 1944: ((JAN, 31),),
521
- 1945: ((JAN, 20),),
500
+ 1924: (SEP, 5),
501
+ 1925: (AUG, 26),
502
+ 1926: (AUG, 15),
503
+ 1927: (AUG, 4),
504
+ 1928: (JUL, 23),
505
+ 1929: (JUL, 13),
506
+ 1930: (JUL, 2),
507
+ 1931: (JUN, 22),
508
+ 1932: (JUN, 11),
509
+ 1933: (MAY, 31),
510
+ 1934: (MAY, 20),
511
+ 1935: (MAY, 9),
512
+ 1936: (APR, 28),
513
+ 1937: (APR, 17),
514
+ 1938: (APR, 6),
515
+ 1939: (MAR, 27),
516
+ 1940: (MAR, 15),
517
+ 1941: (MAR, 4),
518
+ 1942: (FEB, 22),
519
+ 1943: (FEB, 11),
520
+ 1944: (JAN, 31),
521
+ 1945: (JAN, 20),
522
522
  1946: ((JAN, 9), (DEC, 30)),
523
- 1947: ((DEC, 19),),
524
- 1948: ((DEC, 7),),
525
- 1949: ((NOV, 27),),
526
- 1950: ((NOV, 17),),
527
- 1951: ((NOV, 6),),
528
- 1952: ((OCT, 25),),
529
- 1953: ((OCT, 14),),
530
- 1954: ((OCT, 4),),
531
- 1955: ((SEP, 24),),
532
- 1956: ((SEP, 11),),
533
- 1957: ((SEP, 1),),
534
- 1958: ((AUG, 22),),
535
- 1959: ((AUG, 10),),
536
- 1960: ((JUL, 30),),
537
- 1961: ((JUL, 19),),
538
- 1962: ((JUL, 8),),
539
- 1963: ((JUN, 27),),
540
- 1964: ((JUN, 16),),
541
- 1965: ((JUN, 5),),
542
- 1966: ((MAY, 26),),
543
- 1967: ((MAY, 15),),
544
- 1968: ((MAY, 3),),
545
- 1969: ((APR, 23),),
546
- 1970: ((APR, 13),),
547
- 1971: ((APR, 2),),
548
- 1972: ((MAR, 21),),
549
- 1973: ((MAR, 11),),
550
- 1974: ((FEB, 28),),
551
- 1975: ((FEB, 17),),
552
- 1976: ((FEB, 6),),
553
- 1977: ((JAN, 25),),
554
- 1978: ((JAN, 15),),
523
+ 1947: (DEC, 19),
524
+ 1948: (DEC, 7),
525
+ 1949: (NOV, 27),
526
+ 1950: (NOV, 17),
527
+ 1951: (NOV, 6),
528
+ 1952: (OCT, 25),
529
+ 1953: (OCT, 14),
530
+ 1954: (OCT, 4),
531
+ 1955: (SEP, 24),
532
+ 1956: (SEP, 11),
533
+ 1957: (SEP, 1),
534
+ 1958: (AUG, 22),
535
+ 1959: (AUG, 10),
536
+ 1960: (JUL, 30),
537
+ 1961: (JUL, 19),
538
+ 1962: (JUL, 8),
539
+ 1963: (JUN, 27),
540
+ 1964: (JUN, 16),
541
+ 1965: (JUN, 5),
542
+ 1966: (MAY, 26),
543
+ 1967: (MAY, 15),
544
+ 1968: (MAY, 3),
545
+ 1969: (APR, 23),
546
+ 1970: (APR, 13),
547
+ 1971: (APR, 2),
548
+ 1972: (MAR, 21),
549
+ 1973: (MAR, 11),
550
+ 1974: (FEB, 28),
551
+ 1975: (FEB, 17),
552
+ 1976: (FEB, 6),
553
+ 1977: (JAN, 25),
554
+ 1978: (JAN, 15),
555
555
  1979: ((JAN, 4), (DEC, 25)),
556
- 1980: ((DEC, 13),),
557
- 1981: ((DEC, 2),),
558
- 1982: ((NOV, 21),),
559
- 1983: ((NOV, 10),),
560
- 1984: ((OCT, 30),),
561
- 1985: ((OCT, 20),),
562
- 1986: ((OCT, 9),),
563
- 1987: ((SEP, 29),),
564
- 1988: ((SEP, 17),),
565
- 1989: ((SEP, 6),),
566
- 1990: ((AUG, 26),),
567
- 1991: ((AUG, 16),),
568
- 1992: ((AUG, 4),),
569
- 1993: ((JUL, 25),),
570
- 1994: ((JUL, 14),),
571
- 1995: ((JUL, 4),),
572
- 1996: ((JUN, 22),),
573
- 1997: ((JUN, 11),),
574
- 1998: ((MAY, 31),),
575
- 1999: ((MAY, 21),),
576
- 2000: ((MAY, 10),),
577
- 2001: ((APR, 30),),
578
- 2002: ((APR, 19),),
579
- 2003: ((APR, 8),),
580
- 2004: ((MAR, 27),),
581
- 2005: ((MAR, 16),),
582
- 2006: ((MAR, 6),),
583
- 2007: ((FEB, 24),),
584
- 2008: ((FEB, 13),),
585
- 2009: ((FEB, 1),),
586
- 2010: ((JAN, 21),),
556
+ 1980: (DEC, 13),
557
+ 1981: (DEC, 2),
558
+ 1982: (NOV, 21),
559
+ 1983: (NOV, 10),
560
+ 1984: (OCT, 30),
561
+ 1985: (OCT, 20),
562
+ 1986: (OCT, 9),
563
+ 1987: (SEP, 29),
564
+ 1988: (SEP, 17),
565
+ 1989: (SEP, 6),
566
+ 1990: (AUG, 26),
567
+ 1991: (AUG, 16),
568
+ 1992: (AUG, 4),
569
+ 1993: (JUL, 25),
570
+ 1994: (JUL, 14),
571
+ 1995: (JUL, 4),
572
+ 1996: (JUN, 22),
573
+ 1997: (JUN, 11),
574
+ 1998: (MAY, 31),
575
+ 1999: (MAY, 21),
576
+ 2000: (MAY, 10),
577
+ 2001: (APR, 30),
578
+ 2002: (APR, 19),
579
+ 2003: (APR, 8),
580
+ 2004: (MAR, 27),
581
+ 2005: (MAR, 16),
582
+ 2006: (MAR, 6),
583
+ 2007: (FEB, 24),
584
+ 2008: (FEB, 13),
585
+ 2009: (FEB, 1),
586
+ 2010: (JAN, 21),
587
587
  2011: ((JAN, 10), (DEC, 31)),
588
- 2012: ((DEC, 19),),
589
- 2013: ((DEC, 9),),
590
- 2014: ((NOV, 28),),
591
- 2015: ((NOV, 18),),
592
- 2016: ((NOV, 6),),
593
- 2017: ((OCT, 26),),
594
- 2018: ((OCT, 15),),
595
- 2019: ((OCT, 5),),
596
- 2020: ((SEP, 23),),
597
- 2021: ((SEP, 13),),
598
- 2022: ((SEP, 2),),
599
- 2023: ((AUG, 22),),
600
- 2024: ((AUG, 10),),
601
- 2025: ((JUL, 31),),
602
- 2026: ((JUL, 20),),
603
- 2027: ((JUL, 10),),
604
- 2028: ((JUN, 29),),
605
- 2029: ((JUN, 18),),
606
- 2030: ((JUN, 7),),
607
- 2031: ((MAY, 27),),
608
- 2032: ((MAY, 15),),
609
- 2033: ((MAY, 5),),
610
- 2034: ((APR, 25),),
611
- 2035: ((APR, 14),),
612
- 2036: ((APR, 3),),
613
- 2037: ((MAR, 23),),
614
- 2038: ((MAR, 12),),
615
- 2039: ((MAR, 1),),
616
- 2040: ((FEB, 19),),
617
- 2041: ((FEB, 7),),
618
- 2042: ((JAN, 28),),
619
- 2043: ((JAN, 17),),
588
+ 2012: (DEC, 19),
589
+ 2013: (DEC, 9),
590
+ 2014: (NOV, 28),
591
+ 2015: (NOV, 18),
592
+ 2016: (NOV, 6),
593
+ 2017: (OCT, 26),
594
+ 2018: (OCT, 15),
595
+ 2019: (OCT, 5),
596
+ 2020: (SEP, 23),
597
+ 2021: (SEP, 13),
598
+ 2022: (SEP, 2),
599
+ 2023: (AUG, 22),
600
+ 2024: (AUG, 10),
601
+ 2025: (JUL, 31),
602
+ 2026: (JUL, 20),
603
+ 2027: (JUL, 10),
604
+ 2028: (JUN, 29),
605
+ 2029: (JUN, 18),
606
+ 2030: (JUN, 7),
607
+ 2031: (MAY, 27),
608
+ 2032: (MAY, 15),
609
+ 2033: (MAY, 5),
610
+ 2034: (APR, 25),
611
+ 2035: (APR, 14),
612
+ 2036: (APR, 3),
613
+ 2037: (MAR, 23),
614
+ 2038: (MAR, 12),
615
+ 2039: (MAR, 1),
616
+ 2040: (FEB, 19),
617
+ 2041: (FEB, 7),
618
+ 2042: (JAN, 28),
619
+ 2043: (JAN, 17),
620
620
  2044: ((JAN, 7), (DEC, 26)),
621
- 2045: ((DEC, 15),),
622
- 2046: ((DEC, 4),),
623
- 2047: ((NOV, 24),),
624
- 2048: ((NOV, 12),),
625
- 2049: ((NOV, 2),),
626
- 2050: ((OCT, 22),),
627
- 2051: ((OCT, 11),),
628
- 2052: ((SEP, 29),),
629
- 2053: ((SEP, 18),),
630
- 2054: ((SEP, 8),),
631
- 2055: ((AUG, 29),),
632
- 2056: ((AUG, 17),),
633
- 2057: ((AUG, 6),),
634
- 2058: ((JUL, 26),),
635
- 2059: ((JUL, 16),),
636
- 2060: ((JUL, 4),),
637
- 2061: ((JUN, 24),),
638
- 2062: ((JUN, 13),),
639
- 2063: ((JUN, 3),),
640
- 2064: ((MAY, 22),),
641
- 2065: ((MAY, 11),),
642
- 2066: ((APR, 30),),
643
- 2067: ((APR, 20),),
644
- 2068: ((APR, 8),),
645
- 2069: ((MAR, 29),),
646
- 2070: ((MAR, 19),),
647
- 2071: ((MAR, 8),),
648
- 2072: ((FEB, 25),),
649
- 2073: ((FEB, 13),),
650
- 2074: ((FEB, 2),),
651
- 2075: ((JAN, 23),),
652
- 2076: ((JAN, 12),),
653
- 2077: ((JAN, 1),),
621
+ 2045: (DEC, 15),
622
+ 2046: (DEC, 4),
623
+ 2047: (NOV, 24),
624
+ 2048: (NOV, 12),
625
+ 2049: (NOV, 2),
626
+ 2050: (OCT, 22),
627
+ 2051: (OCT, 11),
628
+ 2052: (SEP, 29),
629
+ 2053: (SEP, 18),
630
+ 2054: (SEP, 8),
631
+ 2055: (AUG, 29),
632
+ 2056: (AUG, 17),
633
+ 2057: (AUG, 6),
634
+ 2058: (JUL, 26),
635
+ 2059: (JUL, 16),
636
+ 2060: (JUL, 4),
637
+ 2061: (JUN, 24),
638
+ 2062: (JUN, 13),
639
+ 2063: (JUN, 3),
640
+ 2064: (MAY, 22),
641
+ 2065: (MAY, 11),
642
+ 2066: (APR, 30),
643
+ 2067: (APR, 20),
644
+ 2068: (APR, 8),
645
+ 2069: (MAR, 29),
646
+ 2070: (MAR, 19),
647
+ 2071: (MAR, 8),
648
+ 2072: (FEB, 25),
649
+ 2073: (FEB, 13),
650
+ 2074: (FEB, 2),
651
+ 2075: (JAN, 23),
652
+ 2076: (JAN, 12),
653
+ 2077: (JAN, 1),
654
654
  }
655
655
 
656
656
  HIJRI_NEW_YEAR_DATES = {
657
- 1924: ((AUG, 1),),
658
- 1925: ((JUL, 23),),
659
- 1926: ((JUL, 11),),
660
- 1927: ((JUL, 1),),
661
- 1928: ((JUN, 19),),
662
- 1929: ((JUN, 8),),
663
- 1930: ((MAY, 28),),
664
- 1931: ((MAY, 19),),
665
- 1932: ((MAY, 7),),
666
- 1933: ((APR, 26),),
667
- 1934: ((APR, 15),),
668
- 1935: ((APR, 5),),
669
- 1936: ((MAR, 24),),
670
- 1937: ((MAR, 14),),
671
- 1938: ((MAR, 2),),
672
- 1939: ((FEB, 20),),
673
- 1940: ((FEB, 9),),
674
- 1941: ((JAN, 28),),
675
- 1942: ((JAN, 18),),
657
+ 1924: (AUG, 1),
658
+ 1925: (JUL, 23),
659
+ 1926: (JUL, 11),
660
+ 1927: (JUL, 1),
661
+ 1928: (JUN, 19),
662
+ 1929: (JUN, 8),
663
+ 1930: (MAY, 28),
664
+ 1931: (MAY, 19),
665
+ 1932: (MAY, 7),
666
+ 1933: (APR, 26),
667
+ 1934: (APR, 15),
668
+ 1935: (APR, 5),
669
+ 1936: (MAR, 24),
670
+ 1937: (MAR, 14),
671
+ 1938: (MAR, 2),
672
+ 1939: (FEB, 20),
673
+ 1940: (FEB, 9),
674
+ 1941: (JAN, 28),
675
+ 1942: (JAN, 18),
676
676
  1943: ((JAN, 7), (DEC, 27)),
677
- 1944: ((DEC, 16),),
678
- 1945: ((DEC, 5),),
679
- 1946: ((NOV, 25),),
680
- 1947: ((NOV, 14),),
681
- 1948: ((NOV, 2),),
682
- 1949: ((OCT, 23),),
683
- 1950: ((OCT, 13),),
684
- 1951: ((OCT, 2),),
685
- 1952: ((SEP, 21),),
686
- 1953: ((SEP, 10),),
687
- 1954: ((AUG, 30),),
688
- 1955: ((AUG, 20),),
689
- 1956: ((AUG, 8),),
690
- 1957: ((JUL, 28),),
691
- 1958: ((JUL, 18),),
692
- 1959: ((JUL, 7),),
693
- 1960: ((JUN, 25),),
694
- 1961: ((JUN, 14),),
695
- 1962: ((JUN, 3),),
696
- 1963: ((MAY, 24),),
697
- 1964: ((MAY, 12),),
698
- 1965: ((MAY, 1),),
699
- 1966: ((APR, 21),),
700
- 1967: ((APR, 11),),
701
- 1968: ((MAR, 30),),
702
- 1969: ((MAR, 19),),
703
- 1970: ((MAR, 9),),
704
- 1971: ((FEB, 26),),
705
- 1972: ((FEB, 16),),
706
- 1973: ((FEB, 4),),
707
- 1974: ((JAN, 24),),
708
- 1975: ((JAN, 13),),
677
+ 1944: (DEC, 16),
678
+ 1945: (DEC, 5),
679
+ 1946: (NOV, 25),
680
+ 1947: (NOV, 14),
681
+ 1948: (NOV, 2),
682
+ 1949: (OCT, 23),
683
+ 1950: (OCT, 13),
684
+ 1951: (OCT, 2),
685
+ 1952: (SEP, 21),
686
+ 1953: (SEP, 10),
687
+ 1954: (AUG, 30),
688
+ 1955: (AUG, 20),
689
+ 1956: (AUG, 8),
690
+ 1957: (JUL, 28),
691
+ 1958: (JUL, 18),
692
+ 1959: (JUL, 7),
693
+ 1960: (JUN, 25),
694
+ 1961: (JUN, 14),
695
+ 1962: (JUN, 3),
696
+ 1963: (MAY, 24),
697
+ 1964: (MAY, 12),
698
+ 1965: (MAY, 1),
699
+ 1966: (APR, 21),
700
+ 1967: (APR, 11),
701
+ 1968: (MAR, 30),
702
+ 1969: (MAR, 19),
703
+ 1970: (MAR, 9),
704
+ 1971: (FEB, 26),
705
+ 1972: (FEB, 16),
706
+ 1973: (FEB, 4),
707
+ 1974: (JAN, 24),
708
+ 1975: (JAN, 13),
709
709
  1976: ((JAN, 2), (DEC, 22)),
710
- 1977: ((DEC, 11),),
711
- 1978: ((DEC, 1),),
712
- 1979: ((NOV, 20),),
713
- 1980: ((NOV, 9),),
714
- 1981: ((OCT, 28),),
715
- 1982: ((OCT, 18),),
716
- 1983: ((OCT, 7),),
717
- 1984: ((SEP, 26),),
718
- 1985: ((SEP, 15),),
719
- 1986: ((SEP, 5),),
720
- 1987: ((AUG, 25),),
721
- 1988: ((AUG, 13),),
722
- 1989: ((AUG, 2),),
723
- 1990: ((JUL, 23),),
724
- 1991: ((JUL, 12),),
725
- 1992: ((JUL, 1),),
726
- 1993: ((JUN, 21),),
727
- 1994: ((JUN, 10),),
728
- 1995: ((MAY, 30),),
729
- 1996: ((MAY, 18),),
730
- 1997: ((MAY, 7),),
731
- 1998: ((APR, 27),),
732
- 1999: ((APR, 17),),
733
- 2000: ((APR, 6),),
734
- 2001: ((MAR, 26),),
735
- 2002: ((MAR, 15),),
736
- 2003: ((MAR, 4),),
737
- 2004: ((FEB, 21),),
738
- 2005: ((FEB, 10),),
739
- 2006: ((JAN, 31),),
740
- 2007: ((JAN, 20),),
710
+ 1977: (DEC, 11),
711
+ 1978: (DEC, 1),
712
+ 1979: (NOV, 20),
713
+ 1980: (NOV, 9),
714
+ 1981: (OCT, 28),
715
+ 1982: (OCT, 18),
716
+ 1983: (OCT, 7),
717
+ 1984: (SEP, 26),
718
+ 1985: (SEP, 15),
719
+ 1986: (SEP, 5),
720
+ 1987: (AUG, 25),
721
+ 1988: (AUG, 13),
722
+ 1989: (AUG, 2),
723
+ 1990: (JUL, 23),
724
+ 1991: (JUL, 12),
725
+ 1992: (JUL, 1),
726
+ 1993: (JUN, 21),
727
+ 1994: (JUN, 10),
728
+ 1995: (MAY, 30),
729
+ 1996: (MAY, 18),
730
+ 1997: (MAY, 7),
731
+ 1998: (APR, 27),
732
+ 1999: (APR, 17),
733
+ 2000: (APR, 6),
734
+ 2001: (MAR, 26),
735
+ 2002: (MAR, 15),
736
+ 2003: (MAR, 4),
737
+ 2004: (FEB, 21),
738
+ 2005: (FEB, 10),
739
+ 2006: (JAN, 31),
740
+ 2007: (JAN, 20),
741
741
  2008: ((JAN, 10), (DEC, 29)),
742
- 2009: ((DEC, 18),),
743
- 2010: ((DEC, 7),),
744
- 2011: ((NOV, 26),),
745
- 2012: ((NOV, 15),),
746
- 2013: ((NOV, 4),),
747
- 2014: ((OCT, 25),),
748
- 2015: ((OCT, 14),),
749
- 2016: ((OCT, 2),),
750
- 2017: ((SEP, 21),),
751
- 2018: ((SEP, 11),),
752
- 2019: ((AUG, 31),),
753
- 2020: ((AUG, 20),),
754
- 2021: ((AUG, 9),),
755
- 2022: ((JUL, 30),),
756
- 2023: ((JUL, 19),),
757
- 2024: ((JUL, 7),),
758
- 2025: ((JUN, 26),),
759
- 2026: ((JUN, 16),),
760
- 2027: ((JUN, 6),),
761
- 2028: ((MAY, 25),),
762
- 2029: ((MAY, 14),),
763
- 2030: ((MAY, 3),),
764
- 2031: ((APR, 23),),
765
- 2032: ((APR, 11),),
766
- 2033: ((APR, 1),),
767
- 2034: ((MAR, 21),),
768
- 2035: ((MAR, 11),),
769
- 2036: ((FEB, 28),),
770
- 2037: ((FEB, 16),),
771
- 2038: ((FEB, 5),),
772
- 2039: ((JAN, 26),),
773
- 2040: ((JAN, 15),),
742
+ 2009: (DEC, 18),
743
+ 2010: (DEC, 7),
744
+ 2011: (NOV, 26),
745
+ 2012: (NOV, 15),
746
+ 2013: (NOV, 4),
747
+ 2014: (OCT, 25),
748
+ 2015: (OCT, 14),
749
+ 2016: (OCT, 2),
750
+ 2017: (SEP, 21),
751
+ 2018: (SEP, 11),
752
+ 2019: (AUG, 31),
753
+ 2020: (AUG, 20),
754
+ 2021: (AUG, 9),
755
+ 2022: (JUL, 30),
756
+ 2023: (JUL, 19),
757
+ 2024: (JUL, 7),
758
+ 2025: (JUN, 26),
759
+ 2026: (JUN, 16),
760
+ 2027: (JUN, 6),
761
+ 2028: (MAY, 25),
762
+ 2029: (MAY, 14),
763
+ 2030: (MAY, 3),
764
+ 2031: (APR, 23),
765
+ 2032: (APR, 11),
766
+ 2033: (APR, 1),
767
+ 2034: (MAR, 21),
768
+ 2035: (MAR, 11),
769
+ 2036: (FEB, 28),
770
+ 2037: (FEB, 16),
771
+ 2038: (FEB, 5),
772
+ 2039: (JAN, 26),
773
+ 2040: (JAN, 15),
774
774
  2041: ((JAN, 4), (DEC, 24)),
775
- 2042: ((DEC, 14),),
776
- 2043: ((DEC, 3),),
777
- 2044: ((NOV, 21),),
778
- 2045: ((NOV, 10),),
779
- 2046: ((OCT, 31),),
780
- 2047: ((OCT, 20),),
781
- 2048: ((OCT, 9),),
782
- 2049: ((SEP, 28),),
783
- 2050: ((SEP, 17),),
784
- 2051: ((SEP, 6),),
785
- 2052: ((AUG, 26),),
786
- 2053: ((AUG, 15),),
787
- 2054: ((AUG, 5),),
788
- 2055: ((JUL, 25),),
789
- 2056: ((JUL, 14),),
790
- 2057: ((JUL, 3),),
791
- 2058: ((JUN, 22),),
792
- 2059: ((JUN, 11),),
793
- 2060: ((MAY, 31),),
794
- 2061: ((MAY, 20),),
795
- 2062: ((MAY, 10),),
796
- 2063: ((APR, 30),),
797
- 2064: ((APR, 18),),
798
- 2065: ((APR, 7),),
799
- 2066: ((MAR, 27),),
800
- 2067: ((MAR, 16),),
801
- 2068: ((MAR, 5),),
802
- 2069: ((FEB, 23),),
803
- 2070: ((FEB, 12),),
804
- 2071: ((FEB, 1),),
805
- 2072: ((JAN, 21),),
775
+ 2042: (DEC, 14),
776
+ 2043: (DEC, 3),
777
+ 2044: (NOV, 21),
778
+ 2045: (NOV, 10),
779
+ 2046: (OCT, 31),
780
+ 2047: (OCT, 20),
781
+ 2048: (OCT, 9),
782
+ 2049: (SEP, 28),
783
+ 2050: (SEP, 17),
784
+ 2051: (SEP, 6),
785
+ 2052: (AUG, 26),
786
+ 2053: (AUG, 15),
787
+ 2054: (AUG, 5),
788
+ 2055: (JUL, 25),
789
+ 2056: (JUL, 14),
790
+ 2057: (JUL, 3),
791
+ 2058: (JUN, 22),
792
+ 2059: (JUN, 11),
793
+ 2060: (MAY, 31),
794
+ 2061: (MAY, 20),
795
+ 2062: (MAY, 10),
796
+ 2063: (APR, 30),
797
+ 2064: (APR, 18),
798
+ 2065: (APR, 7),
799
+ 2066: (MAR, 27),
800
+ 2067: (MAR, 16),
801
+ 2068: (MAR, 5),
802
+ 2069: (FEB, 23),
803
+ 2070: (FEB, 12),
804
+ 2071: (FEB, 1),
805
+ 2072: (JAN, 21),
806
806
  2073: ((JAN, 9), (DEC, 30)),
807
- 2074: ((DEC, 19),),
808
- 2075: ((DEC, 9),),
809
- 2076: ((NOV, 27),),
807
+ 2074: (DEC, 19),
808
+ 2075: (DEC, 9),
809
+ 2076: (NOV, 27),
810
810
  }
811
811
 
812
812
  ISRA_AND_MIRAJ_DATES = {
813
- 1925: ((FEB, 21),),
814
- 1926: ((FEB, 10),),
815
- 1927: ((JAN, 31),),
816
- 1928: ((JAN, 20),),
813
+ 1925: (FEB, 21),
814
+ 1926: (FEB, 10),
815
+ 1927: (JAN, 31),
816
+ 1928: (JAN, 20),
817
817
  1929: ((JAN, 8), (DEC, 28)),
818
- 1930: ((DEC, 17),),
819
- 1931: ((DEC, 7),),
820
- 1932: ((NOV, 26),),
821
- 1933: ((NOV, 15),),
822
- 1934: ((NOV, 5),),
823
- 1935: ((OCT, 25),),
824
- 1936: ((OCT, 13),),
825
- 1937: ((OCT, 2),),
826
- 1938: ((SEP, 21),),
827
- 1939: ((SEP, 11),),
828
- 1940: ((AUG, 31),),
829
- 1941: ((AUG, 19),),
830
- 1942: ((AUG, 9),),
831
- 1943: ((JUL, 29),),
832
- 1944: ((JUL, 17),),
833
- 1945: ((JUL, 7),),
834
- 1946: ((JUN, 26),),
835
- 1947: ((JUN, 16),),
836
- 1948: ((JUN, 4),),
837
- 1949: ((MAY, 24),),
838
- 1950: ((MAY, 14),),
839
- 1951: ((MAY, 4),),
840
- 1952: ((APR, 22),),
841
- 1953: ((APR, 12),),
842
- 1954: ((APR, 1),),
843
- 1955: ((MAR, 21),),
844
- 1956: ((MAR, 10),),
845
- 1957: ((FEB, 27),),
846
- 1958: ((FEB, 16),),
847
- 1959: ((FEB, 6),),
848
- 1960: ((JAN, 26),),
849
- 1961: ((JAN, 14),),
818
+ 1930: (DEC, 17),
819
+ 1931: (DEC, 7),
820
+ 1932: (NOV, 26),
821
+ 1933: (NOV, 15),
822
+ 1934: (NOV, 5),
823
+ 1935: (OCT, 25),
824
+ 1936: (OCT, 13),
825
+ 1937: (OCT, 2),
826
+ 1938: (SEP, 21),
827
+ 1939: (SEP, 11),
828
+ 1940: (AUG, 31),
829
+ 1941: (AUG, 19),
830
+ 1942: (AUG, 9),
831
+ 1943: (JUL, 29),
832
+ 1944: (JUL, 17),
833
+ 1945: (JUL, 7),
834
+ 1946: (JUN, 26),
835
+ 1947: (JUN, 16),
836
+ 1948: (JUN, 4),
837
+ 1949: (MAY, 24),
838
+ 1950: (MAY, 14),
839
+ 1951: (MAY, 4),
840
+ 1952: (APR, 22),
841
+ 1953: (APR, 12),
842
+ 1954: (APR, 1),
843
+ 1955: (MAR, 21),
844
+ 1956: (MAR, 10),
845
+ 1957: (FEB, 27),
846
+ 1958: (FEB, 16),
847
+ 1959: (FEB, 6),
848
+ 1960: (JAN, 26),
849
+ 1961: (JAN, 14),
850
850
  1962: ((JAN, 4), (DEC, 24)),
851
- 1963: ((DEC, 13),),
852
- 1964: ((DEC, 1),),
853
- 1965: ((NOV, 20),),
854
- 1966: ((NOV, 10),),
855
- 1967: ((OCT, 30),),
856
- 1968: ((OCT, 19),),
857
- 1969: ((OCT, 8),),
858
- 1970: ((SEP, 28),),
859
- 1971: ((SEP, 17),),
860
- 1972: ((SEP, 5),),
861
- 1973: ((AUG, 25),),
862
- 1974: ((AUG, 15),),
863
- 1975: ((AUG, 5),),
864
- 1976: ((JUL, 24),),
865
- 1977: ((JUL, 13),),
866
- 1978: ((JUL, 2),),
867
- 1979: ((JUN, 22),),
868
- 1980: ((JUN, 10),),
869
- 1981: ((MAY, 31),),
870
- 1982: ((MAY, 20),),
871
- 1983: ((MAY, 10),),
872
- 1984: ((APR, 28),),
873
- 1985: ((APR, 17),),
874
- 1986: ((APR, 6),),
875
- 1987: ((MAR, 27),),
876
- 1988: ((MAR, 15),),
877
- 1989: ((MAR, 5),),
878
- 1990: ((FEB, 22),),
879
- 1991: ((FEB, 11),),
880
- 1992: ((JAN, 31),),
881
- 1993: ((JAN, 20),),
851
+ 1963: (DEC, 13),
852
+ 1964: (DEC, 1),
853
+ 1965: (NOV, 20),
854
+ 1966: (NOV, 10),
855
+ 1967: (OCT, 30),
856
+ 1968: (OCT, 19),
857
+ 1969: (OCT, 8),
858
+ 1970: (SEP, 28),
859
+ 1971: (SEP, 17),
860
+ 1972: (SEP, 5),
861
+ 1973: (AUG, 25),
862
+ 1974: (AUG, 15),
863
+ 1975: (AUG, 5),
864
+ 1976: (JUL, 24),
865
+ 1977: (JUL, 13),
866
+ 1978: (JUL, 2),
867
+ 1979: (JUN, 22),
868
+ 1980: (JUN, 10),
869
+ 1981: (MAY, 31),
870
+ 1982: (MAY, 20),
871
+ 1983: (MAY, 10),
872
+ 1984: (APR, 28),
873
+ 1985: (APR, 17),
874
+ 1986: (APR, 6),
875
+ 1987: (MAR, 27),
876
+ 1988: (MAR, 15),
877
+ 1989: (MAR, 5),
878
+ 1990: (FEB, 22),
879
+ 1991: (FEB, 11),
880
+ 1992: (JAN, 31),
881
+ 1993: (JAN, 20),
882
882
  1994: ((JAN, 9), (DEC, 29)),
883
- 1995: ((DEC, 19),),
884
- 1996: ((DEC, 8),),
885
- 1997: ((NOV, 27),),
886
- 1998: ((NOV, 16),),
887
- 1999: ((NOV, 5),),
888
- 2000: ((OCT, 24),),
889
- 2001: ((OCT, 14),),
890
- 2002: ((OCT, 4),),
891
- 2003: ((SEP, 24),),
892
- 2004: ((SEP, 12),),
893
- 2005: ((SEP, 1),),
894
- 2006: ((AUG, 21),),
895
- 2007: ((AUG, 10),),
896
- 2008: ((JUL, 30),),
897
- 2009: ((JUL, 20),),
898
- 2010: ((JUL, 9),),
899
- 2011: ((JUN, 29),),
900
- 2012: ((JUN, 17),),
901
- 2013: ((JUN, 6),),
902
- 2014: ((MAY, 26),),
903
- 2015: ((MAY, 16),),
904
- 2016: ((MAY, 4),),
905
- 2017: ((APR, 24),),
906
- 2018: ((APR, 13),),
907
- 2019: ((APR, 3),),
908
- 2020: ((MAR, 22),),
909
- 2021: ((MAR, 11),),
910
- 2022: ((FEB, 28),),
911
- 2023: ((FEB, 18),),
912
- 2024: ((FEB, 8),),
913
- 2025: ((JAN, 27),),
914
- 2026: ((JAN, 16),),
883
+ 1995: (DEC, 19),
884
+ 1996: (DEC, 8),
885
+ 1997: (NOV, 27),
886
+ 1998: (NOV, 16),
887
+ 1999: (NOV, 5),
888
+ 2000: (OCT, 24),
889
+ 2001: (OCT, 14),
890
+ 2002: (OCT, 4),
891
+ 2003: (SEP, 24),
892
+ 2004: (SEP, 12),
893
+ 2005: (SEP, 1),
894
+ 2006: (AUG, 21),
895
+ 2007: (AUG, 10),
896
+ 2008: (JUL, 30),
897
+ 2009: (JUL, 20),
898
+ 2010: (JUL, 9),
899
+ 2011: (JUN, 29),
900
+ 2012: (JUN, 17),
901
+ 2013: (JUN, 6),
902
+ 2014: (MAY, 26),
903
+ 2015: (MAY, 16),
904
+ 2016: (MAY, 4),
905
+ 2017: (APR, 24),
906
+ 2018: (APR, 13),
907
+ 2019: (APR, 3),
908
+ 2020: (MAR, 22),
909
+ 2021: (MAR, 11),
910
+ 2022: (FEB, 28),
911
+ 2023: (FEB, 18),
912
+ 2024: (FEB, 8),
913
+ 2025: (JAN, 27),
914
+ 2026: (JAN, 16),
915
915
  2027: ((JAN, 5), (DEC, 25)),
916
- 2028: ((DEC, 14),),
917
- 2029: ((DEC, 3),),
918
- 2030: ((NOV, 23),),
919
- 2031: ((NOV, 12),),
920
- 2032: ((NOV, 1),),
921
- 2033: ((OCT, 21),),
922
- 2034: ((OCT, 10),),
923
- 2035: ((SEP, 29),),
924
- 2036: ((SEP, 18),),
925
- 2037: ((SEP, 7),),
926
- 2038: ((AUG, 28),),
927
- 2039: ((AUG, 17),),
928
- 2040: ((AUG, 5),),
929
- 2041: ((JUL, 25),),
930
- 2042: ((JUL, 15),),
931
- 2043: ((JUL, 4),),
932
- 2044: ((JUN, 23),),
933
- 2045: ((JUN, 13),),
934
- 2046: ((JUN, 2),),
935
- 2047: ((MAY, 22),),
936
- 2048: ((MAY, 10),),
937
- 2049: ((APR, 29),),
938
- 2050: ((APR, 19),),
939
- 2051: ((APR, 9),),
940
- 2052: ((MAR, 28),),
941
- 2053: ((MAR, 18),),
942
- 2054: ((MAR, 7),),
943
- 2055: ((FEB, 24),),
944
- 2056: ((FEB, 13),),
945
- 2057: ((FEB, 1),),
946
- 2058: ((JAN, 22),),
947
- 2059: ((JAN, 12),),
916
+ 2028: (DEC, 14),
917
+ 2029: (DEC, 3),
918
+ 2030: (NOV, 23),
919
+ 2031: (NOV, 12),
920
+ 2032: (NOV, 1),
921
+ 2033: (OCT, 21),
922
+ 2034: (OCT, 10),
923
+ 2035: (SEP, 29),
924
+ 2036: (SEP, 18),
925
+ 2037: (SEP, 7),
926
+ 2038: (AUG, 28),
927
+ 2039: (AUG, 17),
928
+ 2040: (AUG, 5),
929
+ 2041: (JUL, 25),
930
+ 2042: (JUL, 15),
931
+ 2043: (JUL, 4),
932
+ 2044: (JUN, 23),
933
+ 2045: (JUN, 13),
934
+ 2046: (JUN, 2),
935
+ 2047: (MAY, 22),
936
+ 2048: (MAY, 10),
937
+ 2049: (APR, 29),
938
+ 2050: (APR, 19),
939
+ 2051: (APR, 9),
940
+ 2052: (MAR, 28),
941
+ 2053: (MAR, 18),
942
+ 2054: (MAR, 7),
943
+ 2055: (FEB, 24),
944
+ 2056: (FEB, 13),
945
+ 2057: (FEB, 1),
946
+ 2058: (JAN, 22),
947
+ 2059: (JAN, 12),
948
948
  2060: ((JAN, 1), (DEC, 20)),
949
- 2061: ((DEC, 9),),
950
- 2062: ((NOV, 29),),
951
- 2063: ((NOV, 18),),
952
- 2064: ((NOV, 7),),
953
- 2065: ((OCT, 27),),
954
- 2066: ((OCT, 17),),
955
- 2067: ((OCT, 6),),
956
- 2068: ((SEP, 24),),
957
- 2069: ((SEP, 13),),
958
- 2070: ((SEP, 3),),
959
- 2071: ((AUG, 23),),
960
- 2072: ((AUG, 12),),
961
- 2073: ((AUG, 1),),
962
- 2074: ((JUL, 22),),
963
- 2075: ((JUL, 11),),
964
- 2076: ((JUN, 29),),
965
- 2077: ((JUN, 18),),
949
+ 2061: (DEC, 9),
950
+ 2062: (NOV, 29),
951
+ 2063: (NOV, 18),
952
+ 2064: (NOV, 7),
953
+ 2065: (OCT, 27),
954
+ 2066: (OCT, 17),
955
+ 2067: (OCT, 6),
956
+ 2068: (SEP, 24),
957
+ 2069: (SEP, 13),
958
+ 2070: (SEP, 3),
959
+ 2071: (AUG, 23),
960
+ 2072: (AUG, 12),
961
+ 2073: (AUG, 1),
962
+ 2074: (JUL, 22),
963
+ 2075: (JUL, 11),
964
+ 2076: (JUN, 29),
965
+ 2077: (JUN, 18),
966
966
  }
967
967
 
968
968
  MAWLID_DATES = {
969
- 1924: ((OCT, 10),),
970
- 1925: ((SEP, 30),),
971
- 1926: ((SEP, 19),),
972
- 1927: ((SEP, 8),),
973
- 1928: ((AUG, 27),),
974
- 1929: ((AUG, 17),),
975
- 1930: ((AUG, 6),),
976
- 1931: ((JUL, 28),),
977
- 1932: ((JUL, 16),),
978
- 1933: ((JUL, 5),),
979
- 1934: ((JUN, 24),),
980
- 1935: ((JUN, 14),),
981
- 1936: ((JUN, 2),),
982
- 1937: ((MAY, 22),),
983
- 1938: ((MAY, 11),),
984
- 1939: ((MAY, 2),),
985
- 1940: ((APR, 20),),
986
- 1941: ((APR, 8),),
987
- 1942: ((MAR, 29),),
988
- 1943: ((MAR, 18),),
989
- 1944: ((MAR, 6),),
990
- 1945: ((FEB, 24),),
991
- 1946: ((FEB, 13),),
992
- 1947: ((FEB, 3),),
993
- 1948: ((JAN, 23),),
994
- 1949: ((JAN, 11),),
969
+ 1924: (OCT, 10),
970
+ 1925: (SEP, 30),
971
+ 1926: (SEP, 19),
972
+ 1927: (SEP, 8),
973
+ 1928: (AUG, 27),
974
+ 1929: (AUG, 17),
975
+ 1930: (AUG, 6),
976
+ 1931: (JUL, 28),
977
+ 1932: (JUL, 16),
978
+ 1933: (JUL, 5),
979
+ 1934: (JUN, 24),
980
+ 1935: (JUN, 14),
981
+ 1936: (JUN, 2),
982
+ 1937: (MAY, 22),
983
+ 1938: (MAY, 11),
984
+ 1939: (MAY, 2),
985
+ 1940: (APR, 20),
986
+ 1941: (APR, 8),
987
+ 1942: (MAR, 29),
988
+ 1943: (MAR, 18),
989
+ 1944: (MAR, 6),
990
+ 1945: (FEB, 24),
991
+ 1946: (FEB, 13),
992
+ 1947: (FEB, 3),
993
+ 1948: (JAN, 23),
994
+ 1949: (JAN, 11),
995
995
  1950: ((JAN, 1), (DEC, 22)),
996
- 1951: ((DEC, 11),),
997
- 1952: ((NOV, 30),),
998
- 1953: ((NOV, 19),),
999
- 1954: ((NOV, 8),),
1000
- 1955: ((OCT, 29),),
1001
- 1956: ((OCT, 17),),
1002
- 1957: ((OCT, 6),),
1003
- 1958: ((SEP, 26),),
1004
- 1959: ((SEP, 15),),
1005
- 1960: ((SEP, 3),),
1006
- 1961: ((AUG, 23),),
1007
- 1962: ((AUG, 12),),
1008
- 1963: ((AUG, 2),),
1009
- 1964: ((JUL, 21),),
1010
- 1965: ((JUL, 10),),
1011
- 1966: ((JUL, 1),),
1012
- 1967: ((JUN, 19),),
1013
- 1968: ((JUN, 8),),
1014
- 1969: ((MAY, 28),),
1015
- 1970: ((MAY, 18),),
1016
- 1971: ((MAY, 7),),
1017
- 1972: ((APR, 25),),
1018
- 1973: ((APR, 15),),
1019
- 1974: ((APR, 4),),
1020
- 1975: ((MAR, 24),),
1021
- 1976: ((MAR, 12),),
1022
- 1977: ((MAR, 2),),
1023
- 1978: ((FEB, 19),),
1024
- 1979: ((FEB, 9),),
1025
- 1980: ((JAN, 30),),
1026
- 1981: ((JAN, 18),),
996
+ 1951: (DEC, 11),
997
+ 1952: (NOV, 30),
998
+ 1953: (NOV, 19),
999
+ 1954: (NOV, 8),
1000
+ 1955: (OCT, 29),
1001
+ 1956: (OCT, 17),
1002
+ 1957: (OCT, 6),
1003
+ 1958: (SEP, 26),
1004
+ 1959: (SEP, 15),
1005
+ 1960: (SEP, 3),
1006
+ 1961: (AUG, 23),
1007
+ 1962: (AUG, 12),
1008
+ 1963: (AUG, 2),
1009
+ 1964: (JUL, 21),
1010
+ 1965: (JUL, 10),
1011
+ 1966: (JUL, 1),
1012
+ 1967: (JUN, 19),
1013
+ 1968: (JUN, 8),
1014
+ 1969: (MAY, 28),
1015
+ 1970: (MAY, 18),
1016
+ 1971: (MAY, 7),
1017
+ 1972: (APR, 25),
1018
+ 1973: (APR, 15),
1019
+ 1974: (APR, 4),
1020
+ 1975: (MAR, 24),
1021
+ 1976: (MAR, 12),
1022
+ 1977: (MAR, 2),
1023
+ 1978: (FEB, 19),
1024
+ 1979: (FEB, 9),
1025
+ 1980: (JAN, 30),
1026
+ 1981: (JAN, 18),
1027
1027
  1982: ((JAN, 7), (DEC, 27)),
1028
- 1983: ((DEC, 16),),
1029
- 1984: ((DEC, 4),),
1030
- 1985: ((NOV, 24),),
1031
- 1986: ((NOV, 14),),
1032
- 1987: ((NOV, 3),),
1033
- 1988: ((OCT, 22),),
1034
- 1989: ((OCT, 11),),
1035
- 1990: ((OCT, 1),),
1036
- 1991: ((SEP, 20),),
1037
- 1992: ((SEP, 9),),
1038
- 1993: ((AUG, 29),),
1039
- 1994: ((AUG, 19),),
1040
- 1995: ((AUG, 8),),
1041
- 1996: ((JUL, 27),),
1042
- 1997: ((JUL, 16),),
1043
- 1998: ((JUL, 6),),
1044
- 1999: ((JUN, 26),),
1045
- 2000: ((JUN, 14),),
1046
- 2001: ((JUN, 4),),
1047
- 2002: ((MAY, 24),),
1048
- 2003: ((MAY, 13),),
1049
- 2004: ((MAY, 1),),
1050
- 2005: ((APR, 21),),
1051
- 2006: ((APR, 10),),
1052
- 2007: ((MAR, 31),),
1053
- 2008: ((MAR, 20),),
1054
- 2009: ((MAR, 9),),
1055
- 2010: ((FEB, 26),),
1056
- 2011: ((FEB, 15),),
1057
- 2012: ((FEB, 4),),
1058
- 2013: ((JAN, 24),),
1059
- 2014: ((JAN, 13),),
1028
+ 1983: (DEC, 16),
1029
+ 1984: (DEC, 4),
1030
+ 1985: (NOV, 24),
1031
+ 1986: (NOV, 14),
1032
+ 1987: (NOV, 3),
1033
+ 1988: (OCT, 22),
1034
+ 1989: (OCT, 11),
1035
+ 1990: (OCT, 1),
1036
+ 1991: (SEP, 20),
1037
+ 1992: (SEP, 9),
1038
+ 1993: (AUG, 29),
1039
+ 1994: (AUG, 19),
1040
+ 1995: (AUG, 8),
1041
+ 1996: (JUL, 27),
1042
+ 1997: (JUL, 16),
1043
+ 1998: (JUL, 6),
1044
+ 1999: (JUN, 26),
1045
+ 2000: (JUN, 14),
1046
+ 2001: (JUN, 4),
1047
+ 2002: (MAY, 24),
1048
+ 2003: (MAY, 13),
1049
+ 2004: (MAY, 1),
1050
+ 2005: (APR, 21),
1051
+ 2006: (APR, 10),
1052
+ 2007: (MAR, 31),
1053
+ 2008: (MAR, 20),
1054
+ 2009: (MAR, 9),
1055
+ 2010: (FEB, 26),
1056
+ 2011: (FEB, 15),
1057
+ 2012: (FEB, 4),
1058
+ 2013: (JAN, 24),
1059
+ 2014: (JAN, 13),
1060
1060
  2015: ((JAN, 3), (DEC, 23)),
1061
- 2016: ((DEC, 11),),
1062
- 2017: ((NOV, 30),),
1063
- 2018: ((NOV, 20),),
1064
- 2019: ((NOV, 9),),
1065
- 2020: ((OCT, 29),),
1066
- 2021: ((OCT, 18),),
1067
- 2022: ((OCT, 8),),
1068
- 2023: ((SEP, 27),),
1069
- 2024: ((SEP, 15),),
1070
- 2025: ((SEP, 4),),
1071
- 2026: ((AUG, 25),),
1072
- 2027: ((AUG, 14),),
1073
- 2028: ((AUG, 3),),
1074
- 2029: ((JUL, 24),),
1075
- 2030: ((JUL, 13),),
1076
- 2031: ((JUL, 2),),
1077
- 2032: ((JUN, 20),),
1078
- 2033: ((JUN, 9),),
1079
- 2034: ((MAY, 30),),
1080
- 2035: ((MAY, 20),),
1081
- 2036: ((MAY, 8),),
1082
- 2037: ((APR, 28),),
1083
- 2038: ((APR, 17),),
1084
- 2039: ((APR, 6),),
1085
- 2040: ((MAR, 25),),
1086
- 2041: ((MAR, 15),),
1087
- 2042: ((MAR, 4),),
1088
- 2043: ((FEB, 22),),
1089
- 2044: ((FEB, 11),),
1090
- 2045: ((JAN, 30),),
1091
- 2046: ((JAN, 19),),
1061
+ 2016: (DEC, 11),
1062
+ 2017: (NOV, 30),
1063
+ 2018: (NOV, 20),
1064
+ 2019: (NOV, 9),
1065
+ 2020: (OCT, 29),
1066
+ 2021: (OCT, 18),
1067
+ 2022: (OCT, 8),
1068
+ 2023: (SEP, 27),
1069
+ 2024: (SEP, 15),
1070
+ 2025: (SEP, 4),
1071
+ 2026: (AUG, 25),
1072
+ 2027: (AUG, 14),
1073
+ 2028: (AUG, 3),
1074
+ 2029: (JUL, 24),
1075
+ 2030: (JUL, 13),
1076
+ 2031: (JUL, 2),
1077
+ 2032: (JUN, 20),
1078
+ 2033: (JUN, 9),
1079
+ 2034: (MAY, 30),
1080
+ 2035: (MAY, 20),
1081
+ 2036: (MAY, 8),
1082
+ 2037: (APR, 28),
1083
+ 2038: (APR, 17),
1084
+ 2039: (APR, 6),
1085
+ 2040: (MAR, 25),
1086
+ 2041: (MAR, 15),
1087
+ 2042: (MAR, 4),
1088
+ 2043: (FEB, 22),
1089
+ 2044: (FEB, 11),
1090
+ 2045: (JAN, 30),
1091
+ 2046: (JAN, 19),
1092
1092
  2047: ((JAN, 8), (DEC, 29)),
1093
- 2048: ((DEC, 18),),
1094
- 2049: ((DEC, 7),),
1095
- 2050: ((NOV, 26),),
1096
- 2051: ((NOV, 16),),
1097
- 2052: ((NOV, 4),),
1098
- 2053: ((OCT, 24),),
1099
- 2054: ((OCT, 13),),
1100
- 2055: ((OCT, 3),),
1101
- 2056: ((SEP, 22),),
1102
- 2057: ((SEP, 11),),
1103
- 2058: ((AUG, 31),),
1104
- 2059: ((AUG, 20),),
1105
- 2060: ((AUG, 8),),
1106
- 2061: ((JUL, 29),),
1107
- 2062: ((JUL, 19),),
1108
- 2063: ((JUL, 8),),
1109
- 2064: ((JUN, 27),),
1110
- 2065: ((JUN, 16),),
1111
- 2066: ((JUN, 5),),
1112
- 2067: ((MAY, 25),),
1113
- 2068: ((MAY, 14),),
1114
- 2069: ((MAY, 3),),
1115
- 2070: ((APR, 23),),
1116
- 2071: ((APR, 13),),
1117
- 2072: ((APR, 1),),
1118
- 2073: ((MAR, 21),),
1119
- 2074: ((MAR, 10),),
1120
- 2075: ((FEB, 27),),
1121
- 2076: ((FEB, 17),),
1122
- 2077: ((FEB, 6),),
1093
+ 2048: (DEC, 18),
1094
+ 2049: (DEC, 7),
1095
+ 2050: (NOV, 26),
1096
+ 2051: (NOV, 16),
1097
+ 2052: (NOV, 4),
1098
+ 2053: (OCT, 24),
1099
+ 2054: (OCT, 13),
1100
+ 2055: (OCT, 3),
1101
+ 2056: (SEP, 22),
1102
+ 2057: (SEP, 11),
1103
+ 2058: (AUG, 31),
1104
+ 2059: (AUG, 20),
1105
+ 2060: (AUG, 8),
1106
+ 2061: (JUL, 29),
1107
+ 2062: (JUL, 19),
1108
+ 2063: (JUL, 8),
1109
+ 2064: (JUN, 27),
1110
+ 2065: (JUN, 16),
1111
+ 2066: (JUN, 5),
1112
+ 2067: (MAY, 25),
1113
+ 2068: (MAY, 14),
1114
+ 2069: (MAY, 3),
1115
+ 2070: (APR, 23),
1116
+ 2071: (APR, 13),
1117
+ 2072: (APR, 1),
1118
+ 2073: (MAR, 21),
1119
+ 2074: (MAR, 10),
1120
+ 2075: (FEB, 27),
1121
+ 2076: (FEB, 17),
1122
+ 2077: (FEB, 6),
1123
1123
  }
1124
1124
 
1125
1125
  NUZUL_AL_QURAN_DATES = {
1126
- 1925: ((APR, 12),),
1127
- 1926: ((MAR, 31),),
1128
- 1927: ((MAR, 20),),
1129
- 1928: ((MAR, 9),),
1130
- 1929: ((FEB, 26),),
1131
- 1930: ((FEB, 16),),
1132
- 1931: ((FEB, 5),),
1133
- 1932: ((JAN, 25),),
1134
- 1933: ((JAN, 13),),
1126
+ 1925: (APR, 12),
1127
+ 1926: (MAR, 31),
1128
+ 1927: (MAR, 20),
1129
+ 1928: (MAR, 9),
1130
+ 1929: (FEB, 26),
1131
+ 1930: (FEB, 16),
1132
+ 1931: (FEB, 5),
1133
+ 1932: (JAN, 25),
1134
+ 1933: (JAN, 13),
1135
1135
  1934: ((JAN, 3), (DEC, 24)),
1136
- 1935: ((DEC, 13),),
1137
- 1936: ((DEC, 1),),
1138
- 1937: ((NOV, 21),),
1139
- 1938: ((NOV, 9),),
1140
- 1939: ((OCT, 30),),
1141
- 1940: ((OCT, 19),),
1142
- 1941: ((OCT, 7),),
1143
- 1942: ((SEP, 27),),
1144
- 1943: ((SEP, 16),),
1145
- 1944: ((SEP, 4),),
1146
- 1945: ((AUG, 24),),
1147
- 1946: ((AUG, 14),),
1148
- 1947: ((AUG, 4),),
1149
- 1948: ((JUL, 23),),
1150
- 1949: ((JUL, 12),),
1151
- 1950: ((JUL, 3),),
1152
- 1951: ((JUN, 22),),
1153
- 1952: ((JUN, 10),),
1154
- 1953: ((MAY, 30),),
1155
- 1954: ((MAY, 20),),
1156
- 1955: ((MAY, 10),),
1157
- 1956: ((APR, 28),),
1158
- 1957: ((APR, 17),),
1159
- 1958: ((APR, 6),),
1160
- 1959: ((MAR, 27),),
1161
- 1960: ((MAR, 15),),
1162
- 1961: ((MAR, 4),),
1163
- 1962: ((FEB, 21),),
1164
- 1963: ((FEB, 11),),
1165
- 1964: ((JAN, 31),),
1166
- 1965: ((JAN, 19),),
1136
+ 1935: (DEC, 13),
1137
+ 1936: (DEC, 1),
1138
+ 1937: (NOV, 21),
1139
+ 1938: (NOV, 9),
1140
+ 1939: (OCT, 30),
1141
+ 1940: (OCT, 19),
1142
+ 1941: (OCT, 7),
1143
+ 1942: (SEP, 27),
1144
+ 1943: (SEP, 16),
1145
+ 1944: (SEP, 4),
1146
+ 1945: (AUG, 24),
1147
+ 1946: (AUG, 14),
1148
+ 1947: (AUG, 4),
1149
+ 1948: (JUL, 23),
1150
+ 1949: (JUL, 12),
1151
+ 1950: (JUL, 3),
1152
+ 1951: (JUN, 22),
1153
+ 1952: (JUN, 10),
1154
+ 1953: (MAY, 30),
1155
+ 1954: (MAY, 20),
1156
+ 1955: (MAY, 10),
1157
+ 1956: (APR, 28),
1158
+ 1957: (APR, 17),
1159
+ 1958: (APR, 6),
1160
+ 1959: (MAR, 27),
1161
+ 1960: (MAR, 15),
1162
+ 1961: (MAR, 4),
1163
+ 1962: (FEB, 21),
1164
+ 1963: (FEB, 11),
1165
+ 1964: (JAN, 31),
1166
+ 1965: (JAN, 19),
1167
1167
  1966: ((JAN, 8), (DEC, 29)),
1168
- 1967: ((DEC, 18),),
1169
- 1968: ((DEC, 7),),
1170
- 1969: ((NOV, 26),),
1171
- 1970: ((NOV, 17),),
1172
- 1971: ((NOV, 5),),
1173
- 1972: ((OCT, 24),),
1174
- 1973: ((OCT, 13),),
1175
- 1974: ((OCT, 3),),
1176
- 1975: ((SEP, 22),),
1177
- 1976: ((SEP, 11),),
1178
- 1977: ((AUG, 31),),
1179
- 1978: ((AUG, 21),),
1180
- 1979: ((AUG, 10),),
1181
- 1980: ((JUL, 29),),
1182
- 1981: ((JUL, 18),),
1183
- 1982: ((JUL, 8),),
1184
- 1983: ((JUN, 28),),
1185
- 1984: ((JUN, 16),),
1186
- 1985: ((JUN, 5),),
1187
- 1986: ((MAY, 25),),
1188
- 1987: ((MAY, 15),),
1189
- 1988: ((MAY, 3),),
1190
- 1989: ((APR, 23),),
1191
- 1990: ((APR, 12),),
1192
- 1991: ((APR, 2),),
1193
- 1992: ((MAR, 21),),
1194
- 1993: ((MAR, 10),),
1195
- 1994: ((FEB, 27),),
1196
- 1995: ((FEB, 16),),
1197
- 1996: ((FEB, 6),),
1198
- 1997: ((JAN, 26),),
1199
- 1998: ((JAN, 15),),
1168
+ 1967: (DEC, 18),
1169
+ 1968: (DEC, 7),
1170
+ 1969: (NOV, 26),
1171
+ 1970: (NOV, 17),
1172
+ 1971: (NOV, 5),
1173
+ 1972: (OCT, 24),
1174
+ 1973: (OCT, 13),
1175
+ 1974: (OCT, 3),
1176
+ 1975: (SEP, 22),
1177
+ 1976: (SEP, 11),
1178
+ 1977: (AUG, 31),
1179
+ 1978: (AUG, 21),
1180
+ 1979: (AUG, 10),
1181
+ 1980: (JUL, 29),
1182
+ 1981: (JUL, 18),
1183
+ 1982: (JUL, 8),
1184
+ 1983: (JUN, 28),
1185
+ 1984: (JUN, 16),
1186
+ 1985: (JUN, 5),
1187
+ 1986: (MAY, 25),
1188
+ 1987: (MAY, 15),
1189
+ 1988: (MAY, 3),
1190
+ 1989: (APR, 23),
1191
+ 1990: (APR, 12),
1192
+ 1991: (APR, 2),
1193
+ 1992: (MAR, 21),
1194
+ 1993: (MAR, 10),
1195
+ 1994: (FEB, 27),
1196
+ 1995: (FEB, 16),
1197
+ 1996: (FEB, 6),
1198
+ 1997: (JAN, 26),
1199
+ 1998: (JAN, 15),
1200
1200
  1999: ((JAN, 4), (DEC, 25)),
1201
- 2000: ((DEC, 13),),
1202
- 2001: ((DEC, 2),),
1203
- 2002: ((NOV, 22),),
1204
- 2003: ((NOV, 11),),
1205
- 2004: ((OCT, 31),),
1206
- 2005: ((OCT, 20),),
1207
- 2006: ((OCT, 10),),
1208
- 2007: ((SEP, 29),),
1209
- 2008: ((SEP, 17),),
1210
- 2009: ((SEP, 7),),
1211
- 2010: ((AUG, 27),),
1212
- 2011: ((AUG, 17),),
1213
- 2012: ((AUG, 5),),
1214
- 2013: ((JUL, 25),),
1215
- 2014: ((JUL, 14),),
1216
- 2015: ((JUL, 4),),
1217
- 2016: ((JUN, 22),),
1218
- 2017: ((JUN, 12),),
1219
- 2018: ((JUN, 1),),
1220
- 2019: ((MAY, 22),),
1221
- 2020: ((MAY, 10),),
1222
- 2021: ((APR, 29),),
1223
- 2022: ((APR, 18),),
1224
- 2023: ((APR, 8),),
1225
- 2024: ((MAR, 27),),
1226
- 2025: ((MAR, 17),),
1227
- 2026: ((MAR, 6),),
1228
- 2027: ((FEB, 24),),
1229
- 2028: ((FEB, 13),),
1230
- 2029: ((FEB, 1),),
1231
- 2030: ((JAN, 21),),
1201
+ 2000: (DEC, 13),
1202
+ 2001: (DEC, 2),
1203
+ 2002: (NOV, 22),
1204
+ 2003: (NOV, 11),
1205
+ 2004: (OCT, 31),
1206
+ 2005: (OCT, 20),
1207
+ 2006: (OCT, 10),
1208
+ 2007: (SEP, 29),
1209
+ 2008: (SEP, 17),
1210
+ 2009: (SEP, 7),
1211
+ 2010: (AUG, 27),
1212
+ 2011: (AUG, 17),
1213
+ 2012: (AUG, 5),
1214
+ 2013: (JUL, 25),
1215
+ 2014: (JUL, 14),
1216
+ 2015: (JUL, 4),
1217
+ 2016: (JUN, 22),
1218
+ 2017: (JUN, 12),
1219
+ 2018: (JUN, 1),
1220
+ 2019: (MAY, 22),
1221
+ 2020: (MAY, 10),
1222
+ 2021: (APR, 29),
1223
+ 2022: (APR, 18),
1224
+ 2023: (APR, 8),
1225
+ 2024: (MAR, 27),
1226
+ 2025: (MAR, 17),
1227
+ 2026: (MAR, 6),
1228
+ 2027: (FEB, 24),
1229
+ 2028: (FEB, 13),
1230
+ 2029: (FEB, 1),
1231
+ 2030: (JAN, 21),
1232
1232
  2031: ((JAN, 11), (DEC, 31)),
1233
- 2032: ((DEC, 20),),
1234
- 2033: ((DEC, 9),),
1235
- 2034: ((NOV, 28),),
1236
- 2035: ((NOV, 17),),
1237
- 2036: ((NOV, 5),),
1238
- 2037: ((OCT, 26),),
1239
- 2038: ((OCT, 16),),
1240
- 2039: ((OCT, 5),),
1241
- 2040: ((SEP, 23),),
1242
- 2041: ((SEP, 13),),
1243
- 2042: ((SEP, 2),),
1244
- 2043: ((AUG, 22),),
1245
- 2044: ((AUG, 11),),
1246
- 2045: ((JUL, 31),),
1247
- 2046: ((JUL, 21),),
1248
- 2047: ((JUL, 10),),
1249
- 2048: ((JUN, 28),),
1250
- 2049: ((JUN, 18),),
1251
- 2050: ((JUN, 7),),
1252
- 2051: ((MAY, 27),),
1253
- 2052: ((MAY, 16),),
1254
- 2053: ((MAY, 6),),
1255
- 2054: ((APR, 25),),
1256
- 2055: ((APR, 14),),
1257
- 2056: ((APR, 2),),
1258
- 2057: ((MAR, 22),),
1259
- 2058: ((MAR, 12),),
1260
- 2059: ((MAR, 2),),
1261
- 2060: ((FEB, 19),),
1262
- 2061: ((FEB, 8),),
1263
- 2062: ((JAN, 28),),
1264
- 2063: ((JAN, 17),),
1233
+ 2032: (DEC, 20),
1234
+ 2033: (DEC, 9),
1235
+ 2034: (NOV, 28),
1236
+ 2035: (NOV, 17),
1237
+ 2036: (NOV, 5),
1238
+ 2037: (OCT, 26),
1239
+ 2038: (OCT, 16),
1240
+ 2039: (OCT, 5),
1241
+ 2040: (SEP, 23),
1242
+ 2041: (SEP, 13),
1243
+ 2042: (SEP, 2),
1244
+ 2043: (AUG, 22),
1245
+ 2044: (AUG, 11),
1246
+ 2045: (JUL, 31),
1247
+ 2046: (JUL, 21),
1248
+ 2047: (JUL, 10),
1249
+ 2048: (JUN, 28),
1250
+ 2049: (JUN, 18),
1251
+ 2050: (JUN, 7),
1252
+ 2051: (MAY, 27),
1253
+ 2052: (MAY, 16),
1254
+ 2053: (MAY, 6),
1255
+ 2054: (APR, 25),
1256
+ 2055: (APR, 14),
1257
+ 2056: (APR, 2),
1258
+ 2057: (MAR, 22),
1259
+ 2058: (MAR, 12),
1260
+ 2059: (MAR, 2),
1261
+ 2060: (FEB, 19),
1262
+ 2061: (FEB, 8),
1263
+ 2062: (JAN, 28),
1264
+ 2063: (JAN, 17),
1265
1265
  2064: ((JAN, 6), (DEC, 25)),
1266
- 2065: ((DEC, 15),),
1267
- 2066: ((DEC, 5),),
1268
- 2067: ((NOV, 24),),
1269
- 2068: ((NOV, 12),),
1270
- 2069: ((NOV, 1),),
1271
- 2070: ((OCT, 21),),
1272
- 2071: ((OCT, 11),),
1273
- 2072: ((SEP, 29),),
1274
- 2073: ((SEP, 19),),
1275
- 2074: ((SEP, 8),),
1276
- 2075: ((AUG, 29),),
1277
- 2076: ((AUG, 17),),
1278
- 2077: ((AUG, 6),),
1266
+ 2065: (DEC, 15),
1267
+ 2066: (DEC, 5),
1268
+ 2067: (NOV, 24),
1269
+ 2068: (NOV, 12),
1270
+ 2069: (NOV, 1),
1271
+ 2070: (OCT, 21),
1272
+ 2071: (OCT, 11),
1273
+ 2072: (SEP, 29),
1274
+ 2073: (SEP, 19),
1275
+ 2074: (SEP, 8),
1276
+ 2075: (AUG, 29),
1277
+ 2076: (AUG, 17),
1278
+ 2077: (AUG, 6),
1279
1279
  }
1280
1280
 
1281
1281
  RAMADAN_BEGINNING_DATES = {
1282
- 1925: ((MAR, 27),),
1283
- 1926: ((MAR, 15),),
1284
- 1927: ((MAR, 4),),
1285
- 1928: ((FEB, 22),),
1286
- 1929: ((FEB, 10),),
1287
- 1930: ((JAN, 31),),
1288
- 1931: ((JAN, 20),),
1282
+ 1925: (MAR, 27),
1283
+ 1926: (MAR, 15),
1284
+ 1927: (MAR, 4),
1285
+ 1928: (FEB, 22),
1286
+ 1929: (FEB, 10),
1287
+ 1930: (JAN, 31),
1288
+ 1931: (JAN, 20),
1289
1289
  1932: ((JAN, 9), (DEC, 28)),
1290
- 1933: ((DEC, 18),),
1291
- 1934: ((DEC, 8),),
1292
- 1935: ((NOV, 27),),
1293
- 1936: ((NOV, 15),),
1294
- 1937: ((NOV, 5),),
1295
- 1938: ((OCT, 24),),
1296
- 1939: ((OCT, 14),),
1297
- 1940: ((OCT, 3),),
1298
- 1941: ((SEP, 21),),
1299
- 1942: ((SEP, 11),),
1300
- 1943: ((AUG, 31),),
1301
- 1944: ((AUG, 19),),
1302
- 1945: ((AUG, 8),),
1303
- 1946: ((JUL, 29),),
1304
- 1947: ((JUL, 19),),
1305
- 1948: ((JUL, 7),),
1306
- 1949: ((JUN, 26),),
1307
- 1950: ((JUN, 17),),
1308
- 1951: ((JUN, 6),),
1309
- 1952: ((MAY, 25),),
1310
- 1953: ((MAY, 14),),
1311
- 1954: ((MAY, 4),),
1312
- 1955: ((APR, 24),),
1313
- 1956: ((APR, 12),),
1314
- 1957: ((APR, 1),),
1315
- 1958: ((MAR, 21),),
1316
- 1959: ((MAR, 11),),
1317
- 1960: ((FEB, 28),),
1318
- 1961: ((FEB, 16),),
1319
- 1962: ((FEB, 5),),
1320
- 1963: ((JAN, 26),),
1321
- 1964: ((JAN, 15),),
1290
+ 1933: (DEC, 18),
1291
+ 1934: (DEC, 8),
1292
+ 1935: (NOV, 27),
1293
+ 1936: (NOV, 15),
1294
+ 1937: (NOV, 5),
1295
+ 1938: (OCT, 24),
1296
+ 1939: (OCT, 14),
1297
+ 1940: (OCT, 3),
1298
+ 1941: (SEP, 21),
1299
+ 1942: (SEP, 11),
1300
+ 1943: (AUG, 31),
1301
+ 1944: (AUG, 19),
1302
+ 1945: (AUG, 8),
1303
+ 1946: (JUL, 29),
1304
+ 1947: (JUL, 19),
1305
+ 1948: (JUL, 7),
1306
+ 1949: (JUN, 26),
1307
+ 1950: (JUN, 17),
1308
+ 1951: (JUN, 6),
1309
+ 1952: (MAY, 25),
1310
+ 1953: (MAY, 14),
1311
+ 1954: (MAY, 4),
1312
+ 1955: (APR, 24),
1313
+ 1956: (APR, 12),
1314
+ 1957: (APR, 1),
1315
+ 1958: (MAR, 21),
1316
+ 1959: (MAR, 11),
1317
+ 1960: (FEB, 28),
1318
+ 1961: (FEB, 16),
1319
+ 1962: (FEB, 5),
1320
+ 1963: (JAN, 26),
1321
+ 1964: (JAN, 15),
1322
1322
  1965: ((JAN, 3), (DEC, 23)),
1323
- 1966: ((DEC, 13),),
1324
- 1967: ((DEC, 2),),
1325
- 1968: ((NOV, 21),),
1326
- 1969: ((NOV, 10),),
1327
- 1970: ((NOV, 1),),
1328
- 1971: ((OCT, 20),),
1329
- 1972: ((OCT, 8),),
1330
- 1973: ((SEP, 27),),
1331
- 1974: ((SEP, 17),),
1332
- 1975: ((SEP, 6),),
1333
- 1976: ((AUG, 26),),
1334
- 1977: ((AUG, 15),),
1335
- 1978: ((AUG, 5),),
1336
- 1979: ((JUL, 25),),
1337
- 1980: ((JUL, 13),),
1338
- 1981: ((JUL, 2),),
1339
- 1982: ((JUN, 22),),
1340
- 1983: ((JUN, 12),),
1341
- 1984: ((MAY, 31),),
1342
- 1985: ((MAY, 20),),
1343
- 1986: ((MAY, 9),),
1344
- 1987: ((APR, 29),),
1345
- 1988: ((APR, 17),),
1346
- 1989: ((APR, 7),),
1347
- 1990: ((MAR, 27),),
1348
- 1991: ((MAR, 17),),
1349
- 1992: ((MAR, 5),),
1350
- 1993: ((FEB, 22),),
1351
- 1994: ((FEB, 11),),
1352
- 1995: ((JAN, 31),),
1353
- 1996: ((JAN, 21),),
1323
+ 1966: (DEC, 13),
1324
+ 1967: (DEC, 2),
1325
+ 1968: (NOV, 21),
1326
+ 1969: (NOV, 10),
1327
+ 1970: (NOV, 1),
1328
+ 1971: (OCT, 20),
1329
+ 1972: (OCT, 8),
1330
+ 1973: (SEP, 27),
1331
+ 1974: (SEP, 17),
1332
+ 1975: (SEP, 6),
1333
+ 1976: (AUG, 26),
1334
+ 1977: (AUG, 15),
1335
+ 1978: (AUG, 5),
1336
+ 1979: (JUL, 25),
1337
+ 1980: (JUL, 13),
1338
+ 1981: (JUL, 2),
1339
+ 1982: (JUN, 22),
1340
+ 1983: (JUN, 12),
1341
+ 1984: (MAY, 31),
1342
+ 1985: (MAY, 20),
1343
+ 1986: (MAY, 9),
1344
+ 1987: (APR, 29),
1345
+ 1988: (APR, 17),
1346
+ 1989: (APR, 7),
1347
+ 1990: (MAR, 27),
1348
+ 1991: (MAR, 17),
1349
+ 1992: (MAR, 5),
1350
+ 1993: (FEB, 22),
1351
+ 1994: (FEB, 11),
1352
+ 1995: (JAN, 31),
1353
+ 1996: (JAN, 21),
1354
1354
  1997: ((JAN, 10), (DEC, 30)),
1355
- 1998: ((DEC, 19),),
1356
- 1999: ((DEC, 9),),
1357
- 2000: ((NOV, 27),),
1358
- 2001: ((NOV, 16),),
1359
- 2002: ((NOV, 6),),
1360
- 2003: ((OCT, 26),),
1361
- 2004: ((OCT, 15),),
1362
- 2005: ((OCT, 4),),
1363
- 2006: ((SEP, 24),),
1364
- 2007: ((SEP, 13),),
1365
- 2008: ((SEP, 1),),
1366
- 2009: ((AUG, 22),),
1367
- 2010: ((AUG, 11),),
1368
- 2011: ((AUG, 1),),
1369
- 2012: ((JUL, 20),),
1370
- 2013: ((JUL, 9),),
1371
- 2014: ((JUN, 28),),
1372
- 2015: ((JUN, 18),),
1373
- 2016: ((JUN, 6),),
1374
- 2017: ((MAY, 27),),
1375
- 2018: ((MAY, 16),),
1376
- 2019: ((MAY, 6),),
1377
- 2020: ((APR, 24),),
1378
- 2021: ((APR, 13),),
1379
- 2022: ((APR, 2),),
1380
- 2023: ((MAR, 23),),
1381
- 2024: ((MAR, 11),),
1382
- 2025: ((MAR, 1),),
1383
- 2026: ((FEB, 18),),
1384
- 2027: ((FEB, 8),),
1385
- 2028: ((JAN, 28),),
1386
- 2029: ((JAN, 16),),
1355
+ 1998: (DEC, 19),
1356
+ 1999: (DEC, 9),
1357
+ 2000: (NOV, 27),
1358
+ 2001: (NOV, 16),
1359
+ 2002: (NOV, 6),
1360
+ 2003: (OCT, 26),
1361
+ 2004: (OCT, 15),
1362
+ 2005: (OCT, 4),
1363
+ 2006: (SEP, 24),
1364
+ 2007: (SEP, 13),
1365
+ 2008: (SEP, 1),
1366
+ 2009: (AUG, 22),
1367
+ 2010: (AUG, 11),
1368
+ 2011: (AUG, 1),
1369
+ 2012: (JUL, 20),
1370
+ 2013: (JUL, 9),
1371
+ 2014: (JUN, 28),
1372
+ 2015: (JUN, 18),
1373
+ 2016: (JUN, 6),
1374
+ 2017: (MAY, 27),
1375
+ 2018: (MAY, 16),
1376
+ 2019: (MAY, 6),
1377
+ 2020: (APR, 24),
1378
+ 2021: (APR, 13),
1379
+ 2022: (APR, 2),
1380
+ 2023: (MAR, 23),
1381
+ 2024: (MAR, 11),
1382
+ 2025: (MAR, 1),
1383
+ 2026: (FEB, 18),
1384
+ 2027: (FEB, 8),
1385
+ 2028: (JAN, 28),
1386
+ 2029: (JAN, 16),
1387
1387
  2030: ((JAN, 5), (DEC, 26)),
1388
- 2031: ((DEC, 15),),
1389
- 2032: ((DEC, 4),),
1390
- 2033: ((NOV, 23),),
1391
- 2034: ((NOV, 12),),
1392
- 2035: ((NOV, 1),),
1393
- 2036: ((OCT, 20),),
1394
- 2037: ((OCT, 10),),
1395
- 2038: ((SEP, 30),),
1396
- 2039: ((SEP, 19),),
1397
- 2040: ((SEP, 7),),
1398
- 2041: ((AUG, 28),),
1399
- 2042: ((AUG, 17),),
1400
- 2043: ((AUG, 6),),
1401
- 2044: ((JUL, 26),),
1402
- 2045: ((JUL, 15),),
1403
- 2046: ((JUL, 5),),
1404
- 2047: ((JUN, 24),),
1405
- 2048: ((JUN, 12),),
1406
- 2049: ((JUN, 2),),
1407
- 2050: ((MAY, 22),),
1408
- 2051: ((MAY, 11),),
1409
- 2052: ((APR, 30),),
1410
- 2053: ((APR, 20),),
1411
- 2054: ((APR, 9),),
1412
- 2055: ((MAR, 29),),
1413
- 2056: ((MAR, 17),),
1414
- 2057: ((MAR, 6),),
1415
- 2058: ((FEB, 24),),
1416
- 2059: ((FEB, 14),),
1417
- 2060: ((FEB, 3),),
1418
- 2061: ((JAN, 23),),
1419
- 2062: ((JAN, 12),),
1388
+ 2031: (DEC, 15),
1389
+ 2032: (DEC, 4),
1390
+ 2033: (NOV, 23),
1391
+ 2034: (NOV, 12),
1392
+ 2035: (NOV, 1),
1393
+ 2036: (OCT, 20),
1394
+ 2037: (OCT, 10),
1395
+ 2038: (SEP, 30),
1396
+ 2039: (SEP, 19),
1397
+ 2040: (SEP, 7),
1398
+ 2041: (AUG, 28),
1399
+ 2042: (AUG, 17),
1400
+ 2043: (AUG, 6),
1401
+ 2044: (JUL, 26),
1402
+ 2045: (JUL, 15),
1403
+ 2046: (JUL, 5),
1404
+ 2047: (JUN, 24),
1405
+ 2048: (JUN, 12),
1406
+ 2049: (JUN, 2),
1407
+ 2050: (MAY, 22),
1408
+ 2051: (MAY, 11),
1409
+ 2052: (APR, 30),
1410
+ 2053: (APR, 20),
1411
+ 2054: (APR, 9),
1412
+ 2055: (MAR, 29),
1413
+ 2056: (MAR, 17),
1414
+ 2057: (MAR, 6),
1415
+ 2058: (FEB, 24),
1416
+ 2059: (FEB, 14),
1417
+ 2060: (FEB, 3),
1418
+ 2061: (JAN, 23),
1419
+ 2062: (JAN, 12),
1420
1420
  2063: ((JAN, 1), (DEC, 21)),
1421
- 2064: ((DEC, 9),),
1422
- 2065: ((NOV, 29),),
1423
- 2066: ((NOV, 19),),
1424
- 2067: ((NOV, 8),),
1425
- 2068: ((OCT, 27),),
1426
- 2069: ((OCT, 16),),
1427
- 2070: ((OCT, 5),),
1428
- 2071: ((SEP, 25),),
1429
- 2072: ((SEP, 13),),
1430
- 2073: ((SEP, 3),),
1431
- 2074: ((AUG, 23),),
1432
- 2075: ((AUG, 13),),
1433
- 2076: ((AUG, 1),),
1434
- 2077: ((JUL, 21),),
1421
+ 2064: (DEC, 9),
1422
+ 2065: (NOV, 29),
1423
+ 2066: (NOV, 19),
1424
+ 2067: (NOV, 8),
1425
+ 2068: (OCT, 27),
1426
+ 2069: (OCT, 16),
1427
+ 2070: (OCT, 5),
1428
+ 2071: (SEP, 25),
1429
+ 2072: (SEP, 13),
1430
+ 2073: (SEP, 3),
1431
+ 2074: (AUG, 23),
1432
+ 2075: (AUG, 13),
1433
+ 2076: (AUG, 1),
1434
+ 2077: (JUL, 21),
1435
1435
  }
1436
1436
 
1437
- def _get_holiday(
1438
- self, holiday: str, year: int
1439
- ) -> Iterable[Tuple[date, bool]]:
1437
+ def _get_holiday(self, holiday: str, year: int) -> Iterable[Tuple[date, bool]]:
1440
1438
  estimated_dates = getattr(self, f"{holiday}_DATES", {})
1441
1439
  exact_dates = getattr(
1442
1440
  self,
1443
- f"{holiday}_DATES_{_CustomCalendarType.CUSTOM_ATTR_POSTFIX}",
1441
+ f"{holiday}_DATES_{_CustomCalendar.CUSTOM_ATTR_POSTFIX}",
1444
1442
  {},
1445
1443
  )
1446
1444
  for year in (year - 1, year):
1447
- for dt in exact_dates.get(year, estimated_dates.get(year, ())):
1445
+ for dt in _normalize_tuple(exact_dates.get(year, estimated_dates.get(year, ()))):
1448
1446
  yield date(year, *dt), year not in exact_dates
1449
1447
 
1450
1448
  def ashura_dates(self, year: int) -> Iterable[Tuple[date, bool]]:
@@ -1471,7 +1469,9 @@ class _IslamicLunar:
1471
1469
  def nuzul_al_quran_dates(self, year: int) -> Iterable[Tuple[date, bool]]:
1472
1470
  return self._get_holiday(NUZUL_AL_QURAN, year)
1473
1471
 
1474
- def ramadan_beginning_dates(
1475
- self, year: int
1476
- ) -> Iterable[Tuple[date, bool]]:
1472
+ def ramadan_beginning_dates(self, year: int) -> Iterable[Tuple[date, bool]]:
1477
1473
  return self._get_holiday(RAMADAN_BEGINNING, year)
1474
+
1475
+
1476
+ class _CustomIslamicCalendar(_CustomCalendar, _IslamicLunar):
1477
+ pass