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/botswana.py
CHANGED
|
@@ -12,14 +12,13 @@
|
|
|
12
12
|
from datetime import date
|
|
13
13
|
from datetime import timedelta as td
|
|
14
14
|
|
|
15
|
-
from dateutil.easter import easter
|
|
16
|
-
|
|
17
15
|
from holidays.calendars import _get_nth_weekday_of_month
|
|
18
|
-
from holidays.constants import
|
|
16
|
+
from holidays.constants import JUL, SEP, MON
|
|
19
17
|
from holidays.holiday_base import HolidayBase
|
|
18
|
+
from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
|
|
20
19
|
|
|
21
20
|
|
|
22
|
-
class Botswana(HolidayBase):
|
|
21
|
+
class Botswana(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
23
22
|
"""
|
|
24
23
|
https://www.gov.bw/public-holidays
|
|
25
24
|
https://publicholidays.africa/botswana/2021-dates/
|
|
@@ -28,60 +27,54 @@ class Botswana(HolidayBase):
|
|
|
28
27
|
"""
|
|
29
28
|
|
|
30
29
|
country = "BW"
|
|
31
|
-
special_holidays = {2019: (
|
|
32
|
-
|
|
33
|
-
def
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
)
|
|
37
|
-
self[hol_date] = hol_name1
|
|
38
|
-
if hol_name2:
|
|
39
|
-
self[hol_date + td(days=+1)] = hol_name2
|
|
40
|
-
|
|
41
|
-
if self.observed and year >= 1995:
|
|
42
|
-
if self._is_saturday(hol_date) and hol_name2:
|
|
43
|
-
self[hol_date + td(days=+2)] = f"{hol_name2} (Observed)"
|
|
44
|
-
elif self._is_sunday(hol_date):
|
|
45
|
-
self[
|
|
46
|
-
hol_date + td(days=+2 if hol_name2 else +1)
|
|
47
|
-
] = f"{hol_name1} (Observed)"
|
|
30
|
+
special_holidays = {2019: (JUL, 2, "Public Holiday")}
|
|
31
|
+
|
|
32
|
+
def __init__(self, *args, **kwargs) -> None:
|
|
33
|
+
ChristianHolidays.__init__(self)
|
|
34
|
+
InternationalHolidays.__init__(self)
|
|
35
|
+
super().__init__(*args, **kwargs)
|
|
48
36
|
|
|
37
|
+
def _add_observed(self, dt: date, days: int = +1) -> None:
|
|
38
|
+
if self.observed and self._is_sunday(dt) and self._year >= 1995:
|
|
39
|
+
self._add_holiday("%s (Observed)" % self[dt], dt + td(days=days))
|
|
40
|
+
|
|
41
|
+
def _populate(self, year):
|
|
49
42
|
if year <= 1965:
|
|
50
43
|
return None
|
|
51
44
|
|
|
52
45
|
super()._populate(year)
|
|
53
46
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
)
|
|
47
|
+
self._add_observed(self._add_new_years_day("New Year's Day"), days=+2)
|
|
48
|
+
self._add_observed(self._add_new_years_day_two("New Year's Day Holiday"))
|
|
57
49
|
|
|
58
50
|
# Easter and easter related calculations
|
|
59
|
-
|
|
60
|
-
self
|
|
61
|
-
self
|
|
62
|
-
self
|
|
63
|
-
self[easter_date + td(days=+39)] = "Ascension Day"
|
|
51
|
+
self._add_good_friday("Good Friday")
|
|
52
|
+
self._add_holy_saturday("Holy Saturday")
|
|
53
|
+
self._add_easter_monday("Easter Monday")
|
|
54
|
+
self._add_ascension_thursday("Ascension Day")
|
|
64
55
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
56
|
+
may_1 = self._add_labor_day("Labour Day")
|
|
57
|
+
self._add_observed(may_1)
|
|
58
|
+
if self.observed and year >= 2016 and self._is_saturday(may_1):
|
|
59
|
+
self._add_holiday("Labour Day Holiday", may_1 + td(days=+2))
|
|
68
60
|
|
|
69
|
-
|
|
61
|
+
self._add_observed(self._add_holiday("Sir Seretse Khama Day", JUL, 1))
|
|
70
62
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
self[dt] = "President's Day"
|
|
75
|
-
self[dt + td(days=+1)] = "President's Day Holiday"
|
|
76
|
-
|
|
77
|
-
_add_with_observed(
|
|
78
|
-
date(year, SEP, 30), "Botswana Day", "Botswana Day Holiday"
|
|
63
|
+
july_3rd_monday = self._add_holiday(
|
|
64
|
+
"President's Day", _get_nth_weekday_of_month(3, MON, JUL, year)
|
|
79
65
|
)
|
|
66
|
+
self._add_holiday("President's Day Holiday", july_3rd_monday + td(days=+1))
|
|
67
|
+
|
|
68
|
+
sep_30 = self._add_holiday("Botswana Day", SEP, 30)
|
|
69
|
+
self._add_observed(sep_30, days=+2)
|
|
70
|
+
self._add_observed(self._add_holiday("Botswana Day Holiday", sep_30 + td(days=+1)))
|
|
80
71
|
|
|
81
|
-
|
|
72
|
+
self._add_observed(self._add_christmas_day("Christmas Day"), days=+2)
|
|
73
|
+
dec_26 = self._add_christmas_day_two("Boxing Day")
|
|
74
|
+
self._add_observed(dec_26)
|
|
82
75
|
|
|
83
|
-
if self.observed and year >= 2016 and self._is_saturday(
|
|
84
|
-
self
|
|
76
|
+
if self.observed and year >= 2016 and self._is_saturday(dec_26):
|
|
77
|
+
self._add_holiday("Boxing Day Holiday", dec_26 + td(days=+2))
|
|
85
78
|
|
|
86
79
|
|
|
87
80
|
class BW(Botswana):
|
holidays/countries/brazil.py
CHANGED
|
@@ -13,8 +13,7 @@ from datetime import timedelta as td
|
|
|
13
13
|
from datetime import date
|
|
14
14
|
|
|
15
15
|
from holidays.calendars import _get_nth_weekday_from, _get_nth_weekday_of_month
|
|
16
|
-
from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP
|
|
17
|
-
from holidays.constants import OCT, NOV, DEC, FRI, SUN
|
|
16
|
+
from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, FRI, SUN
|
|
18
17
|
from holidays.holiday_base import HolidayBase
|
|
19
18
|
from holidays.holiday_groups import ChristianHolidays, InternationalHolidays
|
|
20
19
|
|
|
@@ -150,9 +149,7 @@ class Brazil(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
150
149
|
def get_movable_acre(*args) -> date:
|
|
151
150
|
dt = date(self._year, *args)
|
|
152
151
|
if self._year >= 2009 and (
|
|
153
|
-
self._is_tuesday(dt)
|
|
154
|
-
or self._is_wednesday(dt)
|
|
155
|
-
or self._is_thursday(dt)
|
|
152
|
+
self._is_tuesday(dt) or self._is_wednesday(dt) or self._is_thursday(dt)
|
|
156
153
|
):
|
|
157
154
|
dt = _get_nth_weekday_from(1, FRI, dt)
|
|
158
155
|
return dt
|
|
@@ -215,7 +212,7 @@ class Brazil(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
215
212
|
|
|
216
213
|
if self._year >= 2012:
|
|
217
214
|
# Saint James' Day.
|
|
218
|
-
self.
|
|
215
|
+
self._add_saint_james_day("São Tiago")
|
|
219
216
|
|
|
220
217
|
# Creation of the Federal Territory.
|
|
221
218
|
self._add_holiday("Criação do Território Federal", SEP, 13)
|
|
@@ -309,7 +306,7 @@ class Brazil(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
309
306
|
def _add_subdiv_rj_holidays(self):
|
|
310
307
|
if self._year >= 2008:
|
|
311
308
|
# Saint George's Day.
|
|
312
|
-
self.
|
|
309
|
+
self._add_saint_georges_day("São Jorge")
|
|
313
310
|
|
|
314
311
|
if self._year >= 2002:
|
|
315
312
|
self._add_holiday("Consciência Negra", NOV, 20)
|
|
@@ -0,0 +1,427 @@
|
|
|
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
|
+
from gettext import gettext as tr
|
|
15
|
+
|
|
16
|
+
from holidays.calendars import _CustomIslamicCalendar
|
|
17
|
+
from holidays.constants import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
|
|
18
|
+
from holidays.holiday_base import HolidayBase
|
|
19
|
+
from holidays.holiday_groups import (
|
|
20
|
+
ChineseCalendarHolidays,
|
|
21
|
+
ChristianHolidays,
|
|
22
|
+
InternationalHolidays,
|
|
23
|
+
IslamicHolidays,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class Brunei(
|
|
28
|
+
HolidayBase,
|
|
29
|
+
ChineseCalendarHolidays,
|
|
30
|
+
ChristianHolidays,
|
|
31
|
+
InternationalHolidays,
|
|
32
|
+
IslamicHolidays,
|
|
33
|
+
):
|
|
34
|
+
"""
|
|
35
|
+
A subclass of :py:class:`HolidayBase` representing public holidays
|
|
36
|
+
in Brunei Darussalam.
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
References:
|
|
40
|
+
|
|
41
|
+
- Based on: http://www.labour.gov.bn/Lists/Upcomming%20events/AllItems.aspx
|
|
42
|
+
http://www.labour.gov.bn/Download/GUIDE%20TO%20BRUNEI%20EMPLOYMENT%20LAWS%20-%20english%20version-3.pdf # noqa: E501
|
|
43
|
+
- Checked with: https://asean.org/wp-content/uploads/2021/12/ASEAN-National-Holidays-2022.pdf # noqa: E501
|
|
44
|
+
https://asean.org/wp-content/uploads/2022/12/ASEAN-Public-Holidays-2023.pdf # noqa: E501
|
|
45
|
+
https://www.timeanddate.com/holidays/brunei/
|
|
46
|
+
- [Jubli Emas Sultan Hassanal Bolkiah]
|
|
47
|
+
https://www.brudirect.com/news.php?id=28316
|
|
48
|
+
|
|
49
|
+
Limitations:
|
|
50
|
+
|
|
51
|
+
- Brunei Darussalam holidays only works from 1984 onwards
|
|
52
|
+
- Islamic holidays
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
Country created by: `PPsyrius <https://github.com/PPsyrius>`__
|
|
56
|
+
|
|
57
|
+
Country maintained by: `PPsyrius <https://github.com/PPsyrius>`__
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
country = "BN"
|
|
61
|
+
default_language = "ms"
|
|
62
|
+
estimated_label = tr("%s* (*anggaran)")
|
|
63
|
+
supported_languages = ("en_US", "ms", "th")
|
|
64
|
+
|
|
65
|
+
special_holidays = {
|
|
66
|
+
# Sultan Hassanal Bolkiah's Golden Jubilee celebration
|
|
67
|
+
2017: (OCT, 5, tr("Jubli Emas Sultan Hassanal Bolkiah")),
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
def __init__(self, *args, **kwargs):
|
|
71
|
+
ChineseCalendarHolidays.__init__(self)
|
|
72
|
+
ChristianHolidays.__init__(self)
|
|
73
|
+
InternationalHolidays.__init__(self)
|
|
74
|
+
IslamicHolidays.__init__(self, calendar=BruneiIslamicCalendar())
|
|
75
|
+
|
|
76
|
+
super().__init__(*args, **kwargs)
|
|
77
|
+
|
|
78
|
+
def _populate(self, year):
|
|
79
|
+
# Available post-Independence from 1984 afterwards
|
|
80
|
+
if year <= 1983:
|
|
81
|
+
return None
|
|
82
|
+
|
|
83
|
+
def _add_observed(dt: date) -> None:
|
|
84
|
+
"""
|
|
85
|
+
If Public Holiday falls on either Friday or Sunday, in-lieu
|
|
86
|
+
observance is given out on the following Saturday or Monday.
|
|
87
|
+
"""
|
|
88
|
+
if self.observed and (self._is_friday(dt) or self._is_sunday(dt)):
|
|
89
|
+
for name in self.get_list(dt):
|
|
90
|
+
self._add_holiday(self.tr("%s - Diperhatikan") % name, dt + td(days=+1))
|
|
91
|
+
|
|
92
|
+
super()._populate(year)
|
|
93
|
+
|
|
94
|
+
# Awal Tahun Masihi
|
|
95
|
+
# Status: In-Use.
|
|
96
|
+
|
|
97
|
+
# New Year's Day
|
|
98
|
+
_add_observed(self._add_new_years_day(tr("Awal Tahun Masihi")))
|
|
99
|
+
|
|
100
|
+
# Tahun Baru Cina
|
|
101
|
+
# Status: In-Use.
|
|
102
|
+
|
|
103
|
+
# Lunar New Year
|
|
104
|
+
_add_observed(self._add_chinese_new_years_day(tr("Tahun Baru Cina")))
|
|
105
|
+
|
|
106
|
+
# Hari Kebangsaan
|
|
107
|
+
# Status: In-Use.
|
|
108
|
+
# Starts in 1984.
|
|
109
|
+
|
|
110
|
+
# National Day
|
|
111
|
+
_add_observed(self._add_holiday(tr("Hari Kebangsaan"), FEB, 23))
|
|
112
|
+
|
|
113
|
+
# Hari Angkatan Bersenjata Diraja Brunei
|
|
114
|
+
# Status: In-Use.
|
|
115
|
+
# Starts in 1984.
|
|
116
|
+
# Commemorates the formation of Royal Brunei Malay Regiment in 1961.
|
|
117
|
+
|
|
118
|
+
_add_observed(
|
|
119
|
+
self._add_holiday(
|
|
120
|
+
# Armed Forces Day
|
|
121
|
+
tr("Hari Angkatan Bersenjata Diraja Brunei"),
|
|
122
|
+
MAY,
|
|
123
|
+
31,
|
|
124
|
+
)
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
# Hari Keputeraan KDYMM Sultan Brunei
|
|
128
|
+
# Status: In-Use.
|
|
129
|
+
# Started in 1968.
|
|
130
|
+
|
|
131
|
+
_add_observed(
|
|
132
|
+
self._add_holiday(
|
|
133
|
+
# Sultan Hassanal Bolkiah's Birthday
|
|
134
|
+
tr("Hari Keputeraan KDYMM Sultan Brunei"),
|
|
135
|
+
JUL,
|
|
136
|
+
15,
|
|
137
|
+
)
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
# Hari Natal
|
|
141
|
+
# Status: In-Use.
|
|
142
|
+
|
|
143
|
+
# Christmas Day
|
|
144
|
+
_add_observed(self._add_christmas_day(tr("Hari Natal")))
|
|
145
|
+
|
|
146
|
+
# Islamic Holidays are placed after Gregorian holidays to prevent
|
|
147
|
+
# the duplication of observed tags. - see #1168
|
|
148
|
+
|
|
149
|
+
# Israk dan Mikraj
|
|
150
|
+
# Status: In-Use.
|
|
151
|
+
|
|
152
|
+
# Isra Mi'raj
|
|
153
|
+
for dt in self._add_isra_and_miraj_day(tr("Israk dan Mikraj")):
|
|
154
|
+
_add_observed(dt)
|
|
155
|
+
|
|
156
|
+
# Hari Pertama Berpuasa
|
|
157
|
+
# Status: In-Use.
|
|
158
|
+
|
|
159
|
+
# First Day of Ramadan
|
|
160
|
+
for dt in self._add_ramadan_beginning_day(tr("Hari Pertama Berpuasa")):
|
|
161
|
+
_add_observed(dt)
|
|
162
|
+
|
|
163
|
+
# Hari Nuzul Al-Quran
|
|
164
|
+
# Status: In-Use.
|
|
165
|
+
|
|
166
|
+
# Anniversary of the revelation of the Quran
|
|
167
|
+
for dt in self._add_nuzul_al_quran_day(tr("Hari Nuzul Al-Quran")):
|
|
168
|
+
_add_observed(dt)
|
|
169
|
+
|
|
170
|
+
# Hari Raya Aidil Fitri
|
|
171
|
+
# Status: In-Use.
|
|
172
|
+
# This is celebrate for three days in Brunei.
|
|
173
|
+
# Observed as 'Hari Raya Puasa' and only for 2 days at certain point.
|
|
174
|
+
# We utilizes a separate in-lieu trigger for this one.
|
|
175
|
+
# 1: If Wed-Thu-Fri -> Sat (+3)
|
|
176
|
+
# 2: If Thu-Fri-Sat -> Mon (+4)
|
|
177
|
+
# 3: If Fri-Sat-Sun -> Mon (+3)
|
|
178
|
+
# 4: If Sat-Sun-Mon -> Tue (+3)
|
|
179
|
+
# 5: If Sun-Mon-Tue -> Wed (+3)
|
|
180
|
+
|
|
181
|
+
# Eid al-Fitr
|
|
182
|
+
name = tr("Hari Raya Aidil Fitri")
|
|
183
|
+
|
|
184
|
+
al_fitr_dates = self._add_eid_al_fitr_day(name)
|
|
185
|
+
self._add_eid_al_fitr_day_two(name)
|
|
186
|
+
self._add_eid_al_fitr_day_three(name)
|
|
187
|
+
|
|
188
|
+
if self.observed:
|
|
189
|
+
for dt in al_fitr_dates:
|
|
190
|
+
obs_date = None
|
|
191
|
+
for delta in range(3):
|
|
192
|
+
hol_date = dt + td(days=delta)
|
|
193
|
+
if self._is_friday(hol_date) or self._is_sunday(hol_date):
|
|
194
|
+
obs_date = dt + td(days=+3)
|
|
195
|
+
if self._is_sunday(obs_date):
|
|
196
|
+
obs_date += td(days=+1)
|
|
197
|
+
break
|
|
198
|
+
if obs_date:
|
|
199
|
+
self._add_islamic_calendar_holiday(
|
|
200
|
+
self.tr("%s - Diperhatikan") % self[hol_date],
|
|
201
|
+
(
|
|
202
|
+
(
|
|
203
|
+
obs_date,
|
|
204
|
+
self._year not in BruneiIslamicCalendar.EID_AL_FITR_DATES,
|
|
205
|
+
),
|
|
206
|
+
),
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
# Hari Raya Aidil Adha
|
|
210
|
+
# Status: In-Use.
|
|
211
|
+
|
|
212
|
+
# Eid al-Adha
|
|
213
|
+
for dt in self._add_eid_al_adha_day(tr("Hari Raya Aidil Adha")):
|
|
214
|
+
_add_observed(dt)
|
|
215
|
+
|
|
216
|
+
# Awal Tahun Hijrah
|
|
217
|
+
# Status: In-Use.
|
|
218
|
+
|
|
219
|
+
# Islamic New Year
|
|
220
|
+
for dt in self._add_islamic_new_year_day(tr("Awal Tahun Hijrah")):
|
|
221
|
+
_add_observed(dt)
|
|
222
|
+
|
|
223
|
+
# Maulidur Rasul
|
|
224
|
+
# Status: In-Use.
|
|
225
|
+
|
|
226
|
+
# Birth of the Prophet
|
|
227
|
+
for dt in self._add_mawlid_day(tr("Maulidur Rasul")):
|
|
228
|
+
_add_observed(dt)
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
class BN(Brunei):
|
|
232
|
+
pass
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
class BRN(Brunei):
|
|
236
|
+
pass
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
class BruneiIslamicCalendar(_CustomIslamicCalendar):
|
|
240
|
+
EID_AL_ADHA_DATES = {
|
|
241
|
+
2000: (MAR, 16),
|
|
242
|
+
2001: (MAR, 6),
|
|
243
|
+
2002: (FEB, 23),
|
|
244
|
+
2003: (FEB, 12),
|
|
245
|
+
2004: (FEB, 2),
|
|
246
|
+
2005: (JAN, 21),
|
|
247
|
+
2006: ((JAN, 10), (DEC, 31)),
|
|
248
|
+
2007: (DEC, 20),
|
|
249
|
+
2008: (DEC, 9),
|
|
250
|
+
2009: (NOV, 28),
|
|
251
|
+
2010: (NOV, 17),
|
|
252
|
+
2011: (NOV, 7),
|
|
253
|
+
2012: (OCT, 26),
|
|
254
|
+
2013: (OCT, 15),
|
|
255
|
+
2014: (OCT, 5),
|
|
256
|
+
2015: (SEP, 24),
|
|
257
|
+
2016: (SEP, 13),
|
|
258
|
+
2017: (SEP, 2),
|
|
259
|
+
2018: (AUG, 22),
|
|
260
|
+
2019: (AUG, 11),
|
|
261
|
+
2020: (AUG, 1),
|
|
262
|
+
2021: (JUL, 20),
|
|
263
|
+
2022: (JUL, 10),
|
|
264
|
+
2023: (JUN, 29),
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
EID_AL_FITR_DATES = {
|
|
268
|
+
2000: ((JAN, 8), (DEC, 28)),
|
|
269
|
+
2001: (DEC, 17),
|
|
270
|
+
2002: (DEC, 6),
|
|
271
|
+
2003: (NOV, 26),
|
|
272
|
+
2004: (NOV, 14),
|
|
273
|
+
2005: (NOV, 3),
|
|
274
|
+
2006: (OCT, 24),
|
|
275
|
+
2007: (OCT, 13),
|
|
276
|
+
2008: (OCT, 1),
|
|
277
|
+
2009: (SEP, 20),
|
|
278
|
+
2010: (SEP, 10),
|
|
279
|
+
2011: (AUG, 31),
|
|
280
|
+
2012: (AUG, 19),
|
|
281
|
+
2013: (AUG, 8),
|
|
282
|
+
2014: (JUL, 29),
|
|
283
|
+
2015: (JUL, 18),
|
|
284
|
+
2016: (JUL, 7),
|
|
285
|
+
2017: (JUN, 26),
|
|
286
|
+
2018: (JUN, 15),
|
|
287
|
+
2019: (JUN, 5),
|
|
288
|
+
2020: (MAY, 24),
|
|
289
|
+
2021: (MAY, 13),
|
|
290
|
+
2022: (MAY, 3),
|
|
291
|
+
2023: (APR, 22),
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
HIJRI_NEW_YEAR_DATES = {
|
|
295
|
+
2000: (APR, 6),
|
|
296
|
+
2001: (MAR, 26),
|
|
297
|
+
2002: (MAR, 15),
|
|
298
|
+
2003: (MAR, 5),
|
|
299
|
+
2004: (FEB, 22),
|
|
300
|
+
2005: (FEB, 10),
|
|
301
|
+
2006: (JAN, 31),
|
|
302
|
+
2007: (JAN, 20),
|
|
303
|
+
2008: ((JAN, 10), (DEC, 29)),
|
|
304
|
+
2009: (DEC, 18),
|
|
305
|
+
2010: (DEC, 8),
|
|
306
|
+
2011: (NOV, 27),
|
|
307
|
+
2012: (NOV, 15),
|
|
308
|
+
2013: (NOV, 5),
|
|
309
|
+
2014: (OCT, 25),
|
|
310
|
+
2015: (OCT, 15),
|
|
311
|
+
2016: (OCT, 3),
|
|
312
|
+
2017: (SEP, 22),
|
|
313
|
+
2018: (SEP, 12),
|
|
314
|
+
2019: (SEP, 1),
|
|
315
|
+
2020: (AUG, 20),
|
|
316
|
+
2021: (AUG, 10),
|
|
317
|
+
2022: (JUL, 30),
|
|
318
|
+
2023: (JUL, 19),
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
ISRA_AND_MIRAJ_DATES = {
|
|
322
|
+
2000: (OCT, 26),
|
|
323
|
+
2001: (OCT, 15),
|
|
324
|
+
2002: (OCT, 4),
|
|
325
|
+
2003: (SEP, 24),
|
|
326
|
+
2004: (SEP, 12),
|
|
327
|
+
2005: (SEP, 1),
|
|
328
|
+
2006: (AUG, 22),
|
|
329
|
+
2007: (AUG, 11),
|
|
330
|
+
2008: (JUL, 31),
|
|
331
|
+
2009: (JUL, 20),
|
|
332
|
+
2010: (JUL, 9),
|
|
333
|
+
2011: (JUN, 29),
|
|
334
|
+
2012: (JUN, 17),
|
|
335
|
+
2013: (JUN, 6),
|
|
336
|
+
2014: (MAY, 27),
|
|
337
|
+
2015: (MAY, 16),
|
|
338
|
+
2016: (MAY, 5),
|
|
339
|
+
2017: (APR, 24),
|
|
340
|
+
2018: (APR, 14),
|
|
341
|
+
2019: (APR, 3),
|
|
342
|
+
2020: (MAR, 22),
|
|
343
|
+
2021: (MAR, 11),
|
|
344
|
+
2022: (MAR, 1),
|
|
345
|
+
2023: (FEB, 18),
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
MAWLID_DATES = {
|
|
349
|
+
2000: (JUN, 15),
|
|
350
|
+
2001: (JUN, 4),
|
|
351
|
+
2002: (MAY, 24),
|
|
352
|
+
2003: (MAY, 14),
|
|
353
|
+
2004: (MAY, 2),
|
|
354
|
+
2005: (APR, 21),
|
|
355
|
+
2006: (APR, 11),
|
|
356
|
+
2007: (MAR, 31),
|
|
357
|
+
2008: (MAR, 20),
|
|
358
|
+
2009: (MAR, 9),
|
|
359
|
+
2010: (FEB, 26),
|
|
360
|
+
2011: (FEB, 16),
|
|
361
|
+
2012: (FEB, 5),
|
|
362
|
+
2013: (JAN, 24),
|
|
363
|
+
2014: (JAN, 14),
|
|
364
|
+
2015: ((JAN, 3), (DEC, 24)),
|
|
365
|
+
2016: (DEC, 12),
|
|
366
|
+
2017: (DEC, 1),
|
|
367
|
+
2018: (NOV, 21),
|
|
368
|
+
2019: (NOV, 9),
|
|
369
|
+
2020: (OCT, 29),
|
|
370
|
+
2021: (OCT, 19),
|
|
371
|
+
2022: (OCT, 8),
|
|
372
|
+
2023: (SEP, 28),
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
NUZUL_AL_QURAN_DATES = {
|
|
376
|
+
2000: (DEC, 14),
|
|
377
|
+
2001: (DEC, 3),
|
|
378
|
+
2002: (NOV, 22),
|
|
379
|
+
2003: (NOV, 12),
|
|
380
|
+
2004: (NOV, 1),
|
|
381
|
+
2005: (OCT, 21),
|
|
382
|
+
2006: (OCT, 10),
|
|
383
|
+
2007: (SEP, 29),
|
|
384
|
+
2008: (SEP, 18),
|
|
385
|
+
2009: (SEP, 7),
|
|
386
|
+
2010: (AUG, 27),
|
|
387
|
+
2011: (AUG, 17),
|
|
388
|
+
2012: (AUG, 5),
|
|
389
|
+
2013: (JUL, 25),
|
|
390
|
+
2014: (JUL, 15),
|
|
391
|
+
2015: (JUL, 4),
|
|
392
|
+
2016: (JUN, 23),
|
|
393
|
+
2017: (JUN, 12),
|
|
394
|
+
2018: (JUN, 2),
|
|
395
|
+
2019: (MAY, 23),
|
|
396
|
+
2020: (MAY, 10),
|
|
397
|
+
2021: (APR, 29),
|
|
398
|
+
2022: (APR, 19),
|
|
399
|
+
2023: (APR, 8),
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
RAMADAN_BEGINNING_DATES = {
|
|
403
|
+
2000: (NOV, 28),
|
|
404
|
+
2001: (NOV, 17),
|
|
405
|
+
2002: (NOV, 6),
|
|
406
|
+
2003: (OCT, 27),
|
|
407
|
+
2004: (OCT, 16),
|
|
408
|
+
2005: (OCT, 5),
|
|
409
|
+
2006: (SEP, 24),
|
|
410
|
+
2007: (SEP, 13),
|
|
411
|
+
2008: (SEP, 2),
|
|
412
|
+
2009: (AUG, 22),
|
|
413
|
+
2010: (AUG, 11),
|
|
414
|
+
2011: (AUG, 1),
|
|
415
|
+
2012: (JUL, 20),
|
|
416
|
+
2013: (JUL, 9),
|
|
417
|
+
2014: (JUN, 29),
|
|
418
|
+
2015: (JUN, 18),
|
|
419
|
+
2016: (JUN, 7),
|
|
420
|
+
2017: (MAY, 27),
|
|
421
|
+
2018: (MAY, 16),
|
|
422
|
+
2019: (MAY, 6),
|
|
423
|
+
2020: (APR, 25),
|
|
424
|
+
2021: (APR, 13),
|
|
425
|
+
2022: (APR, 3),
|
|
426
|
+
2023: (MAR, 23),
|
|
427
|
+
}
|
holidays/countries/bulgaria.py
CHANGED
|
@@ -41,6 +41,7 @@ class Bulgaria(HolidayBase):
|
|
|
41
41
|
|
|
42
42
|
country = "BG"
|
|
43
43
|
default_language = "bg"
|
|
44
|
+
supported_languages = ("bg", "en_US")
|
|
44
45
|
|
|
45
46
|
def _populate(self, year):
|
|
46
47
|
if year < 1990:
|
|
@@ -52,9 +53,7 @@ class Bulgaria(HolidayBase):
|
|
|
52
53
|
self._add_holiday(tr("Нова година"), JAN, 1)
|
|
53
54
|
|
|
54
55
|
# Liberation Day.
|
|
55
|
-
self._add_holiday(
|
|
56
|
-
tr("Ден на Освобождението на България от османско иго"), MAR, 3
|
|
57
|
-
)
|
|
56
|
+
self._add_holiday(tr("Ден на Освобождението на България от османско иго"), MAR, 3)
|
|
58
57
|
|
|
59
58
|
# International Workers' Day.
|
|
60
59
|
self._add_holiday(
|
|
@@ -64,9 +63,7 @@ class Bulgaria(HolidayBase):
|
|
|
64
63
|
)
|
|
65
64
|
|
|
66
65
|
# Saint George's Day.
|
|
67
|
-
self._add_holiday(
|
|
68
|
-
tr("Гергьовден, Ден на храбростта и Българската армия"), MAY, 6
|
|
69
|
-
)
|
|
66
|
+
self._add_holiday(tr("Гергьовден, Ден на храбростта и Българската армия"), MAY, 6)
|
|
70
67
|
|
|
71
68
|
# Bulgarian Education and Culture and Slavonic Literature Day.
|
|
72
69
|
self._add_holiday(
|