holidays 0.78__py3-none-any.whl → 0.80__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/calendars/__init__.py +1 -0
- holidays/calendars/chinese.py +14 -4
- holidays/calendars/ethiopian.py +31 -0
- holidays/calendars/hindu.py +1 -0
- holidays/calendars/islamic.py +16 -4
- holidays/calendars/julian.py +14 -0
- holidays/calendars/mandaean.py +59 -0
- holidays/calendars/tibetan.py +1466 -0
- holidays/constants.py +2 -1
- holidays/countries/__init__.py +20 -0
- holidays/countries/afghanistan.py +6 -39
- holidays/countries/albania.py +3 -22
- holidays/countries/argentina.py +7 -18
- holidays/countries/australia.py +191 -295
- holidays/countries/azerbaijan.py +6 -39
- holidays/countries/bahrain.py +29 -38
- holidays/countries/bhutan.py +194 -0
- holidays/countries/bosnia_and_herzegovina.py +7 -28
- holidays/countries/brunei.py +7 -117
- holidays/countries/burkina_faso.py +9 -15
- holidays/countries/burundi.py +95 -40
- holidays/countries/cameroon.py +8 -34
- holidays/countries/canada.py +9 -1
- holidays/countries/central_african_republic.py +3 -16
- holidays/countries/chad.py +9 -17
- holidays/countries/chile.py +20 -4
- holidays/countries/christmas_island.py +10 -15
- holidays/countries/cocos_islands.py +5 -24
- holidays/countries/comoros.py +121 -0
- holidays/countries/egypt.py +5 -37
- holidays/countries/eritrea.py +104 -0
- holidays/countries/ethiopia.py +18 -47
- holidays/countries/fiji.py +1 -2
- holidays/countries/gabon.py +5 -23
- holidays/countries/gambia.py +168 -0
- holidays/countries/georgia.py +9 -7
- holidays/countries/guinea.py +5 -27
- holidays/countries/guinea_bissau.py +96 -0
- holidays/countries/guyana.py +2 -17
- holidays/countries/india.py +12 -25
- holidays/countries/indonesia.py +6 -158
- holidays/countries/iran.py +16 -126
- holidays/countries/iraq.py +276 -0
- holidays/countries/kazakhstan.py +2 -18
- holidays/countries/kenya.py +2 -8
- holidays/countries/kiribati.py +124 -0
- holidays/countries/kyrgyzstan.py +2 -0
- holidays/countries/lebanon.py +5 -87
- holidays/countries/liberia.py +80 -0
- holidays/countries/libya.py +5 -37
- holidays/countries/macau.py +65 -63
- holidays/countries/malaysia.py +9 -130
- holidays/countries/maldives.py +2 -0
- holidays/countries/mali.py +4 -9
- holidays/countries/mauritania.py +2 -0
- holidays/countries/mauritius.py +1 -2
- holidays/countries/montenegro.py +3 -18
- holidays/countries/nepal.py +42 -44
- holidays/countries/niger.py +14 -74
- holidays/countries/nigeria.py +198 -27
- holidays/countries/north_macedonia.py +3 -39
- holidays/countries/oman.py +6 -28
- holidays/countries/pakistan.py +5 -30
- holidays/countries/palestine.py +2 -5
- holidays/countries/philippines.py +3 -33
- holidays/countries/qatar.py +3 -45
- holidays/countries/rwanda.py +162 -0
- holidays/countries/saudi_arabia.py +3 -0
- holidays/countries/senegal.py +6 -16
- holidays/countries/sierra_leone.py +5 -21
- holidays/countries/singapore.py +7 -59
- holidays/countries/somalia.py +79 -0
- holidays/countries/south_georgia_and_the_south_sandwich_islands.py +160 -0
- holidays/countries/south_sudan.py +133 -0
- holidays/countries/spain.py +7 -10
- holidays/countries/sri_lanka.py +3 -14
- holidays/countries/suriname.py +11 -19
- holidays/countries/syrian_arab_republic.py +134 -0
- holidays/countries/tajikistan.py +116 -0
- holidays/countries/tanzania.py +291 -153
- holidays/countries/timor_leste.py +2 -17
- holidays/countries/togo.py +4 -29
- holidays/countries/trinidad_and_tobago.py +2 -9
- holidays/countries/turkey.py +2 -116
- holidays/countries/turkmenistan.py +164 -0
- holidays/countries/uganda.py +101 -0
- holidays/countries/united_arab_emirates.py +5 -29
- holidays/countries/uzbekistan.py +3 -31
- holidays/countries/yemen.py +8 -52
- holidays/financial/__init__.py +5 -0
- holidays/financial/national_stock_exchange_of_india.py +169 -0
- holidays/groups/__init__.py +2 -0
- holidays/groups/christian.py +48 -12
- holidays/groups/eastern.py +1 -1
- holidays/groups/international.py +17 -1
- holidays/groups/islamic.py +1 -1
- holidays/groups/mandaean.py +107 -0
- holidays/groups/tibetan.py +153 -0
- holidays/holiday_base.py +14 -0
- holidays/locale/ar/LC_MESSAGES/BH.mo +0 -0
- holidays/locale/ar/LC_MESSAGES/IQ.mo +0 -0
- holidays/locale/ar/LC_MESSAGES/SY.mo +0 -0
- holidays/locale/bs/LC_MESSAGES/BA.mo +0 -0
- holidays/locale/en_GM/LC_MESSAGES/GM.mo +0 -0
- holidays/locale/en_GS/LC_MESSAGES/GS.mo +0 -0
- holidays/locale/en_IN/LC_MESSAGES/XNSE.mo +0 -0
- holidays/locale/en_MO/LC_MESSAGES/MO.mo +0 -0
- holidays/locale/en_NG/LC_MESSAGES/NG.mo +0 -0
- holidays/locale/en_SG/LC_MESSAGES/SG.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/BA.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/BH.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/BI.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/CL.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/ES.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/GE.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/GM.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/GS.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/GW.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/IQ.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/MO.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/NG.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/RW.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/SG.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/SY.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/TJ.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/TM.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/TZ.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/XNSE.mo +0 -0
- holidays/locale/es/LC_MESSAGES/AR.mo +0 -0
- holidays/locale/es/LC_MESSAGES/ES.mo +0 -0
- holidays/locale/fr/LC_MESSAGES/RW.mo +0 -0
- holidays/locale/fr_BI/LC_MESSAGES/BI.mo +0 -0
- holidays/locale/hi/LC_MESSAGES/XNSE.mo +0 -0
- holidays/locale/ka/LC_MESSAGES/GE.mo +0 -0
- holidays/locale/pt_GW/LC_MESSAGES/GW.mo +0 -0
- holidays/locale/pt_MO/LC_MESSAGES/MO.mo +0 -0
- holidays/locale/ru/LC_MESSAGES/TJ.mo +0 -0
- holidays/locale/ru/LC_MESSAGES/TM.mo +0 -0
- holidays/locale/rw/LC_MESSAGES/RW.mo +0 -0
- holidays/locale/sr/LC_MESSAGES/BA.mo +0 -0
- holidays/locale/sw/LC_MESSAGES/TZ.mo +0 -0
- holidays/locale/tg/LC_MESSAGES/TJ.mo +0 -0
- holidays/locale/th/LC_MESSAGES/MO.mo +0 -0
- holidays/locale/th/LC_MESSAGES/SG.mo +0 -0
- holidays/locale/tk/LC_MESSAGES/TM.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/AR.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/BA.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/CL.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/ES.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/GE.mo +0 -0
- holidays/locale/zh_CN/LC_MESSAGES/MO.mo +0 -0
- holidays/locale/zh_MO/LC_MESSAGES/MO.mo +0 -0
- holidays/registry.py +46 -14
- holidays/version.py +1 -1
- {holidays-0.78.dist-info → holidays-0.80.dist-info}/METADATA +127 -9
- {holidays-0.78.dist-info → holidays-0.80.dist-info}/RECORD +161 -113
- {holidays-0.78.dist-info → holidays-0.80.dist-info}/licenses/CONTRIBUTORS +2 -0
- {holidays-0.78.dist-info → holidays-0.80.dist-info}/WHEEL +0 -0
- {holidays-0.78.dist-info → holidays-0.80.dist-info}/licenses/LICENSE +0 -0
- {holidays-0.78.dist-info → holidays-0.80.dist-info}/top_level.txt +0 -0
holidays/countries/qatar.py
CHANGED
|
@@ -13,22 +13,7 @@
|
|
|
13
13
|
from gettext import gettext as tr
|
|
14
14
|
|
|
15
15
|
from holidays.calendars import _CustomIslamicHolidays
|
|
16
|
-
from holidays.calendars.gregorian import
|
|
17
|
-
JAN,
|
|
18
|
-
MAR,
|
|
19
|
-
APR,
|
|
20
|
-
MAY,
|
|
21
|
-
JUN,
|
|
22
|
-
JUL,
|
|
23
|
-
AUG,
|
|
24
|
-
SEP,
|
|
25
|
-
OCT,
|
|
26
|
-
NOV,
|
|
27
|
-
DEC,
|
|
28
|
-
THU,
|
|
29
|
-
FRI,
|
|
30
|
-
SAT,
|
|
31
|
-
)
|
|
16
|
+
from holidays.calendars.gregorian import JAN, JUL, AUG, SEP, OCT, NOV, DEC, THU, FRI, SAT
|
|
32
17
|
from holidays.constants import BANK, PUBLIC
|
|
33
18
|
from holidays.groups import InternationalHolidays, IslamicHolidays, StaticHolidays
|
|
34
19
|
from holidays.holiday_base import HolidayBase
|
|
@@ -109,52 +94,25 @@ class QAT(Qatar):
|
|
|
109
94
|
|
|
110
95
|
class QatarIslamicHolidays(_CustomIslamicHolidays):
|
|
111
96
|
# https://web.archive.org/web/20250422212912/https://www.timeanddate.com/holidays/qatar/eid-al-adha
|
|
97
|
+
EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2005, 2024)
|
|
112
98
|
EID_AL_ADHA_DATES = {
|
|
113
|
-
2005: (JAN, 21),
|
|
114
|
-
2006: ((JAN, 10), (DEC, 31)),
|
|
115
|
-
2007: (DEC, 20),
|
|
116
99
|
2008: (DEC, 9),
|
|
117
100
|
2009: (NOV, 28),
|
|
118
101
|
2010: (NOV, 15),
|
|
119
|
-
2011: (NOV, 6),
|
|
120
|
-
2012: (OCT, 26),
|
|
121
|
-
2013: (OCT, 15),
|
|
122
|
-
2014: (OCT, 4),
|
|
123
|
-
2015: (SEP, 23),
|
|
124
102
|
2016: (SEP, 10),
|
|
125
103
|
2017: (AUG, 31),
|
|
126
104
|
2018: (AUG, 22),
|
|
127
|
-
2019: (AUG, 11),
|
|
128
|
-
2020: (JUL, 31),
|
|
129
|
-
2021: (JUL, 20),
|
|
130
|
-
2022: (JUL, 9),
|
|
131
|
-
2023: (JUN, 28),
|
|
132
|
-
2024: (JUN, 16),
|
|
133
105
|
}
|
|
134
106
|
|
|
135
107
|
# https://web.archive.org/web/20241207022523/https://www.timeanddate.com/holidays/qatar/eid-al-fitr
|
|
108
|
+
EID_AL_FITR_DATES_CONFIRMED_YEARS = (2005, 2025)
|
|
136
109
|
EID_AL_FITR_DATES = {
|
|
137
110
|
2005: (NOV, 4),
|
|
138
111
|
2006: (OCT, 24),
|
|
139
|
-
2007: (OCT, 13),
|
|
140
112
|
2008: (OCT, 2),
|
|
141
113
|
2009: (SEP, 21),
|
|
142
|
-
2010: (SEP, 10),
|
|
143
114
|
2011: (AUG, 31),
|
|
144
|
-
2012: (AUG, 19),
|
|
145
|
-
2013: (AUG, 8),
|
|
146
|
-
2014: (JUL, 28),
|
|
147
115
|
2015: (JUL, 18),
|
|
148
|
-
2016: (JUL, 6),
|
|
149
|
-
2017: (JUN, 25),
|
|
150
|
-
2018: (JUN, 15),
|
|
151
|
-
2019: (JUN, 4),
|
|
152
|
-
2020: (MAY, 24),
|
|
153
|
-
2021: (MAY, 13),
|
|
154
|
-
2022: (MAY, 2),
|
|
155
|
-
2023: (APR, 21),
|
|
156
|
-
2024: (APR, 10),
|
|
157
|
-
2025: (MAR, 30),
|
|
158
116
|
}
|
|
159
117
|
|
|
160
118
|
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# 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: Vacanza Team and individual contributors (see CONTRIBUTORS file)
|
|
8
|
+
# dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
|
|
9
|
+
# ryanss <ryanssdev@icloud.com> (c) 2014-2017
|
|
10
|
+
# Website: https://github.com/vacanza/holidays
|
|
11
|
+
# License: MIT (see LICENSE file)
|
|
12
|
+
|
|
13
|
+
from datetime import date
|
|
14
|
+
from gettext import gettext as tr
|
|
15
|
+
|
|
16
|
+
from holidays.calendars import _CustomIslamicHolidays
|
|
17
|
+
from holidays.calendars.gregorian import MAR, JUN, JUL, AUG
|
|
18
|
+
from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
|
|
19
|
+
from holidays.observed_holiday_base import (
|
|
20
|
+
ObservedHolidayBase,
|
|
21
|
+
SAT_TO_NEXT_WORKDAY,
|
|
22
|
+
SAT_SUN_TO_NEXT_WORKDAY,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Rwanda(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays):
|
|
27
|
+
"""Rwanda holidays.
|
|
28
|
+
|
|
29
|
+
References:
|
|
30
|
+
* <https://en.wikipedia.org/wiki/Public_holidays_in_Rwanda>
|
|
31
|
+
* [Presidential Order N° 06/01 of 16/02/2011](https://web.archive.org/web/20250601161219/https://archive.gazettes.africa/archive/rw/2011/rw-government-gazette-dated-2011-03-07-no-10.pdf)
|
|
32
|
+
* [Presidential Order N° 42/03 of 30/06/2015](https://web.archive.org/web/20180417062635/http://www.igihe.com/IMG/pdf/iteka_rya_perezida_rigena_iminsi_y_ikiruhuko_rusange.pdf)
|
|
33
|
+
* [Presidential Order N° 54/01 of 24/02/2017](https://web.archive.org/web/20220626143357/https://www.ngoma.gov.rw/index.php?eID=dumpFile&t=f&f=44336&token=fc82c76109af7950f8895d40ddd3e15bd8c57e8c)
|
|
34
|
+
* [Presidential Order N° 62/01 of 19/10/2022](https://web.archive.org/web/20250815032533/https://mifotra.prod.risa.rw/index.php?eID=dumpFile&t=f&f=85230&token=bcf0bf166638c11f4bf3d2f8c629052db26d38b6)
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
country = "RW"
|
|
38
|
+
default_language = "rw"
|
|
39
|
+
# %s (estimated).
|
|
40
|
+
estimated_label = tr("%s (yagereranijwe)")
|
|
41
|
+
# %s (observed).
|
|
42
|
+
observed_label = tr("%s (yizihijwe)")
|
|
43
|
+
# %s (observed, estimated).
|
|
44
|
+
observed_estimated_label = tr("%s (yizihijwe, yagereranijwe)")
|
|
45
|
+
supported_languages = ("en_US", "fr", "rw")
|
|
46
|
+
# Presidential Order N° 06/01 of 16/02/2011.
|
|
47
|
+
start_year = 2012
|
|
48
|
+
|
|
49
|
+
def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
|
|
50
|
+
ChristianHolidays.__init__(self)
|
|
51
|
+
InternationalHolidays.__init__(self)
|
|
52
|
+
IslamicHolidays.__init__(
|
|
53
|
+
self, cls=RwandaIslamicHolidays, show_estimated=islamic_show_estimated
|
|
54
|
+
)
|
|
55
|
+
kwargs.setdefault("observed_since", 2017)
|
|
56
|
+
super().__init__(*args, **kwargs)
|
|
57
|
+
|
|
58
|
+
def _populate_observed(self, dts: set[date], multiple: bool = False) -> None:
|
|
59
|
+
"""
|
|
60
|
+
Applies `SAT_TO_NEXT_WORKDAY` instead of `SAT_SUN_TO_NEXT_WORKDAY`
|
|
61
|
+
observed_rule for Day after New Year's Day and Boxing Day.
|
|
62
|
+
"""
|
|
63
|
+
special_cases = {
|
|
64
|
+
# Day after New Year's Day.
|
|
65
|
+
self.tr("Umunsi ukurikira Ubunani"),
|
|
66
|
+
# Boxing Day.
|
|
67
|
+
self.tr("Umunsi ukurikira Noheli"),
|
|
68
|
+
}
|
|
69
|
+
for dt in sorted(dts):
|
|
70
|
+
for name in self.get_list(dt):
|
|
71
|
+
self._add_observed(
|
|
72
|
+
dt,
|
|
73
|
+
name,
|
|
74
|
+
SAT_TO_NEXT_WORKDAY if name in special_cases else SAT_SUN_TO_NEXT_WORKDAY,
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
def _populate_public_holidays(self):
|
|
78
|
+
dts_observed = set()
|
|
79
|
+
|
|
80
|
+
# New Year's Day.
|
|
81
|
+
dt = self._add_new_years_day(tr("Ubunani"))
|
|
82
|
+
if self._year >= 2018:
|
|
83
|
+
dts_observed.add(dt)
|
|
84
|
+
|
|
85
|
+
# Added via Presidential Order N° 42/03 of 30/06/2015.
|
|
86
|
+
if self._year >= 2016:
|
|
87
|
+
# Day after New Year's Day.
|
|
88
|
+
dts_observed.add(self._add_new_years_day_two(tr("Umunsi ukurikira Ubunani")))
|
|
89
|
+
|
|
90
|
+
# National Heroes' Day.
|
|
91
|
+
dts_observed.add(self._add_holiday_feb_1(tr("Umunsi w'Intwari")))
|
|
92
|
+
|
|
93
|
+
# Memorial Day of Genocide perpetrated against the Tutsi in 1994.
|
|
94
|
+
self._add_holiday_apr_7(tr("Umunsi wo Kwibuka Jenoside yakorewe Abatutsi mu 1994"))
|
|
95
|
+
|
|
96
|
+
# Good Friday.
|
|
97
|
+
self._add_good_friday(tr("Umunsi wa Gatanu Mutagatifu"))
|
|
98
|
+
|
|
99
|
+
# Added via Presidential Order N° 54/01 of 24/02/2017.
|
|
100
|
+
if self._year >= 2017:
|
|
101
|
+
# Easter Monday.
|
|
102
|
+
self._add_easter_monday(tr("Ku wa mbere wa Pasika"))
|
|
103
|
+
|
|
104
|
+
# Labor Day.
|
|
105
|
+
dts_observed.add(self._add_labor_day(tr("Umunsi Mukuru w'Umurimo")))
|
|
106
|
+
|
|
107
|
+
# Independence Day.
|
|
108
|
+
dts_observed.add(self._add_holiday_jul_1(tr("Umunsi w'Ubwigenge")))
|
|
109
|
+
|
|
110
|
+
# Liberation Day.
|
|
111
|
+
dts_observed.add(self._add_holiday_jul_4(tr("Umunsi wo Kwibohora")))
|
|
112
|
+
|
|
113
|
+
# Added via Presidential Order N° 42/03 of 30/06/2015.
|
|
114
|
+
if self._year >= 2015:
|
|
115
|
+
# Umuganura Day.
|
|
116
|
+
self._add_holiday_1st_fri_of_aug(tr("Umunsi w'Umuganura"))
|
|
117
|
+
|
|
118
|
+
# Assumption Day.
|
|
119
|
+
dts_observed.add(self._add_assumption_of_mary_day(tr("Ijyanwa mu Ijuru rya Bikiramariya")))
|
|
120
|
+
|
|
121
|
+
# Christmas Day.
|
|
122
|
+
dts_observed.add(self._add_christmas_day(tr("Noheli")))
|
|
123
|
+
|
|
124
|
+
# Boxing Day.
|
|
125
|
+
dts_observed.add(self._add_christmas_day_two(tr("Umunsi ukurikira Noheli")))
|
|
126
|
+
|
|
127
|
+
# Eid al-Fitr.
|
|
128
|
+
dts_observed.update(self._add_eid_al_fitr_day(tr("Eid El Fitr")))
|
|
129
|
+
|
|
130
|
+
# Added via Presidential Order N° 42/03 of 30/06/2015.
|
|
131
|
+
if self._year >= 2015:
|
|
132
|
+
# Eid al-Adha.
|
|
133
|
+
dts_observed.update(self._add_eid_al_adha_day(tr("Eid al-Adha")))
|
|
134
|
+
|
|
135
|
+
if self.observed:
|
|
136
|
+
self._populate_observed(dts_observed)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
class RW(Rwanda):
|
|
140
|
+
pass
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
class RWA(Rwanda):
|
|
144
|
+
pass
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
class RwandaIslamicHolidays(_CustomIslamicHolidays):
|
|
148
|
+
EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2018, 2025)
|
|
149
|
+
EID_AL_ADHA_DATES = {
|
|
150
|
+
2018: (AUG, 22),
|
|
151
|
+
2019: (AUG, 12),
|
|
152
|
+
2022: (JUL, 11),
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
EID_AL_FITR_DATES_CONFIRMED_YEARS = (2012, 2025)
|
|
156
|
+
EID_AL_FITR_DATES = {
|
|
157
|
+
2014: (JUL, 29),
|
|
158
|
+
2015: (JUL, 18),
|
|
159
|
+
2016: (JUL, 7),
|
|
160
|
+
2017: (JUN, 26),
|
|
161
|
+
2025: (MAR, 31),
|
|
162
|
+
}
|
|
@@ -125,10 +125,13 @@ class SAU(SaudiArabia):
|
|
|
125
125
|
|
|
126
126
|
|
|
127
127
|
class SaudiArabiaIslamicHolidays(_CustomIslamicHolidays):
|
|
128
|
+
EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2001, 2025)
|
|
128
129
|
EID_AL_ADHA_DATES = {
|
|
129
130
|
2015: (SEP, 24),
|
|
130
131
|
}
|
|
131
132
|
|
|
133
|
+
EID_AL_FITR_DATES_CONFIRMED_YEARS = (2001, 2025)
|
|
134
|
+
|
|
132
135
|
|
|
133
136
|
class SaudiArabiaStaticHolidays:
|
|
134
137
|
special_public_holidays = {
|
holidays/countries/senegal.py
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
from gettext import gettext as tr
|
|
14
14
|
|
|
15
15
|
from holidays.calendars import _CustomIslamicHolidays
|
|
16
|
-
from holidays.calendars.gregorian import
|
|
16
|
+
from holidays.calendars.gregorian import APR, MAY, JUN, JUL, AUG, SEP, OCT, DEC
|
|
17
17
|
from holidays.groups import (
|
|
18
18
|
ChristianHolidays,
|
|
19
19
|
InternationalHolidays,
|
|
@@ -131,15 +131,13 @@ class SEN(Senegal):
|
|
|
131
131
|
|
|
132
132
|
class SenegalIslamicHolidays(_CustomIslamicHolidays):
|
|
133
133
|
# https://web.archive.org/web/20250609044648/https://www.timeanddate.com/holidays/senegal/tamkharit
|
|
134
|
+
ASHURA_DATES_CONFIRMED_YEARS = (2020, 2024)
|
|
134
135
|
ASHURA_DATES = {
|
|
135
|
-
2020: (AUG, 29),
|
|
136
|
-
2021: (AUG, 18),
|
|
137
|
-
2022: (AUG, 8),
|
|
138
|
-
2023: (JUL, 28),
|
|
139
136
|
2024: (JUL, 17),
|
|
140
137
|
}
|
|
141
138
|
|
|
142
139
|
# https://web.archive.org/web/20250609061446/https://www.timeanddate.com/holidays/senegal/grand-magal-de-touba
|
|
140
|
+
GRAND_MAGAL_OF_TOUBA_DATES_CONFIRMED_YEARS = (2020, 2024)
|
|
143
141
|
GRAND_MAGAL_OF_TOUBA_DATES = {
|
|
144
142
|
2020: (OCT, 6),
|
|
145
143
|
2021: (SEP, 26),
|
|
@@ -149,27 +147,19 @@ class SenegalIslamicHolidays(_CustomIslamicHolidays):
|
|
|
149
147
|
}
|
|
150
148
|
|
|
151
149
|
# https://web.archive.org/web/20250609091559/https://www.timeanddate.com/holidays/senegal/maouloud
|
|
152
|
-
|
|
153
|
-
2020: (OCT, 29),
|
|
154
|
-
2021: (OCT, 18),
|
|
155
|
-
2022: (OCT, 8),
|
|
156
|
-
2023: (SEP, 27),
|
|
157
|
-
2024: (SEP, 15),
|
|
158
|
-
}
|
|
150
|
+
MAWLID_DATES_CONFIRMED_YEARS = (2020, 2024)
|
|
159
151
|
|
|
160
152
|
# https://web.archive.org/web/20250609092813/https://www.timeanddate.com/holidays/senegal/korite
|
|
153
|
+
EID_AL_FITR_DATES_CONFIRMED_YEARS = (2020, 2025)
|
|
161
154
|
EID_AL_FITR_DATES = {
|
|
162
|
-
2020: (MAY, 24),
|
|
163
155
|
2021: (MAY, 12),
|
|
164
156
|
2022: (MAY, 1),
|
|
165
157
|
2023: (APR, 22),
|
|
166
|
-
2024: (APR, 10),
|
|
167
|
-
2025: (MAR, 30),
|
|
168
158
|
}
|
|
169
159
|
|
|
170
160
|
# https://web.archive.org/web/20250609102658/https://www.timeanddate.com/holidays/senegal/tabaski
|
|
161
|
+
EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2020, 2024)
|
|
171
162
|
EID_AL_ADHA_DATES = {
|
|
172
|
-
2020: (JUL, 31),
|
|
173
163
|
2021: (JUL, 21),
|
|
174
164
|
2022: (JUL, 10),
|
|
175
165
|
2023: (JUN, 29),
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
|
|
13
13
|
from gettext import gettext as tr
|
|
14
14
|
|
|
15
|
-
from holidays.calendars
|
|
16
|
-
from holidays.calendars.
|
|
15
|
+
from holidays.calendars import _CustomIslamicHolidays
|
|
16
|
+
from holidays.calendars.gregorian import JUN, AUG, NOV
|
|
17
17
|
from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
|
|
18
18
|
from holidays.observed_holiday_base import ObservedHolidayBase, SAT_SUN_TO_NEXT_WORKDAY
|
|
19
19
|
|
|
@@ -115,35 +115,19 @@ class SierraLeoneIslamicHolidays(_CustomIslamicHolidays):
|
|
|
115
115
|
* <https://web.archive.org/web/20250408204431/https://www.timeanddate.com/holidays/sierra-leone/>
|
|
116
116
|
"""
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
MAWLID_DATES_CONFIRMED_YEARS = (2018, 2024)
|
|
119
119
|
MAWLID_DATES = {
|
|
120
120
|
2018: (NOV, 21),
|
|
121
121
|
2019: (NOV, 10),
|
|
122
|
-
2020: (OCT, 29),
|
|
123
|
-
2021: (OCT, 18),
|
|
124
|
-
2022: (OCT, 8),
|
|
125
|
-
2023: (SEP, 27),
|
|
126
|
-
2024: (SEP, 15),
|
|
127
122
|
}
|
|
128
123
|
|
|
129
|
-
|
|
124
|
+
EID_AL_FITR_DATES_CONFIRMED_YEARS = (2018, 2024)
|
|
130
125
|
EID_AL_FITR_DATES = {
|
|
131
|
-
2018: (JUN, 15),
|
|
132
126
|
2019: (JUN, 5),
|
|
133
|
-
2020: (MAY, 24),
|
|
134
|
-
2021: (MAY, 13),
|
|
135
|
-
2022: (MAY, 2),
|
|
136
|
-
2023: (APR, 21),
|
|
137
|
-
2024: (APR, 10),
|
|
138
127
|
}
|
|
139
128
|
|
|
140
|
-
|
|
129
|
+
EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2018, 2024)
|
|
141
130
|
EID_AL_ADHA_DATES = {
|
|
142
131
|
2018: (AUG, 22),
|
|
143
132
|
2019: (AUG, 12),
|
|
144
|
-
2020: (JUL, 31),
|
|
145
|
-
2021: (JUL, 20),
|
|
146
|
-
2022: (JUL, 9),
|
|
147
|
-
2023: (JUN, 28),
|
|
148
|
-
2024: (JUN, 16),
|
|
149
133
|
}
|
holidays/countries/singapore.py
CHANGED
|
@@ -60,7 +60,11 @@ class Singapore(
|
|
|
60
60
|
"""
|
|
61
61
|
|
|
62
62
|
country = "SG"
|
|
63
|
+
# %s (estimated).
|
|
64
|
+
estimated_label = tr("%s (estimated)")
|
|
63
65
|
default_language = "en_SG"
|
|
66
|
+
# %s (observed, estimated).
|
|
67
|
+
observed_estimated_label = tr("%s (observed, estimated)")
|
|
64
68
|
# %s (observed).
|
|
65
69
|
observed_label = tr("%s (observed)")
|
|
66
70
|
supported_languages = ("en_SG", "en_US", "th")
|
|
@@ -182,33 +186,10 @@ class SingaporeBuddhistHolidays(_CustomBuddhistHolidays):
|
|
|
182
186
|
|
|
183
187
|
|
|
184
188
|
class SingaporeChineseHolidays(_CustomChineseHolidays):
|
|
189
|
+
LUNAR_NEW_YEAR_DATES_CONFIRMED_YEARS = (2001, 2026)
|
|
185
190
|
LUNAR_NEW_YEAR_DATES = {
|
|
186
|
-
2001: (JAN, 24),
|
|
187
|
-
2002: (FEB, 12),
|
|
188
|
-
2003: (FEB, 1),
|
|
189
|
-
2004: (JAN, 22),
|
|
190
|
-
2005: (FEB, 9),
|
|
191
191
|
2006: (JAN, 30),
|
|
192
192
|
2007: (FEB, 19),
|
|
193
|
-
2008: (FEB, 7),
|
|
194
|
-
2009: (JAN, 26),
|
|
195
|
-
2010: (FEB, 14),
|
|
196
|
-
2011: (FEB, 3),
|
|
197
|
-
2012: (JAN, 23),
|
|
198
|
-
2013: (FEB, 10),
|
|
199
|
-
2014: (JAN, 31),
|
|
200
|
-
2015: (FEB, 19),
|
|
201
|
-
2016: (FEB, 8),
|
|
202
|
-
2017: (JAN, 28),
|
|
203
|
-
2018: (FEB, 16),
|
|
204
|
-
2019: (FEB, 5),
|
|
205
|
-
2020: (JAN, 25),
|
|
206
|
-
2021: (FEB, 12),
|
|
207
|
-
2022: (FEB, 1),
|
|
208
|
-
2023: (JAN, 22),
|
|
209
|
-
2024: (FEB, 10),
|
|
210
|
-
2025: (JAN, 29),
|
|
211
|
-
2026: (FEB, 17),
|
|
212
193
|
}
|
|
213
194
|
|
|
214
195
|
|
|
@@ -245,62 +226,29 @@ class SingaporeHinduHolidays(_CustomHinduHolidays):
|
|
|
245
226
|
|
|
246
227
|
|
|
247
228
|
class SingaporeIslamicHolidays(_CustomIslamicHolidays):
|
|
248
|
-
|
|
229
|
+
EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2001, 2026)
|
|
249
230
|
EID_AL_ADHA_DATES = {
|
|
250
231
|
2001: (MAR, 6),
|
|
251
232
|
2002: (FEB, 23),
|
|
252
233
|
2003: (FEB, 12),
|
|
253
|
-
2004: (FEB, 1),
|
|
254
|
-
2005: (JAN, 21),
|
|
255
|
-
2006: ((JAN, 10), (DEC, 31)),
|
|
256
|
-
2007: (DEC, 20),
|
|
257
|
-
2008: (DEC, 8),
|
|
258
|
-
2009: (NOV, 27),
|
|
259
234
|
2010: (NOV, 17),
|
|
260
|
-
2011: (NOV, 6),
|
|
261
|
-
2012: (OCT, 26),
|
|
262
|
-
2013: (OCT, 15),
|
|
263
235
|
2014: (OCT, 5),
|
|
264
236
|
2015: (SEP, 24),
|
|
265
237
|
2016: (SEP, 12),
|
|
266
|
-
2017: (SEP, 1),
|
|
267
238
|
2018: (AUG, 22),
|
|
268
|
-
2019: (AUG, 11),
|
|
269
|
-
2020: (JUL, 31),
|
|
270
|
-
2021: (JUL, 20),
|
|
271
239
|
2022: (JUL, 10),
|
|
272
240
|
2023: (JUN, 29),
|
|
273
241
|
2024: (JUN, 17),
|
|
274
242
|
2025: (JUN, 7),
|
|
275
|
-
2026: (MAY, 27),
|
|
276
243
|
}
|
|
277
244
|
|
|
278
|
-
|
|
245
|
+
EID_AL_FITR_DATES_CONFIRMED_YEARS = (2001, 2026)
|
|
279
246
|
EID_AL_FITR_DATES = {
|
|
280
|
-
2001: (DEC, 16),
|
|
281
247
|
2002: (DEC, 6),
|
|
282
|
-
2003: (NOV, 25),
|
|
283
|
-
2004: (NOV, 14),
|
|
284
|
-
2005: (NOV, 3),
|
|
285
248
|
2006: (OCT, 24),
|
|
286
|
-
2007: (OCT, 13),
|
|
287
|
-
2008: (OCT, 1),
|
|
288
|
-
2009: (SEP, 20),
|
|
289
|
-
2010: (SEP, 10),
|
|
290
|
-
2011: (AUG, 30),
|
|
291
|
-
2012: (AUG, 19),
|
|
292
|
-
2013: (AUG, 8),
|
|
293
|
-
2014: (JUL, 28),
|
|
294
|
-
2015: (JUL, 17),
|
|
295
|
-
2016: (JUL, 6),
|
|
296
|
-
2017: (JUN, 25),
|
|
297
|
-
2018: (JUN, 15),
|
|
298
249
|
2019: (JUN, 5),
|
|
299
|
-
2020: (MAY, 24),
|
|
300
|
-
2021: (MAY, 13),
|
|
301
250
|
2022: (MAY, 3),
|
|
302
251
|
2023: (APR, 22),
|
|
303
|
-
2024: (APR, 10),
|
|
304
252
|
2025: (MAR, 31),
|
|
305
253
|
2026: (MAR, 21),
|
|
306
254
|
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# 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: Vacanza Team and individual contributors (see CONTRIBUTORS file)
|
|
8
|
+
# dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
|
|
9
|
+
# ryanss <ryanssdev@icloud.com> (c) 2014-2017
|
|
10
|
+
# Website: https://github.com/vacanza/holidays
|
|
11
|
+
# License: MIT (see LICENSE file)
|
|
12
|
+
|
|
13
|
+
from holidays.groups import InternationalHolidays, IslamicHolidays
|
|
14
|
+
from holidays.holiday_base import HolidayBase
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Somalia(HolidayBase, InternationalHolidays, IslamicHolidays):
|
|
18
|
+
"""Somalia holidays.
|
|
19
|
+
|
|
20
|
+
References:
|
|
21
|
+
* <https://en.wikipedia.org/wiki/Public_holidays_in_Somalia>
|
|
22
|
+
* <https://web.archive.org/web/20250522034818/https://usa.mfa.gov.so/about-somalia/>
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
country = "SO"
|
|
26
|
+
# %s (estimated).
|
|
27
|
+
estimated_label = "%s (estimated)"
|
|
28
|
+
# Unification of Somaliland and Italian Somaliland into the Somali Republic on July 1st, 1960.
|
|
29
|
+
start_year = 1961
|
|
30
|
+
|
|
31
|
+
def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
|
|
32
|
+
"""
|
|
33
|
+
Args:
|
|
34
|
+
islamic_show_estimated:
|
|
35
|
+
Whether to add "estimated" label to Islamic holidays name
|
|
36
|
+
if holiday date is estimated.
|
|
37
|
+
"""
|
|
38
|
+
InternationalHolidays.__init__(self)
|
|
39
|
+
IslamicHolidays.__init__(self, show_estimated=islamic_show_estimated)
|
|
40
|
+
super().__init__(*args, **kwargs)
|
|
41
|
+
|
|
42
|
+
def _populate_public_holidays(self):
|
|
43
|
+
# New Year's Day.
|
|
44
|
+
self._add_new_years_day("New Year's Day")
|
|
45
|
+
|
|
46
|
+
# Labor Day.
|
|
47
|
+
self._add_labor_day("Labour Day")
|
|
48
|
+
|
|
49
|
+
# Independence Day.
|
|
50
|
+
self._add_holiday_jun_26("Independence Day")
|
|
51
|
+
|
|
52
|
+
# Republic Day.
|
|
53
|
+
self._add_holiday_jul_1("Republic Day")
|
|
54
|
+
|
|
55
|
+
# Islamic New Year.
|
|
56
|
+
self._add_islamic_new_year_day("Islamic New Year")
|
|
57
|
+
|
|
58
|
+
# Ashura.
|
|
59
|
+
self._add_ashura_day("Ashura")
|
|
60
|
+
|
|
61
|
+
# Prophet's Birthday.
|
|
62
|
+
self._add_mawlid_day("Prophet's Birthday")
|
|
63
|
+
|
|
64
|
+
# Isra' and Mi'raj.
|
|
65
|
+
self._add_isra_and_miraj_day("Isra' and Mi'raj")
|
|
66
|
+
|
|
67
|
+
# Eid al-Fitr.
|
|
68
|
+
self._add_eid_al_fitr_day("Eid al-Fitr")
|
|
69
|
+
|
|
70
|
+
# Eid al-Adha.
|
|
71
|
+
self._add_eid_al_adha_day("Eid al-Adha")
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class SO(Somalia):
|
|
75
|
+
pass
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class SOM(Somalia):
|
|
79
|
+
pass
|