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/canada.py
CHANGED
|
@@ -14,8 +14,7 @@ from datetime import timedelta as td
|
|
|
14
14
|
from gettext import gettext as tr
|
|
15
15
|
|
|
16
16
|
from holidays.calendars import _get_nth_weekday_from, _get_nth_weekday_of_month
|
|
17
|
-
from holidays.constants import FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT
|
|
18
|
-
from holidays.constants import SUN, MON
|
|
17
|
+
from holidays.constants import FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, SUN, MON
|
|
19
18
|
from holidays.holiday_base import HolidayBase
|
|
20
19
|
from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
|
|
21
20
|
|
|
@@ -38,6 +37,7 @@ class Canada(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
38
37
|
"SK",
|
|
39
38
|
"YT",
|
|
40
39
|
)
|
|
40
|
+
supported_languages = ("ar", "en", "en_US", "fr", "th")
|
|
41
41
|
|
|
42
42
|
def __init__(self, *args, **kwargs):
|
|
43
43
|
# Default subdivision to ON; prov for backwards compatibility
|
|
@@ -52,17 +52,13 @@ class Canada(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
52
52
|
1 if self._is_friday(dt) or self._is_weekend(dt) else -1, MON, dt
|
|
53
53
|
)
|
|
54
54
|
|
|
55
|
-
def _add_observed(self,
|
|
55
|
+
def _add_observed(self, dt: date, include_sat: bool = True, days: int = +1) -> None:
|
|
56
56
|
if not self.observed:
|
|
57
57
|
return None
|
|
58
|
-
if self._is_sunday(
|
|
59
|
-
self._is_saturday(hol_date) and include_sat
|
|
60
|
-
):
|
|
61
|
-
obs_date = _get_nth_weekday_from(1, MON, hol_date)
|
|
62
|
-
if obs_date in self:
|
|
63
|
-
obs_date += td(days=+1)
|
|
58
|
+
if self._is_sunday(dt) or (include_sat and self._is_saturday(dt)):
|
|
64
59
|
self._add_holiday(
|
|
65
|
-
self.tr("%s (Observed)") % self[
|
|
60
|
+
self.tr("%s (Observed)") % self[dt],
|
|
61
|
+
dt + td(days=+2 if self._is_saturday(dt) else days),
|
|
66
62
|
)
|
|
67
63
|
|
|
68
64
|
def _populate(self, year):
|
|
@@ -90,14 +86,17 @@ class Canada(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
90
86
|
_get_nth_weekday_of_month(1, MON, SEP, self._year),
|
|
91
87
|
)
|
|
92
88
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
89
|
+
self._add_observed(
|
|
90
|
+
# Christmas Day.
|
|
91
|
+
self._add_christmas_day(tr("Christmas Day")),
|
|
92
|
+
days=+2,
|
|
93
|
+
)
|
|
98
94
|
|
|
99
|
-
self._add_observed(
|
|
100
|
-
|
|
95
|
+
self._add_observed(
|
|
96
|
+
# Boxing Day.
|
|
97
|
+
self._add_christmas_day_two(tr("Boxing Day")),
|
|
98
|
+
days=+2,
|
|
99
|
+
)
|
|
101
100
|
|
|
102
101
|
def _add_family_day(self):
|
|
103
102
|
self._add_holiday(
|
|
@@ -171,9 +170,7 @@ class Canada(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
171
170
|
|
|
172
171
|
def _add_subdiv_bc_holidays(self):
|
|
173
172
|
if self._year >= 2013:
|
|
174
|
-
dt = _get_nth_weekday_of_month(
|
|
175
|
-
3 if self._year >= 2019 else 2, MON, FEB, self._year
|
|
176
|
-
)
|
|
173
|
+
dt = _get_nth_weekday_of_month(3 if self._year >= 2019 else 2, MON, FEB, self._year)
|
|
177
174
|
self._add_holiday(tr("Family Day"), dt)
|
|
178
175
|
|
|
179
176
|
if self._year >= 1953:
|
|
@@ -226,9 +223,7 @@ class Canada(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
226
223
|
# Civic Holiday.
|
|
227
224
|
else tr("Civic Holiday")
|
|
228
225
|
)
|
|
229
|
-
self._add_holiday(
|
|
230
|
-
name, _get_nth_weekday_of_month(1, MON, AUG, self._year)
|
|
231
|
-
)
|
|
226
|
+
self._add_holiday(name, _get_nth_weekday_of_month(1, MON, AUG, self._year))
|
|
232
227
|
|
|
233
228
|
if self._year >= 2021:
|
|
234
229
|
self._add_holiday(
|
|
@@ -396,9 +391,7 @@ class Canada(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
396
391
|
|
|
397
392
|
def _add_subdiv_pe_holidays(self):
|
|
398
393
|
if self._year >= 2009:
|
|
399
|
-
dt = _get_nth_weekday_of_month(
|
|
400
|
-
3 if self._year >= 2010 else 2, MON, FEB, self._year
|
|
401
|
-
)
|
|
394
|
+
dt = _get_nth_weekday_of_month(3 if self._year >= 2010 else 2, MON, FEB, self._year)
|
|
402
395
|
# Islander Day.
|
|
403
396
|
self._add_holiday(tr("Islander Day"), dt)
|
|
404
397
|
|
|
@@ -464,8 +457,7 @@ class Canada(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
464
457
|
if self._year >= 1974:
|
|
465
458
|
self._add_holiday(
|
|
466
459
|
tr("Heritage Day"),
|
|
467
|
-
_get_nth_weekday_of_month(-1, SUN, FEB, self._year)
|
|
468
|
-
+ td(days=-2),
|
|
460
|
+
_get_nth_weekday_of_month(-1, SUN, FEB, self._year) + td(days=-2),
|
|
469
461
|
)
|
|
470
462
|
|
|
471
463
|
if self._year >= 1953:
|
|
@@ -0,0 +1,133 @@
|
|
|
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 datetime import date
|
|
13
|
+
from datetime import timedelta as td
|
|
14
|
+
|
|
15
|
+
from holidays.calendars import _CustomIslamicCalendar
|
|
16
|
+
from holidays.constants import JAN, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
|
|
17
|
+
from holidays.holiday_base import HolidayBase
|
|
18
|
+
from holidays.holiday_groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class Chad(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays):
|
|
22
|
+
"""
|
|
23
|
+
References:
|
|
24
|
+
- https://en.wikipedia.org/wiki/Public_holidays_in_Chad
|
|
25
|
+
- https://www.ilo.org/dyn/natlex/docs/ELECTRONIC/97323/115433/F-316075167/TCD-97323.pdf # noqa: E501
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
country = "TD"
|
|
29
|
+
special_holidays = {
|
|
30
|
+
2021: (APR, 23, "Funeral of Idriss Déby Itno"),
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
def __init__(self, *args, **kwargs) -> None:
|
|
34
|
+
ChristianHolidays.__init__(self)
|
|
35
|
+
InternationalHolidays.__init__(self)
|
|
36
|
+
IslamicHolidays.__init__(self, calendar=ChadIslamicCalendar())
|
|
37
|
+
super().__init__(*args, **kwargs)
|
|
38
|
+
|
|
39
|
+
def _add_observed(self, dt: date) -> None:
|
|
40
|
+
if self.observed and self._is_sunday(dt):
|
|
41
|
+
self._add_holiday("%s (Observed)" % self[dt], dt + td(days=+1))
|
|
42
|
+
|
|
43
|
+
def _populate(self, year):
|
|
44
|
+
# On 11 August 1960, Chad gained independence from France.
|
|
45
|
+
if year <= 1960:
|
|
46
|
+
return None
|
|
47
|
+
|
|
48
|
+
super()._populate(year)
|
|
49
|
+
|
|
50
|
+
# New Year's Day.
|
|
51
|
+
self._add_observed(self._add_new_years_day("New Year's Day"))
|
|
52
|
+
|
|
53
|
+
# International Women's Day.
|
|
54
|
+
self._add_observed(self._add_womens_day("International Women's Day"))
|
|
55
|
+
|
|
56
|
+
# Easter Monday.
|
|
57
|
+
self._add_easter_monday("Easter Monday")
|
|
58
|
+
|
|
59
|
+
# Labour Day.
|
|
60
|
+
self._add_observed(self._add_labor_day("Labour Day"))
|
|
61
|
+
|
|
62
|
+
# Independence Day.
|
|
63
|
+
self._add_observed(self._add_holiday("Independence Day", AUG, 11))
|
|
64
|
+
|
|
65
|
+
# All Saints' Day.
|
|
66
|
+
self._add_all_saints_day("All Saints' Day")
|
|
67
|
+
|
|
68
|
+
self._add_observed(
|
|
69
|
+
# Republic Day.
|
|
70
|
+
self._add_holiday("Republic Day", NOV, 28)
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
if year >= 1991:
|
|
74
|
+
self._add_observed(
|
|
75
|
+
# Freedom and Democracy Day.
|
|
76
|
+
self._add_holiday("Freedom and Democracy Day", DEC, 1)
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
# Christmas Day.
|
|
80
|
+
self._add_christmas_day("Christmas Day")
|
|
81
|
+
|
|
82
|
+
# Eid al-Fitr.
|
|
83
|
+
self._add_eid_al_fitr_day("Eid al-Fitr")
|
|
84
|
+
|
|
85
|
+
# Eid al-Adha.
|
|
86
|
+
self._add_eid_al_adha_day("Eid al-Adha")
|
|
87
|
+
|
|
88
|
+
# Mawlid.
|
|
89
|
+
self._add_mawlid_day("Mawlid")
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class TD(Chad):
|
|
93
|
+
pass
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class TCD(Chad):
|
|
97
|
+
pass
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
class ChadIslamicCalendar(_CustomIslamicCalendar):
|
|
101
|
+
EID_AL_ADHA_DATES = {
|
|
102
|
+
2015: (SEP, 24),
|
|
103
|
+
2016: (SEP, 13),
|
|
104
|
+
2017: (SEP, 2),
|
|
105
|
+
2018: (AUG, 22),
|
|
106
|
+
2019: (AUG, 11),
|
|
107
|
+
2020: (JUL, 31),
|
|
108
|
+
2021: (JUL, 20),
|
|
109
|
+
2022: (JUL, 9),
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
EID_AL_FITR_DATES = {
|
|
113
|
+
2015: (JUL, 18),
|
|
114
|
+
2016: (JUL, 7),
|
|
115
|
+
2017: (JUN, 26),
|
|
116
|
+
2018: (JUN, 15),
|
|
117
|
+
2019: (JUN, 4),
|
|
118
|
+
2020: (MAY, 24),
|
|
119
|
+
2021: (MAY, 13),
|
|
120
|
+
2022: (MAY, 2),
|
|
121
|
+
2023: (APR, 21),
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
MAWLID_DATES = {
|
|
125
|
+
2015: ((JAN, 3), (DEC, 24)),
|
|
126
|
+
2016: (DEC, 12),
|
|
127
|
+
2017: (DEC, 1),
|
|
128
|
+
2018: (NOV, 21),
|
|
129
|
+
2019: (NOV, 9),
|
|
130
|
+
2020: (OCT, 29),
|
|
131
|
+
2021: (OCT, 18),
|
|
132
|
+
2022: (OCT, 8),
|
|
133
|
+
}
|
holidays/countries/chile.py
CHANGED
|
@@ -28,11 +28,10 @@ class Chile(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
30
|
country = "CL"
|
|
31
|
+
default_language = "es"
|
|
31
32
|
special_holidays = {
|
|
32
|
-
2022: (
|
|
33
|
+
2022: (SEP, 16, tr("Feriado nacional")),
|
|
33
34
|
}
|
|
34
|
-
default_language = "es"
|
|
35
|
-
# ISO 3166-2 codes for the principal subdivisions, called regions
|
|
36
35
|
subdivisions = (
|
|
37
36
|
"AI",
|
|
38
37
|
"AN",
|
|
@@ -51,6 +50,7 @@ class Chile(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
51
50
|
"TA",
|
|
52
51
|
"VS",
|
|
53
52
|
)
|
|
53
|
+
supported_languages = ("en_US", "es", "uk")
|
|
54
54
|
|
|
55
55
|
def __init__(self, *args, **kwargs):
|
|
56
56
|
ChristianHolidays.__init__(self)
|
|
@@ -113,9 +113,7 @@ class Chile(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
113
113
|
|
|
114
114
|
# Saint Peter and Saint Paul (Law 16.840, Law 18.432)
|
|
115
115
|
if year <= 1967 or year >= 1986:
|
|
116
|
-
self._add_holiday(
|
|
117
|
-
tr("San Pedro y San Pablo"), _get_movable(date(year, JUN, 29))
|
|
118
|
-
)
|
|
116
|
+
self._add_holiday(tr("San Pedro y San Pablo"), _get_movable(date(year, JUN, 29)))
|
|
119
117
|
|
|
120
118
|
# Day of Virgin of Carmen (Law 20.148)
|
|
121
119
|
if year >= 2007:
|
|
@@ -160,9 +158,7 @@ class Chile(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
160
158
|
# Columbus day (Law 3.810).
|
|
161
159
|
if year >= 1922 and year != 1973:
|
|
162
160
|
self._add_holiday(
|
|
163
|
-
tr("Día del Encuentro de dos Mundos")
|
|
164
|
-
if year >= 2000
|
|
165
|
-
else tr("Día de la Raza"),
|
|
161
|
+
tr("Día del Encuentro de dos Mundos") if year >= 2000 else tr("Día de la Raza"),
|
|
166
162
|
_get_movable(date(year, OCT, 12)),
|
|
167
163
|
)
|
|
168
164
|
|
|
@@ -205,10 +201,7 @@ class Chile(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
205
201
|
if self._year >= 2014:
|
|
206
202
|
# Región de Ñuble
|
|
207
203
|
self._add_holiday(
|
|
208
|
-
tr(
|
|
209
|
-
"Nacimiento del Prócer de la Independencia "
|
|
210
|
-
"(Chillán y Chillán Viejo)"
|
|
211
|
-
),
|
|
204
|
+
tr("Nacimiento del Prócer de la Independencia (Chillán y Chillán Viejo)"),
|
|
212
205
|
AUG,
|
|
213
206
|
20,
|
|
214
207
|
)
|
holidays/countries/china.py
CHANGED
|
@@ -9,60 +9,56 @@
|
|
|
9
9
|
# Website: https://github.com/dr-prodigy/python-holidays
|
|
10
10
|
# License: MIT (see LICENSE file)
|
|
11
11
|
|
|
12
|
-
from datetime import date
|
|
13
12
|
from datetime import timedelta as td
|
|
14
13
|
|
|
15
|
-
from holidays.
|
|
16
|
-
from holidays.constants import JAN, APR, MAY, OCT
|
|
14
|
+
from holidays.constants import OCT
|
|
17
15
|
from holidays.holiday_base import HolidayBase
|
|
16
|
+
from holidays.holiday_groups import ChineseCalendarHolidays, InternationalHolidays
|
|
18
17
|
|
|
19
18
|
|
|
20
|
-
class China(HolidayBase):
|
|
19
|
+
class China(HolidayBase, ChineseCalendarHolidays, InternationalHolidays):
|
|
21
20
|
"""
|
|
22
21
|
https://en.wikipedia.org/wiki/Public_holidays_in_China
|
|
23
22
|
"""
|
|
24
23
|
|
|
25
24
|
country = "CN"
|
|
26
25
|
|
|
27
|
-
def __init__(self, **kwargs):
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
def __init__(self, *args, **kwargs):
|
|
27
|
+
ChineseCalendarHolidays.__init__(self)
|
|
28
|
+
InternationalHolidays.__init__(self)
|
|
29
|
+
super().__init__(*args, **kwargs)
|
|
30
30
|
|
|
31
31
|
def _populate(self, year):
|
|
32
32
|
if year <= 1949:
|
|
33
33
|
return None
|
|
34
|
-
|
|
35
34
|
super()._populate(year)
|
|
36
35
|
|
|
37
|
-
self
|
|
36
|
+
self._add_new_years_day("New Year's Day")
|
|
38
37
|
|
|
39
38
|
name = "Labour Day"
|
|
40
|
-
|
|
41
|
-
self[dt] = name
|
|
39
|
+
may_1 = self._add_labor_day(name)
|
|
42
40
|
if 2000 <= year <= 2007:
|
|
43
|
-
self
|
|
44
|
-
self
|
|
41
|
+
self._add_holiday(name, may_1 + td(days=+1))
|
|
42
|
+
self._add_holiday(name, may_1 + td(days=+2))
|
|
45
43
|
|
|
46
44
|
name = "Chinese New Year (Spring Festival)"
|
|
47
|
-
|
|
48
|
-
self
|
|
49
|
-
self[dt + td(days=+1)] = name
|
|
45
|
+
self._add_chinese_new_years_day(name)
|
|
46
|
+
self._add_chinese_new_years_day_two(name)
|
|
50
47
|
if 2008 <= year <= 2013:
|
|
51
|
-
self
|
|
48
|
+
self._add_chinese_new_years_eve(name)
|
|
52
49
|
else:
|
|
53
|
-
self
|
|
50
|
+
self._add_chinese_new_years_day_three(name)
|
|
54
51
|
|
|
55
52
|
name = "National Day"
|
|
56
|
-
|
|
57
|
-
self
|
|
58
|
-
self[dt + td(days=+1)] = name
|
|
53
|
+
self._add_holiday(name, OCT, 1)
|
|
54
|
+
self._add_holiday(name, OCT, 2)
|
|
59
55
|
if year >= 2000:
|
|
60
|
-
self
|
|
56
|
+
self._add_holiday(name, OCT, 3)
|
|
61
57
|
|
|
62
58
|
if year >= 2008:
|
|
63
|
-
self
|
|
64
|
-
self
|
|
65
|
-
self
|
|
59
|
+
self._add_qingming_festival("Tomb-Sweeping Day")
|
|
60
|
+
self._add_dragon_boat_festival("Dragon Boat Festival")
|
|
61
|
+
self._add_mid_autumn_festival("Mid-Autumn Festival")
|
|
66
62
|
|
|
67
63
|
|
|
68
64
|
class CN(China):
|
holidays/countries/colombia.py
CHANGED
|
@@ -13,14 +13,13 @@ from datetime import date
|
|
|
13
13
|
from datetime import timedelta as td
|
|
14
14
|
from gettext import gettext as tr
|
|
15
15
|
|
|
16
|
-
from dateutil.easter import easter
|
|
17
|
-
|
|
18
16
|
from holidays.calendars import _get_nth_weekday_from
|
|
19
|
-
from holidays.constants import JAN, MAR,
|
|
17
|
+
from holidays.constants import JAN, MAR, JUN, JUL, AUG, OCT, NOV, MON
|
|
20
18
|
from holidays.holiday_base import HolidayBase
|
|
19
|
+
from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
|
|
21
20
|
|
|
22
21
|
|
|
23
|
-
class Colombia(HolidayBase):
|
|
22
|
+
class Colombia(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
24
23
|
"""
|
|
25
24
|
Colombia has 18 holidays. The establishing of these are by:
|
|
26
25
|
Ley 35 de 1939 (DEC 4): https://bit.ly/3PJwk7B
|
|
@@ -31,6 +30,12 @@ class Colombia(HolidayBase):
|
|
|
31
30
|
|
|
32
31
|
country = "CO"
|
|
33
32
|
default_language = "es"
|
|
33
|
+
supported_languages = ("en_US", "es", "uk")
|
|
34
|
+
|
|
35
|
+
def __init__(self, *args, **kwargs):
|
|
36
|
+
ChristianHolidays.__init__(self)
|
|
37
|
+
InternationalHolidays.__init__(self)
|
|
38
|
+
super().__init__(*args, **kwargs)
|
|
34
39
|
|
|
35
40
|
def _add_with_bridge(self, dt: date, name: str) -> None:
|
|
36
41
|
"""
|
|
@@ -60,7 +65,7 @@ class Colombia(HolidayBase):
|
|
|
60
65
|
super()._populate(year)
|
|
61
66
|
|
|
62
67
|
# New Year's Day
|
|
63
|
-
self.
|
|
68
|
+
self._add_new_years_day(tr("Año Nuevo"))
|
|
64
69
|
|
|
65
70
|
if year >= 1951:
|
|
66
71
|
# Epiphany
|
|
@@ -76,7 +81,7 @@ class Colombia(HolidayBase):
|
|
|
76
81
|
)
|
|
77
82
|
|
|
78
83
|
# Labor Day
|
|
79
|
-
self
|
|
84
|
+
self._add_labor_day(tr("Día del Trabajo"))
|
|
80
85
|
|
|
81
86
|
if year >= 1951:
|
|
82
87
|
# Saint Peter and Saint Paul's Day
|
|
@@ -119,36 +124,34 @@ class Colombia(HolidayBase):
|
|
|
119
124
|
|
|
120
125
|
if year >= 1951:
|
|
121
126
|
# Immaculate Conception
|
|
122
|
-
self.
|
|
127
|
+
self._add_immaculate_conception_day(tr("La Inmaculada Concepción"))
|
|
123
128
|
|
|
124
129
|
# Christmas
|
|
125
|
-
self.
|
|
126
|
-
|
|
127
|
-
easter_date = easter(year)
|
|
130
|
+
self._add_christmas_day(tr("Navidad"))
|
|
128
131
|
|
|
129
132
|
if year >= 1951:
|
|
130
133
|
# Maundy Thursday
|
|
131
|
-
self.
|
|
134
|
+
self._add_holy_thursday(tr("Jueves Santo"))
|
|
132
135
|
|
|
133
136
|
# Good Friday
|
|
134
|
-
self.
|
|
137
|
+
self._add_good_friday(tr("Viernes Santo"))
|
|
135
138
|
|
|
136
139
|
# Ascension of Jesus
|
|
137
140
|
self._add_with_bridge(
|
|
138
|
-
|
|
141
|
+
self._easter_sunday + td(days=+39),
|
|
139
142
|
tr("Ascensión del señor"),
|
|
140
143
|
)
|
|
141
144
|
|
|
142
145
|
# Corpus Christi
|
|
143
146
|
self._add_with_bridge(
|
|
144
|
-
|
|
147
|
+
self._easter_sunday + td(days=+60),
|
|
145
148
|
tr("Corpus Christi"),
|
|
146
149
|
)
|
|
147
150
|
|
|
148
151
|
if year >= 1984:
|
|
149
152
|
# Sacred Heart
|
|
150
153
|
self._add_with_bridge(
|
|
151
|
-
|
|
154
|
+
self._easter_sunday + td(days=+68),
|
|
152
155
|
tr("Sagrado Corazón"),
|
|
153
156
|
)
|
|
154
157
|
|
holidays/countries/costa_rica.py
CHANGED
|
@@ -26,6 +26,7 @@ class CostaRica(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
26
26
|
|
|
27
27
|
country = "CR"
|
|
28
28
|
default_language = "es"
|
|
29
|
+
supported_languages = ("en_US", "es", "uk")
|
|
29
30
|
|
|
30
31
|
def __init__(self, *args, **kwargs):
|
|
31
32
|
ChristianHolidays.__init__(self)
|
|
@@ -33,25 +34,24 @@ class CostaRica(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
33
34
|
super().__init__(*args, **kwargs)
|
|
34
35
|
|
|
35
36
|
def _populate(self, year):
|
|
36
|
-
def
|
|
37
|
+
def add_movable_holiday(name: str, dt: date) -> None:
|
|
37
38
|
# Law #9875 from 16.07.2020
|
|
38
39
|
if self.observed:
|
|
39
|
-
if not self._is_monday(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
if not self._is_monday(dt):
|
|
41
|
+
name = self.tr("%s (Observado)") % self.tr(name)
|
|
42
|
+
|
|
43
|
+
if self._is_tuesday(dt) or self._is_wednesday(dt):
|
|
44
|
+
dt = _get_nth_weekday_from(-1, MON, dt)
|
|
43
45
|
else:
|
|
44
|
-
|
|
45
|
-
self._add_holiday(
|
|
46
|
+
dt = _get_nth_weekday_from(1, MON, dt)
|
|
47
|
+
self._add_holiday(name, dt)
|
|
46
48
|
|
|
47
|
-
def
|
|
49
|
+
def add_observed_holiday(name: str, dt: date) -> None:
|
|
48
50
|
if self.observed:
|
|
49
|
-
if not (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
hol_name = self.tr("%s (Observado)") % self.tr(hol_name)
|
|
54
|
-
self._add_holiday(hol_name, hol_date)
|
|
51
|
+
if not (self._is_monday(dt) or self._is_weekend(dt)):
|
|
52
|
+
dt = _get_nth_weekday_from(1, MON, dt)
|
|
53
|
+
name = self.tr("%s (Observado)") % self.tr(name)
|
|
54
|
+
self._add_holiday(name, dt)
|
|
55
55
|
|
|
56
56
|
super()._populate(year)
|
|
57
57
|
|
|
@@ -70,16 +70,16 @@ class CostaRica(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
70
70
|
# Juan Santamaría Day.
|
|
71
71
|
name = tr("Día de Juan Santamaría")
|
|
72
72
|
if 2006 <= year <= 2010:
|
|
73
|
-
|
|
73
|
+
add_observed_holiday(name, dt)
|
|
74
74
|
elif year in {2023, 2024}:
|
|
75
|
-
|
|
75
|
+
add_movable_holiday(name, dt)
|
|
76
76
|
else:
|
|
77
77
|
self._add_holiday(name, dt)
|
|
78
78
|
|
|
79
79
|
# International Labor Day.
|
|
80
80
|
name = tr("Día Internacional del Trabajo")
|
|
81
81
|
if year == 2021:
|
|
82
|
-
|
|
82
|
+
add_movable_holiday(name, date(year, MAY, 1))
|
|
83
83
|
else:
|
|
84
84
|
self._add_labor_day(name)
|
|
85
85
|
|
|
@@ -89,9 +89,9 @@ class CostaRica(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
89
89
|
# Annexation of the Party of Nicoya to Costa Rica.
|
|
90
90
|
name = tr("Anexión del Partido de Nicoya a Costa Rica")
|
|
91
91
|
if 2005 <= year <= 2008:
|
|
92
|
-
|
|
92
|
+
add_observed_holiday(name, dt)
|
|
93
93
|
elif 2020 <= year <= 2024:
|
|
94
|
-
|
|
94
|
+
add_movable_holiday(name, dt)
|
|
95
95
|
else:
|
|
96
96
|
self._add_holiday(name, dt)
|
|
97
97
|
|
|
@@ -108,9 +108,9 @@ class CostaRica(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
108
108
|
# Mother's Day.
|
|
109
109
|
name = tr("Día de la Madre")
|
|
110
110
|
if 2005 <= year <= 2007:
|
|
111
|
-
|
|
111
|
+
add_observed_holiday(name, dt)
|
|
112
112
|
elif year in {2020, 2023, 2024}:
|
|
113
|
-
|
|
113
|
+
add_movable_holiday(name, dt)
|
|
114
114
|
else:
|
|
115
115
|
self._add_holiday(name, dt)
|
|
116
116
|
|
|
@@ -118,9 +118,7 @@ class CostaRica(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
118
118
|
if year >= 2022:
|
|
119
119
|
dt = date(year, AUG, 31)
|
|
120
120
|
# Day of the Black Person and Afro-Costa Rican Culture.
|
|
121
|
-
name = self.tr(
|
|
122
|
-
"Día de la Persona Negra y la Cultura Afrocostarricense"
|
|
123
|
-
)
|
|
121
|
+
name = self.tr("Día de la Persona Negra y la Cultura Afrocostarricense")
|
|
124
122
|
if self.observed and year in {2022, 2023}:
|
|
125
123
|
dt = _get_nth_weekday_from(1, SUN, dt)
|
|
126
124
|
name = self.tr("%s (Observado)") % name
|
|
@@ -130,14 +128,14 @@ class CostaRica(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
130
128
|
# Independence Day.
|
|
131
129
|
name = tr("Día de la Independencia")
|
|
132
130
|
if year in {2020, 2021, 2022, 2024}:
|
|
133
|
-
|
|
131
|
+
add_movable_holiday(name, dt)
|
|
134
132
|
else:
|
|
135
133
|
self._add_holiday(name, dt)
|
|
136
134
|
|
|
137
135
|
# Law #9803 from 19.05.2020
|
|
138
136
|
if year <= 2019:
|
|
139
137
|
# Cultures Day.
|
|
140
|
-
|
|
138
|
+
add_observed_holiday(tr("Día de las Culturas"), date(year, OCT, 12))
|
|
141
139
|
|
|
142
140
|
# Law #9803 from 19.05.2020
|
|
143
141
|
if year >= 2020:
|
|
@@ -145,7 +143,7 @@ class CostaRica(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
145
143
|
# Army Abolition Day.
|
|
146
144
|
name = tr("Día de la Abolición del Ejército")
|
|
147
145
|
if year in {2020, 2021, 2022}:
|
|
148
|
-
|
|
146
|
+
add_movable_holiday(name, dt)
|
|
149
147
|
else:
|
|
150
148
|
self._add_holiday(name, dt)
|
|
151
149
|
|
holidays/countries/cuba.py
CHANGED
|
@@ -13,13 +13,12 @@ from datetime import date
|
|
|
13
13
|
from datetime import timedelta as td
|
|
14
14
|
from gettext import gettext as tr
|
|
15
15
|
|
|
16
|
-
from
|
|
17
|
-
|
|
18
|
-
from holidays.constants import JAN, MAY, JUL, OCT, DEC
|
|
16
|
+
from holidays.constants import JAN, JUL, OCT
|
|
19
17
|
from holidays.holiday_base import HolidayBase
|
|
18
|
+
from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
|
|
20
19
|
|
|
21
20
|
|
|
22
|
-
class Cuba(HolidayBase):
|
|
21
|
+
class Cuba(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
23
22
|
"""
|
|
24
23
|
Overview: https://en.wikipedia.org/wiki/Public_holidays_in_Cuba
|
|
25
24
|
1984 (DEC 28): https://bit.ly/3okNBbt
|
|
@@ -36,8 +35,18 @@ class Cuba(HolidayBase):
|
|
|
36
35
|
|
|
37
36
|
country = "CU"
|
|
38
37
|
default_language = "es"
|
|
38
|
+
supported_languages = ("en_US", "es", "uk")
|
|
39
|
+
|
|
40
|
+
def __init__(self, *args, **kwargs):
|
|
41
|
+
ChristianHolidays.__init__(self)
|
|
42
|
+
InternationalHolidays.__init__(self)
|
|
43
|
+
super().__init__(*args, **kwargs)
|
|
39
44
|
|
|
40
45
|
def _populate(self, year):
|
|
46
|
+
# This calendar only works from 1959 onwards.
|
|
47
|
+
if year <= 1958:
|
|
48
|
+
return None
|
|
49
|
+
|
|
41
50
|
def _add_observed(hol_date: date) -> None:
|
|
42
51
|
if self.observed and self._is_sunday(hol_date):
|
|
43
52
|
self._add_holiday(
|
|
@@ -63,12 +72,12 @@ class Cuba(HolidayBase):
|
|
|
63
72
|
# Permanently granted in 2013 decree for 2014 and onwards.
|
|
64
73
|
if year >= 2012:
|
|
65
74
|
# Good Friday.
|
|
66
|
-
self.
|
|
75
|
+
self._add_good_friday(tr("Viernes Santo"))
|
|
67
76
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
77
|
+
_add_observed(
|
|
78
|
+
# Labour Day.
|
|
79
|
+
self._add_labor_day(tr("Día Internacional de los Trabajadores"))
|
|
80
|
+
)
|
|
72
81
|
|
|
73
82
|
# Commemoration of the Assault of the Moncada garrison.
|
|
74
83
|
self._add_holiday(tr("Conmemoración del asalto a Moncada"), JUL, 25)
|
|
@@ -79,10 +88,14 @@ class Cuba(HolidayBase):
|
|
|
79
88
|
# Commemoration of the Assault of the Moncada garrison.
|
|
80
89
|
self._add_holiday(tr("Conmemoración del asalto a Moncada"), JUL, 27)
|
|
81
90
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
91
|
+
_add_observed(
|
|
92
|
+
self._add_holiday(
|
|
93
|
+
# Independence Day.
|
|
94
|
+
tr("Inicio de las Guerras de Independencia"),
|
|
95
|
+
OCT,
|
|
96
|
+
10,
|
|
97
|
+
)
|
|
98
|
+
)
|
|
86
99
|
|
|
87
100
|
# In 1969, Christmas was cancelled for the sugar harvest but then was
|
|
88
101
|
# cancelled for good:
|
|
@@ -94,12 +107,12 @@ class Cuba(HolidayBase):
|
|
|
94
107
|
# https://bit.ly/3cyXj7F
|
|
95
108
|
if year <= 1968 or year >= 1997:
|
|
96
109
|
# Christmas Day.
|
|
97
|
-
self.
|
|
110
|
+
self._add_christmas_day(tr("Día de Navidad"))
|
|
98
111
|
|
|
99
112
|
# Granted in 2007 decree.
|
|
100
113
|
if year >= 2007:
|
|
101
114
|
# New Year's Eve.
|
|
102
|
-
self.
|
|
115
|
+
self._add_new_years_eve(tr("Fiesta de Fin de Año"))
|
|
103
116
|
|
|
104
117
|
|
|
105
118
|
class CU(Cuba):
|