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/curacao.py
CHANGED
|
@@ -11,81 +11,135 @@
|
|
|
11
11
|
|
|
12
12
|
from datetime import date
|
|
13
13
|
from datetime import timedelta as td
|
|
14
|
+
from gettext import gettext as tr
|
|
14
15
|
|
|
15
|
-
from
|
|
16
|
-
|
|
17
|
-
from holidays.constants import JAN, APR, MAY, JUL, AUG, OCT, DEC
|
|
16
|
+
from holidays.constants import APR, MAY, JUL, OCT
|
|
18
17
|
from holidays.holiday_base import HolidayBase
|
|
18
|
+
from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
class Curacao(HolidayBase):
|
|
21
|
+
class Curacao(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
22
22
|
"""
|
|
23
|
-
https://loketdigital.gobiernu.cw/Loket/product/571960bbe1e5fe8712b10a1323630e70
|
|
23
|
+
https://loketdigital.gobiernu.cw/Loket/product/571960bbe1e5fe8712b10a1323630e70 # noqa: E501
|
|
24
|
+
https://en.wikipedia.org/wiki/Public_holidays_in_Cura%C3%A7ao
|
|
25
|
+
|
|
26
|
+
New Year's Eve (Vispu di Aña Nobo) is a half-day public holiday, though
|
|
27
|
+
this isn't supported by Python Holidays so it won't be implemented.
|
|
24
28
|
"""
|
|
25
29
|
|
|
26
30
|
country = "CW"
|
|
31
|
+
default_language = "pap"
|
|
32
|
+
supported_languages = ("en_US", "nl", "pap", "uk")
|
|
33
|
+
|
|
34
|
+
def __init__(self, *args, **kwargs):
|
|
35
|
+
ChristianHolidays.__init__(self)
|
|
36
|
+
InternationalHolidays.__init__(self)
|
|
37
|
+
super().__init__(*args, **kwargs)
|
|
27
38
|
|
|
28
39
|
def _populate(self, year):
|
|
40
|
+
# 1954: Creation of the Netherlands Antilles.
|
|
41
|
+
if year <= 1953:
|
|
42
|
+
return None
|
|
43
|
+
|
|
29
44
|
super()._populate(year)
|
|
30
45
|
|
|
46
|
+
# Aña Nobo.
|
|
47
|
+
# Status: In-Use.
|
|
48
|
+
|
|
31
49
|
# New Year's Day
|
|
32
|
-
self
|
|
50
|
+
self._add_new_years_day(tr("Aña Nobo"))
|
|
51
|
+
|
|
52
|
+
# Dialuna despues di Carnaval Grandi.
|
|
53
|
+
# Status: In-Use.
|
|
54
|
+
# Started in 1947.
|
|
55
|
+
|
|
56
|
+
# Carnival Monday
|
|
57
|
+
self._add_ash_monday(tr("Dialuna despues di Carnaval Grandi"))
|
|
33
58
|
|
|
34
|
-
|
|
35
|
-
#
|
|
36
|
-
self[
|
|
37
|
-
easter_date + td(days=-48)
|
|
38
|
-
] = "Maandag na de Grote Karnaval [Carnaval Monday]"
|
|
59
|
+
# Bièrnèsantu.
|
|
60
|
+
# Status: In-Use.
|
|
39
61
|
|
|
40
62
|
# Good Friday
|
|
41
|
-
self
|
|
63
|
+
self._add_good_friday(tr("Bièrnèsantu"))
|
|
42
64
|
|
|
43
|
-
#
|
|
44
|
-
|
|
45
|
-
easter_date + td(days=+1)
|
|
46
|
-
] = "Di Dos Dia di Pasku di Resureccion [Easter Monday]"
|
|
65
|
+
# Pasku di Resurekshon.
|
|
66
|
+
# Status: In-Use
|
|
47
67
|
|
|
48
|
-
#
|
|
49
|
-
|
|
50
|
-
kings_day = date(year, APR, 27)
|
|
51
|
-
if self._is_sunday(kings_day):
|
|
52
|
-
kings_day += td(days=-1)
|
|
68
|
+
# Easter Sunday
|
|
69
|
+
self._add_easter_sunday(tr("Pasku di Resurekshon"))
|
|
53
70
|
|
|
54
|
-
|
|
71
|
+
# Di dos dia di Pasku di Resurekshon.
|
|
72
|
+
# Status: In-Use.
|
|
55
73
|
|
|
56
|
-
#
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
74
|
+
# Easter Monday
|
|
75
|
+
self._add_easter_monday(tr("Di dos dia di Pasku di Resurekshon"))
|
|
76
|
+
|
|
77
|
+
# Dia di la Reina/Dia di Rey.
|
|
78
|
+
# Status: In-Use.
|
|
79
|
+
# Started under Queen Wilhelmina in 1891.
|
|
80
|
+
# Queen Beatrix kept Queen Juliana's Birthday after her coronation.
|
|
81
|
+
# Switched to Aña di Rey in 2014 for King Willem-Alexander.
|
|
82
|
+
# Have its name changed again to Dia di Rey from 2021 onwards.
|
|
83
|
+
|
|
84
|
+
# King's / Queen's Day
|
|
85
|
+
name = (
|
|
86
|
+
# King's Day.
|
|
87
|
+
tr("Dia di Rey")
|
|
88
|
+
if year >= 2014
|
|
89
|
+
# Queen's Day.
|
|
90
|
+
else tr("Dia di la Reina")
|
|
91
|
+
)
|
|
92
|
+
if year >= 2014:
|
|
93
|
+
dt = date(year, APR, 27)
|
|
94
|
+
else:
|
|
95
|
+
dt = date(year, APR, 30)
|
|
96
|
+
if self._is_sunday(dt):
|
|
97
|
+
dt += td(days=-1) if year >= 1980 else td(days=+1)
|
|
98
|
+
self._add_holiday(name, dt)
|
|
99
|
+
|
|
100
|
+
# Dia di Obrero.
|
|
101
|
+
# Status: In-Use.
|
|
102
|
+
# If fall on Sunday, then this will be move to next working day.
|
|
103
|
+
|
|
104
|
+
dt = date(year, MAY, 1)
|
|
105
|
+
if self._is_sunday(dt) or (self._is_monday(dt) and year <= 1979):
|
|
106
|
+
dt += td(days=+1)
|
|
107
|
+
# Labor Day
|
|
108
|
+
self._add_holiday(tr("Dia di Obrero"), dt)
|
|
109
|
+
|
|
110
|
+
# Dia di Asenshon.
|
|
111
|
+
# Status: In-Use.
|
|
61
112
|
|
|
62
|
-
|
|
63
|
-
|
|
113
|
+
# Ascension Day
|
|
114
|
+
self._add_ascension_thursday(tr("Dia di Asenshon"))
|
|
64
115
|
|
|
65
|
-
|
|
116
|
+
# Dia di Himno i Bandera.
|
|
117
|
+
# Status: In-Use.
|
|
118
|
+
# Starts in 1984.
|
|
66
119
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
labour_day += td(days=+1)
|
|
71
|
-
self[labour_day] = "Dia di Obrero [Labour Day]"
|
|
120
|
+
if year >= 1984:
|
|
121
|
+
# National Anthem and Flag Day
|
|
122
|
+
self._add_holiday(tr("Dia di Himno i Bandera"), JUL, 2)
|
|
72
123
|
|
|
73
|
-
#
|
|
74
|
-
|
|
124
|
+
# Dia di Pais Kòrsou / Dia di autonomia.
|
|
125
|
+
# Status: In-Use.
|
|
126
|
+
# Starts in 2010.
|
|
75
127
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
] = "Dia di Himno y Bandera [National Anthem & Flag Day]"
|
|
128
|
+
if year >= 2010:
|
|
129
|
+
# Curaçao Day
|
|
130
|
+
self._add_holiday(tr("Dia di Pais Kòrsou"), OCT, 10)
|
|
80
131
|
|
|
81
|
-
#
|
|
82
|
-
|
|
132
|
+
# Pasku di Nasementu.
|
|
133
|
+
# Status: In-Use.
|
|
83
134
|
|
|
84
135
|
# Christmas Day
|
|
85
|
-
self
|
|
136
|
+
self._add_christmas_day(tr("Pasku di Nasementu"))
|
|
137
|
+
|
|
138
|
+
# Di dos dia di Pasku di Nasementu.
|
|
139
|
+
# Status: In-Use.
|
|
86
140
|
|
|
87
|
-
# Second Christmas
|
|
88
|
-
self
|
|
141
|
+
# Second Day of Christmas
|
|
142
|
+
self._add_christmas_day_two(tr("Di dos dia di Pasku di Nasementu"))
|
|
89
143
|
|
|
90
144
|
|
|
91
145
|
class CW(Curacao):
|
holidays/countries/cyprus.py
CHANGED
|
@@ -28,6 +28,7 @@ class Cyprus(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
28
28
|
|
|
29
29
|
country = "CY"
|
|
30
30
|
default_language = "el"
|
|
31
|
+
supported_languages = ("el", "en_US")
|
|
31
32
|
|
|
32
33
|
def __init__(self, *args, **kwargs):
|
|
33
34
|
ChristianHolidays.__init__(self, JULIAN_CALENDAR)
|
|
@@ -77,17 +78,13 @@ class Cyprus(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
77
78
|
self._add_holiday(tr("Ημέρα του Όχι"), OCT, 28)
|
|
78
79
|
|
|
79
80
|
# Christmas Eve.
|
|
80
|
-
self._add_christmas_eve(
|
|
81
|
-
tr("Παραμονή Χριστουγέννων"), GREGORIAN_CALENDAR
|
|
82
|
-
)
|
|
81
|
+
self._add_christmas_eve(tr("Παραμονή Χριστουγέννων"), GREGORIAN_CALENDAR)
|
|
83
82
|
|
|
84
83
|
# Christmas Day.
|
|
85
84
|
self._add_christmas_day(tr("Χριστούγεννα"), GREGORIAN_CALENDAR)
|
|
86
85
|
|
|
87
86
|
# Day After Christmas.
|
|
88
|
-
self._add_christmas_day_two(
|
|
89
|
-
tr("Δεύτερη μέρα Χριστουγέννων"), GREGORIAN_CALENDAR
|
|
90
|
-
)
|
|
87
|
+
self._add_christmas_day_two(tr("Δεύτερη μέρα Χριστουγέννων"), GREGORIAN_CALENDAR)
|
|
91
88
|
|
|
92
89
|
|
|
93
90
|
class CY(Cyprus):
|
holidays/countries/czechia.py
CHANGED
|
@@ -29,9 +29,7 @@ class Czechia(HolidayBase):
|
|
|
29
29
|
super()._populate(year)
|
|
30
30
|
|
|
31
31
|
self[date(year, JAN, 1)] = (
|
|
32
|
-
"Den obnovy samostatného českého" "
|
|
33
|
-
if year >= 2000
|
|
34
|
-
else "Nový rok"
|
|
32
|
+
"Den obnovy samostatného českého státu" if year >= 2000 else "Nový rok"
|
|
35
33
|
)
|
|
36
34
|
|
|
37
35
|
easter_date = easter(year)
|
|
@@ -44,20 +42,14 @@ class Czechia(HolidayBase):
|
|
|
44
42
|
if year >= 1992:
|
|
45
43
|
self[date(year, MAY, 8)] = "Den vítězství"
|
|
46
44
|
elif year >= 1947:
|
|
47
|
-
self[date(year, MAY, 9)] =
|
|
48
|
-
"Den vítězství nad hitlerovským" " fašismem"
|
|
49
|
-
)
|
|
45
|
+
self[date(year, MAY, 9)] = "Den vítězství nad hitlerovským fašismem"
|
|
50
46
|
if year >= 1951:
|
|
51
|
-
self[date(year, JUL, 5)] =
|
|
52
|
-
"Den slovanských věrozvěstů " "Cyrila a Metoděje"
|
|
53
|
-
)
|
|
47
|
+
self[date(year, JUL, 5)] = "Den slovanských věrozvěstů Cyrila a Metoděje"
|
|
54
48
|
self[date(year, JUL, 6)] = "Den upálení mistra Jana Husa"
|
|
55
49
|
if year >= 2000:
|
|
56
50
|
self[date(year, SEP, 28)] = "Den české státnosti"
|
|
57
51
|
if year >= 1951:
|
|
58
|
-
self[date(year, OCT, 28)] =
|
|
59
|
-
"Den vzniku samostatného " "československého státu"
|
|
60
|
-
)
|
|
52
|
+
self[date(year, OCT, 28)] = "Den vzniku samostatného československého státu"
|
|
61
53
|
if year >= 1990:
|
|
62
54
|
self[date(year, NOV, 17)] = "Den boje za svobodu a demokracii"
|
|
63
55
|
|
holidays/countries/denmark.py
CHANGED
|
@@ -27,6 +27,7 @@ class Denmark(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
27
27
|
|
|
28
28
|
country = "DK"
|
|
29
29
|
default_language = "da"
|
|
30
|
+
supported_languages = ("da", "en_US", "uk")
|
|
30
31
|
|
|
31
32
|
def __init__(self, *args, **kwargs):
|
|
32
33
|
ChristianHolidays.__init__(self)
|
|
@@ -54,9 +55,7 @@ class Denmark(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
54
55
|
# See https://www.ft.dk/samling/20222/lovforslag/l13/index.htm
|
|
55
56
|
if year <= 2023:
|
|
56
57
|
# Great Day of Prayers.
|
|
57
|
-
self._add_holiday(
|
|
58
|
-
tr("Store bededag"), self._easter_sunday + td(days=+26)
|
|
59
|
-
)
|
|
58
|
+
self._add_holiday(tr("Store bededag"), self._easter_sunday + td(days=+26))
|
|
60
59
|
|
|
61
60
|
# Ascension Day.
|
|
62
61
|
self._add_ascension_thursday(tr("Kristi himmelfartsdag"))
|
|
@@ -26,10 +26,9 @@ class DominicanRepublic(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
26
26
|
|
|
27
27
|
country = "DO"
|
|
28
28
|
default_language = "es"
|
|
29
|
+
supported_languages = ("en_US", "es", "uk")
|
|
29
30
|
|
|
30
|
-
def _add_movable_holiday(
|
|
31
|
-
self, name: str, dt: date, include_sun: bool = False
|
|
32
|
-
) -> None:
|
|
31
|
+
def _add_movable_holiday(self, name: str, dt: date, include_sun: bool = False) -> None:
|
|
33
32
|
# Law No. 139-97 - Holidays Dominican Republic - Jun 27, 1997
|
|
34
33
|
if dt >= date(1997, JUN, 27):
|
|
35
34
|
if self._is_tuesday(dt) or self._is_wednesday(dt):
|
holidays/countries/ecuador.py
CHANGED
|
@@ -27,19 +27,56 @@ class Ecuador(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
27
27
|
|
|
28
28
|
country = "EC"
|
|
29
29
|
default_language = "es"
|
|
30
|
+
supported_languages = ("en_US", "es", "uk")
|
|
30
31
|
|
|
31
32
|
def __init__(self, *args, **kwargs):
|
|
32
33
|
ChristianHolidays.__init__(self)
|
|
33
34
|
InternationalHolidays.__init__(self)
|
|
34
35
|
super().__init__(*args, **kwargs)
|
|
35
36
|
|
|
37
|
+
def _add_observed(
|
|
38
|
+
self,
|
|
39
|
+
dt: date,
|
|
40
|
+
weekend_only: bool = False,
|
|
41
|
+
before: bool = True,
|
|
42
|
+
after: bool = True,
|
|
43
|
+
) -> None:
|
|
44
|
+
if self.observed and self._year >= 2017:
|
|
45
|
+
obs_date = None
|
|
46
|
+
# Art. 1 of Law #0 from 20.12.2016
|
|
47
|
+
# When holidays falls on Tuesday, the rest shall be transferred to
|
|
48
|
+
# preceding Monday, and if they falls on Wednesday or Thursday,
|
|
49
|
+
# the rest shall be transferred to Friday of the same week.
|
|
50
|
+
# Exceptions to this provision are January 1, December 25 and
|
|
51
|
+
# Shrove Tuesday.
|
|
52
|
+
if not weekend_only:
|
|
53
|
+
if self._is_tuesday(dt) and before:
|
|
54
|
+
obs_date = dt + td(days=-1)
|
|
55
|
+
elif self._is_wednesday(dt):
|
|
56
|
+
obs_date = dt + td(days=+2)
|
|
57
|
+
elif self._is_thursday(dt) and after:
|
|
58
|
+
obs_date = dt + td(days=+1)
|
|
59
|
+
# When holidays falls on Saturday or Sunday, the rest shall be
|
|
60
|
+
# transferred, respectively, to the preceding Friday or the
|
|
61
|
+
# following Monday.
|
|
62
|
+
if self._is_saturday(dt) and before:
|
|
63
|
+
obs_date = dt + td(days=-1)
|
|
64
|
+
elif self._is_sunday(dt) and after:
|
|
65
|
+
obs_date = dt + td(days=+1)
|
|
66
|
+
if obs_date:
|
|
67
|
+
self._add_holiday(self.tr("%s (Observado)") % self[dt], obs_date)
|
|
68
|
+
|
|
36
69
|
def _populate(self, year):
|
|
37
70
|
super()._populate(year)
|
|
38
|
-
observed_dates = set()
|
|
39
|
-
observed_weekend_dates = set()
|
|
40
71
|
|
|
41
72
|
# New Year's Day.
|
|
42
|
-
|
|
73
|
+
name = tr("Año Nuevo")
|
|
74
|
+
self._add_observed(self._add_new_years_day(name), weekend_only=True)
|
|
75
|
+
|
|
76
|
+
if self.observed and year >= 2017:
|
|
77
|
+
dec_31 = (DEC, 31)
|
|
78
|
+
if self._is_friday(*dec_31):
|
|
79
|
+
self._add_holiday(self.tr("%s (Observado)") % self.tr(name), *dec_31)
|
|
43
80
|
|
|
44
81
|
# Carnival.
|
|
45
82
|
name = tr("Carnaval")
|
|
@@ -50,77 +87,41 @@ class Ecuador(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
50
87
|
self._add_good_friday(tr("Viernes Santo"))
|
|
51
88
|
|
|
52
89
|
# Labour Day.
|
|
53
|
-
|
|
90
|
+
self._add_observed(self._add_labor_day(tr("Día del Trabajo")))
|
|
54
91
|
|
|
55
|
-
|
|
92
|
+
self._add_observed(
|
|
56
93
|
# The Battle of Pichincha.
|
|
57
94
|
self._add_holiday(tr("Batalla de Pichincha"), MAY, 24)
|
|
58
95
|
)
|
|
59
96
|
|
|
60
|
-
|
|
97
|
+
self._add_observed(
|
|
61
98
|
# Declaration of Independence of Quito.
|
|
62
99
|
self._add_holiday(tr("Primer Grito de Independencia"), AUG, 10)
|
|
63
100
|
)
|
|
64
101
|
|
|
65
|
-
|
|
102
|
+
self._add_observed(
|
|
66
103
|
# Independence of Guayaquil.
|
|
67
104
|
self._add_holiday(tr("Independencia de Guayaquil"), OCT, 9)
|
|
68
105
|
)
|
|
69
106
|
|
|
70
|
-
|
|
71
|
-
|
|
107
|
+
self._add_observed(
|
|
108
|
+
# All Souls' Day.
|
|
109
|
+
self._add_all_souls_day(tr("Día de los Difuntos")),
|
|
110
|
+
after=False,
|
|
111
|
+
)
|
|
72
112
|
|
|
73
|
-
|
|
113
|
+
self._add_observed(
|
|
74
114
|
# Independence of Cuenca.
|
|
75
|
-
self._add_holiday(tr("Independencia de Cuenca"), NOV, 3)
|
|
115
|
+
self._add_holiday(tr("Independencia de Cuenca"), NOV, 3),
|
|
116
|
+
before=False,
|
|
76
117
|
)
|
|
77
118
|
|
|
78
|
-
|
|
119
|
+
self._add_observed(
|
|
79
120
|
# Christmas Day.
|
|
80
|
-
self._add_christmas_day(tr("Día de Navidad"))
|
|
121
|
+
self._add_christmas_day(tr("Día de Navidad")),
|
|
122
|
+
weekend_only=True,
|
|
81
123
|
)
|
|
82
124
|
|
|
83
|
-
if self.observed and year >= 2017:
|
|
84
|
-
# Art. 1 of Law #0 from 20.12.2016
|
|
85
|
-
# When holidays falls on Tuesday, the rest shall be transferred to
|
|
86
|
-
# preceding Monday, and if they falls on Wednesday or Thursday,
|
|
87
|
-
# the rest shall be transferred to Friday of the same week.
|
|
88
|
-
# Exceptions to this provision are January 1, December 25 and
|
|
89
|
-
# Shrove Tuesday.
|
|
90
|
-
for dt in observed_dates:
|
|
91
|
-
obs_date = None
|
|
92
|
-
if self._is_tuesday(dt):
|
|
93
|
-
obs_date = dt + td(days=-1)
|
|
94
|
-
elif self._is_wednesday(dt):
|
|
95
|
-
obs_date = dt + td(days=+2)
|
|
96
|
-
elif self._is_thursday(dt):
|
|
97
|
-
obs_date = dt + td(days=+1)
|
|
98
|
-
if obs_date and obs_date not in observed_dates:
|
|
99
|
-
self._add_holiday(
|
|
100
|
-
self.tr("%s (Observado)") % self[dt], obs_date
|
|
101
|
-
)
|
|
102
|
-
|
|
103
|
-
# When holidays falls on Saturday or Sunday, the rest shall be
|
|
104
|
-
# transferred, respectively, to the preceding Friday or the
|
|
105
|
-
# following Monday.
|
|
106
|
-
observed_dates = observed_dates.union(observed_weekend_dates)
|
|
107
|
-
for dt in observed_dates:
|
|
108
|
-
obs_date = None
|
|
109
|
-
if self._is_saturday(dt):
|
|
110
|
-
obs_date = dt + td(days=-1)
|
|
111
|
-
elif self._is_sunday(dt):
|
|
112
|
-
obs_date = dt + td(days=+1)
|
|
113
|
-
if obs_date and obs_date not in observed_dates:
|
|
114
|
-
self._add_holiday(
|
|
115
|
-
self.tr("%s (Observado)") % self[dt], obs_date
|
|
116
|
-
)
|
|
117
|
-
|
|
118
|
-
dec_31 = date(year, DEC, 31)
|
|
119
|
-
if self._is_friday(dec_31):
|
|
120
|
-
self._add_holiday(
|
|
121
|
-
self.tr("%s (Observado)") % self.tr("Año Nuevo"), dec_31
|
|
122
|
-
)
|
|
123
|
-
|
|
124
125
|
|
|
125
126
|
class EC(Ecuador):
|
|
126
127
|
pass
|
holidays/countries/egypt.py
CHANGED
|
@@ -12,13 +12,10 @@
|
|
|
12
12
|
from holidays.calendars import JULIAN_CALENDAR
|
|
13
13
|
from holidays.constants import JAN, APR, JUN, JUL, OCT
|
|
14
14
|
from holidays.holiday_base import HolidayBase
|
|
15
|
-
from holidays.holiday_groups import ChristianHolidays, IslamicHolidays
|
|
16
|
-
from holidays.holiday_groups import InternationalHolidays
|
|
15
|
+
from holidays.holiday_groups import ChristianHolidays, IslamicHolidays, InternationalHolidays
|
|
17
16
|
|
|
18
17
|
|
|
19
|
-
class Egypt(
|
|
20
|
-
HolidayBase, ChristianHolidays, IslamicHolidays, InternationalHolidays
|
|
21
|
-
):
|
|
18
|
+
class Egypt(HolidayBase, ChristianHolidays, IslamicHolidays, InternationalHolidays):
|
|
22
19
|
# Holidays here are estimates, it is common for the day to be pushed
|
|
23
20
|
# if falls in a weekend, although not a rule that can be implemented.
|
|
24
21
|
# Holidays after 2020: the following four moving date holidays whose exact
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# python-holidays
|
|
2
|
+
# ---------------
|
|
3
|
+
# A fast, efficient Python library for generating country, province and state
|
|
4
|
+
# specific sets of holidays on the fly. It aims to make determining whether a
|
|
5
|
+
# specific date is a holiday as fast and flexible as possible.
|
|
6
|
+
#
|
|
7
|
+
# Authors: dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
|
|
8
|
+
# ryanss <ryanssdev@icloud.com> (c) 2014-2017
|
|
9
|
+
# Website: https://github.com/dr-prodigy/python-holidays
|
|
10
|
+
# License: MIT (see LICENSE file)
|
|
11
|
+
|
|
12
|
+
from holidays.constants import MAY, JUN, AUG, SEP
|
|
13
|
+
from holidays.holiday_base import HolidayBase
|
|
14
|
+
from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class ElSalvador(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
18
|
+
"""
|
|
19
|
+
References:
|
|
20
|
+
- https://www.transparencia.gob.sv/institutions/gd-usulutan/documents/192280/download # noqa: E501
|
|
21
|
+
- https://www.timeanddate.com/holidays/el-salvador
|
|
22
|
+
- https://www.officeholidays.com/countries/el-salvador
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
country = "SV"
|
|
26
|
+
subdivisions = (
|
|
27
|
+
"AH", # Ahuachapán
|
|
28
|
+
"CA", # Cabañas
|
|
29
|
+
"CH", # Chalatenango
|
|
30
|
+
"CU", # Cuscatlán
|
|
31
|
+
"LI", # La Libertad
|
|
32
|
+
"MO", # Morazán
|
|
33
|
+
"PA", # La Paz
|
|
34
|
+
"SA", # Santa Ana
|
|
35
|
+
"SM", # San Miguel
|
|
36
|
+
"SO", # Sonsonate
|
|
37
|
+
"SS", # San Salvador
|
|
38
|
+
"SV", # San Vicente
|
|
39
|
+
"UN", # La Unión
|
|
40
|
+
"US", # Usulután
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
def __init__(self, *args, **kwargs):
|
|
44
|
+
ChristianHolidays.__init__(self)
|
|
45
|
+
InternationalHolidays.__init__(self)
|
|
46
|
+
super().__init__(*args, **kwargs)
|
|
47
|
+
|
|
48
|
+
def _populate(self, year):
|
|
49
|
+
super()._populate(year)
|
|
50
|
+
|
|
51
|
+
# New Year's Day.
|
|
52
|
+
self._add_new_years_day("New Year's Day")
|
|
53
|
+
|
|
54
|
+
# Maundy Thursday.
|
|
55
|
+
self._add_holy_thursday("Maundy Thursday")
|
|
56
|
+
|
|
57
|
+
# Good Friday.
|
|
58
|
+
self._add_good_friday("Good Friday")
|
|
59
|
+
|
|
60
|
+
# Holy Saturday.
|
|
61
|
+
self._add_holy_saturday("Holy Saturday")
|
|
62
|
+
|
|
63
|
+
# Labor Day.
|
|
64
|
+
self._add_labor_day("Labor Day")
|
|
65
|
+
|
|
66
|
+
if year >= 2016:
|
|
67
|
+
# Legislative Decree #399 from Apr 14, 2016
|
|
68
|
+
# Mothers' Day.
|
|
69
|
+
self._add_holiday("Mothers' Day", MAY, 10)
|
|
70
|
+
|
|
71
|
+
if year >= 2013:
|
|
72
|
+
# Legislative Decree #208 from Jun 17, 2012
|
|
73
|
+
# Fathers' Day.
|
|
74
|
+
self._add_holiday("Fathers' Day", JUN, 17)
|
|
75
|
+
|
|
76
|
+
# Feast of San Salvador.
|
|
77
|
+
self._add_holiday("Feast of San Salvador", AUG, 6)
|
|
78
|
+
|
|
79
|
+
# Independence Day.
|
|
80
|
+
self._add_holiday("Independence Day", SEP, 15)
|
|
81
|
+
|
|
82
|
+
# All Souls' Day.
|
|
83
|
+
self._add_all_souls_day("All Souls' Day")
|
|
84
|
+
|
|
85
|
+
# Christmas Day.
|
|
86
|
+
self._add_christmas_day("Christmas Day")
|
|
87
|
+
|
|
88
|
+
def _add_subdiv_ss_holidays(self):
|
|
89
|
+
# San Salvador Day 1.
|
|
90
|
+
self._add_holiday("San Salvador Day 1", AUG, 3)
|
|
91
|
+
|
|
92
|
+
# San Salvador Day 2.
|
|
93
|
+
self._add_holiday("San Salvador Day 2", AUG, 5)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class SV(ElSalvador):
|
|
97
|
+
pass
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
class SLV(ElSalvador):
|
|
101
|
+
pass
|
holidays/countries/eswatini.py
CHANGED
|
@@ -13,13 +13,12 @@ import warnings
|
|
|
13
13
|
from datetime import date
|
|
14
14
|
from datetime import timedelta as td
|
|
15
15
|
|
|
16
|
-
from
|
|
17
|
-
|
|
18
|
-
from holidays.constants import JAN, APR, MAY, JUL, SEP, DEC
|
|
16
|
+
from holidays.constants import JAN, APR, JUL, SEP, DEC
|
|
19
17
|
from holidays.holiday_base import HolidayBase
|
|
18
|
+
from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
|
|
20
19
|
|
|
21
20
|
|
|
22
|
-
class Eswatini(HolidayBase):
|
|
21
|
+
class Eswatini(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
23
22
|
"""
|
|
24
23
|
https://swazilii.org/sz/legislation/act/1938/71
|
|
25
24
|
https://www.officeholidays.com/countries/swaziland
|
|
@@ -28,63 +27,54 @@ class Eswatini(HolidayBase):
|
|
|
28
27
|
country = "SZ"
|
|
29
28
|
special_holidays = {
|
|
30
29
|
# https://mg.co.za/article/1999-12-09-swaziland-declares-bank-holidays/
|
|
31
|
-
1999: (
|
|
32
|
-
2000: (
|
|
30
|
+
1999: (DEC, 31, "Y2K changeover"),
|
|
31
|
+
2000: (JAN, 3, "Y2K changeover"),
|
|
33
32
|
}
|
|
34
33
|
|
|
35
|
-
def
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
)
|
|
39
|
-
# As of 2021/1/1, whenever a public holiday falls on a Sunday
|
|
40
|
-
# it rolls over to the following Monday
|
|
41
|
-
self[hol_date] = hol_name
|
|
42
|
-
if self.observed and self._is_sunday(hol_date) and year >= 2021:
|
|
43
|
-
self[hol_date + td(days=days)] = f"{hol_name} (Observed)"
|
|
34
|
+
def __init__(self, *args, **kwargs):
|
|
35
|
+
ChristianHolidays.__init__(self)
|
|
36
|
+
InternationalHolidays.__init__(self)
|
|
37
|
+
super().__init__(*args, **kwargs)
|
|
44
38
|
|
|
39
|
+
def _add_observed(self, dt: date, days: int = +1) -> None:
|
|
40
|
+
# As of 2021/1/1, whenever a public holiday falls on a Sunday
|
|
41
|
+
# it rolls over to the following Monday
|
|
42
|
+
if self.observed and self._is_sunday(dt) and self._year >= 2021:
|
|
43
|
+
self._add_holiday("%s (Observed)" % self[dt], dt + td(days=days))
|
|
44
|
+
|
|
45
|
+
def _populate(self, year):
|
|
45
46
|
# Observed since 1939
|
|
46
47
|
if year <= 1938:
|
|
47
48
|
return None
|
|
48
49
|
|
|
49
50
|
super()._populate(year)
|
|
50
51
|
|
|
51
|
-
|
|
52
|
+
self._add_observed(self._add_new_years_day("New Year's Day"))
|
|
52
53
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
self
|
|
56
|
-
|
|
54
|
+
self._add_good_friday("Good Friday")
|
|
55
|
+
|
|
56
|
+
self._add_easter_monday("Easter Monday")
|
|
57
|
+
|
|
58
|
+
self._add_ascension_thursday("Ascension Day")
|
|
57
59
|
|
|
58
60
|
if year >= 1987:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
# so observed on Apr 21 (Tue)
|
|
62
|
-
_add_with_observed(
|
|
63
|
-
date(year, APR, 19),
|
|
64
|
-
"King's Birthday",
|
|
65
|
-
+2 if year in {2071, 2076, 2082} else +1,
|
|
66
|
-
)
|
|
61
|
+
apr_19 = self._add_holiday("King's Birthday", APR, 19)
|
|
62
|
+
self._add_observed(apr_19, days=+2 if apr_19 == self._easter_sunday else +1)
|
|
67
63
|
|
|
68
64
|
if year >= 1969:
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
_add_with_observed(
|
|
72
|
-
date(year, APR, 25),
|
|
73
|
-
"National Flag Day",
|
|
74
|
-
+2 if year == 2038 else +1,
|
|
75
|
-
)
|
|
65
|
+
apr_25 = self._add_holiday("National Flag Day", APR, 25)
|
|
66
|
+
self._add_observed(apr_25, days=+2 if apr_25 == self._easter_sunday else +1)
|
|
76
67
|
|
|
77
|
-
|
|
68
|
+
self._add_observed(self._add_labor_day("Worker's Day"))
|
|
78
69
|
|
|
79
70
|
if year >= 1983:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
_add_with_observed(date(year, DEC, 26), "Boxing Day")
|
|
71
|
+
self._add_observed(self._add_holiday("Birthday of Late King Sobhuza", JUL, 22))
|
|
72
|
+
|
|
73
|
+
self._add_observed(self._add_holiday("Independence Day", SEP, 6))
|
|
74
|
+
|
|
75
|
+
self._add_observed(self._add_christmas_day("Christmas Day"), days=+2)
|
|
76
|
+
|
|
77
|
+
self._add_observed(self._add_christmas_day_two("Boxing Day"))
|
|
88
78
|
|
|
89
79
|
|
|
90
80
|
class Swaziland(Eswatini):
|