holidays 0.84__py3-none-any.whl → 0.86__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 +0 -2
- holidays/calendars/__init__.py +0 -2
- holidays/constants.py +0 -2
- holidays/countries/__init__.py +0 -2
- holidays/countries/aland_islands.py +4 -4
- holidays/countries/american_samoa.py +4 -4
- holidays/countries/azerbaijan.py +2 -0
- holidays/countries/bulgaria.py +208 -50
- holidays/countries/china.py +10 -1
- holidays/countries/ecuador.py +12 -4
- holidays/countries/estonia.py +55 -9
- holidays/countries/french_guiana.py +4 -4
- holidays/countries/french_polynesia.py +4 -4
- holidays/countries/french_southern_territories.py +4 -4
- holidays/countries/gibraltar.py +1 -1
- holidays/countries/guadeloupe.py +4 -4
- holidays/countries/guam.py +4 -4
- holidays/countries/italy.py +489 -167
- holidays/countries/marshall_islands.py +8 -6
- holidays/countries/martinique.py +4 -4
- holidays/countries/mauritania.py +2 -4
- holidays/countries/mayotte.py +4 -4
- holidays/countries/mongolia.py +1 -5
- holidays/countries/nepal.py +46 -41
- holidays/countries/new_caledonia.py +4 -4
- holidays/countries/northern_mariana_islands.py +4 -4
- holidays/countries/puerto_rico.py +4 -4
- holidays/countries/reunion.py +4 -4
- holidays/countries/russia.py +1 -2
- holidays/countries/saint_barthelemy.py +4 -4
- holidays/countries/saint_martin.py +4 -4
- holidays/countries/saint_pierre_and_miquelon.py +4 -4
- holidays/countries/samoa.py +1 -3
- holidays/countries/svalbard_and_jan_mayen.py +4 -4
- holidays/countries/sweden.py +102 -32
- holidays/countries/taiwan.py +3 -6
- holidays/countries/thailand.py +9 -6
- holidays/countries/turkey.py +7 -4
- holidays/countries/united_states.py +4 -0
- holidays/countries/united_states_minor_outlying_islands.py +4 -4
- holidays/countries/united_states_virgin_islands.py +4 -4
- holidays/countries/wallis_and_futuna.py +4 -4
- holidays/financial/__init__.py +1 -3
- holidays/financial/ice_futures_europe.py +6 -2
- holidays/financial/national_stock_exchange_of_india.py +141 -38
- holidays/groups/__init__.py +0 -2
- holidays/holiday_base.py +51 -23
- holidays/locale/bg/LC_MESSAGES/BG.mo +0 -0
- holidays/locale/en_IN/LC_MESSAGES/XNSE.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/BG.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/EC.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/EE.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/IT.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/NP.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/SE.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/TR.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/TW.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/US.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/XNSE.mo +0 -0
- holidays/locale/es/LC_MESSAGES/EC.mo +0 -0
- holidays/locale/et/LC_MESSAGES/EE.mo +0 -0
- holidays/locale/hi/LC_MESSAGES/XNSE.mo +0 -0
- holidays/locale/it_IT/LC_MESSAGES/IT.mo +0 -0
- holidays/locale/ne/LC_MESSAGES/NP.mo +0 -0
- holidays/locale/sv/LC_MESSAGES/SE.mo +0 -0
- holidays/locale/th/LC_MESSAGES/CA.mo +0 -0
- holidays/locale/th/LC_MESSAGES/CN.mo +0 -0
- holidays/locale/th/LC_MESSAGES/DK.mo +0 -0
- holidays/locale/th/LC_MESSAGES/ES.mo +0 -0
- holidays/locale/th/LC_MESSAGES/FI.mo +0 -0
- holidays/locale/th/LC_MESSAGES/HK.mo +0 -0
- holidays/locale/th/LC_MESSAGES/NO.mo +0 -0
- holidays/locale/th/LC_MESSAGES/SE.mo +0 -0
- holidays/locale/th/LC_MESSAGES/TL.mo +0 -0
- holidays/locale/th/LC_MESSAGES/TW.mo +0 -0
- holidays/locale/th/LC_MESSAGES/US.mo +0 -0
- holidays/locale/th/LC_MESSAGES/VA.mo +0 -0
- holidays/locale/tr/LC_MESSAGES/TR.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/BG.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/EC.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/EE.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/SE.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/TR.mo +0 -0
- holidays/locale/zh_CN/LC_MESSAGES/TW.mo +0 -0
- holidays/locale/zh_TW/LC_MESSAGES/TW.mo +0 -0
- holidays/mixins/__init__.py +0 -2
- holidays/registry.py +1 -1
- holidays/version.py +1 -1
- {holidays-0.84.dist-info → holidays-0.86.dist-info}/METADATA +7 -7
- {holidays-0.84.dist-info → holidays-0.86.dist-info}/RECORD +94 -90
- {holidays-0.84.dist-info → holidays-0.86.dist-info}/licenses/CONTRIBUTORS +5 -0
- {holidays-0.84.dist-info → holidays-0.86.dist-info}/WHEEL +0 -0
- {holidays-0.84.dist-info → holidays-0.86.dist-info}/licenses/LICENSE +0 -0
- {holidays-0.84.dist-info → holidays-0.86.dist-info}/top_level.txt +0 -0
holidays/__init__.py
CHANGED
holidays/calendars/__init__.py
CHANGED
|
@@ -10,8 +10,6 @@
|
|
|
10
10
|
# Website: https://github.com/vacanza/holidays
|
|
11
11
|
# License: MIT (see LICENSE file)
|
|
12
12
|
|
|
13
|
-
# ruff: noqa: F401
|
|
14
|
-
|
|
15
13
|
from holidays.calendars.balinese_saka import _BalineseSakaLunar
|
|
16
14
|
from holidays.calendars.buddhist import _BuddhistLunisolar, _CustomBuddhistHolidays
|
|
17
15
|
from holidays.calendars.burmese import _BurmeseLunisolar
|
holidays/constants.py
CHANGED
holidays/countries/__init__.py
CHANGED
|
@@ -10,8 +10,6 @@
|
|
|
10
10
|
# Website: https://github.com/vacanza/holidays
|
|
11
11
|
# License: MIT (see LICENSE file)
|
|
12
12
|
|
|
13
|
-
# ruff: noqa: F401
|
|
14
|
-
|
|
15
13
|
from holidays.countries.afghanistan import Afghanistan, AF, AFG
|
|
16
14
|
from holidays.countries.aland_islands import AlandIslands, AX, ALA, HolidaysAX
|
|
17
15
|
from holidays.countries.albania import Albania, AL, ALB
|
|
@@ -14,7 +14,7 @@ from holidays.countries.finland import Finland
|
|
|
14
14
|
from holidays.mixins.child_entity import ChildEntity
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
class
|
|
17
|
+
class AlandIslands(ChildEntity, Finland):
|
|
18
18
|
"""Åland Islands holidays.
|
|
19
19
|
|
|
20
20
|
Alias of a Finnish subdivision that is also officially assigned
|
|
@@ -35,13 +35,13 @@ class HolidaysAX(ChildEntity, Finland):
|
|
|
35
35
|
start_year = 1921
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
class AlandIslands
|
|
38
|
+
class HolidaysAX(AlandIslands):
|
|
39
39
|
pass
|
|
40
40
|
|
|
41
41
|
|
|
42
|
-
class AX(
|
|
42
|
+
class AX(AlandIslands):
|
|
43
43
|
pass
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
class ALA(
|
|
46
|
+
class ALA(AlandIslands):
|
|
47
47
|
pass
|
|
@@ -14,7 +14,7 @@ from holidays.countries.united_states import UnitedStates
|
|
|
14
14
|
from holidays.mixins.child_entity import ChildEntity
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
class
|
|
17
|
+
class AmericanSamoa(ChildEntity, UnitedStates):
|
|
18
18
|
"""American Samoa holidays.
|
|
19
19
|
|
|
20
20
|
Alias of a US subdivision that is also officially assigned its own country code in ISO 3166-1.
|
|
@@ -27,13 +27,13 @@ class HolidaysAS(ChildEntity, UnitedStates):
|
|
|
27
27
|
start_year = 1901
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
class AmericanSamoa
|
|
30
|
+
class HolidaysAS(AmericanSamoa):
|
|
31
31
|
pass
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
class AS(
|
|
34
|
+
class AS(AmericanSamoa):
|
|
35
35
|
pass
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
class ASM(
|
|
38
|
+
class ASM(AmericanSamoa):
|
|
39
39
|
pass
|
holidays/countries/azerbaijan.py
CHANGED
|
@@ -242,6 +242,7 @@ class AzerbaijanStaticHolidays:
|
|
|
242
242
|
* <https://web.archive.org/web/20241015224204/https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-8332>
|
|
243
243
|
* <https://web.archive.org/web/20250410132503/https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-8449>
|
|
244
244
|
* <https://web.archive.org/web/20250216200846/https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-8623>
|
|
245
|
+
* <https://web.archive.org/web/20250711211545/https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-8864>
|
|
245
246
|
|
|
246
247
|
Special holidays references:
|
|
247
248
|
* <https://web.archive.org/web/20250421013220/https://www.msk.gov.az/en/elections/pages/municipal-elections/belediyye-29-01-2025>
|
|
@@ -308,6 +309,7 @@ class AzerbaijanStaticHolidays:
|
|
|
308
309
|
2025: (
|
|
309
310
|
(JAN, 3, DEC, 29, 2024),
|
|
310
311
|
(JAN, 29, municipal_elections),
|
|
312
|
+
(JUN, 27, JUN, 21),
|
|
311
313
|
),
|
|
312
314
|
}
|
|
313
315
|
|
holidays/countries/bulgaria.py
CHANGED
|
@@ -15,56 +15,64 @@ from __future__ import annotations
|
|
|
15
15
|
from gettext import gettext as tr
|
|
16
16
|
from typing import TYPE_CHECKING
|
|
17
17
|
|
|
18
|
+
from holidays.calendars.gregorian import JAN, MAR, APR, MAY, JUN, SEP, DEC
|
|
18
19
|
from holidays.calendars.julian_revised import JULIAN_REVISED_CALENDAR
|
|
19
|
-
from holidays.constants import PUBLIC, SCHOOL
|
|
20
|
-
from holidays.groups import ChristianHolidays, InternationalHolidays
|
|
20
|
+
from holidays.constants import HALF_DAY, PUBLIC, SCHOOL
|
|
21
|
+
from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
|
|
21
22
|
from holidays.observed_holiday_base import ObservedHolidayBase, SAT_SUN_TO_NEXT_WORKDAY
|
|
22
23
|
|
|
23
24
|
if TYPE_CHECKING:
|
|
24
25
|
from datetime import date
|
|
25
26
|
|
|
26
27
|
|
|
27
|
-
class Bulgaria(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
|
|
28
|
+
class Bulgaria(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
|
|
28
29
|
"""Bulgaria holidays.
|
|
29
30
|
|
|
30
31
|
References:
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
32
|
+
* [Labor Code](https://web.archive.org/web/20250402193136/https://lex.bg/laws/ldoc/1594373121)
|
|
33
|
+
* [Labor Code changes - State Gazette, Issue 30, 13.04.1990](https://archive.org/details/30-1990)
|
|
34
|
+
* [Labor Code changes - State Gazette, Issue 27, 05.04.1991](https://archive.org/details/27-1991_202511)
|
|
35
|
+
* [Labor Code changes - State Gazette, Issue 104, 17.12.1991](https://archive.org/details/104-1991)
|
|
36
|
+
* [Labor Code changes - State Gazette, Issue 88, 30.10.1992](https://archive.org/details/88-1992)
|
|
37
|
+
* [Labor Code changes - State Gazette, Issue 2, 05.01.1996](https://archive.org/details/2-1996_202511)
|
|
38
|
+
* [Labor Code changes - State Gazette, Issue 22, 24.02.1998](https://archive.org/details/22-1998)
|
|
39
|
+
* [Labor Code changes - State Gazette, Issue 56, 19.05.1998](https://archive.org/details/56-1998)
|
|
40
|
+
* [Labor Code changes - State Gazette, Issue 108, 15.09.1998](https://archive.org/details/108-1998)
|
|
41
|
+
* [Labor Code changes - State Gazette, Issue 15, 23.02.2010](https://web.archive.org/web/20250515130122/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=29936)
|
|
42
|
+
* [Labor Code changes - State Gazette, Issue 105, 30.12.2016](https://web.archive.org/web/20220509103925/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=110584)
|
|
43
|
+
* [Labor Code changes - State Gazette, Issue 107, 18.12.2020](https://web.archive.org/web/20210410181539/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=154367)
|
|
44
|
+
* [Bulgarian public holidays](https://web.archive.org/web/20240814165123/https://www.parliament.bg/bg/24)
|
|
45
|
+
* [Working days and weekends calendar](https://web.archive.org/web/20250916112151/https://kik-info.com/spravochnik/calendar/2025/)
|
|
34
46
|
* <https://en.wikipedia.org/wiki/Public_holidays_in_Bulgaria>
|
|
35
|
-
|
|
36
|
-
Official holidays in Bulgaria in their current form. This class does not
|
|
37
|
-
any return holidays before 1990, as holidays in the People's Republic of
|
|
38
|
-
Bulgaria and earlier were different.
|
|
39
|
-
|
|
40
|
-
Since 2017, it has been accepted that public holidays in Bulgaria that fall on a Saturday
|
|
41
|
-
or Sunday are to be taken on the first working day after them. If there are both Saturday
|
|
42
|
-
and Sunday holidays, Monday and Tuesday are rested respectively.
|
|
43
|
-
The exceptions are:
|
|
44
|
-
1) the Easter holidays, which are always a consecutive Friday, Saturday, and Sunday;
|
|
45
|
-
2) National Awakening Day which, while an official holiday and a non-attendance day for
|
|
46
|
-
schools, is still a working day.
|
|
47
47
|
"""
|
|
48
48
|
|
|
49
49
|
country = "BG"
|
|
50
50
|
default_language = "bg"
|
|
51
51
|
# %s (observed).
|
|
52
52
|
observed_label = tr("%s (почивен ден)")
|
|
53
|
-
supported_categories = (PUBLIC, SCHOOL)
|
|
53
|
+
supported_categories = (HALF_DAY, PUBLIC, SCHOOL)
|
|
54
54
|
supported_languages = ("bg", "en_US", "uk")
|
|
55
|
-
|
|
55
|
+
# Labor Code changes - State Gazette, Issue 30, 13.04.1990.
|
|
56
|
+
start_year = 1991
|
|
56
57
|
|
|
57
58
|
def __init__(self, *args, **kwargs):
|
|
58
59
|
ChristianHolidays.__init__(self, JULIAN_REVISED_CALENDAR)
|
|
59
60
|
InternationalHolidays.__init__(self)
|
|
61
|
+
StaticHolidays.__init__(self, BulgariaStaticHolidays)
|
|
62
|
+
# Labor Code changes - State Gazette, Issue 105, 30.12.2016.
|
|
60
63
|
kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_WORKDAY)
|
|
61
64
|
kwargs.setdefault("observed_since", 2017)
|
|
62
65
|
super().__init__(*args, **kwargs)
|
|
63
66
|
|
|
64
|
-
def _populate_observed(self, dts: set[date],
|
|
67
|
+
def _populate_observed(self, dts: set[date], *, multiple: bool = False) -> None:
|
|
68
|
+
excluded_names = {
|
|
69
|
+
# Holy Saturday.
|
|
70
|
+
self.tr("Велика събота"),
|
|
71
|
+
# Easter.
|
|
72
|
+
self.tr("Великден"),
|
|
73
|
+
}
|
|
74
|
+
|
|
65
75
|
for dt in sorted(dts):
|
|
66
|
-
if not self._is_observed(dt):
|
|
67
|
-
continue
|
|
68
76
|
for name in self.get_list(dt):
|
|
69
77
|
if name not in excluded_names:
|
|
70
78
|
self._add_observed(dt, name)
|
|
@@ -80,45 +88,67 @@ class Bulgaria(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
80
88
|
self._add_holiday_mar_3(tr("Ден на Освобождението на България от османско иго"))
|
|
81
89
|
)
|
|
82
90
|
|
|
83
|
-
#
|
|
84
|
-
self.
|
|
91
|
+
# Labor Code changes - State Gazette, Issue 15, 23.02.2010.
|
|
92
|
+
if self._year >= 2010:
|
|
93
|
+
# Good Friday.
|
|
94
|
+
self._add_good_friday(tr("Велики петък"))
|
|
85
95
|
|
|
86
|
-
|
|
87
|
-
|
|
96
|
+
# Holy Saturday.
|
|
97
|
+
self._add_holy_saturday(tr("Велика събота"))
|
|
88
98
|
|
|
89
99
|
# Easter.
|
|
90
100
|
name = tr("Великден")
|
|
91
101
|
self._add_easter_sunday(name)
|
|
102
|
+
# Labor Code changes - State Gazette, Issue 27, 05.04.1991.
|
|
92
103
|
self._add_easter_monday(name)
|
|
93
104
|
|
|
94
105
|
dts_observed.add(
|
|
95
|
-
# International Workers' Day.
|
|
106
|
+
# Labor Day and International Workers' Solidarity Day.
|
|
96
107
|
self._add_labor_day(tr("Ден на труда и на международната работническа солидарност"))
|
|
97
108
|
)
|
|
98
109
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
110
|
+
# Labor Code changes - State Gazette, Issue 56, 19.05.1998.
|
|
111
|
+
if self._year >= 1999:
|
|
112
|
+
dts_observed.add(
|
|
113
|
+
# Saint George's Day, Day of the Bulgarian Army.
|
|
114
|
+
self._add_holiday_may_6(tr("Гергьовден, Ден на храбростта и Българската армия"))
|
|
115
|
+
)
|
|
103
116
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
117
|
+
# Renamed by Labor Code changes - State Gazette, Issue 107, 18.12.2020.
|
|
118
|
+
name = (
|
|
119
|
+
# Day of the Holy Brothers Cyril and Methodius, Bulgarian Alphabet,
|
|
120
|
+
# Enlightenment, Culture and Slavonic Literature.
|
|
121
|
+
tr(
|
|
122
|
+
"Ден на светите братя Кирил и Методий, на българската азбука, "
|
|
123
|
+
"просвета и култура и на славянската книжовност"
|
|
111
124
|
)
|
|
125
|
+
if self._year >= 2021
|
|
126
|
+
# Day of Bulgarian Enlightenment and Culture and Slavonic Alphabet.
|
|
127
|
+
else tr("Ден на българската просвета и култура и на славянската писменост")
|
|
112
128
|
)
|
|
129
|
+
dts_observed.add(self._add_holiday_may_24(name))
|
|
113
130
|
|
|
114
|
-
#
|
|
115
|
-
|
|
131
|
+
# Labor Code changes - State Gazette, Issue 22, 24.02.1998.
|
|
132
|
+
if self._year >= 1998:
|
|
133
|
+
# Unification Day.
|
|
134
|
+
dts_observed.add(self._add_holiday_sep_6(tr("Ден на Съединението")))
|
|
116
135
|
|
|
117
|
-
#
|
|
118
|
-
|
|
136
|
+
# Abandoned by Labor Code changes - State Gazette, Issue 104, 17.12.1991.
|
|
137
|
+
if self._year <= 1991:
|
|
138
|
+
# Freedom Day.
|
|
139
|
+
self._add_holiday_sep_9(tr("Ден на свободата"))
|
|
119
140
|
|
|
120
|
-
#
|
|
121
|
-
|
|
141
|
+
# Labor Code changes - State Gazette, Issue 108, 15.09.1998.
|
|
142
|
+
if self._year >= 1998:
|
|
143
|
+
# Independence Day.
|
|
144
|
+
dts_observed.add(self._add_holiday_sep_22(tr("Ден на Независимостта на България")))
|
|
145
|
+
|
|
146
|
+
# Labor Code changes - State Gazette, Issue 2, 05.01.1996.
|
|
147
|
+
if self._year >= 1996:
|
|
148
|
+
# Christmas Eve.
|
|
149
|
+
dts_observed.add(self._add_christmas_eve(tr("Бъдни вечер")))
|
|
150
|
+
|
|
151
|
+
# Labor Code changes - State Gazette, Issue 104, 17.12.1991.
|
|
122
152
|
|
|
123
153
|
# Christmas Day.
|
|
124
154
|
name = tr("Рождество Христово")
|
|
@@ -126,13 +156,23 @@ class Bulgaria(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
126
156
|
dts_observed.add(self._add_christmas_day_two(name))
|
|
127
157
|
|
|
128
158
|
if self.observed:
|
|
129
|
-
self._populate_observed(
|
|
130
|
-
|
|
131
|
-
|
|
159
|
+
self._populate_observed(dts_observed)
|
|
160
|
+
|
|
161
|
+
def _populate_half_day_holidays(self):
|
|
162
|
+
# Established as half-day by Labor Code changes - State Gazette, Issue 104, 17.12.1991.
|
|
163
|
+
# Changed to full-day by Labor Code changes - State Gazette, Issue 2, 05.01.1996.
|
|
164
|
+
if self._year <= 1995:
|
|
165
|
+
# %s (from 2pm).
|
|
166
|
+
begin_time_label = self.tr("%s (след 14 ч.)")
|
|
167
|
+
|
|
168
|
+
# Christmas Eve.
|
|
169
|
+
self._add_christmas_eve(begin_time_label % self.tr("Бъдни вечер"))
|
|
132
170
|
|
|
133
171
|
def _populate_school_holidays(self):
|
|
134
|
-
#
|
|
135
|
-
self.
|
|
172
|
+
# Labor Code changes - State Gazette, Issue 88, 30.10.1992.
|
|
173
|
+
if self._year >= 1992:
|
|
174
|
+
# The Day of the People's Awakeners.
|
|
175
|
+
self._add_holiday_nov_1(tr("Ден на народните будители"))
|
|
136
176
|
|
|
137
177
|
|
|
138
178
|
class BG(Bulgaria):
|
|
@@ -141,3 +181,121 @@ class BG(Bulgaria):
|
|
|
141
181
|
|
|
142
182
|
class BLG(Bulgaria):
|
|
143
183
|
pass
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
class BulgariaStaticHolidays:
|
|
187
|
+
"""Bulgaria special holidays.
|
|
188
|
+
|
|
189
|
+
Substituted holidays references:
|
|
190
|
+
* [2004](https://web.archive.org/web/20251126005928/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=21156)
|
|
191
|
+
* [2005](https://web.archive.org/web/20251126005738/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=14875)
|
|
192
|
+
* [2006](https://web.archive.org/web/20251126005635/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=1142)
|
|
193
|
+
* [2006 changes](https://web.archive.org/web/20251126005653/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=1246)
|
|
194
|
+
* [2007](https://web.archive.org/web/20251126010247/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=3325)
|
|
195
|
+
* [2007 changes](https://web.archive.org/web/20251126010247/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=3600)
|
|
196
|
+
* [2008](https://web.archive.org/web/20251126010335/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=4686)
|
|
197
|
+
* [2009](https://web.archive.org/web/20251126005722/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=12464)
|
|
198
|
+
* [2009 changes](https://web.archive.org/web/20251126005900/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=16562)
|
|
199
|
+
* [2009 changes](https://web.archive.org/web/20251126010145/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=27525)
|
|
200
|
+
* [2010](https://web.archive.org/web/20251126010239/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=27993)
|
|
201
|
+
* [2011](https://web.archive.org/web/20251126010309/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=41994)
|
|
202
|
+
* [2012](https://web.archive.org/web/20251126010350/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=58790)
|
|
203
|
+
* [2013](https://web.archive.org/web/20251126115613/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=70577)
|
|
204
|
+
* [2013 changes](https://web.archive.org/web/20210410195503/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=74637)
|
|
205
|
+
* [2013 changes](https://web.archive.org/web/20250908131607/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=80503)
|
|
206
|
+
* [2014](https://web.archive.org/web/20231130064115/http://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=80502)
|
|
207
|
+
* [2015](https://web.archive.org/web/20250523171159/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=89532)
|
|
208
|
+
* [2016](https://web.archive.org/web/20250208071613/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=99143)
|
|
209
|
+
|
|
210
|
+
Special holidays references:
|
|
211
|
+
* [Resolution 220 of Mar 26, 2004](https://web.archive.org/web/20251126010024/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=21351)
|
|
212
|
+
* [Resolution 722 of Oct 18, 2006](https://web.archive.org/web/20251126010114/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=2739)
|
|
213
|
+
* [Resolution 808 of Nov 19, 2025](https://web.archive.org/web/20251126010045/https://dv.parliament.bg/DVWeb/showMaterialDV.jsp?idMat=239075)
|
|
214
|
+
"""
|
|
215
|
+
|
|
216
|
+
# Substituted date format.
|
|
217
|
+
substituted_date_format = tr("%d.%m.%Y")
|
|
218
|
+
|
|
219
|
+
# Day off (substituted from %s).
|
|
220
|
+
substituted_label = tr("Почивен ден (прехвърлен от %s)")
|
|
221
|
+
|
|
222
|
+
# Official Holiday.
|
|
223
|
+
official_holiday = tr("Официален празник")
|
|
224
|
+
|
|
225
|
+
# Non-working day.
|
|
226
|
+
non_working_day = tr("Неприсъствен ден")
|
|
227
|
+
|
|
228
|
+
special_public_holidays = {
|
|
229
|
+
2004: (
|
|
230
|
+
(APR, 2, official_holiday),
|
|
231
|
+
(MAY, 7, MAY, 15),
|
|
232
|
+
),
|
|
233
|
+
2005: (
|
|
234
|
+
(MAR, 4, MAR, 12),
|
|
235
|
+
(MAY, 23, MAY, 28),
|
|
236
|
+
(SEP, 5, SEP, 10),
|
|
237
|
+
(SEP, 23, SEP, 17),
|
|
238
|
+
),
|
|
239
|
+
2006: (JAN, 2, JAN, 28),
|
|
240
|
+
2007: (
|
|
241
|
+
(JAN, 2, official_holiday),
|
|
242
|
+
(APR, 30, APR, 21),
|
|
243
|
+
(MAY, 25, JUN, 2),
|
|
244
|
+
(SEP, 7, SEP, 15),
|
|
245
|
+
(DEC, 31, DEC, 15),
|
|
246
|
+
),
|
|
247
|
+
2008: (
|
|
248
|
+
(MAY, 2, MAY, 10),
|
|
249
|
+
(MAY, 5, MAY, 17),
|
|
250
|
+
(DEC, 31, DEC, 20),
|
|
251
|
+
),
|
|
252
|
+
2009: (
|
|
253
|
+
(JAN, 2, JAN, 10),
|
|
254
|
+
(MAR, 2, MAR, 14),
|
|
255
|
+
(MAY, 4, MAY, 16),
|
|
256
|
+
(MAY, 5, MAY, 30),
|
|
257
|
+
(SEP, 21, SEP, 26),
|
|
258
|
+
(DEC, 31, DEC, 19),
|
|
259
|
+
),
|
|
260
|
+
2010: (
|
|
261
|
+
(MAY, 7, MAY, 15),
|
|
262
|
+
(DEC, 31, DEC, 11),
|
|
263
|
+
),
|
|
264
|
+
2011: (
|
|
265
|
+
(MAR, 4, MAR, 19),
|
|
266
|
+
(MAY, 23, MAY, 28),
|
|
267
|
+
(SEP, 5, SEP, 3),
|
|
268
|
+
(SEP, 23, SEP, 17),
|
|
269
|
+
),
|
|
270
|
+
2012: (
|
|
271
|
+
(JAN, 2, JAN, 21),
|
|
272
|
+
(APR, 30, APR, 21),
|
|
273
|
+
(MAY, 25, MAY, 19),
|
|
274
|
+
(SEP, 7, SEP, 29),
|
|
275
|
+
(DEC, 31, DEC, 15),
|
|
276
|
+
),
|
|
277
|
+
2013: (
|
|
278
|
+
(MAY, 2, MAY, 18),
|
|
279
|
+
(DEC, 23, DEC, 21),
|
|
280
|
+
(DEC, 31, DEC, 14),
|
|
281
|
+
),
|
|
282
|
+
2014: (
|
|
283
|
+
(MAY, 2, MAY, 10),
|
|
284
|
+
(MAY, 5, MAY, 31),
|
|
285
|
+
(DEC, 31, DEC, 13),
|
|
286
|
+
),
|
|
287
|
+
2015: (
|
|
288
|
+
(JAN, 2, JAN, 24),
|
|
289
|
+
(MAR, 2, MAR, 21),
|
|
290
|
+
(SEP, 21, SEP, 12),
|
|
291
|
+
(DEC, 31, DEC, 12),
|
|
292
|
+
),
|
|
293
|
+
2016: (
|
|
294
|
+
(MAR, 4, MAR, 12),
|
|
295
|
+
(MAY, 23, MAY, 14),
|
|
296
|
+
(SEP, 5, SEP, 10),
|
|
297
|
+
(SEP, 23, SEP, 17),
|
|
298
|
+
),
|
|
299
|
+
2025: (DEC, 31, non_working_day),
|
|
300
|
+
2026: (JAN, 2, non_working_day),
|
|
301
|
+
}
|
holidays/countries/china.py
CHANGED
|
@@ -24,8 +24,9 @@ class China(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays,
|
|
|
24
24
|
References:
|
|
25
25
|
* <https://en.wikipedia.org/wiki/Public_holidays_in_China>
|
|
26
26
|
* [Festivals and Public Holidays](https://zh.wikipedia.org/wiki/中华人民共和国节日与公众假期)
|
|
27
|
-
* [
|
|
27
|
+
* [2026](https://web.archive.org/web/20251111205945/https://www.gov.cn/zhengce/content/202511/content_7047090.htm)
|
|
28
28
|
* [2025](https://web.archive.org/web/20250424041657/https://www.gov.cn/zhengce/content/202411/content_6986382.htm)
|
|
29
|
+
* [2024 changes (Order #795)](https://web.archive.org/web/20250228151847/https://www.gov.cn/zhengce/content/202411/content_6986380.htm)
|
|
29
30
|
* [2024](https://web.archive.org/web/20250227033646/https://www.gov.cn/zhengce/content/202310/content_6911527.htm)
|
|
30
31
|
* [2023](https://web.archive.org/web/20250414125053/https://www.gov.cn/gongbao/content/2023/content_5736714.htm)
|
|
31
32
|
* [2022](https://web.archive.org/web/20250413071341/http://www.gov.cn/gongbao/content/2021/content_5651728.htm)
|
|
@@ -452,6 +453,14 @@ class ChinaStaticHolidays:
|
|
|
452
453
|
(OCT, 7, SEP, 28), # National Day
|
|
453
454
|
(OCT, 8, OCT, 11), # National Day
|
|
454
455
|
),
|
|
456
|
+
2026: (
|
|
457
|
+
(JAN, 2, JAN, 4), # New Year's Day
|
|
458
|
+
(FEB, 20, FEB, 14), # Spring Festival
|
|
459
|
+
(FEB, 23, FEB, 28), # Spring Festival
|
|
460
|
+
(MAY, 5, MAY, 9), # Labor Day
|
|
461
|
+
(OCT, 6, SEP, 20), # National Day
|
|
462
|
+
(OCT, 7, OCT, 10), # National Day
|
|
463
|
+
),
|
|
455
464
|
}
|
|
456
465
|
|
|
457
466
|
special_public_holidays_observed = {
|
holidays/countries/ecuador.py
CHANGED
|
@@ -19,6 +19,7 @@ from holidays.observed_holiday_base import (
|
|
|
19
19
|
WED_TO_NEXT_FRI,
|
|
20
20
|
SAT_TO_PREV_FRI,
|
|
21
21
|
SUN_TO_NEXT_MON,
|
|
22
|
+
SUN_TO_NEXT_TUE,
|
|
22
23
|
WED_THU_TO_NEXT_FRI,
|
|
23
24
|
)
|
|
24
25
|
|
|
@@ -29,6 +30,11 @@ class Ecuador(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
29
30
|
References:
|
|
30
31
|
* <https://en.wikipedia.org/wiki/Public_holidays_in_Ecuador>
|
|
31
32
|
* [Código del Trabajo](https://web.archive.org/web/20250428092005/https://biblioteca.defensoria.gob.ec/bitstream/37000/3364/1/Código%20de%20Trabajo%20(04-11-2021).pdf)
|
|
33
|
+
* [2018](https://web.archive.org/web/20181231193947/https://www.turismo.gob.ec/wp-content/uploads/2018/06/CALENDARIO-FERIADOS2018.pdf)
|
|
34
|
+
* [2019](https://web.archive.org/web/20220707173738/https://www.turismo.gob.ec/wp-content/uploads/2019/01/FERIADOS-2019.pdf)
|
|
35
|
+
* [2020-2021](https://web.archive.org/web/20210425014244/https://www.turismo.gob.ec/wp-content/uploads/2020/03/CALENDARIO-DE-FERIADOS.pdf)
|
|
36
|
+
* [2022](https://web.archive.org/web/20220127234055/https://www.turismo.gob.ec/wp-content/uploads/2022/01/FERIADOS-NACIONALES_2022.pdf)
|
|
37
|
+
* [2023-2025](https://web.archive.org/web/20250806025223/https://www.turismo.gob.ec/wp-content/uploads/2023/12/CALENDARIO-FERIADOS-2023-2025-06-12-2022-.pdf)
|
|
32
38
|
"""
|
|
33
39
|
|
|
34
40
|
country = "EC"
|
|
@@ -84,19 +90,21 @@ class Ecuador(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
84
90
|
|
|
85
91
|
self._add_observed(
|
|
86
92
|
# All Souls' Day.
|
|
87
|
-
self._add_all_souls_day(tr("Día de
|
|
88
|
-
|
|
93
|
+
self._add_all_souls_day(tr("Día de Difuntos")),
|
|
94
|
+
# Not observed the next day.
|
|
95
|
+
rule=TUE_TO_PREV_MON + WED_TO_NEXT_FRI + SAT_TO_PREV_FRI + SUN_TO_NEXT_TUE,
|
|
89
96
|
)
|
|
90
97
|
|
|
91
98
|
self._add_observed(
|
|
92
99
|
# Independence of Cuenca.
|
|
93
100
|
self._add_holiday_nov_3(tr("Independencia de Cuenca")),
|
|
94
|
-
|
|
101
|
+
# Not observed the previous day.
|
|
102
|
+
rule=SUN_TO_NEXT_MON,
|
|
95
103
|
)
|
|
96
104
|
|
|
97
105
|
self._add_observed(
|
|
98
106
|
# Christmas Day.
|
|
99
|
-
self._add_christmas_day(tr("
|
|
107
|
+
self._add_christmas_day(tr("Navidad")),
|
|
100
108
|
rule=SAT_TO_PREV_FRI + SUN_TO_NEXT_MON,
|
|
101
109
|
)
|
|
102
110
|
|
holidays/countries/estonia.py
CHANGED
|
@@ -12,15 +12,31 @@
|
|
|
12
12
|
|
|
13
13
|
from gettext import gettext as tr
|
|
14
14
|
|
|
15
|
+
from holidays.constants import HALF_DAY, PUBLIC
|
|
15
16
|
from holidays.groups import ChristianHolidays, InternationalHolidays
|
|
16
17
|
from holidays.holiday_base import HolidayBase
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
class Estonia(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
20
|
-
"""Estonia holidays.
|
|
21
|
+
"""Estonia holidays.
|
|
22
|
+
|
|
23
|
+
References:
|
|
24
|
+
* <https://et.wikipedia.org/wiki/Eesti_riigipühad>
|
|
25
|
+
* <https://en.wikipedia.org/wiki/Public_holidays_in_Estonia>
|
|
26
|
+
* [Decree on State Holidays and on Amending the Labour Code of the Estonian SSR (09.10.1990)](https://www.riigiteataja.ee/akt/28395)
|
|
27
|
+
* [Holidays and Anniversaries Act (08.02.1994)](https://www.riigiteataja.ee/akt/29913)
|
|
28
|
+
* [Public Holidays and Days of National Importance Act (27.01.1998, in force since 23.02.1998)](https://www.riigiteataja.ee/akt/13276841)
|
|
29
|
+
* [Act amending § 2 of the Holidays and Anniversaries Act
|
|
30
|
+
and § 25 of the Working and Rest Hours Act](https://www.riigiteataja.ee/akt/895511)
|
|
31
|
+
* [Working and Rest Hours Act (24.01.2001)](https://www.riigiteataja.ee/akt/72738)
|
|
32
|
+
* [Employment Contracts Act (17.12.2008, in force since 01.07.2009)](https://www.riigiteataja.ee/akt/122122012029)
|
|
33
|
+
"""
|
|
21
34
|
|
|
22
35
|
country = "EE"
|
|
23
36
|
default_language = "et"
|
|
37
|
+
# Decree on State Holidays and on Amending the Labour Code of the Estonian SSR (09.10.1990).
|
|
38
|
+
start_year = 1991
|
|
39
|
+
supported_categories = (HALF_DAY, PUBLIC)
|
|
24
40
|
supported_languages = ("en_US", "et", "uk")
|
|
25
41
|
|
|
26
42
|
def __init__(self, *args, **kwargs):
|
|
@@ -35,17 +51,23 @@ class Estonia(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
35
51
|
# Independence Day.
|
|
36
52
|
self._add_holiday_feb_24(tr("iseseisvuspäev"))
|
|
37
53
|
|
|
38
|
-
|
|
39
|
-
|
|
54
|
+
if self._year >= 1994:
|
|
55
|
+
# Good Friday.
|
|
56
|
+
self._add_good_friday(tr("suur reede"))
|
|
40
57
|
|
|
41
|
-
|
|
42
|
-
|
|
58
|
+
# Easter Sunday.
|
|
59
|
+
self._add_easter_sunday(tr("ülestõusmispühade 1. püha"))
|
|
43
60
|
|
|
44
|
-
|
|
45
|
-
|
|
61
|
+
# Whit Sunday.
|
|
62
|
+
self._add_whit_sunday(tr("nelipühade 1. püha"))
|
|
46
63
|
|
|
47
|
-
|
|
48
|
-
|
|
64
|
+
self._add_holiday_may_1(
|
|
65
|
+
# May Day.
|
|
66
|
+
tr("kevadpüha")
|
|
67
|
+
if self._year >= 1994
|
|
68
|
+
# International Workers' Solidarity Day.
|
|
69
|
+
else tr("töörahva rahvusvahelise solidaarsuse päev")
|
|
70
|
+
)
|
|
49
71
|
|
|
50
72
|
# Victory Day.
|
|
51
73
|
self._add_holiday_jun_23(tr("võidupüha"))
|
|
@@ -57,6 +79,12 @@ class Estonia(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
57
79
|
# Independence Restoration Day.
|
|
58
80
|
self._add_holiday_aug_20(tr("taasiseseisvumispäev"))
|
|
59
81
|
|
|
82
|
+
if self._year <= 1993:
|
|
83
|
+
# Day of Declaration of Sovereignty.
|
|
84
|
+
self._add_holiday_nov_16(tr("taassünnipäev"))
|
|
85
|
+
|
|
86
|
+
# Act amending § 2 of the Holidays and Anniversaries Act
|
|
87
|
+
# and § 25 of the Working and Rest Hours Act.
|
|
60
88
|
if self._year >= 2005:
|
|
61
89
|
# Christmas Eve.
|
|
62
90
|
self._add_christmas_eve(tr("jõululaupäev"))
|
|
@@ -67,6 +95,24 @@ class Estonia(HolidayBase, ChristianHolidays, InternationalHolidays):
|
|
|
67
95
|
# Second Day of Christmas.
|
|
68
96
|
self._add_christmas_day_two(tr("teine jõulupüha"))
|
|
69
97
|
|
|
98
|
+
def _populate_half_day_holidays(self):
|
|
99
|
+
# Working and Rest Hours Act (24.01.2001), § 25.
|
|
100
|
+
# Employment Contracts Act (17.12.2008, in force since 01.07.2009), § 53.
|
|
101
|
+
|
|
102
|
+
if self._year <= 2000:
|
|
103
|
+
return None
|
|
104
|
+
|
|
105
|
+
# Pre-holiday day (workday shortened by 3 hours).
|
|
106
|
+
name = tr("pühade-eelne päev (tööpäev lüheneb 3 tunni võrra)")
|
|
107
|
+
self._add_holiday_feb_23(name)
|
|
108
|
+
self._add_holiday_jun_22(name)
|
|
109
|
+
self._add_holiday_dec_31(name)
|
|
110
|
+
|
|
111
|
+
if self._year >= 2005:
|
|
112
|
+
self._add_holiday_dec_23(name)
|
|
113
|
+
else:
|
|
114
|
+
self._add_holiday_dec_24(name)
|
|
115
|
+
|
|
70
116
|
|
|
71
117
|
class EE(Estonia):
|
|
72
118
|
pass
|
|
@@ -14,7 +14,7 @@ from holidays.countries.france import France
|
|
|
14
14
|
from holidays.mixins.child_entity import ChildEntity
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
class
|
|
17
|
+
class FrenchGuiana(ChildEntity, France):
|
|
18
18
|
"""French Guiana holidays.
|
|
19
19
|
|
|
20
20
|
Alias of a French subdivision that is also officially assigned
|
|
@@ -32,13 +32,13 @@ class HolidaysGF(ChildEntity, France):
|
|
|
32
32
|
start_year = 1815
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
class FrenchGuiana
|
|
35
|
+
class HolidaysGF(FrenchGuiana):
|
|
36
36
|
pass
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
class GF(
|
|
39
|
+
class GF(FrenchGuiana):
|
|
40
40
|
pass
|
|
41
41
|
|
|
42
42
|
|
|
43
|
-
class GUF(
|
|
43
|
+
class GUF(FrenchGuiana):
|
|
44
44
|
pass
|