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
|
@@ -14,17 +14,21 @@ import warnings
|
|
|
14
14
|
from datetime import date
|
|
15
15
|
from datetime import timedelta as td
|
|
16
16
|
|
|
17
|
-
from holidays.
|
|
17
|
+
from holidays.calendars import _CustomChineseCalendar
|
|
18
|
+
from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, SAT, SUN
|
|
18
19
|
from holidays.holiday_base import HolidayBase
|
|
19
|
-
from holidays.holiday_groups import
|
|
20
|
-
|
|
20
|
+
from holidays.holiday_groups import (
|
|
21
|
+
ChineseCalendarHolidays,
|
|
22
|
+
ChristianHolidays,
|
|
23
|
+
InternationalHolidays,
|
|
24
|
+
)
|
|
21
25
|
|
|
22
26
|
|
|
23
27
|
class SouthKorea(
|
|
24
28
|
HolidayBase,
|
|
29
|
+
ChineseCalendarHolidays,
|
|
25
30
|
ChristianHolidays,
|
|
26
31
|
InternationalHolidays,
|
|
27
|
-
KoreanCalendarHolidays,
|
|
28
32
|
):
|
|
29
33
|
"""
|
|
30
34
|
1. https://publicholidays.co.kr/ko/2020-dates/
|
|
@@ -34,7 +38,7 @@ class SouthKorea(
|
|
|
34
38
|
According to (3), the alt holidays in Korea are as follows:
|
|
35
39
|
The alt holiday means next first non holiday after the holiday.
|
|
36
40
|
Independence movement day, Liberation day, National Foundation Day,
|
|
37
|
-
Hangul Day, Children's Day have alt holiday if they fell on
|
|
41
|
+
Hangul Day, Children's Day, Birthday of the Buddha, Christmas Day have alt holiday if they fell on Saturday or Sunday.
|
|
38
42
|
Lunar New Year's Day, Korean Mid Autumn Day have alt holiday if they fell
|
|
39
43
|
on only sunday.
|
|
40
44
|
|
|
@@ -48,9 +52,9 @@ class SouthKorea(
|
|
|
48
52
|
}
|
|
49
53
|
|
|
50
54
|
def __init__(self, *args, **kwargs):
|
|
55
|
+
ChineseCalendarHolidays.__init__(self, calendar=SouthKoreaLunisolarCalendar())
|
|
51
56
|
ChristianHolidays.__init__(self)
|
|
52
57
|
InternationalHolidays.__init__(self)
|
|
53
|
-
KoreanCalendarHolidays.__init__(self)
|
|
54
58
|
super().__init__(*args, **kwargs)
|
|
55
59
|
|
|
56
60
|
def _add_with_alt_holiday(
|
|
@@ -90,8 +94,7 @@ class SouthKorea(
|
|
|
90
94
|
if include_sat:
|
|
91
95
|
target_weekday.add(SAT)
|
|
92
96
|
if (
|
|
93
|
-
hol_date.weekday() in target_weekday
|
|
94
|
-
or len(self.get_list(hol_date)) > 1
|
|
97
|
+
hol_date.weekday() in target_weekday or len(self.get_list(hol_date)) > 1
|
|
95
98
|
) and hol_date.year >= since:
|
|
96
99
|
hol_date += td(days=+1)
|
|
97
100
|
while hol_date.weekday() in target_weekday or hol_date in self:
|
|
@@ -99,6 +102,8 @@ class SouthKorea(
|
|
|
99
102
|
self._add_holiday("Alternative holiday of %s" % hol_name, hol_date)
|
|
100
103
|
|
|
101
104
|
def _populate(self, year):
|
|
105
|
+
if year <= 1947:
|
|
106
|
+
return None
|
|
102
107
|
super()._populate(year)
|
|
103
108
|
|
|
104
109
|
# New Year's Day
|
|
@@ -109,9 +114,9 @@ class SouthKorea(
|
|
|
109
114
|
|
|
110
115
|
# Lunar New Year
|
|
111
116
|
name = "Lunar New Year's Day"
|
|
112
|
-
new_year_date = self.
|
|
113
|
-
self.
|
|
114
|
-
self.
|
|
117
|
+
new_year_date = self._add_chinese_new_years_day(name)
|
|
118
|
+
self._add_chinese_new_years_eve(preceding_day % name)
|
|
119
|
+
self._add_chinese_new_years_day_two(second_day % name)
|
|
115
120
|
|
|
116
121
|
for delta in (-1, 0, +1):
|
|
117
122
|
self._add_with_alt_holiday(
|
|
@@ -123,9 +128,7 @@ class SouthKorea(
|
|
|
123
128
|
)
|
|
124
129
|
|
|
125
130
|
# Independence Movement Day
|
|
126
|
-
self._add_with_alt_holiday(
|
|
127
|
-
"Independence Movement Day", date(year, MAR, 1)
|
|
128
|
-
)
|
|
131
|
+
self._add_with_alt_holiday("Independence Movement Day", date(year, MAR, 1))
|
|
129
132
|
|
|
130
133
|
# Tree Planting Day
|
|
131
134
|
# removed from holiday since 2006
|
|
@@ -133,13 +136,17 @@ class SouthKorea(
|
|
|
133
136
|
self._add_holiday("Tree Planting Day", APR, 5)
|
|
134
137
|
|
|
135
138
|
# Birthday of the Buddha
|
|
136
|
-
|
|
139
|
+
name = "Birthday of the Buddha"
|
|
140
|
+
self._add_with_alt_holiday(
|
|
141
|
+
name,
|
|
142
|
+
self._add_chinese_birthday_of_buddha(name),
|
|
143
|
+
add_hol=False,
|
|
144
|
+
since=2023,
|
|
145
|
+
)
|
|
137
146
|
|
|
138
147
|
# Children's Day
|
|
139
148
|
if year >= 1975:
|
|
140
|
-
self._add_with_alt_holiday(
|
|
141
|
-
"Children's Day", date(year, MAY, 5), since=2015
|
|
142
|
-
)
|
|
149
|
+
self._add_with_alt_holiday("Children's Day", date(year, MAY, 5), since=2015)
|
|
143
150
|
|
|
144
151
|
# Labour Day
|
|
145
152
|
name = "Labour Day"
|
|
@@ -153,16 +160,15 @@ class SouthKorea(
|
|
|
153
160
|
|
|
154
161
|
# Constitution Day
|
|
155
162
|
# removed from holiday since 2008
|
|
156
|
-
if
|
|
163
|
+
if year <= 2007:
|
|
157
164
|
self._add_holiday("Constitution Day", JUL, 17)
|
|
158
165
|
|
|
159
166
|
# Liberation Day
|
|
160
|
-
|
|
161
|
-
self._add_with_alt_holiday("Liberation Day", date(year, AUG, 15))
|
|
167
|
+
self._add_with_alt_holiday("Liberation Day", date(year, AUG, 15))
|
|
162
168
|
|
|
163
169
|
# Korean Mid Autumn Day
|
|
164
170
|
name = "Chuseok"
|
|
165
|
-
chuseok_date = self.
|
|
171
|
+
chuseok_date = self._add_mid_autumn_festival(name)
|
|
166
172
|
self._add_holiday(preceding_day % name, chuseok_date + td(days=-1))
|
|
167
173
|
self._add_holiday(second_day % name, chuseok_date + td(days=+1))
|
|
168
174
|
|
|
@@ -176,16 +182,15 @@ class SouthKorea(
|
|
|
176
182
|
)
|
|
177
183
|
|
|
178
184
|
# National Foundation Day
|
|
179
|
-
self._add_with_alt_holiday(
|
|
180
|
-
"National Foundation Day", date(year, OCT, 3)
|
|
181
|
-
)
|
|
185
|
+
self._add_with_alt_holiday("National Foundation Day", date(year, OCT, 3))
|
|
182
186
|
|
|
183
187
|
# Hangeul Day
|
|
184
188
|
if year <= 1990 or year >= 2013:
|
|
185
189
|
self._add_with_alt_holiday("Hangeul Day", date(year, OCT, 9))
|
|
186
190
|
|
|
187
191
|
# Christmas Day
|
|
188
|
-
|
|
192
|
+
name = "Christmas Day"
|
|
193
|
+
self._add_with_alt_holiday(name, self._add_christmas_day(name), add_hol=False, since=2023)
|
|
189
194
|
|
|
190
195
|
|
|
191
196
|
class Korea(SouthKorea):
|
|
@@ -204,3 +209,31 @@ class KR(SouthKorea):
|
|
|
204
209
|
|
|
205
210
|
class KOR(SouthKorea):
|
|
206
211
|
pass
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
class SouthKoreaLunisolarCalendar(_CustomChineseCalendar):
|
|
215
|
+
BUDDHA_BIRTHDAY_DATES = {
|
|
216
|
+
1931: (MAY, 25),
|
|
217
|
+
1968: (MAY, 5),
|
|
218
|
+
2001: (MAY, 1),
|
|
219
|
+
2012: (MAY, 28),
|
|
220
|
+
2023: (MAY, 27),
|
|
221
|
+
2025: (MAY, 5),
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
LUNAR_NEW_YEAR_DATES = {
|
|
225
|
+
1916: (FEB, 4),
|
|
226
|
+
1944: (JAN, 26),
|
|
227
|
+
1954: (FEB, 4),
|
|
228
|
+
1958: (FEB, 19),
|
|
229
|
+
1966: (JAN, 22),
|
|
230
|
+
1988: (FEB, 18),
|
|
231
|
+
1997: (FEB, 8),
|
|
232
|
+
2027: (FEB, 7),
|
|
233
|
+
2028: (JAN, 27),
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
MID_AUTUMN_DATES = {
|
|
237
|
+
1942: (SEP, 25),
|
|
238
|
+
2040: (SEP, 21),
|
|
239
|
+
}
|
holidays/countries/spain.py
CHANGED
|
@@ -15,13 +15,10 @@ from typing import Optional
|
|
|
15
15
|
|
|
16
16
|
from holidays.constants import FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, DEC
|
|
17
17
|
from holidays.holiday_base import HolidayBase
|
|
18
|
-
from holidays.holiday_groups import ChristianHolidays, IslamicHolidays
|
|
19
|
-
from holidays.holiday_groups import InternationalHolidays
|
|
18
|
+
from holidays.holiday_groups import ChristianHolidays, IslamicHolidays, InternationalHolidays
|
|
20
19
|
|
|
21
20
|
|
|
22
|
-
class Spain(
|
|
23
|
-
HolidayBase, ChristianHolidays, IslamicHolidays, InternationalHolidays
|
|
24
|
-
):
|
|
21
|
+
class Spain(HolidayBase, ChristianHolidays, IslamicHolidays, InternationalHolidays):
|
|
25
22
|
"""
|
|
26
23
|
References:
|
|
27
24
|
- https://administracion.gob.es/pag_Home/atencionCiudadana/calendarios.html # noqa: E501
|
|
@@ -112,7 +109,7 @@ class Spain(
|
|
|
112
109
|
self._add_saint_josephs_day("San José")
|
|
113
110
|
if self._year <= 2022:
|
|
114
111
|
self._add_holy_thursday("Jueves Santo")
|
|
115
|
-
self.
|
|
112
|
+
self._add_saint_georges_day("Día de San Jorge")
|
|
116
113
|
if self._year == 2022:
|
|
117
114
|
self._add_labor_day("Día del Trabajador")
|
|
118
115
|
self._add_christmas_day("Navidad")
|
|
@@ -148,7 +145,7 @@ class Spain(
|
|
|
148
145
|
def _add_subdiv_cl_holidays(self):
|
|
149
146
|
if self._year == 2023:
|
|
150
147
|
self._add_new_years_day("Año nuevo")
|
|
151
|
-
self.
|
|
148
|
+
self._add_saint_james_day("Día de Santiago Apóstol")
|
|
152
149
|
if self._year <= 2014:
|
|
153
150
|
self._add_saint_josephs_day("San José")
|
|
154
151
|
if self._year <= 2022:
|
|
@@ -241,7 +238,7 @@ class Spain(
|
|
|
241
238
|
self._add_holy_thursday("Jueves Santo")
|
|
242
239
|
self._add_holiday("Día de Comunidad de Madrid", MAY, 2)
|
|
243
240
|
if self._year == 2022:
|
|
244
|
-
self.
|
|
241
|
+
self._add_saint_james_day("Día de Santiago Apóstol")
|
|
245
242
|
self._add_christmas_day("Navidad")
|
|
246
243
|
|
|
247
244
|
def _add_subdiv_ml_holidays(self):
|
|
@@ -266,7 +263,7 @@ class Spain(
|
|
|
266
263
|
self._add_holy_thursday("Jueves Santo")
|
|
267
264
|
self._add_easter_monday("Lunes de Pascua")
|
|
268
265
|
if self._year >= 2022:
|
|
269
|
-
self.
|
|
266
|
+
self._add_saint_james_day("Día de Santiago Apóstol")
|
|
270
267
|
if self._year == 2022:
|
|
271
268
|
self._add_christmas_day("Navidad")
|
|
272
269
|
|
|
@@ -277,7 +274,7 @@ class Spain(
|
|
|
277
274
|
self._add_holy_thursday("Jueves Santo")
|
|
278
275
|
self._add_easter_monday("Lunes de Pascua")
|
|
279
276
|
if self._year >= 2022:
|
|
280
|
-
self.
|
|
277
|
+
self._add_saint_james_day("Día de Santiago Apóstol")
|
|
281
278
|
if self._year <= 2022:
|
|
282
279
|
self._add_holiday("Día de Elcano", SEP, 6)
|
|
283
280
|
if 2011 <= self._year <= 2013:
|
holidays/countries/sweden.py
CHANGED
|
@@ -35,6 +35,7 @@ class Sweden(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
35
35
|
|
|
36
36
|
country = "SE"
|
|
37
37
|
default_language = "sv"
|
|
38
|
+
supported_languages = ("en_US", "sv", "uk")
|
|
38
39
|
|
|
39
40
|
def __init__(self, include_sundays=True, **kwargs):
|
|
40
41
|
"""
|
|
@@ -126,9 +127,7 @@ class Sweden(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
126
127
|
# Optionally add all Sundays of the year.
|
|
127
128
|
begin = _get_nth_weekday_from(1, SUN, date(year, JAN, 1))
|
|
128
129
|
end = date(year, DEC, 31)
|
|
129
|
-
for dt in (
|
|
130
|
-
begin + td(days=n) for n in range(0, (end - begin).days + 1, 7)
|
|
131
|
-
):
|
|
130
|
+
for dt in (begin + td(days=n) for n in range(0, (end - begin).days + 1, 7)):
|
|
132
131
|
# Sunday.
|
|
133
132
|
self._add_holiday(tr("Söndag"), dt)
|
|
134
133
|
|
holidays/countries/taiwan.py
CHANGED
|
@@ -11,8 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
from holidays.constants import FEB, APR, OCT
|
|
13
13
|
from holidays.holiday_base import HolidayBase
|
|
14
|
-
from holidays.holiday_groups import ChineseCalendarHolidays
|
|
15
|
-
from holidays.holiday_groups import InternationalHolidays
|
|
14
|
+
from holidays.holiday_groups import ChineseCalendarHolidays, InternationalHolidays
|
|
16
15
|
|
|
17
16
|
|
|
18
17
|
class Taiwan(HolidayBase, ChineseCalendarHolidays, InternationalHolidays):
|
|
@@ -28,33 +27,34 @@ class Taiwan(HolidayBase, ChineseCalendarHolidays, InternationalHolidays):
|
|
|
28
27
|
super().__init__(*args, **kwargs)
|
|
29
28
|
|
|
30
29
|
def _populate(self, year):
|
|
30
|
+
if year <= 1911:
|
|
31
|
+
return None
|
|
31
32
|
super()._populate(year)
|
|
32
33
|
|
|
33
34
|
# New Year's Day
|
|
34
|
-
|
|
35
|
-
self._add_new_years_day(
|
|
36
|
-
"Founding of the Republic of China (New Year's Day)"
|
|
37
|
-
)
|
|
35
|
+
self._add_new_years_day("Founding of the Republic of China (New Year's Day)")
|
|
38
36
|
|
|
39
|
-
|
|
40
|
-
self._add_chinese_new_years_day("Spring Festival")
|
|
41
|
-
self._add_chinese_new_years_day_two("Spring Festival")
|
|
42
|
-
self._add_chinese_new_years_day_three("Spring Festival")
|
|
37
|
+
self._add_chinese_new_years_eve("Chinese New Year's Eve")
|
|
43
38
|
|
|
44
|
-
|
|
39
|
+
name = "Spring Festival"
|
|
40
|
+
self._add_chinese_new_years_day(name)
|
|
41
|
+
self._add_chinese_new_years_day_two(name)
|
|
42
|
+
self._add_chinese_new_years_day_three(name)
|
|
43
|
+
if year == 2021:
|
|
44
|
+
self._add_chinese_new_years_day_four(name)
|
|
45
|
+
self._add_chinese_new_years_day_five(name)
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
self._add_mid_autumn_festival("Mid-Autumn Festival")
|
|
47
|
+
self._add_holiday("Children's Day", APR, 4)
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
self._add_dragon_boat_festival("Dragon Boat Festival")
|
|
50
|
+
self._add_mid_autumn_festival("Mid-Autumn Festival")
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
name = "National Day"
|
|
53
|
+
self._add_holiday(name, OCT, 10)
|
|
54
|
+
self._add_holiday(name, OCT, 11)
|
|
54
55
|
|
|
55
|
-
if year
|
|
56
|
-
self.
|
|
57
|
-
self._add_chinese_new_years_day_five("Spring Festival")
|
|
56
|
+
if year >= 1948:
|
|
57
|
+
self._add_holiday("Peace Memorial Day", FEB, 28)
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
class TW(Taiwan):
|
holidays/countries/thailand.py
CHANGED
|
@@ -13,19 +13,16 @@ from datetime import date
|
|
|
13
13
|
from datetime import timedelta as td
|
|
14
14
|
from gettext import gettext as tr
|
|
15
15
|
|
|
16
|
-
from holidays.
|
|
17
|
-
from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP
|
|
18
|
-
from holidays.constants import OCT, NOV, DEC
|
|
16
|
+
from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
|
|
19
17
|
from holidays.holiday_base import HolidayBase
|
|
20
|
-
from holidays.holiday_groups import InternationalHolidays
|
|
18
|
+
from holidays.holiday_groups import InternationalHolidays, ThaiCalendarHolidays
|
|
21
19
|
|
|
22
20
|
|
|
23
|
-
class Thailand(HolidayBase, InternationalHolidays):
|
|
21
|
+
class Thailand(HolidayBase, InternationalHolidays, ThaiCalendarHolidays):
|
|
24
22
|
"""
|
|
25
23
|
A subclass of :py:class:`HolidayBase` representing public holidays
|
|
26
24
|
in Thailand. (Based on South Korean and Singaporean Implementation)
|
|
27
25
|
|
|
28
|
-
|
|
29
26
|
References:
|
|
30
27
|
|
|
31
28
|
- Based on: https://en.wikipedia.org/wiki/Public_holidays_in_Thailand
|
|
@@ -125,20 +122,13 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
125
122
|
# Special Cases.
|
|
126
123
|
|
|
127
124
|
rama_ix_golden_jubilee = tr("พระราชพิธีกาญจนาภิเษก พ.ศ. 2539")
|
|
128
|
-
rama_ix_sixty_accession = tr(
|
|
129
|
-
"พระราชพิธีฉลองสิริราชสมบัติครบ 60 ปี พ.ศ. 2549"
|
|
130
|
-
)
|
|
125
|
+
rama_ix_sixty_accession = tr("พระราชพิธีฉลองสิริราชสมบัติครบ 60 ปี พ.ศ. 2549")
|
|
131
126
|
thai_military_emergency_lockdown = tr("วันหยุดพิเศษ (คมช.)")
|
|
132
127
|
thai_political_emergency_lockdown = tr("วันหยุดพิเศษ (การเมือง)")
|
|
133
|
-
thai_flood_2011_emergency_lockdown = tr(
|
|
134
|
-
|
|
135
|
-
)
|
|
136
|
-
rama_ix_mourning = tr(
|
|
137
|
-
"วันหยุดพิเศษ (ร่วมถวายอาลัย ส่งดวงพระวิญญาณพระบรมศพ)"
|
|
138
|
-
)
|
|
128
|
+
thai_flood_2011_emergency_lockdown = tr("วันหยุดพิเศษ (มหาอุทกภัย พ.ศ. 2554)")
|
|
129
|
+
rama_ix_mourning = tr("วันหยุดพิเศษ (ร่วมถวายอาลัย ส่งดวงพระวิญญาณพระบรมศพ)")
|
|
139
130
|
rama_ix_cremation = tr(
|
|
140
|
-
"
|
|
141
|
-
"พระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช"
|
|
131
|
+
"วันพระราชพิธีถวายพระเพลิงพระบรมศพพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช"
|
|
142
132
|
)
|
|
143
133
|
rama_x_coronation_celebrations = tr(
|
|
144
134
|
"พระราชพิธีบรมราชาภิเษก พระบาทสมเด็จพระวชิรเกล้าเจ้าอยู่หัว"
|
|
@@ -165,7 +155,7 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
165
155
|
(DEC, 12, thai_special_in_lieu_holidays),
|
|
166
156
|
),
|
|
167
157
|
# 1995-1997 (Bank of Thailand Data).
|
|
168
|
-
1996: (
|
|
158
|
+
1996: (JUN, 10, rama_ix_golden_jubilee),
|
|
169
159
|
# 1998-2000 (include In Lieus, Checked with Bank of Thailand Data).
|
|
170
160
|
1998: (
|
|
171
161
|
(MAY, 11, thai_special_in_lieu_holidays),
|
|
@@ -192,7 +182,7 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
192
182
|
(JUN, 13, rama_ix_sixty_accession),
|
|
193
183
|
(SEP, 20, thai_military_emergency_lockdown),
|
|
194
184
|
),
|
|
195
|
-
2007: (
|
|
185
|
+
2007: (DEC, 24, thai_election_in_lieu),
|
|
196
186
|
2009: (
|
|
197
187
|
(JAN, 2, thai_bridge_public_holiday),
|
|
198
188
|
(APR, 10, thai_political_emergency_lockdown),
|
|
@@ -213,9 +203,9 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
213
203
|
(OCT, 30, thai_flood_2011_emergency_lockdown),
|
|
214
204
|
(OCT, 31, thai_flood_2011_emergency_lockdown),
|
|
215
205
|
),
|
|
216
|
-
2012: (
|
|
217
|
-
2013: (
|
|
218
|
-
2014: (
|
|
206
|
+
2012: (APR, 9, thai_bridge_public_holiday),
|
|
207
|
+
2013: (DEC, 30, thai_bridge_public_holiday),
|
|
208
|
+
2014: (AUG, 11, thai_bridge_public_holiday),
|
|
219
209
|
2015: (
|
|
220
210
|
(JAN, 2, thai_bridge_public_holiday),
|
|
221
211
|
(MAY, 4, thai_bridge_public_holiday),
|
|
@@ -225,8 +215,8 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
225
215
|
(JUL, 18, thai_bridge_public_holiday),
|
|
226
216
|
(OCT, 14, rama_ix_mourning),
|
|
227
217
|
),
|
|
228
|
-
2017: (
|
|
229
|
-
2019: (
|
|
218
|
+
2017: (OCT, 26, rama_ix_cremation),
|
|
219
|
+
2019: (MAY, 6, rama_x_coronation_celebrations),
|
|
230
220
|
2020: (
|
|
231
221
|
(JUL, 27, songkran_festival_in_lieu_covid),
|
|
232
222
|
(SEP, 4, songkran_festival_in_lieu_covid),
|
|
@@ -246,12 +236,13 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
246
236
|
(OCT, 14, thai_bridge_public_holiday),
|
|
247
237
|
(DEC, 30, thai_bridge_public_holiday),
|
|
248
238
|
),
|
|
249
|
-
2023: (
|
|
239
|
+
2023: (MAY, 5, thai_bridge_public_holiday),
|
|
250
240
|
}
|
|
241
|
+
supported_languages = ("en_US", "th")
|
|
251
242
|
|
|
252
243
|
def __init__(self, **kwargs) -> None:
|
|
253
244
|
InternationalHolidays.__init__(self)
|
|
254
|
-
|
|
245
|
+
ThaiCalendarHolidays.__init__(self)
|
|
255
246
|
super().__init__(**kwargs)
|
|
256
247
|
|
|
257
248
|
def _populate(self, year):
|
|
@@ -281,11 +272,7 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
281
272
|
if (
|
|
282
273
|
self.observed
|
|
283
274
|
and self._is_weekend(dt)
|
|
284
|
-
and (
|
|
285
|
-
1961 <= year <= 1973
|
|
286
|
-
or 1995 <= year <= 1997
|
|
287
|
-
or year >= 2001
|
|
288
|
-
)
|
|
275
|
+
and (1961 <= year <= 1973 or 1995 <= year <= 1997 or year >= 2001)
|
|
289
276
|
):
|
|
290
277
|
in_lieu = dt + td(days=+2 if self._is_saturday(dt) else +1)
|
|
291
278
|
for name in self.get_list(dt):
|
|
@@ -344,11 +331,9 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
344
331
|
# This has its own in-lieu trigger.
|
|
345
332
|
|
|
346
333
|
if year >= 1948:
|
|
347
|
-
songkran_festival =
|
|
334
|
+
songkran_festival = tr("วันสงกรานต์")
|
|
348
335
|
if year <= 1953 or (1957 <= year != 2020):
|
|
349
|
-
dt = self._add_holiday(
|
|
350
|
-
songkran_festival, APR, 12 if 1989 <= year <= 1997 else 13
|
|
351
|
-
)
|
|
336
|
+
dt = self._add_holiday(songkran_festival, APR, 12 if 1989 <= year <= 1997 else 13)
|
|
352
337
|
if 1957 <= year <= 1988:
|
|
353
338
|
_add_observed(dt)
|
|
354
339
|
else:
|
|
@@ -367,17 +352,11 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
367
352
|
|
|
368
353
|
songkran_festival_in_lieu = self.tr("ชดเชย%s") % songkran_festival
|
|
369
354
|
|
|
370
|
-
if self.observed and (
|
|
371
|
-
1995 <= year <= 1997 or 2001 <= year != 2020
|
|
372
|
-
):
|
|
355
|
+
if self.observed and (1995 <= year <= 1997 or 2001 <= year != 2020):
|
|
373
356
|
if self._is_thursday(dt):
|
|
374
|
-
self._add_holiday(
|
|
375
|
-
songkran_festival_in_lieu, dt + td(days=+4)
|
|
376
|
-
)
|
|
357
|
+
self._add_holiday(songkran_festival_in_lieu, dt + td(days=+4))
|
|
377
358
|
elif self._is_friday(dt) or self._is_saturday(dt):
|
|
378
|
-
self._add_holiday(
|
|
379
|
-
songkran_festival_in_lieu, dt + td(days=+3)
|
|
380
|
-
)
|
|
359
|
+
self._add_holiday(songkran_festival_in_lieu, dt + td(days=+3))
|
|
381
360
|
|
|
382
361
|
# National Labour day.
|
|
383
362
|
# วันแรงงานแห่งชาติ
|
|
@@ -397,11 +376,7 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
397
376
|
# Replaced by Rama IX's birthday in 1960 (B.E. 2503) by Sarit Thanarat.
|
|
398
377
|
# TODO: Add check for 1939 if we support earlier dates.
|
|
399
378
|
|
|
400
|
-
_add_observed(
|
|
401
|
-
self._add_holiday(
|
|
402
|
-
tr("วันชาติ"), *((JUN, 24) if year <= 1959 else (DEC, 5))
|
|
403
|
-
)
|
|
404
|
-
)
|
|
379
|
+
_add_observed(self._add_holiday(tr("วันชาติ"), *((JUN, 24) if year <= 1959 else (DEC, 5))))
|
|
405
380
|
|
|
406
381
|
# Coronation Day.
|
|
407
382
|
# วันฉัตรมงคล
|
|
@@ -463,10 +438,7 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
463
438
|
name = (
|
|
464
439
|
tr("วันเฉลิมพระชนมพรรษาสมเด็จพระบรมราชชนนีพันปีหลวง")
|
|
465
440
|
if year >= 2017
|
|
466
|
-
else tr(
|
|
467
|
-
"วันเฉลิมพระชนมพรรษาสมเด็จพระนางเจ้าสิริกิติ์ "
|
|
468
|
-
"พระบรมราชินีนาถ"
|
|
469
|
-
)
|
|
441
|
+
else tr("วันเฉลิมพระชนมพรรษาสมเด็จพระนางเจ้าสิริกิติ์ พระบรมราชินีนาถ")
|
|
470
442
|
)
|
|
471
443
|
_add_observed(self._add_holiday(name, AUG, 12))
|
|
472
444
|
|
|
@@ -498,10 +470,7 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
498
470
|
"มหาภูมิพลอดุลยเดชมหาราช บรมนาถบพิตร"
|
|
499
471
|
)
|
|
500
472
|
if year >= 2019
|
|
501
|
-
else tr(
|
|
502
|
-
"วันคล้ายวันสวรรคตพระบาทสมเด็จพระปรมินทรมหาภูมิพล"
|
|
503
|
-
"อดุลยเดช บรมนาถบพิตร"
|
|
504
|
-
)
|
|
473
|
+
else tr("วันคล้ายวันสวรรคตพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช บรมนาถบพิตร")
|
|
505
474
|
)
|
|
506
475
|
_add_observed(self._add_holiday(name, OCT, 13))
|
|
507
476
|
|
|
@@ -535,8 +504,7 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
535
504
|
)
|
|
536
505
|
if year >= 2016
|
|
537
506
|
else tr(
|
|
538
|
-
"
|
|
539
|
-
"พระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช บรมนาถบพิตร"
|
|
507
|
+
"วันเฉลิมพระชนมพรรษาพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช บรมนาถบพิตร"
|
|
540
508
|
)
|
|
541
509
|
)
|
|
542
510
|
)
|
|
@@ -572,50 +540,38 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
572
540
|
self._add_new_years_eve(tr("วันสิ้นปี"))
|
|
573
541
|
|
|
574
542
|
# Thai Lunar Calendar Holidays
|
|
543
|
+
# See `_ThaiLunisolar` in holidays/utils.py for more details.
|
|
544
|
+
# Thai Lunar Calendar Holidays only work from 1941 to 2057.
|
|
575
545
|
|
|
576
|
-
"""
|
|
577
|
-
See `_ThaiLuniSolar` in holidays/utils.py for more details.
|
|
578
|
-
|
|
579
|
-
Thai Lunar Calendar Holidays only work from 1941 (B.E. 2484) onwards
|
|
580
|
-
until 2057 (B.E. 2600).
|
|
581
|
-
"""
|
|
582
546
|
# Makha Bucha.
|
|
583
547
|
# วันมาฆบูชา
|
|
584
548
|
# Status: In-Use.
|
|
585
549
|
|
|
586
|
-
makha_bucha_date = self.
|
|
550
|
+
makha_bucha_date = self._add_makha_bucha(tr("วันมาฆบูชา"))
|
|
587
551
|
if makha_bucha_date:
|
|
588
|
-
_add_observed(
|
|
589
|
-
self._add_holiday(tr("วันมาฆบูชา"), makha_bucha_date)
|
|
590
|
-
)
|
|
552
|
+
_add_observed(makha_bucha_date)
|
|
591
553
|
|
|
592
554
|
# Visakha Bucha.
|
|
593
555
|
# วันวิสาขบูชา
|
|
594
556
|
# Status: In-Use.
|
|
595
557
|
|
|
596
|
-
visakha_bucha_date = self.
|
|
558
|
+
visakha_bucha_date = self._add_visakha_bucha(tr("วันวิสาขบูชา"))
|
|
597
559
|
if visakha_bucha_date:
|
|
598
|
-
_add_observed(
|
|
599
|
-
self._add_holiday(tr("วันวิสาขบูชา"), visakha_bucha_date)
|
|
600
|
-
)
|
|
560
|
+
_add_observed(visakha_bucha_date)
|
|
601
561
|
|
|
602
562
|
# Asarnha Bucha.
|
|
603
563
|
# วันอาสาฬหบูชา
|
|
604
564
|
# Status: In-Use.
|
|
605
565
|
# This has its own in-lieu trigger.
|
|
606
566
|
|
|
607
|
-
asarnha_bucha_date = self.
|
|
608
|
-
if asarnha_bucha_date:
|
|
609
|
-
self._add_holiday(tr("วันอาสาฬหบูชา"), asarnha_bucha_date)
|
|
567
|
+
asarnha_bucha_date = self._add_asarnha_bucha(tr("วันอาสาฬหบูชา"))
|
|
610
568
|
|
|
611
569
|
# Buddhist Lent Day.
|
|
612
570
|
# วันเข้าพรรษา
|
|
613
571
|
# Status: In-Use.
|
|
614
572
|
# This has its own in-lieu trigger.
|
|
615
573
|
|
|
616
|
-
|
|
617
|
-
if khao_phansa_date:
|
|
618
|
-
self._add_holiday(tr("วันเข้าพรรษา"), khao_phansa_date)
|
|
574
|
+
self._add_khao_phansa(tr("วันเข้าพรรษา"))
|
|
619
575
|
|
|
620
576
|
# Asarnha Bucha/Buddhist Lent Day (in lieu).
|
|
621
577
|
# วันหยุดชดเชยวันอาสาฬหบูชา
|
|
@@ -687,9 +643,7 @@ class Thailand(HolidayBase, InternationalHolidays):
|
|
|
687
643
|
}
|
|
688
644
|
# For years with exact date data.
|
|
689
645
|
if year in raeknakhwan_dates:
|
|
690
|
-
_add_observed(
|
|
691
|
-
self._add_holiday(raeknakhwan, *raeknakhwan_dates[year])
|
|
692
|
-
)
|
|
646
|
+
_add_observed(self._add_holiday(raeknakhwan, *raeknakhwan_dates[year]))
|
|
693
647
|
# Approx. otherwise for 1957-2013.
|
|
694
648
|
elif 1957 <= year <= 1996:
|
|
695
649
|
_add_observed(self._add_holiday(raeknakhwan, MAY, 13))
|
holidays/countries/turkey.py
CHANGED
|
@@ -39,9 +39,7 @@ class Turkey(HolidayBase, IslamicHolidays, InternationalHolidays):
|
|
|
39
39
|
self._add_labor_day("Labour Day")
|
|
40
40
|
|
|
41
41
|
# 19th of May.
|
|
42
|
-
self._add_holiday(
|
|
43
|
-
"Commemoration of Ataturk, Youth and Sports Day", MAY, 19
|
|
44
|
-
)
|
|
42
|
+
self._add_holiday("Commemoration of Ataturk, Youth and Sports Day", MAY, 19)
|
|
45
43
|
|
|
46
44
|
# 15th of Jul.
|
|
47
45
|
# Became a national holiday after 15 Jul 2016 coup d'etat attempt.
|
holidays/countries/ukraine.py
CHANGED
|
@@ -27,6 +27,7 @@ class Ukraine(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
27
27
|
|
|
28
28
|
country = "UA"
|
|
29
29
|
default_language = "uk"
|
|
30
|
+
supported_languages = ("ar", "en_US", "uk")
|
|
30
31
|
|
|
31
32
|
def __init__(self, *args, **kwargs):
|
|
32
33
|
ChristianHolidays.__init__(self, JULIAN_CALENDAR)
|
|
@@ -58,17 +59,13 @@ class Ukraine(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
58
59
|
)
|
|
59
60
|
|
|
60
61
|
# International Women's Day.
|
|
61
|
-
observed_dates.add(
|
|
62
|
-
self._add_womens_day(tr("Міжнародний жіночий день"))
|
|
63
|
-
)
|
|
62
|
+
observed_dates.add(self._add_womens_day(tr("Міжнародний жіночий день")))
|
|
64
63
|
|
|
65
64
|
# There is no holidays from March 15, 2022
|
|
66
65
|
# https://zakon.rada.gov.ua/laws/show/2136-20#n26
|
|
67
66
|
if year <= 2021:
|
|
68
67
|
# Easter Sunday (Pascha).
|
|
69
|
-
observed_dates.add(
|
|
70
|
-
self._add_easter_sunday(tr("Великдень (Пасха)"))
|
|
71
|
-
)
|
|
68
|
+
observed_dates.add(self._add_easter_sunday(tr("Великдень (Пасха)")))
|
|
72
69
|
|
|
73
70
|
# Holy Trinity Day.
|
|
74
71
|
observed_dates.add(self._add_whit_sunday(tr("Трійця")))
|
|
@@ -83,16 +80,11 @@ class Ukraine(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
83
80
|
may_1 = self._add_labor_day(name)
|
|
84
81
|
observed_dates.add(may_1)
|
|
85
82
|
if year <= 2017:
|
|
86
|
-
observed_dates.add(
|
|
87
|
-
self._add_holiday(name, may_1 + td(days=+1))
|
|
88
|
-
)
|
|
83
|
+
observed_dates.add(self._add_holiday(name, may_1 + td(days=+1)))
|
|
89
84
|
|
|
90
85
|
name = (
|
|
91
86
|
# Day of Victory over Nazism in World War II (Victory Day).
|
|
92
|
-
tr(
|
|
93
|
-
"День перемоги над нацизмом у Другій світовій війні "
|
|
94
|
-
"(День перемоги)"
|
|
95
|
-
)
|
|
87
|
+
tr("День перемоги над нацизмом у Другій світовій війні (День перемоги)")
|
|
96
88
|
if year >= 2016
|
|
97
89
|
# Victory Day.
|
|
98
90
|
else tr("День перемоги")
|
|
@@ -146,12 +138,9 @@ class Ukraine(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
146
138
|
if self.observed:
|
|
147
139
|
for dt in sorted(observed_dates):
|
|
148
140
|
if self._is_weekend(dt) and (
|
|
149
|
-
date(1995, JAN, 27) <= dt <= date(1998, JAN, 9)
|
|
150
|
-
or dt >= date(1999, APR, 23)
|
|
141
|
+
date(1995, JAN, 27) <= dt <= date(1998, JAN, 9) or dt >= date(1999, APR, 23)
|
|
151
142
|
):
|
|
152
|
-
obs_date = dt + td(
|
|
153
|
-
days=+2 if self._is_saturday(dt) else +1
|
|
154
|
-
)
|
|
143
|
+
obs_date = dt + td(days=+2 if self._is_saturday(dt) else +1)
|
|
155
144
|
while obs_date in self:
|
|
156
145
|
obs_date += td(days=+1)
|
|
157
146
|
hol_name = self.tr("%s (вихідний)") % self[dt]
|