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.
- holidays/__init__.py +1 -1
- holidays/calendars/__init__.py +9 -7
- holidays/calendars/buddhist.py +445 -0
- holidays/calendars/chinese.py +1238 -431
- holidays/calendars/custom.py +1 -3
- holidays/calendars/hebrew.py +2 -2
- holidays/calendars/hindu.py +445 -0
- holidays/calendars/islamic.py +1347 -1347
- holidays/calendars/thai.py +229 -38
- holidays/countries/__init__.py +8 -0
- holidays/countries/albania.py +6 -17
- holidays/countries/andorra.py +2 -6
- holidays/countries/angola.py +53 -39
- holidays/countries/argentina.py +25 -35
- holidays/countries/armenia.py +1 -0
- holidays/countries/aruba.py +109 -48
- holidays/countries/australia.py +31 -69
- holidays/countries/austria.py +1 -0
- holidays/countries/azerbaijan.py +44 -71
- holidays/countries/bahrain.py +7 -7
- holidays/countries/bangladesh.py +1 -3
- holidays/countries/belarus.py +2 -3
- holidays/countries/belize.py +128 -0
- holidays/countries/bolivia.py +2 -6
- holidays/countries/bosnia_and_herzegovina.py +5 -17
- holidays/countries/botswana.py +37 -44
- holidays/countries/brazil.py +4 -7
- holidays/countries/brunei.py +427 -0
- holidays/countries/bulgaria.py +3 -6
- holidays/countries/burkina_faso.py +141 -0
- holidays/countries/burundi.py +2 -5
- holidays/countries/cambodia.py +323 -0
- holidays/countries/cameroon.py +183 -0
- holidays/countries/canada.py +20 -28
- holidays/countries/chad.py +133 -0
- holidays/countries/chile.py +6 -13
- holidays/countries/china.py +21 -25
- holidays/countries/colombia.py +18 -15
- holidays/countries/costa_rica.py +25 -27
- holidays/countries/cuba.py +28 -15
- holidays/countries/curacao.py +100 -46
- holidays/countries/cyprus.py +3 -6
- holidays/countries/czechia.py +4 -12
- holidays/countries/denmark.py +2 -3
- holidays/countries/dominican_republic.py +2 -3
- holidays/countries/ecuador.py +55 -54
- holidays/countries/egypt.py +2 -5
- holidays/countries/el_salvador.py +101 -0
- holidays/countries/eswatini.py +34 -44
- holidays/countries/ethiopia.py +7 -14
- holidays/countries/finland.py +2 -3
- holidays/countries/france.py +1 -0
- holidays/countries/gabon.py +139 -0
- holidays/countries/georgia.py +1 -0
- holidays/countries/germany.py +1 -0
- holidays/countries/greece.py +7 -6
- holidays/countries/honduras.py +17 -13
- holidays/countries/hongkong.py +117 -126
- holidays/countries/hungary.py +93 -92
- holidays/countries/iceland.py +1 -0
- holidays/countries/india.py +4 -11
- holidays/countries/indonesia.py +178 -142
- holidays/countries/ireland.py +5 -15
- holidays/countries/isle_of_man.py +23 -5
- holidays/countries/israel.py +12 -24
- holidays/countries/italy.py +6 -7
- holidays/countries/jamaica.py +10 -18
- holidays/countries/japan.py +11 -16
- holidays/countries/kazakhstan.py +7 -22
- holidays/countries/kenya.py +44 -26
- holidays/countries/kyrgyzstan.py +2 -5
- holidays/countries/latvia.py +2 -6
- holidays/countries/lesotho.py +52 -32
- holidays/countries/liechtenstein.py +1 -0
- holidays/countries/lithuania.py +4 -12
- holidays/countries/madagascar.py +3 -9
- holidays/countries/malawi.py +34 -26
- holidays/countries/malaysia.py +335 -343
- holidays/countries/marshall_islands.py +4 -9
- holidays/countries/mexico.py +2 -3
- holidays/countries/moldova.py +4 -6
- holidays/countries/monaco.py +17 -26
- holidays/countries/montenegro.py +34 -24
- holidays/countries/morocco.py +8 -5
- holidays/countries/mozambique.py +35 -31
- holidays/countries/namibia.py +54 -35
- holidays/countries/netherlands.py +1 -0
- holidays/countries/new_zealand.py +166 -134
- holidays/countries/nicaragua.py +27 -22
- holidays/countries/nigeria.py +6 -17
- holidays/countries/north_macedonia.py +3 -8
- holidays/countries/norway.py +2 -3
- holidays/countries/pakistan.py +73 -75
- holidays/countries/panama.py +25 -24
- holidays/countries/paraguay.py +55 -47
- holidays/countries/peru.py +1 -0
- holidays/countries/philippines.py +6 -2
- holidays/countries/poland.py +4 -9
- holidays/countries/portugal.py +4 -11
- holidays/countries/romania.py +4 -5
- holidays/countries/russia.py +1 -0
- holidays/countries/san_marino.py +26 -27
- holidays/countries/saudi_arabia.py +8 -22
- holidays/countries/serbia.py +22 -31
- holidays/countries/singapore.py +181 -189
- holidays/countries/slovakia.py +2 -4
- holidays/countries/south_africa.py +60 -62
- holidays/countries/south_korea.py +59 -26
- holidays/countries/spain.py +7 -10
- holidays/countries/sweden.py +2 -3
- holidays/countries/switzerland.py +1 -0
- holidays/countries/taiwan.py +20 -20
- holidays/countries/thailand.py +36 -82
- holidays/countries/turkey.py +1 -3
- holidays/countries/ukraine.py +7 -18
- holidays/countries/united_arab_emirates.py +23 -31
- holidays/countries/united_kingdom.py +124 -116
- holidays/countries/united_states.py +42 -72
- holidays/countries/uruguay.py +1 -0
- holidays/countries/vatican_city.py +64 -32
- holidays/countries/venezuela.py +9 -6
- holidays/countries/vietnam.py +6 -20
- holidays/countries/zambia.py +63 -33
- holidays/countries/zimbabwe.py +56 -37
- holidays/financial/european_central_bank.py +15 -16
- holidays/financial/ny_stock_exchange.py +80 -86
- holidays/groups/__init__.py +18 -0
- holidays/groups/buddhist.py +71 -0
- holidays/groups/chinese.py +235 -0
- holidays/groups/christian.py +483 -0
- holidays/groups/hindu.py +71 -0
- holidays/groups/international.py +157 -0
- holidays/groups/islamic.py +288 -0
- holidays/groups/thai.py +157 -0
- holidays/helpers.py +20 -0
- holidays/holiday_base.py +54 -76
- holidays/holiday_groups.py +11 -1053
- holidays/locale/am/LC_MESSAGES/ET.mo +0 -0
- holidays/locale/am/LC_MESSAGES/ET.po +20 -15
- holidays/locale/ar/LC_MESSAGES/CA.mo +0 -0
- holidays/locale/ar/LC_MESSAGES/CA.po +184 -0
- holidays/locale/ar/LC_MESSAGES/ET.mo +0 -0
- holidays/locale/ar/LC_MESSAGES/ET.po +92 -0
- holidays/locale/ar/LC_MESSAGES/UA.mo +0 -0
- holidays/locale/ar/LC_MESSAGES/UA.po +97 -0
- holidays/locale/be/LC_MESSAGES/BY.po +11 -13
- holidays/locale/bg/LC_MESSAGES/BG.po +13 -15
- holidays/locale/da/LC_MESSAGES/DK.po +13 -12
- holidays/locale/de/LC_MESSAGES/AT.po +14 -14
- holidays/locale/de/LC_MESSAGES/CH.po +91 -56
- holidays/locale/de/LC_MESSAGES/DE.po +32 -32
- holidays/locale/de/LC_MESSAGES/LI.po +23 -23
- holidays/locale/el/LC_MESSAGES/CY.po +16 -16
- holidays/locale/el/LC_MESSAGES/GR.mo +0 -0
- holidays/locale/el/LC_MESSAGES/GR.po +21 -17
- holidays/locale/en/LC_MESSAGES/CA.po +43 -43
- holidays/locale/en_US/LC_MESSAGES/AM.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/AM.po +20 -20
- holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/AR.po +34 -33
- holidays/locale/en_US/LC_MESSAGES/AT.po +13 -13
- holidays/locale/en_US/LC_MESSAGES/AW.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/AW.po +87 -0
- holidays/locale/en_US/LC_MESSAGES/BG.po +13 -15
- holidays/locale/en_US/LC_MESSAGES/BN.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/BN.po +96 -0
- holidays/locale/en_US/LC_MESSAGES/BY.po +11 -13
- holidays/locale/en_US/LC_MESSAGES/CA.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/CA.po +70 -37
- holidays/locale/en_US/LC_MESSAGES/CH.po +91 -56
- holidays/locale/en_US/LC_MESSAGES/CL.po +39 -38
- holidays/locale/en_US/LC_MESSAGES/CO.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/CO.po +27 -27
- holidays/locale/en_US/LC_MESSAGES/CR.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/CR.po +19 -19
- holidays/locale/en_US/LC_MESSAGES/CU.po +10 -10
- holidays/locale/en_US/LC_MESSAGES/CW.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/CW.po +82 -0
- holidays/locale/en_US/LC_MESSAGES/CY.po +16 -16
- holidays/locale/en_US/LC_MESSAGES/DE.po +30 -30
- holidays/locale/en_US/LC_MESSAGES/DK.po +12 -11
- holidays/locale/en_US/LC_MESSAGES/DO.po +12 -12
- holidays/locale/en_US/LC_MESSAGES/EC.po +11 -12
- holidays/locale/en_US/LC_MESSAGES/ET.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/ET.po +20 -15
- holidays/locale/en_US/LC_MESSAGES/FI.po +15 -15
- holidays/locale/en_US/LC_MESSAGES/FR.po +27 -24
- holidays/locale/en_US/LC_MESSAGES/GE.po +23 -27
- holidays/locale/en_US/LC_MESSAGES/GR.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/GR.po +21 -17
- holidays/locale/en_US/LC_MESSAGES/HN.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/HN.po +17 -12
- holidays/locale/en_US/LC_MESSAGES/HU.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/HU.po +109 -0
- holidays/locale/en_US/LC_MESSAGES/IS.po +17 -17
- holidays/locale/en_US/LC_MESSAGES/JP.po +25 -25
- holidays/locale/en_US/LC_MESSAGES/KH.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/KH.po +139 -0
- holidays/locale/en_US/LC_MESSAGES/LI.po +22 -22
- holidays/locale/en_US/LC_MESSAGES/MC.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/MC.po +27 -27
- holidays/locale/en_US/LC_MESSAGES/MD.po +13 -13
- holidays/locale/en_US/LC_MESSAGES/MX.po +9 -12
- holidays/locale/en_US/LC_MESSAGES/NI.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/NI.po +15 -15
- holidays/locale/en_US/LC_MESSAGES/NL.po +12 -12
- holidays/locale/en_US/LC_MESSAGES/NO.po +13 -13
- holidays/locale/en_US/LC_MESSAGES/PE.po +30 -30
- holidays/locale/en_US/LC_MESSAGES/PL.po +38 -21
- holidays/locale/en_US/LC_MESSAGES/PT.po +39 -36
- holidays/locale/en_US/LC_MESSAGES/PY.po +16 -16
- holidays/locale/en_US/LC_MESSAGES/RO.po +12 -12
- holidays/locale/en_US/LC_MESSAGES/RS.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/RS.po +17 -19
- holidays/locale/en_US/LC_MESSAGES/RU.po +11 -10
- holidays/locale/en_US/LC_MESSAGES/SE.po +19 -19
- holidays/locale/en_US/LC_MESSAGES/SK.po +17 -18
- holidays/locale/en_US/LC_MESSAGES/TH.po +41 -41
- holidays/locale/en_US/LC_MESSAGES/UA.po +18 -19
- holidays/locale/en_US/LC_MESSAGES/UY.po +15 -15
- holidays/locale/en_US/LC_MESSAGES/VE.po +16 -16
- holidays/locale/es/LC_MESSAGES/AR.mo +0 -0
- holidays/locale/es/LC_MESSAGES/AR.po +34 -33
- holidays/locale/es/LC_MESSAGES/CL.po +39 -38
- holidays/locale/es/LC_MESSAGES/CO.mo +0 -0
- holidays/locale/es/LC_MESSAGES/CO.po +24 -24
- holidays/locale/es/LC_MESSAGES/CR.mo +0 -0
- holidays/locale/es/LC_MESSAGES/CR.po +19 -19
- holidays/locale/es/LC_MESSAGES/CU.po +10 -10
- holidays/locale/es/LC_MESSAGES/DO.po +12 -12
- holidays/locale/es/LC_MESSAGES/EC.po +11 -12
- holidays/locale/es/LC_MESSAGES/HN.mo +0 -0
- holidays/locale/es/LC_MESSAGES/HN.po +17 -12
- holidays/locale/es/LC_MESSAGES/MX.po +9 -12
- holidays/locale/es/LC_MESSAGES/NI.po +12 -12
- holidays/locale/es/LC_MESSAGES/PE.po +30 -30
- holidays/locale/es/LC_MESSAGES/PY.po +16 -16
- holidays/locale/es/LC_MESSAGES/UY.po +15 -15
- holidays/locale/es/LC_MESSAGES/VE.po +16 -16
- holidays/locale/fi/LC_MESSAGES/FI.po +16 -16
- holidays/locale/fr/LC_MESSAGES/CA.po +43 -43
- holidays/locale/fr/LC_MESSAGES/CH.po +91 -56
- holidays/locale/fr/LC_MESSAGES/FR.po +27 -24
- holidays/locale/fr/LC_MESSAGES/MC.po +23 -23
- holidays/locale/hu/LC_MESSAGES/HU.mo +0 -0
- holidays/locale/hu/LC_MESSAGES/HU.po +109 -0
- holidays/locale/hy/LC_MESSAGES/AM.po +16 -16
- holidays/locale/is/LC_MESSAGES/IS.po +18 -18
- holidays/locale/it/LC_MESSAGES/CH.po +91 -56
- holidays/locale/ja/LC_MESSAGES/JP.po +25 -25
- holidays/locale/ka/LC_MESSAGES/GE.po +23 -27
- holidays/locale/km/LC_MESSAGES/KH.mo +0 -0
- holidays/locale/km/LC_MESSAGES/KH.po +139 -0
- holidays/locale/ms/LC_MESSAGES/BN.mo +0 -0
- holidays/locale/ms/LC_MESSAGES/BN.po +96 -0
- holidays/locale/nl/LC_MESSAGES/AW.mo +0 -0
- holidays/locale/nl/LC_MESSAGES/AW.po +87 -0
- holidays/locale/nl/LC_MESSAGES/CW.mo +0 -0
- holidays/locale/nl/LC_MESSAGES/CW.po +82 -0
- holidays/locale/nl/LC_MESSAGES/NL.po +13 -13
- holidays/locale/no/LC_MESSAGES/NO.po +14 -14
- holidays/locale/pap/LC_MESSAGES/AW.mo +0 -0
- holidays/locale/pap/LC_MESSAGES/AW.po +87 -0
- holidays/locale/pap/LC_MESSAGES/CW.mo +0 -0
- holidays/locale/pap/LC_MESSAGES/CW.po +82 -0
- holidays/locale/pl/LC_MESSAGES/PL.po +38 -21
- holidays/locale/pt_PT/LC_MESSAGES/PT.po +39 -36
- holidays/locale/ro/LC_MESSAGES/MD.po +14 -15
- holidays/locale/ro/LC_MESSAGES/RO.po +13 -14
- holidays/locale/ru/LC_MESSAGES/RU.po +11 -9
- holidays/locale/sk/LC_MESSAGES/SK.po +17 -18
- holidays/locale/sr/LC_MESSAGES/RS.mo +0 -0
- holidays/locale/sr/LC_MESSAGES/RS.po +15 -17
- holidays/locale/sv/LC_MESSAGES/FI.po +16 -16
- holidays/locale/sv/LC_MESSAGES/SE.po +20 -20
- holidays/locale/th/LC_MESSAGES/BN.mo +0 -0
- holidays/locale/th/LC_MESSAGES/BN.po +96 -0
- holidays/locale/th/LC_MESSAGES/CA.po +42 -42
- holidays/locale/th/LC_MESSAGES/KH.mo +0 -0
- holidays/locale/th/LC_MESSAGES/KH.po +145 -0
- holidays/locale/th/LC_MESSAGES/TH.po +41 -41
- holidays/locale/uk/LC_MESSAGES/AR.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/AR.po +35 -35
- holidays/locale/uk/LC_MESSAGES/AT.po +15 -16
- holidays/locale/uk/LC_MESSAGES/AW.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/AW.po +87 -0
- holidays/locale/uk/LC_MESSAGES/CH.po +92 -58
- holidays/locale/uk/LC_MESSAGES/CL.po +40 -40
- holidays/locale/uk/LC_MESSAGES/CO.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/CO.po +28 -29
- holidays/locale/uk/LC_MESSAGES/CR.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/CR.po +20 -21
- holidays/locale/uk/LC_MESSAGES/CU.po +11 -12
- holidays/locale/uk/LC_MESSAGES/CW.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/CW.po +82 -0
- holidays/locale/uk/LC_MESSAGES/DE.po +33 -34
- holidays/locale/uk/LC_MESSAGES/DK.po +14 -14
- holidays/locale/uk/LC_MESSAGES/DO.po +13 -14
- holidays/locale/uk/LC_MESSAGES/EC.po +12 -14
- holidays/locale/uk/LC_MESSAGES/FI.po +17 -18
- holidays/locale/uk/LC_MESSAGES/FR.po +28 -26
- holidays/locale/uk/LC_MESSAGES/HN.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/HN.po +18 -14
- holidays/locale/uk/LC_MESSAGES/HU.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/HU.po +109 -0
- holidays/locale/uk/LC_MESSAGES/IS.po +19 -20
- holidays/locale/uk/LC_MESSAGES/LI.po +24 -25
- holidays/locale/uk/LC_MESSAGES/MC.po +27 -28
- holidays/locale/uk/LC_MESSAGES/MD.po +14 -15
- holidays/locale/uk/LC_MESSAGES/MX.po +10 -14
- holidays/locale/uk/LC_MESSAGES/NI.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/NI.po +16 -17
- holidays/locale/uk/LC_MESSAGES/NL.po +14 -15
- holidays/locale/uk/LC_MESSAGES/NO.po +15 -16
- holidays/locale/uk/LC_MESSAGES/PE.po +31 -32
- holidays/locale/uk/LC_MESSAGES/PL.po +38 -21
- holidays/locale/uk/LC_MESSAGES/PY.po +17 -18
- holidays/locale/uk/LC_MESSAGES/RO.po +13 -14
- holidays/locale/uk/LC_MESSAGES/SE.po +21 -22
- holidays/locale/uk/LC_MESSAGES/SK.po +18 -20
- holidays/locale/uk/LC_MESSAGES/UA.po +17 -17
- holidays/locale/uk/LC_MESSAGES/UY.po +16 -17
- holidays/locale/uk/LC_MESSAGES/VE.po +17 -18
- holidays/registry.py +21 -12
- holidays/utils.py +87 -17
- {holidays-0.25.dist-info → holidays-0.27.dist-info}/METADATA +282 -265
- holidays-0.27.dist-info/RECORD +449 -0
- holidays-0.25.dist-info/RECORD +0 -390
- {holidays-0.25.dist-info → holidays-0.27.dist-info}/LICENSE +0 -0
- {holidays-0.25.dist-info → holidays-0.27.dist-info}/WHEEL +0 -0
- {holidays-0.25.dist-info → holidays-0.27.dist-info}/top_level.txt +0 -0
holidays/countries/malaysia.py
CHANGED
|
@@ -12,19 +12,48 @@
|
|
|
12
12
|
from datetime import date
|
|
13
13
|
from datetime import timedelta as td
|
|
14
14
|
|
|
15
|
-
from holidays.calendars import
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
from holidays.calendars import (
|
|
16
|
+
_CustomBuddhistCalendar,
|
|
17
|
+
_CustomChineseCalendar,
|
|
18
|
+
_CustomHinduCalendar,
|
|
19
|
+
_CustomIslamicCalendar,
|
|
20
|
+
_get_nth_weekday_of_month,
|
|
21
|
+
)
|
|
22
|
+
from holidays.constants import (
|
|
23
|
+
JAN,
|
|
24
|
+
FEB,
|
|
25
|
+
MAR,
|
|
26
|
+
APR,
|
|
27
|
+
MAY,
|
|
28
|
+
JUN,
|
|
29
|
+
JUL,
|
|
30
|
+
AUG,
|
|
31
|
+
SEP,
|
|
32
|
+
OCT,
|
|
33
|
+
NOV,
|
|
34
|
+
DEC,
|
|
35
|
+
MON,
|
|
36
|
+
FRI,
|
|
37
|
+
SAT,
|
|
38
|
+
SUN,
|
|
39
|
+
)
|
|
19
40
|
from holidays.holiday_base import HolidayBase
|
|
20
|
-
from holidays.holiday_groups import
|
|
21
|
-
|
|
41
|
+
from holidays.holiday_groups import (
|
|
42
|
+
BuddhistCalendarHolidays,
|
|
43
|
+
ChineseCalendarHolidays,
|
|
44
|
+
ChristianHolidays,
|
|
45
|
+
HinduCalendarHolidays,
|
|
46
|
+
InternationalHolidays,
|
|
47
|
+
IslamicHolidays,
|
|
48
|
+
)
|
|
22
49
|
|
|
23
50
|
|
|
24
51
|
class Malaysia(
|
|
25
52
|
HolidayBase,
|
|
53
|
+
BuddhistCalendarHolidays,
|
|
26
54
|
ChineseCalendarHolidays,
|
|
27
55
|
ChristianHolidays,
|
|
56
|
+
HinduCalendarHolidays,
|
|
28
57
|
InternationalHolidays,
|
|
29
58
|
IslamicHolidays,
|
|
30
59
|
):
|
|
@@ -33,9 +62,9 @@ class Malaysia(
|
|
|
33
62
|
# The years 1955 1959 1995 seems to have the elections
|
|
34
63
|
# one weekday but I am not sure if they were marked as
|
|
35
64
|
# holidays.
|
|
36
|
-
1999: (
|
|
37
|
-
2018: (
|
|
38
|
-
2019: (
|
|
65
|
+
1999: (NOV, 29, "Malaysia General Election Holiday"),
|
|
66
|
+
2018: (MAY, 9, "Malaysia General Election Holiday"),
|
|
67
|
+
2019: (JUL, 30, "Installation of New King"),
|
|
39
68
|
}
|
|
40
69
|
subdivisions = (
|
|
41
70
|
"JHR",
|
|
@@ -96,8 +125,14 @@ class Malaysia(
|
|
|
96
125
|
|
|
97
126
|
See parameters and usage in :py:class:`HolidayBase`.
|
|
98
127
|
"""
|
|
99
|
-
|
|
128
|
+
BuddhistCalendarHolidays.__init__(
|
|
129
|
+
self, calendar=MalaysiaBuddhistCalendar(), show_estimated=True
|
|
130
|
+
)
|
|
131
|
+
ChineseCalendarHolidays.__init__(
|
|
132
|
+
self, calendar=MalaysiaChineseCalendar(), show_estimated=True
|
|
133
|
+
)
|
|
100
134
|
ChristianHolidays.__init__(self)
|
|
135
|
+
HinduCalendarHolidays.__init__(self, calendar=MalaysiaHinduCalendar())
|
|
101
136
|
InternationalHolidays.__init__(self)
|
|
102
137
|
IslamicHolidays.__init__(self, calendar=MalaysiaIslamicCalendar())
|
|
103
138
|
super().__init__(*args, **kwargs)
|
|
@@ -106,55 +141,16 @@ class Malaysia(
|
|
|
106
141
|
super()._populate(year)
|
|
107
142
|
observed_dates = set()
|
|
108
143
|
|
|
109
|
-
estimated_suffix = "* (*estimated)"
|
|
110
|
-
|
|
111
144
|
# Chinese New Year (one day in the States of Kelantan and Terengganu,
|
|
112
145
|
# two days in the other States).
|
|
113
146
|
observed_dates.add(self._add_chinese_new_years_day("Chinese New Year"))
|
|
114
147
|
# The second day of Chinese New Year is not a federal holiday in
|
|
115
148
|
# Kelantan and Terengganu. However, it is gazetted as a state holiday
|
|
116
149
|
# in both states, effectively making it a nationwide holiday.
|
|
117
|
-
observed_dates.add(
|
|
118
|
-
self._add_chinese_new_years_day_two("Chinese New Year Holiday")
|
|
119
|
-
)
|
|
150
|
+
observed_dates.add(self._add_chinese_new_years_day_two("Chinese New Year Holiday"))
|
|
120
151
|
|
|
121
|
-
#
|
|
122
|
-
|
|
123
|
-
# https://en.wikipedia.org/wiki/Vesak#Dates_of_observance
|
|
124
|
-
dates_obs = {
|
|
125
|
-
2001: (MAY, 7),
|
|
126
|
-
2002: (MAY, 27),
|
|
127
|
-
2003: (MAY, 15),
|
|
128
|
-
2004: (MAY, 3),
|
|
129
|
-
2005: (MAY, 23),
|
|
130
|
-
2006: (MAY, 12),
|
|
131
|
-
2007: (MAY, 1),
|
|
132
|
-
2008: (MAY, 19),
|
|
133
|
-
2009: (MAY, 9),
|
|
134
|
-
2010: (MAY, 28),
|
|
135
|
-
2011: (MAY, 17),
|
|
136
|
-
2012: (MAY, 5),
|
|
137
|
-
2013: (MAY, 24),
|
|
138
|
-
2014: (MAY, 13),
|
|
139
|
-
2015: (MAY, 3),
|
|
140
|
-
2016: (MAY, 21),
|
|
141
|
-
2017: (MAY, 10),
|
|
142
|
-
2018: (MAY, 29),
|
|
143
|
-
2019: (MAY, 19),
|
|
144
|
-
2020: (MAY, 7),
|
|
145
|
-
2021: (MAY, 26),
|
|
146
|
-
2022: (MAY, 15),
|
|
147
|
-
}
|
|
148
|
-
name = "Vesak Day"
|
|
149
|
-
if year in dates_obs:
|
|
150
|
-
observed_dates.add(self._add_holiday(name, *dates_obs[year]))
|
|
151
|
-
else:
|
|
152
|
-
observed_dates.add(
|
|
153
|
-
self._add_holiday(
|
|
154
|
-
f"{name}{estimated_suffix}",
|
|
155
|
-
self._chinese_calendar.vesak_may_date(year),
|
|
156
|
-
)
|
|
157
|
-
)
|
|
152
|
+
# Vesak Day.
|
|
153
|
+
observed_dates.add(self._add_vesak_may("Vesak Day"))
|
|
158
154
|
|
|
159
155
|
# Labour Day.
|
|
160
156
|
observed_dates.add(self._add_labor_day("Labour Day"))
|
|
@@ -169,11 +165,7 @@ class Malaysia(
|
|
|
169
165
|
hol_date = date(2020, JUN, 8)
|
|
170
166
|
else:
|
|
171
167
|
hol_date = _get_nth_weekday_of_month(1, MON, JUN, year)
|
|
172
|
-
observed_dates.add(
|
|
173
|
-
self._add_holiday(
|
|
174
|
-
"Birthday of SPB Yang di-Pertuan Agong", hol_date
|
|
175
|
-
)
|
|
176
|
-
)
|
|
168
|
+
observed_dates.add(self._add_holiday("Birthday of SPB Yang di-Pertuan Agong", hol_date))
|
|
177
169
|
|
|
178
170
|
# Hari Kebangsaan or National Day.
|
|
179
171
|
observed_dates.add(self._add_holiday("National Day", AUG, 31))
|
|
@@ -182,44 +174,9 @@ class Malaysia(
|
|
|
182
174
|
if year >= 2010:
|
|
183
175
|
observed_dates.add(self._add_holiday("Malaysia Day", SEP, 16))
|
|
184
176
|
|
|
185
|
-
# Deepavali.
|
|
186
|
-
# aka Diwali;
|
|
187
|
-
# date of observance is announced yearly
|
|
177
|
+
# Deepavali (Diwali).
|
|
188
178
|
if self.subdiv != "SWK":
|
|
189
|
-
|
|
190
|
-
2001: (NOV, 14),
|
|
191
|
-
2002: (NOV, 3),
|
|
192
|
-
2003: (OCT, 23),
|
|
193
|
-
2004: (NOV, 11),
|
|
194
|
-
2005: (NOV, 1),
|
|
195
|
-
2006: (OCT, 21),
|
|
196
|
-
2007: (NOV, 8),
|
|
197
|
-
2008: (OCT, 27),
|
|
198
|
-
2009: (OCT, 17),
|
|
199
|
-
2010: (NOV, 5),
|
|
200
|
-
2011: (OCT, 26),
|
|
201
|
-
2012: (NOV, 13),
|
|
202
|
-
2013: (NOV, 2),
|
|
203
|
-
2014: (OCT, 22),
|
|
204
|
-
2015: (NOV, 10),
|
|
205
|
-
2016: (OCT, 29),
|
|
206
|
-
2017: (OCT, 18),
|
|
207
|
-
2018: (NOV, 6),
|
|
208
|
-
2019: (OCT, 27),
|
|
209
|
-
2020: (NOV, 14),
|
|
210
|
-
2021: (NOV, 4),
|
|
211
|
-
2022: (OCT, 24),
|
|
212
|
-
}
|
|
213
|
-
name = "Deepavali"
|
|
214
|
-
if year in dates_obs:
|
|
215
|
-
observed_dates.add(self._add_holiday(name, *dates_obs[year]))
|
|
216
|
-
else:
|
|
217
|
-
observed_dates.add(
|
|
218
|
-
self._add_holiday( # type: ignore[arg-type]
|
|
219
|
-
f"{name}{estimated_suffix}",
|
|
220
|
-
self._convert_chinese_to_gre(10, 1) + td(days=-2),
|
|
221
|
-
)
|
|
222
|
-
)
|
|
179
|
+
observed_dates.add(self._add_diwali("Deepavali"))
|
|
223
180
|
|
|
224
181
|
# Christmas day.
|
|
225
182
|
observed_dates.add(self._add_christmas_day("Christmas Day"))
|
|
@@ -227,9 +184,7 @@ class Malaysia(
|
|
|
227
184
|
# Birthday of the Prophet Muhammad (s.a.w.).
|
|
228
185
|
# a.k.a. Hari Keputeraan Nabi Muhammad (Sabah Act)
|
|
229
186
|
observed_dates.update(
|
|
230
|
-
self._add_mawlid_day(
|
|
231
|
-
"Maulidur Rasul (Birthday of the Prophet Muhammad)"
|
|
232
|
-
)
|
|
187
|
+
self._add_mawlid_day("Maulidur Rasul (Birthday of the Prophet Muhammad)")
|
|
233
188
|
)
|
|
234
189
|
|
|
235
190
|
# Hari Raya Puasa (2 days).
|
|
@@ -237,9 +192,7 @@ class Malaysia(
|
|
|
237
192
|
# exact date of observance is announced yearly
|
|
238
193
|
name = "Hari Raya Puasa"
|
|
239
194
|
observed_dates.update(self._add_eid_al_fitr_day(name))
|
|
240
|
-
observed_dates.update(
|
|
241
|
-
self._add_eid_al_fitr_day_two(f"Second day of {name}")
|
|
242
|
-
)
|
|
195
|
+
observed_dates.update(self._add_eid_al_fitr_day_two(f"Second day of {name}"))
|
|
243
196
|
|
|
244
197
|
# Arafat Day.
|
|
245
198
|
if self.subdiv == "TRG":
|
|
@@ -268,18 +221,12 @@ class Malaysia(
|
|
|
268
221
|
observed_dates.add(self._add_new_years_day("New Year's Day"))
|
|
269
222
|
|
|
270
223
|
# Isra and Mi'raj.
|
|
271
|
-
if self.subdiv in {"KDH", "NSN", "PLS"} or (
|
|
272
|
-
self.
|
|
273
|
-
):
|
|
274
|
-
observed_dates.update(
|
|
275
|
-
self._add_isra_and_miraj_day("Isra and Mi'raj")
|
|
276
|
-
)
|
|
224
|
+
if self.subdiv in {"KDH", "NSN", "PLS"} or (self.subdiv == "TRG" and year >= 2020):
|
|
225
|
+
observed_dates.update(self._add_isra_and_miraj_day("Isra and Mi'raj"))
|
|
277
226
|
|
|
278
227
|
# Beginning of Ramadan.
|
|
279
228
|
if self.subdiv in {"JHR", "KDH", "MLK"}:
|
|
280
|
-
observed_dates.update(
|
|
281
|
-
self._add_ramadan_beginning_day("Beginning of Ramadan")
|
|
282
|
-
)
|
|
229
|
+
observed_dates.update(self._add_ramadan_beginning_day("Beginning of Ramadan"))
|
|
283
230
|
|
|
284
231
|
# Nuzul Al-Quran Day.
|
|
285
232
|
if self.subdiv in {
|
|
@@ -294,51 +241,22 @@ class Malaysia(
|
|
|
294
241
|
"SGR",
|
|
295
242
|
"TRG",
|
|
296
243
|
}:
|
|
297
|
-
observed_dates.update(
|
|
298
|
-
self._add_nuzul_al_quran_day("Nuzul Al-Quran Day")
|
|
299
|
-
)
|
|
244
|
+
observed_dates.update(self._add_nuzul_al_quran_day("Nuzul Al-Quran Day"))
|
|
300
245
|
|
|
301
246
|
# Thaipusam.
|
|
302
|
-
# An annual Hindu festival observed on the day of the first full moon
|
|
303
|
-
# during the Tamil month of Thai
|
|
304
247
|
if self.subdiv in {"JHR", "KUL", "NSN", "PJY", "PNG", "PRK", "SGR"}:
|
|
305
|
-
|
|
306
|
-
2018: (JAN, 31),
|
|
307
|
-
2019: (JAN, 21),
|
|
308
|
-
2020: (FEB, 8),
|
|
309
|
-
2021: (JAN, 28),
|
|
310
|
-
2022: (JAN, 18),
|
|
311
|
-
2023: (FEB, 5),
|
|
312
|
-
2024: (JAN, 25),
|
|
313
|
-
2025: (FEB, 11),
|
|
314
|
-
2026: (FEB, 1),
|
|
315
|
-
2027: (JAN, 22),
|
|
316
|
-
}
|
|
317
|
-
name = "Thaipusam"
|
|
318
|
-
if year in dates_obs:
|
|
319
|
-
observed_dates.add(self._add_holiday(name, *dates_obs[year]))
|
|
320
|
-
else:
|
|
321
|
-
observed_dates.add(
|
|
322
|
-
self._add_holiday(
|
|
323
|
-
f"{name}{estimated_suffix}",
|
|
324
|
-
self._chinese_calendar.thaipusam_date(year),
|
|
325
|
-
)
|
|
326
|
-
)
|
|
248
|
+
observed_dates.add(self._add_thaipusam("Thaipusam"))
|
|
327
249
|
|
|
328
250
|
# Federal Territory Day.
|
|
329
251
|
if self.subdiv in {"KUL", "LBN", "PJY"} and year >= 1974:
|
|
330
|
-
observed_dates.add(
|
|
331
|
-
self._add_holiday("Federal Territory Day", FEB, 1)
|
|
332
|
-
)
|
|
252
|
+
observed_dates.add(self._add_holiday("Federal Territory Day", FEB, 1))
|
|
333
253
|
|
|
334
254
|
# State holidays (single state)
|
|
335
255
|
|
|
336
256
|
if self.subdiv == "MLK":
|
|
337
257
|
if year >= 1989:
|
|
338
258
|
observed_dates.add(
|
|
339
|
-
self._add_holiday(
|
|
340
|
-
"Declaration of Malacca as a Historical City", APR, 15
|
|
341
|
-
)
|
|
259
|
+
self._add_holiday("Declaration of Malacca as a Historical City", APR, 15)
|
|
342
260
|
)
|
|
343
261
|
|
|
344
262
|
observed_dates.add(
|
|
@@ -352,30 +270,20 @@ class Malaysia(
|
|
|
352
270
|
|
|
353
271
|
elif self.subdiv == "NSN" and year >= 2009:
|
|
354
272
|
observed_dates.add(
|
|
355
|
-
self._add_holiday(
|
|
356
|
-
"Birthday of the Sultan of Negeri Sembilan", JAN, 14
|
|
357
|
-
)
|
|
273
|
+
self._add_holiday("Birthday of the Sultan of Negeri Sembilan", JAN, 14)
|
|
358
274
|
)
|
|
359
275
|
|
|
360
276
|
elif self.subdiv == "PHG" and year >= 1975:
|
|
361
277
|
observed_dates.add(
|
|
362
|
-
self._add_holiday(
|
|
363
|
-
"Hari Hol of Pahang", MAY, 22 if year >= 2021 else 7
|
|
364
|
-
)
|
|
278
|
+
self._add_holiday("Hari Hol of Pahang", MAY, 22 if year >= 2021 else 7)
|
|
365
279
|
)
|
|
366
280
|
|
|
367
281
|
hol_date = (JUL, 30) if year >= 2019 else (OCT, 24)
|
|
368
|
-
observed_dates.add(
|
|
369
|
-
self._add_holiday(
|
|
370
|
-
"Birthday of the Sultan of Pahang", *hol_date
|
|
371
|
-
)
|
|
372
|
-
)
|
|
282
|
+
observed_dates.add(self._add_holiday("Birthday of the Sultan of Pahang", *hol_date))
|
|
373
283
|
|
|
374
284
|
elif self.subdiv == "PNG":
|
|
375
285
|
if year >= 2009:
|
|
376
|
-
observed_dates.add(
|
|
377
|
-
self._add_holiday("George Town Heritage Day", JUL, 7)
|
|
378
|
-
)
|
|
286
|
+
observed_dates.add(self._add_holiday("George Town Heritage Day", JUL, 7))
|
|
379
287
|
|
|
380
288
|
observed_dates.add(
|
|
381
289
|
self._add_holiday(
|
|
@@ -386,23 +294,15 @@ class Malaysia(
|
|
|
386
294
|
|
|
387
295
|
elif self.subdiv == "PLS" and year >= 2000:
|
|
388
296
|
hol_date = (JUL, 17) if year >= 2018 else (MAY, 17)
|
|
389
|
-
observed_dates.add(
|
|
390
|
-
self._add_holiday("Birthday of The Raja of Perlis", *hol_date)
|
|
391
|
-
)
|
|
297
|
+
observed_dates.add(self._add_holiday("Birthday of The Raja of Perlis", *hol_date))
|
|
392
298
|
|
|
393
299
|
elif self.subdiv == "SGR":
|
|
394
|
-
observed_dates.add(
|
|
395
|
-
self._add_holiday(
|
|
396
|
-
"Birthday of The Sultan of Selangor", DEC, 11
|
|
397
|
-
)
|
|
398
|
-
)
|
|
300
|
+
observed_dates.add(self._add_holiday("Birthday of The Sultan of Selangor", DEC, 11))
|
|
399
301
|
|
|
400
302
|
elif self.subdiv == "SWK":
|
|
401
303
|
# Dayak Festival Day (the first day of June) and the following day.
|
|
402
304
|
observed_dates.add(self._add_holiday("Gawai Dayak", JUN, 1))
|
|
403
|
-
observed_dates.add(
|
|
404
|
-
self._add_holiday("Gawai Dayak (Second day)", JUN, 2)
|
|
405
|
-
)
|
|
305
|
+
observed_dates.add(self._add_holiday("Gawai Dayak (Second day)", JUN, 2))
|
|
406
306
|
|
|
407
307
|
# Birthday of Tuan Yang Terutama Yang di-Pertua Negeri Sarawak
|
|
408
308
|
# (the second Saturday of October).
|
|
@@ -420,18 +320,13 @@ class Malaysia(
|
|
|
420
320
|
elif self.subdiv == "TRG" and year >= 2000:
|
|
421
321
|
observed_dates.add(
|
|
422
322
|
self._add_holiday(
|
|
423
|
-
"Anniversary of the Installation "
|
|
424
|
-
"of the Sultan of Terengganu",
|
|
323
|
+
"Anniversary of the Installation of the Sultan of Terengganu",
|
|
425
324
|
MAR,
|
|
426
325
|
4,
|
|
427
326
|
)
|
|
428
327
|
)
|
|
429
328
|
|
|
430
|
-
observed_dates.add(
|
|
431
|
-
self._add_holiday(
|
|
432
|
-
"Birthday of the Sultan of Terengganu", APR, 26
|
|
433
|
-
)
|
|
434
|
-
)
|
|
329
|
+
observed_dates.add(self._add_holiday("Birthday of the Sultan of Terengganu", APR, 26))
|
|
435
330
|
|
|
436
331
|
# Check for holidays that fall on a Sunday and
|
|
437
332
|
# implement Section 3 of Malaysian Holidays Act:
|
|
@@ -445,9 +340,7 @@ class Malaysia(
|
|
|
445
340
|
weekday_observed_days = (
|
|
446
341
|
(FRI, +2)
|
|
447
342
|
if self.subdiv in {"JHR", "KDH"}
|
|
448
|
-
else (
|
|
449
|
-
(SAT, +1) if self.subdiv in {"KTN", "TRG"} else (SUN, +1)
|
|
450
|
-
)
|
|
343
|
+
else ((SAT, +1) if self.subdiv in {"KTN", "TRG"} else (SUN, +1))
|
|
451
344
|
)
|
|
452
345
|
observed_dates.difference_update({None})
|
|
453
346
|
for hol_date in sorted(observed_dates):
|
|
@@ -505,9 +398,7 @@ class Malaysia(
|
|
|
505
398
|
self._add_holiday("Birthday of the Sultan of Johor", MAR, 23)
|
|
506
399
|
|
|
507
400
|
if year >= 2011:
|
|
508
|
-
self._add_hari_hol_johor(
|
|
509
|
-
"Hari Hol of Sultan Iskandar of Johor"
|
|
510
|
-
)
|
|
401
|
+
self._add_hari_hol_johor("Hari Hol of Sultan Iskandar of Johor")
|
|
511
402
|
|
|
512
403
|
elif self.subdiv == "KDH" and year >= 2020:
|
|
513
404
|
self._add_holiday(
|
|
@@ -548,192 +439,293 @@ class MYS(Malaysia):
|
|
|
548
439
|
pass
|
|
549
440
|
|
|
550
441
|
|
|
551
|
-
class
|
|
442
|
+
class MalaysiaBuddhistCalendar(_CustomBuddhistCalendar):
|
|
443
|
+
VESAK_MAY_DATES = {
|
|
444
|
+
2001: (MAY, 7),
|
|
445
|
+
2002: (MAY, 27),
|
|
446
|
+
2003: (MAY, 15),
|
|
447
|
+
2004: (MAY, 3),
|
|
448
|
+
2005: (MAY, 22),
|
|
449
|
+
2006: (MAY, 12),
|
|
450
|
+
2007: (MAY, 1),
|
|
451
|
+
2008: (MAY, 19),
|
|
452
|
+
2009: (MAY, 9),
|
|
453
|
+
2010: (MAY, 28),
|
|
454
|
+
2011: (MAY, 17),
|
|
455
|
+
2012: (MAY, 5),
|
|
456
|
+
2013: (MAY, 24),
|
|
457
|
+
2014: (MAY, 13),
|
|
458
|
+
2015: (MAY, 3),
|
|
459
|
+
2016: (MAY, 21),
|
|
460
|
+
2017: (MAY, 10),
|
|
461
|
+
2018: (MAY, 29),
|
|
462
|
+
2019: (MAY, 19),
|
|
463
|
+
2020: (MAY, 7),
|
|
464
|
+
2021: (MAY, 26),
|
|
465
|
+
2022: (MAY, 15),
|
|
466
|
+
2023: (MAY, 4),
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
class MalaysiaChineseCalendar(_CustomChineseCalendar):
|
|
471
|
+
LUNAR_NEW_YEAR_DATES = {
|
|
472
|
+
2001: (JAN, 24),
|
|
473
|
+
2002: (FEB, 12),
|
|
474
|
+
2003: (FEB, 1),
|
|
475
|
+
2004: (JAN, 22),
|
|
476
|
+
2005: (FEB, 9),
|
|
477
|
+
2006: (JAN, 29),
|
|
478
|
+
2007: (FEB, 18),
|
|
479
|
+
2008: (FEB, 7),
|
|
480
|
+
2009: (JAN, 26),
|
|
481
|
+
2010: (FEB, 14),
|
|
482
|
+
2011: (FEB, 3),
|
|
483
|
+
2012: (JAN, 23),
|
|
484
|
+
2013: (FEB, 10),
|
|
485
|
+
2014: (JAN, 31),
|
|
486
|
+
2015: (FEB, 19),
|
|
487
|
+
2016: (FEB, 8),
|
|
488
|
+
2017: (JAN, 28),
|
|
489
|
+
2018: (FEB, 16),
|
|
490
|
+
2019: (FEB, 5),
|
|
491
|
+
2020: (JAN, 25),
|
|
492
|
+
2021: (FEB, 12),
|
|
493
|
+
2022: (FEB, 1),
|
|
494
|
+
2023: (JAN, 22),
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
class MalaysiaHinduCalendar(_CustomHinduCalendar):
|
|
499
|
+
DIWALI_DATES = {
|
|
500
|
+
2001: (NOV, 14),
|
|
501
|
+
2002: (NOV, 3),
|
|
502
|
+
2003: (OCT, 23),
|
|
503
|
+
2004: (NOV, 11),
|
|
504
|
+
2005: (NOV, 1),
|
|
505
|
+
2006: (OCT, 21),
|
|
506
|
+
2007: (NOV, 8),
|
|
507
|
+
2008: (OCT, 27),
|
|
508
|
+
2009: (OCT, 17),
|
|
509
|
+
2010: (NOV, 5),
|
|
510
|
+
2011: (OCT, 26),
|
|
511
|
+
2012: (NOV, 13),
|
|
512
|
+
2013: (NOV, 2),
|
|
513
|
+
2014: (OCT, 22),
|
|
514
|
+
2015: (NOV, 10),
|
|
515
|
+
2016: (OCT, 29),
|
|
516
|
+
2017: (OCT, 18),
|
|
517
|
+
2018: (NOV, 6),
|
|
518
|
+
2019: (OCT, 27),
|
|
519
|
+
2020: (NOV, 14),
|
|
520
|
+
2021: (NOV, 4),
|
|
521
|
+
2022: (OCT, 24),
|
|
522
|
+
2023: (NOV, 12),
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
THAIPUSAM_DATES = {
|
|
526
|
+
2018: (JAN, 31),
|
|
527
|
+
2019: (JAN, 21),
|
|
528
|
+
2020: (FEB, 8),
|
|
529
|
+
2021: (JAN, 28),
|
|
530
|
+
2022: (JAN, 18),
|
|
531
|
+
2023: (FEB, 5),
|
|
532
|
+
2024: (JAN, 25),
|
|
533
|
+
2025: (FEB, 11),
|
|
534
|
+
2026: (FEB, 1),
|
|
535
|
+
2027: (JAN, 22),
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
class MalaysiaIslamicCalendar(_CustomIslamicCalendar):
|
|
552
540
|
EID_AL_ADHA_DATES = {
|
|
553
|
-
2001: (
|
|
554
|
-
2002: (
|
|
555
|
-
2003: (
|
|
556
|
-
2004: (
|
|
557
|
-
2005: (
|
|
541
|
+
2001: (MAR, 6),
|
|
542
|
+
2002: (FEB, 23),
|
|
543
|
+
2003: (FEB, 12),
|
|
544
|
+
2004: (FEB, 2),
|
|
545
|
+
2005: (JAN, 21),
|
|
558
546
|
2006: ((JAN, 10), (DEC, 31)),
|
|
559
|
-
2007: (
|
|
560
|
-
2008: (
|
|
561
|
-
2009: (
|
|
562
|
-
2010: (
|
|
563
|
-
2011: (
|
|
564
|
-
2012: (
|
|
565
|
-
2013: (
|
|
566
|
-
2014: (
|
|
567
|
-
2015: (
|
|
568
|
-
2016: (
|
|
569
|
-
2017: (
|
|
570
|
-
2018: (
|
|
571
|
-
2019: (
|
|
572
|
-
2020: (
|
|
573
|
-
2021: (
|
|
574
|
-
2022: (
|
|
547
|
+
2007: (DEC, 20),
|
|
548
|
+
2008: (DEC, 9),
|
|
549
|
+
2009: (NOV, 28),
|
|
550
|
+
2010: (NOV, 17),
|
|
551
|
+
2011: (NOV, 7),
|
|
552
|
+
2012: (OCT, 26),
|
|
553
|
+
2013: (OCT, 15),
|
|
554
|
+
2014: (OCT, 5),
|
|
555
|
+
2015: (SEP, 24),
|
|
556
|
+
2016: (SEP, 12),
|
|
557
|
+
2017: (SEP, 1),
|
|
558
|
+
2018: (AUG, 22),
|
|
559
|
+
2019: (AUG, 11),
|
|
560
|
+
2020: (JUL, 31),
|
|
561
|
+
2021: (JUL, 20),
|
|
562
|
+
2022: (JUL, 10),
|
|
575
563
|
}
|
|
576
564
|
|
|
577
565
|
EID_AL_FITR_DATES = {
|
|
578
|
-
2001: (
|
|
579
|
-
2002: (
|
|
580
|
-
2003: (
|
|
581
|
-
2004: (
|
|
582
|
-
2005: (
|
|
583
|
-
2006: (
|
|
584
|
-
2007: (
|
|
585
|
-
2008: (
|
|
586
|
-
2009: (
|
|
587
|
-
2010: (
|
|
588
|
-
2011: (
|
|
589
|
-
2012: (
|
|
590
|
-
2013: (
|
|
591
|
-
2014: (
|
|
592
|
-
2015: (
|
|
593
|
-
2016: (
|
|
594
|
-
2017: (
|
|
595
|
-
2018: (
|
|
596
|
-
2019: (
|
|
597
|
-
2020: (
|
|
598
|
-
2021: (
|
|
599
|
-
2022: (
|
|
566
|
+
2001: (DEC, 17),
|
|
567
|
+
2002: (DEC, 6),
|
|
568
|
+
2003: (NOV, 26),
|
|
569
|
+
2004: (NOV, 14),
|
|
570
|
+
2005: (NOV, 3),
|
|
571
|
+
2006: (OCT, 24),
|
|
572
|
+
2007: (OCT, 13),
|
|
573
|
+
2008: (OCT, 1),
|
|
574
|
+
2009: (SEP, 20),
|
|
575
|
+
2010: (SEP, 10),
|
|
576
|
+
2011: (AUG, 31),
|
|
577
|
+
2012: (AUG, 19),
|
|
578
|
+
2013: (AUG, 8),
|
|
579
|
+
2014: (JUL, 28),
|
|
580
|
+
2015: (JUL, 17),
|
|
581
|
+
2016: (JUL, 6),
|
|
582
|
+
2017: (JUN, 25),
|
|
583
|
+
2018: (JUN, 15),
|
|
584
|
+
2019: (JUN, 5),
|
|
585
|
+
2020: (MAY, 24),
|
|
586
|
+
2021: (MAY, 13),
|
|
587
|
+
2022: (MAY, 2),
|
|
588
|
+
2023: (APR, 22),
|
|
600
589
|
}
|
|
601
590
|
|
|
602
591
|
HARI_HOL_JOHOR_DATES = {
|
|
603
|
-
2011: (
|
|
592
|
+
2011: (JAN, 12),
|
|
604
593
|
2012: ((JAN, 1), (DEC, 20)),
|
|
605
|
-
2013: (
|
|
606
|
-
2014: (
|
|
607
|
-
2015: (
|
|
608
|
-
2016: (
|
|
609
|
-
2017: (
|
|
610
|
-
2018: (
|
|
611
|
-
2019: (
|
|
612
|
-
2020: (
|
|
613
|
-
2021: (
|
|
614
|
-
2022: (
|
|
594
|
+
2013: (DEC, 10),
|
|
595
|
+
2014: (NOV, 29),
|
|
596
|
+
2015: (NOV, 19),
|
|
597
|
+
2016: (NOV, 7),
|
|
598
|
+
2017: (OCT, 27),
|
|
599
|
+
2018: (OCT, 15),
|
|
600
|
+
2019: (OCT, 5),
|
|
601
|
+
2020: (SEP, 24),
|
|
602
|
+
2021: (SEP, 13),
|
|
603
|
+
2022: (SEP, 3),
|
|
615
604
|
}
|
|
616
605
|
|
|
617
606
|
HIJRI_NEW_YEAR_DATES = {
|
|
618
|
-
2001: (
|
|
619
|
-
2002: (
|
|
620
|
-
2003: (
|
|
621
|
-
2004: (
|
|
622
|
-
2005: (
|
|
623
|
-
2006: (
|
|
624
|
-
2007: (
|
|
607
|
+
2001: (MAR, 26),
|
|
608
|
+
2002: (MAR, 15),
|
|
609
|
+
2003: (MAR, 5),
|
|
610
|
+
2004: (FEB, 22),
|
|
611
|
+
2005: (FEB, 10),
|
|
612
|
+
2006: (JAN, 31),
|
|
613
|
+
2007: (JAN, 20),
|
|
625
614
|
2008: ((JAN, 10), (DEC, 29)),
|
|
626
|
-
2009: (
|
|
627
|
-
2010: (
|
|
628
|
-
2011: (
|
|
629
|
-
2012: (
|
|
630
|
-
2013: (
|
|
631
|
-
2014: (
|
|
632
|
-
2015: (
|
|
633
|
-
2016: (
|
|
634
|
-
2017: (
|
|
635
|
-
2018: (
|
|
636
|
-
2019: (
|
|
637
|
-
2020: (
|
|
638
|
-
2021: (
|
|
639
|
-
2022: (
|
|
615
|
+
2009: (DEC, 18),
|
|
616
|
+
2010: (DEC, 8),
|
|
617
|
+
2011: (NOV, 27),
|
|
618
|
+
2012: (NOV, 15),
|
|
619
|
+
2013: (NOV, 5),
|
|
620
|
+
2014: (OCT, 25),
|
|
621
|
+
2015: (OCT, 14),
|
|
622
|
+
2016: (OCT, 2),
|
|
623
|
+
2017: (SEP, 22),
|
|
624
|
+
2018: (SEP, 11),
|
|
625
|
+
2019: (SEP, 1),
|
|
626
|
+
2020: (AUG, 20),
|
|
627
|
+
2021: (AUG, 10),
|
|
628
|
+
2022: (JUL, 30),
|
|
640
629
|
}
|
|
641
630
|
|
|
642
631
|
ISRA_AND_MIRAJ_DATES = {
|
|
643
|
-
2001: (
|
|
644
|
-
2002: (
|
|
645
|
-
2003: (
|
|
646
|
-
2004: (
|
|
647
|
-
2005: (
|
|
648
|
-
2006: (
|
|
649
|
-
2007: (
|
|
650
|
-
2008: (
|
|
651
|
-
2009: (
|
|
652
|
-
2010: (
|
|
653
|
-
2011: (
|
|
654
|
-
2012: (
|
|
655
|
-
2013: (
|
|
656
|
-
2014: (
|
|
657
|
-
2015: (
|
|
658
|
-
2016: (
|
|
659
|
-
2017: (
|
|
660
|
-
2018: (
|
|
661
|
-
2019: (
|
|
662
|
-
2020: (
|
|
663
|
-
2021: (
|
|
664
|
-
2022: (
|
|
632
|
+
2001: (OCT, 15),
|
|
633
|
+
2002: (OCT, 4),
|
|
634
|
+
2003: (SEP, 24),
|
|
635
|
+
2004: (SEP, 12),
|
|
636
|
+
2005: (SEP, 1),
|
|
637
|
+
2006: (AUG, 22),
|
|
638
|
+
2007: (AUG, 11),
|
|
639
|
+
2008: (JUL, 31),
|
|
640
|
+
2009: (JUL, 20),
|
|
641
|
+
2010: (JUL, 9),
|
|
642
|
+
2011: (JUN, 29),
|
|
643
|
+
2012: (JUN, 17),
|
|
644
|
+
2013: (JUN, 6),
|
|
645
|
+
2014: (MAY, 27),
|
|
646
|
+
2015: (MAY, 16),
|
|
647
|
+
2016: (MAY, 5),
|
|
648
|
+
2017: (APR, 24),
|
|
649
|
+
2018: (APR, 14),
|
|
650
|
+
2019: (APR, 3),
|
|
651
|
+
2020: (MAR, 22),
|
|
652
|
+
2021: (MAR, 11),
|
|
653
|
+
2022: (MAR, 1),
|
|
654
|
+
2023: (FEB, 18),
|
|
665
655
|
}
|
|
666
656
|
|
|
667
657
|
MAWLID_DATES = {
|
|
668
|
-
2001: (
|
|
669
|
-
2002: (
|
|
670
|
-
2003: (
|
|
671
|
-
2004: (
|
|
672
|
-
2005: (
|
|
673
|
-
2006: (
|
|
674
|
-
2007: (
|
|
675
|
-
2008: (
|
|
676
|
-
2009: (
|
|
677
|
-
2010: (
|
|
678
|
-
2011: (
|
|
679
|
-
2012: (
|
|
680
|
-
2013: (
|
|
681
|
-
2014: (
|
|
658
|
+
2001: (JUN, 4),
|
|
659
|
+
2002: (MAY, 24),
|
|
660
|
+
2003: (MAY, 14),
|
|
661
|
+
2004: (MAY, 2),
|
|
662
|
+
2005: (APR, 21),
|
|
663
|
+
2006: (APR, 11),
|
|
664
|
+
2007: (MAR, 31),
|
|
665
|
+
2008: (MAR, 20),
|
|
666
|
+
2009: (MAR, 9),
|
|
667
|
+
2010: (FEB, 26),
|
|
668
|
+
2011: (FEB, 16),
|
|
669
|
+
2012: (FEB, 5),
|
|
670
|
+
2013: (JAN, 24),
|
|
671
|
+
2014: (JAN, 14),
|
|
682
672
|
2015: ((JAN, 3), (DEC, 24)),
|
|
683
|
-
2016: (
|
|
684
|
-
2017: (
|
|
685
|
-
2018: (
|
|
686
|
-
2019: (
|
|
687
|
-
2020: (
|
|
688
|
-
2021: (
|
|
689
|
-
2022: (
|
|
673
|
+
2016: (DEC, 12),
|
|
674
|
+
2017: (DEC, 1),
|
|
675
|
+
2018: (NOV, 20),
|
|
676
|
+
2019: (NOV, 9),
|
|
677
|
+
2020: (OCT, 29),
|
|
678
|
+
2021: (OCT, 19),
|
|
679
|
+
2022: (OCT, 10),
|
|
690
680
|
}
|
|
691
681
|
NUZUL_AL_QURAN_DATES = {
|
|
692
|
-
2001: (
|
|
693
|
-
2002: (
|
|
694
|
-
2003: (
|
|
695
|
-
2004: (
|
|
696
|
-
2005: (
|
|
697
|
-
2006: (
|
|
698
|
-
2007: (
|
|
699
|
-
2008: (
|
|
700
|
-
2009: (
|
|
701
|
-
2010: (
|
|
702
|
-
2011: (
|
|
703
|
-
2012: (
|
|
704
|
-
2013: (
|
|
705
|
-
2014: (
|
|
706
|
-
2015: (
|
|
707
|
-
2016: (
|
|
708
|
-
2017: (
|
|
709
|
-
2018: (
|
|
710
|
-
2019: (
|
|
711
|
-
2020: (
|
|
712
|
-
2021: (
|
|
713
|
-
2022: (
|
|
682
|
+
2001: (DEC, 3),
|
|
683
|
+
2002: (NOV, 22),
|
|
684
|
+
2003: (NOV, 12),
|
|
685
|
+
2004: (NOV, 1),
|
|
686
|
+
2005: (OCT, 21),
|
|
687
|
+
2006: (OCT, 10),
|
|
688
|
+
2007: (SEP, 29),
|
|
689
|
+
2008: (SEP, 18),
|
|
690
|
+
2009: (SEP, 7),
|
|
691
|
+
2010: (AUG, 27),
|
|
692
|
+
2011: (AUG, 17),
|
|
693
|
+
2012: (AUG, 5),
|
|
694
|
+
2013: (JUL, 25),
|
|
695
|
+
2014: (JUL, 15),
|
|
696
|
+
2015: (JUL, 4),
|
|
697
|
+
2016: (JUN, 22),
|
|
698
|
+
2017: (JUN, 12),
|
|
699
|
+
2018: (JUN, 2),
|
|
700
|
+
2019: (MAY, 22),
|
|
701
|
+
2020: (MAY, 10),
|
|
702
|
+
2021: (APR, 29),
|
|
703
|
+
2022: (APR, 19),
|
|
704
|
+
2023: (APR, 8),
|
|
714
705
|
}
|
|
715
706
|
|
|
716
707
|
RAMADAN_BEGINNING_DATES = {
|
|
717
|
-
2001: (
|
|
718
|
-
2002: (
|
|
719
|
-
2003: (
|
|
720
|
-
2004: (
|
|
721
|
-
2005: (
|
|
722
|
-
2006: (
|
|
723
|
-
2007: (
|
|
724
|
-
2008: (
|
|
725
|
-
2009: (
|
|
726
|
-
2010: (
|
|
727
|
-
2011: (
|
|
728
|
-
2012: (
|
|
729
|
-
2013: (
|
|
730
|
-
2014: (
|
|
731
|
-
2015: (
|
|
732
|
-
2016: (
|
|
733
|
-
2017: (
|
|
734
|
-
2018: (
|
|
735
|
-
2019: (
|
|
736
|
-
2020: (
|
|
737
|
-
2021: (
|
|
738
|
-
2022: (
|
|
708
|
+
2001: (NOV, 17),
|
|
709
|
+
2002: (NOV, 6),
|
|
710
|
+
2003: (OCT, 27),
|
|
711
|
+
2004: (OCT, 16),
|
|
712
|
+
2005: (OCT, 5),
|
|
713
|
+
2006: (SEP, 24),
|
|
714
|
+
2007: (SEP, 13),
|
|
715
|
+
2008: (SEP, 2),
|
|
716
|
+
2009: (AUG, 22),
|
|
717
|
+
2010: (AUG, 11),
|
|
718
|
+
2011: (AUG, 1),
|
|
719
|
+
2012: (JUL, 20),
|
|
720
|
+
2013: (JUL, 9),
|
|
721
|
+
2014: (JUN, 29),
|
|
722
|
+
2015: (JUN, 18),
|
|
723
|
+
2016: (JUN, 7),
|
|
724
|
+
2017: (MAY, 27),
|
|
725
|
+
2018: (MAY, 17),
|
|
726
|
+
2019: (MAY, 6),
|
|
727
|
+
2020: (APR, 24),
|
|
728
|
+
2021: (APR, 13),
|
|
729
|
+
2022: (APR, 3),
|
|
730
|
+
2023: (MAR, 23),
|
|
739
731
|
}
|