holidays 0.63__py3-none-any.whl → 0.64__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.
Files changed (66) hide show
  1. holidays/calendars/hebrew.py +32 -3
  2. holidays/constants.py +1 -0
  3. holidays/countries/__init__.py +1 -0
  4. holidays/countries/afghanistan.py +104 -0
  5. holidays/countries/azerbaijan.py +2 -2
  6. holidays/countries/belarus.py +93 -14
  7. holidays/countries/el_salvador.py +45 -24
  8. holidays/countries/israel.py +55 -80
  9. holidays/countries/kazakhstan.py +2 -2
  10. holidays/countries/montenegro.py +143 -27
  11. holidays/countries/norway.py +1 -1
  12. holidays/countries/poland.py +9 -1
  13. holidays/countries/russia.py +1 -1
  14. holidays/countries/ukraine.py +19 -10
  15. holidays/financial/ny_stock_exchange.py +81 -44
  16. holidays/groups/__init__.py +1 -0
  17. holidays/groups/christian.py +2 -0
  18. holidays/groups/custom.py +12 -0
  19. holidays/groups/hebrew.py +151 -0
  20. holidays/holiday_base.py +2 -2
  21. holidays/locale/be/LC_MESSAGES/BY.mo +0 -0
  22. holidays/locale/be/LC_MESSAGES/BY.po +53 -17
  23. holidays/locale/cnr/LC_MESSAGES/ME.mo +0 -0
  24. holidays/locale/cnr/LC_MESSAGES/ME.po +102 -0
  25. holidays/locale/en_US/LC_MESSAGES/AF.mo +0 -0
  26. holidays/locale/en_US/LC_MESSAGES/AF.po +98 -0
  27. holidays/locale/en_US/LC_MESSAGES/BY.mo +0 -0
  28. holidays/locale/en_US/LC_MESSAGES/BY.po +61 -20
  29. holidays/locale/en_US/LC_MESSAGES/ME.mo +0 -0
  30. holidays/locale/en_US/LC_MESSAGES/ME.po +102 -0
  31. holidays/locale/en_US/LC_MESSAGES/PL.mo +0 -0
  32. holidays/locale/en_US/LC_MESSAGES/PL.po +7 -5
  33. holidays/locale/en_US/LC_MESSAGES/SV.mo +0 -0
  34. holidays/locale/en_US/LC_MESSAGES/SV.po +75 -0
  35. holidays/locale/es/LC_MESSAGES/SV.mo +0 -0
  36. holidays/locale/es/LC_MESSAGES/SV.po +75 -0
  37. holidays/locale/fa_AF/LC_MESSAGES/AF.mo +0 -0
  38. holidays/locale/fa_AF/LC_MESSAGES/AF.po +98 -0
  39. holidays/locale/pl/LC_MESSAGES/PL.mo +0 -0
  40. holidays/locale/pl/LC_MESSAGES/PL.po +8 -4
  41. holidays/locale/ps_AF/LC_MESSAGES/AF.mo +0 -0
  42. holidays/locale/ps_AF/LC_MESSAGES/AF.po +98 -0
  43. holidays/locale/ru/LC_MESSAGES/BY.mo +0 -0
  44. holidays/locale/ru/LC_MESSAGES/BY.po +111 -0
  45. holidays/locale/th/LC_MESSAGES/BY.mo +0 -0
  46. holidays/locale/th/LC_MESSAGES/BY.po +109 -0
  47. holidays/locale/th/LC_MESSAGES/NO.mo +0 -0
  48. holidays/locale/th/LC_MESSAGES/NO.po +80 -0
  49. holidays/locale/th/LC_MESSAGES/RU.mo +0 -0
  50. holidays/locale/th/LC_MESSAGES/RU.po +90 -0
  51. holidays/locale/th/LC_MESSAGES/UA.mo +0 -0
  52. holidays/locale/th/LC_MESSAGES/UA.po +114 -0
  53. holidays/locale/uk/LC_MESSAGES/ME.mo +0 -0
  54. holidays/locale/uk/LC_MESSAGES/ME.po +102 -0
  55. holidays/locale/uk/LC_MESSAGES/PL.mo +0 -0
  56. holidays/locale/uk/LC_MESSAGES/PL.po +7 -5
  57. holidays/locale/uk/LC_MESSAGES/SV.mo +0 -0
  58. holidays/locale/uk/LC_MESSAGES/SV.po +75 -0
  59. holidays/registry.py +1 -0
  60. holidays/version.py +1 -1
  61. {holidays-0.63.dist-info → holidays-0.64.dist-info}/AUTHORS +1 -0
  62. {holidays-0.63.dist-info → holidays-0.64.dist-info}/METADATA +16 -11
  63. {holidays-0.63.dist-info → holidays-0.64.dist-info}/RECORD +66 -36
  64. {holidays-0.63.dist-info → holidays-0.64.dist-info}/WHEEL +1 -1
  65. {holidays-0.63.dist-info → holidays-0.64.dist-info}/LICENSE +0 -0
  66. {holidays-0.63.dist-info → holidays-0.64.dist-info}/top_level.txt +0 -0
@@ -278,7 +278,6 @@ class KazakhstanStaticHolidays:
278
278
  2019: (MAY, 10, MAY, 4),
279
279
  2020: (
280
280
  (JAN, 3, JAN, 5),
281
- (MAY, 8, MAY, 11),
282
281
  (DEC, 18, DEC, 20),
283
282
  ),
284
283
  2021: (JUL, 5, JUL, 3),
@@ -293,5 +292,6 @@ class KazakhstanStaticHolidays:
293
292
  }
294
293
 
295
294
  special_public_holidays_observed = {
296
- 2020: (MAY, 8, MAY, 11),
295
+ # Victory Day.
296
+ 2020: (MAY, 8, tr("Жеңіс күні")),
297
297
  }
@@ -10,65 +10,141 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
+ from gettext import gettext as tr
14
+
15
+ from holidays.calendars import _CustomIslamicHolidays
16
+ from holidays.calendars.gregorian import GREGORIAN_CALENDAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV
13
17
  from holidays.calendars.julian import JULIAN_CALENDAR
14
- from holidays.groups import ChristianHolidays, InternationalHolidays
18
+ from holidays.constants import CATHOLIC, HEBREW, ISLAMIC, ORTHODOX, PUBLIC, WORKDAY
19
+ from holidays.groups import (
20
+ ChristianHolidays,
21
+ HebrewCalendarHolidays,
22
+ InternationalHolidays,
23
+ IslamicHolidays,
24
+ StaticHolidays,
25
+ )
15
26
  from holidays.observed_holiday_base import ObservedHolidayBase, SUN_TO_NEXT_MON, SUN_TO_NEXT_TUE
16
27
 
17
28
 
18
- class Montenegro(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
29
+ class Montenegro(
30
+ ObservedHolidayBase,
31
+ ChristianHolidays,
32
+ HebrewCalendarHolidays,
33
+ InternationalHolidays,
34
+ IslamicHolidays,
35
+ StaticHolidays,
36
+ ):
19
37
  """
20
38
  References:
21
- - https://en.wikipedia.org/wiki/Public_holidays_in_Montenegro
22
- - https://me.usembassy.gov/holiday-calendar/
23
- - https://publicholidays.eu/montenegro/2023-dates/
24
- - https://www.officeholidays.com/countries/montenegro/2023
39
+ - https://en.wikipedia.org/wiki/Public_holidays_in_Montenegro
40
+ - `Zakon o državnim i drugim praznicima <https://wapi.gov.me/download-preview/927f23a3-db4e-4f65-9f29-ce3c9dde0c90?version=1.0>`_
41
+ - `Zakon o svetkovanju vjerskih praznika <https://wapi.gov.me/download-preview/4f0b05a4-c85b-4eb2-bc29-0ad8363a9ba3?version=1.0>`_
25
42
  """
26
43
 
27
44
  country = "ME"
28
- observed_label = "%s (observed)"
45
+ default_language = "cnr"
46
+ # %s (estimated).
47
+ estimated_label = tr("%s (procijenjeno)")
48
+ # %s (observed).
49
+ observed_label = tr("%s (neradni dan)")
50
+ # %s (observed, estimated).
51
+ observed_estimated_label = tr("%s (neradni dan, procijenjeno)")
52
+ supported_languages = ("cnr", "en_US", "uk")
53
+ supported_categories = (CATHOLIC, ISLAMIC, HEBREW, ORTHODOX, PUBLIC, WORKDAY)
54
+ start_year = 2007
29
55
 
30
56
  def __init__(self, *args, **kwargs):
31
57
  ChristianHolidays.__init__(self, calendar=JULIAN_CALENDAR)
58
+ HebrewCalendarHolidays.__init__(self)
32
59
  InternationalHolidays.__init__(self)
60
+ IslamicHolidays.__init__(self, cls=MontenegroIslamicHolidays)
61
+ StaticHolidays.__init__(self, cls=MontenegroStaticHolidays)
33
62
  kwargs.setdefault("observed_rule", SUN_TO_NEXT_MON)
34
63
  super().__init__(*args, **kwargs)
35
64
 
36
65
  def _populate_public_holidays(self):
37
66
  # New Year's Day.
38
- name = "New Year's Day"
67
+ name = tr("Nova godina")
39
68
  self._add_observed(self._add_new_years_day(name), rule=SUN_TO_NEXT_TUE)
40
69
  self._add_observed(self._add_new_years_day_two(name))
41
70
 
42
- # Orthodox Christmas Eve.
43
- self._add_christmas_eve("Orthodox Christmas Eve")
44
-
45
- # Orthodox Christmas.
46
- self._add_christmas_day("Orthodox Christmas")
47
-
48
- # Labour Day.
49
- name = "Labour Day"
71
+ # Labor Day.
72
+ name = tr("Praznik rada")
50
73
  self._add_observed(self._add_labor_day(name), rule=SUN_TO_NEXT_TUE)
51
74
  self._add_observed(self._add_labor_day_two(name))
52
75
 
53
- # Good Friday.
54
- self._add_good_friday("Orthodox Good Friday")
55
-
56
- # Easter Sunday.
57
- self._add_easter_sunday("Orthodox Easter Sunday")
58
-
59
- # Easter Monday.
60
- self._add_easter_monday("Orthodox Easter Monday")
61
-
62
76
  # Independence Day.
63
- name = "Independence Day"
77
+ name = tr("Dan nezavisnosti")
64
78
  self._add_observed(self._add_holiday_may_21(name), rule=SUN_TO_NEXT_TUE)
65
79
  self._add_observed(self._add_holiday_may_22(name))
66
80
 
67
81
  # Statehood Day.
68
- name = "Statehood Day"
82
+ name = tr("Dan državnosti")
69
83
  self._add_observed(self._add_holiday_jul_13(name), rule=SUN_TO_NEXT_TUE)
70
84
  self._add_observed(self._add_holiday_jul_14(name))
71
85
 
86
+ if self._year >= 2022:
87
+ # Njegos Day.
88
+ self._add_observed(self._add_holiday_nov_13(tr("Njegošev dan")))
89
+
90
+ def _populate_catholic_holidays(self):
91
+ # Good Friday.
92
+ self._add_good_friday(tr("Veliki petak"), GREGORIAN_CALENDAR)
93
+
94
+ # Easter.
95
+ self._add_easter_monday(tr("Uskrs"), GREGORIAN_CALENDAR)
96
+
97
+ # All Saints' Day.
98
+ self._add_all_saints_day(tr("Svi Sveti"))
99
+
100
+ # Christmas Eve.
101
+ self._add_christmas_eve(tr("Badnji dan"), GREGORIAN_CALENDAR)
102
+
103
+ # Christmas.
104
+ name = tr("Božić")
105
+ self._add_christmas_day(name, GREGORIAN_CALENDAR)
106
+ self._add_christmas_day_two(name, GREGORIAN_CALENDAR)
107
+
108
+ def _populate_hebrew_holidays(self):
109
+ # Pesach.
110
+ self._add_passover(tr("Pasha"), range(2))
111
+
112
+ # Yom Kippur.
113
+ self._add_yom_kippur(tr("Jom Kipur"), range(2))
114
+
115
+ def _populate_islamic_holidays(self):
116
+ # Eid al-Fitr.
117
+ name = tr("Ramazanski bajram")
118
+ self._add_eid_al_fitr_day(name)
119
+ self._add_eid_al_fitr_day_two(name)
120
+ self._add_eid_al_fitr_day_three(name)
121
+
122
+ # Eid al-Adha.
123
+ name = tr("Kurbanski bajram")
124
+ self._add_eid_al_adha_day(name)
125
+ self._add_eid_al_adha_day_two(name)
126
+ self._add_eid_al_adha_day_three(name)
127
+
128
+ def _populate_orthodox_holidays(self):
129
+ # Good Friday.
130
+ self._add_good_friday(tr("Veliki petak"))
131
+
132
+ # Easter.
133
+ self._add_easter_monday(tr("Uskrs"))
134
+
135
+ # Christmas Eve.
136
+ self._add_christmas_eve(tr("Badnji dan"))
137
+
138
+ # Christmas.
139
+ name = tr("Božić")
140
+ self._add_christmas_day(name)
141
+ self._add_christmas_day_two(name)
142
+
143
+ def _populate_workday_holidays(self):
144
+ if self._year >= 2022:
145
+ # Ecological State Day.
146
+ self._add_holiday_sep_20(tr("Dan Ekološke države"))
147
+
72
148
 
73
149
  class ME(Montenegro):
74
150
  pass
@@ -76,3 +152,43 @@ class ME(Montenegro):
76
152
 
77
153
  class MNE(Montenegro):
78
154
  pass
155
+
156
+
157
+ class MontenegroIslamicHolidays(_CustomIslamicHolidays):
158
+ EID_AL_ADHA_DATES = {
159
+ 2012: (OCT, 26),
160
+ 2013: (OCT, 15),
161
+ 2014: (OCT, 5),
162
+ 2015: (SEP, 24),
163
+ 2016: (SEP, 13),
164
+ 2017: (SEP, 2),
165
+ 2018: (AUG, 22),
166
+ 2019: (AUG, 11),
167
+ 2020: (JUL, 31),
168
+ 2021: (JUL, 20),
169
+ 2022: (JUL, 9),
170
+ 2023: (JUN, 28),
171
+ 2024: (JUN, 16),
172
+ }
173
+
174
+ EID_AL_FITR_DATES = {
175
+ 2012: (AUG, 19),
176
+ 2013: (AUG, 8),
177
+ 2014: (JUL, 29),
178
+ 2015: (JUL, 18),
179
+ 2016: (JUL, 7),
180
+ 2017: (JUN, 26),
181
+ 2018: (JUN, 15),
182
+ 2019: (JUN, 4),
183
+ 2020: (MAY, 24),
184
+ 2021: (MAY, 13),
185
+ 2022: (MAY, 2),
186
+ 2023: (APR, 21),
187
+ 2024: (APR, 10),
188
+ }
189
+
190
+
191
+ class MontenegroStaticHolidays:
192
+ special_public_holidays = {
193
+ 2024: (NOV, 14, tr("Njegošev dan")),
194
+ }
@@ -35,7 +35,7 @@ class Norway(HolidayBase, ChristianHolidays, InternationalHolidays):
35
35
 
36
36
  country = "NO"
37
37
  default_language = "no"
38
- supported_languages = ("en_US", "no", "uk")
38
+ supported_languages = ("en_US", "no", "th", "uk")
39
39
 
40
40
  def __init__(self, include_sundays=False, *args, **kwargs):
41
41
  """
@@ -19,7 +19,10 @@ from holidays.holiday_base import HolidayBase
19
19
 
20
20
  class Poland(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
21
21
  """
22
- https://pl.wikipedia.org/wiki/Dni_wolne_od_pracy_w_Polsce
22
+ References:
23
+ - https://en.wikipedia.org/wiki/Public_holidays_in_Poland
24
+ - https://pl.wikipedia.org/wiki/Dni_wolne_od_pracy_w_Polsce
25
+ - https://isap.sejm.gov.pl/isap.nsf/DocDetails.xsp?id=WDU20240001965
23
26
  """
24
27
 
25
28
  country = "PL"
@@ -104,8 +107,13 @@ class Poland(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolida
104
107
  tr("Niepokalane Poczęcie Najświętszej Marii Panny")
105
108
  )
106
109
 
110
+ if self._year >= 2025:
111
+ # Christmas Eve.
112
+ self._add_christmas_eve(tr("Wigilia Bożego Narodzenia"))
113
+
107
114
  # Christmas Day.
108
115
  self._add_christmas_day(tr("Boże Narodzenie (pierwszy dzień)"))
116
+
109
117
  # Second Day of Christmas.
110
118
  self._add_christmas_day_two(tr("Boże Narodzenie (drugi dzień)"))
111
119
 
@@ -26,7 +26,7 @@ class Russia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
26
26
 
27
27
  country = "RU"
28
28
  default_language = "ru"
29
- supported_languages = ("en_US", "ru")
29
+ supported_languages = ("en_US", "ru", "th")
30
30
  start_year = 1991
31
31
 
32
32
  def __init__(self, *args, **kwargs):
@@ -25,8 +25,9 @@ class Ukraine(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
25
25
  """
26
26
  Ukraine holidays.
27
27
 
28
- Current holidays list:
29
- - https://zakon1.rada.gov.ua/laws/show/322-08/paran454#n454
28
+ References:
29
+ - Labor Code of Ukraine, Art. 73 `<https://zakon1.rada.gov.ua/laws/show/322-08/paran454#n454>`_
30
+ - https://zakon.rada.gov.ua/laws/show/585-12
30
31
  """
31
32
 
32
33
  country = "UA"
@@ -34,7 +35,7 @@ class Ukraine(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
34
35
  # %s (observed).
35
36
  observed_label = tr("%s (вихідний)")
36
37
  supported_categories = (PUBLIC, WORKDAY)
37
- supported_languages = ("ar", "en_US", "uk")
38
+ supported_languages = ("ar", "en_US", "th", "uk")
38
39
  # The current set of holidays came into force in 1991.
39
40
  start_year = 1991
40
41
 
@@ -71,10 +72,9 @@ class Ukraine(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
71
72
  # International Women's Day.
72
73
  dts_observed.add(self._add_womens_day(tr("Міжнародний жіночий день")))
73
74
 
74
- if (self._year >= 2022) == is_martial_law:
75
- if self._year >= 1992:
76
- # Easter Sunday (Pascha).
77
- dts_observed.add(self._add_easter_sunday(tr("Великдень (Пасха)")))
75
+ if (self._year >= 2022) is is_martial_law:
76
+ # Easter Sunday (Pascha).
77
+ dts_observed.add(self._add_easter_sunday(tr("Великдень (Пасха)")))
78
78
 
79
79
  # Holy Trinity Day.
80
80
  dts_observed.add(self._add_whit_sunday(tr("Трійця")))
@@ -169,6 +169,7 @@ class UKR(Ukraine):
169
169
  class UkraineStaticHolidays:
170
170
  """
171
171
  Substituted holidays:
172
+ - `1991 <https://zakon.rada.gov.ua/laws/show/60-91-%D0%BF>`_
172
173
  - `1992 [1] <https://zakon.rada.gov.ua/laws/show/202-92-%D0%BF>`_
173
174
  - `1992 [2] <https://zakon.rada.gov.ua/laws/show/377-91-%D0%BF>`_
174
175
  - `1993 [1] <https://zakon.rada.gov.ua/laws/show/563-93-%D0%BF>`_
@@ -178,8 +179,9 @@ class UkraineStaticHolidays:
178
179
  - `1995 [2] <https://zakon.rada.gov.ua/laws/show/634-95-%D0%BF>`_
179
180
  - `1995 [3] <https://zakon.rada.gov.ua/laws/show/266-95-%D0%BF>`_
180
181
  - `1996 <https://zakon.rada.gov.ua/laws/show/424-96-%D0%BF>`_
181
- - `1997[1] <https://zakon.rada.gov.ua/laws/show/326-97-%D0%BF>`_
182
- - `1997[2] <https://zakon.rada.gov.ua/laws/show/1547-96-%D0%BF>`_
182
+ - `1997 [1] <https://zakon.rada.gov.ua/laws/show/326-97-%D0%BF>`_
183
+ - `1997 [2] <https://zakon.rada.gov.ua/laws/show/1547-96-%D0%BF>`_
184
+ - `1998 <https://zakon.rada.gov.ua/laws/show/1404-97-%D0%BF>`_,
183
185
  - `1999 [1] <https://zakon.rada.gov.ua/laws/show/1433-99-%D0%BF>`_,
184
186
  - `1999 [2] <https://zakon.rada.gov.ua/laws/show/558-99-%D0%BF>`_,
185
187
  - `1999 [3] <https://zakon.rada.gov.ua/laws/show/2070-98-%D0%BF>`_
@@ -221,6 +223,11 @@ class UkraineStaticHolidays:
221
223
  # Day off (substituted from %s).
222
224
  substituted_label = tr("Вихідний день (перенесено з %s)")
223
225
  special_public_holidays = {
226
+ 1991: (
227
+ (MAY, 3, MAY, 5),
228
+ (MAY, 10, MAY, 12),
229
+ (JUL, 15, JUL, 13),
230
+ ),
224
231
  1992: (
225
232
  (JAN, 6, JAN, 4),
226
233
  (APR, 27, MAY, 16),
@@ -244,9 +251,11 @@ class UkraineStaticHolidays:
244
251
  1997: (
245
252
  (JAN, 2, DEC, 28, 1996),
246
253
  (JAN, 6, JAN, 4),
254
+ (JAN, 8, JAN, 11),
247
255
  (APR, 29, APR, 19),
248
256
  (APR, 30, MAY, 17),
249
257
  ),
258
+ 1998: (JAN, 2, JAN, 4),
250
259
  1999: (
251
260
  (JAN, 8, JAN, 10),
252
261
  (APR, 12, APR, 24),
@@ -324,7 +333,7 @@ class UkraineStaticHolidays:
324
333
  ),
325
334
  2012: (
326
335
  (MAR, 9, MAR, 3),
327
- (APR, 20, APR, 28),
336
+ (APR, 30, APR, 28),
328
337
  (JUN, 29, JUL, 7),
329
338
  (DEC, 31, DEC, 29),
330
339
  ),
@@ -147,22 +147,58 @@ class NYSE(NewYorkStockExchange):
147
147
 
148
148
 
149
149
  class NewYorkStockExchangeStaticHolidays:
150
+ """
151
+ References:
152
+ - https://guides.loc.gov/presidents-portraits/chronological
153
+ - https://www.presidency.ucsb.edu/documents/proclamation-3561-national-day-mourning-for-president-kennedy
154
+ """
155
+
156
+ # Blizzard of 1888.
157
+ name_blizard_1888 = "Blizzard of 1888"
158
+
159
+ # Centennial of George Washington's Inauguration.
160
+ name_george_washington_centennial = "Centennial of George Washington's Inauguration"
161
+
162
+ # Columbian Celebration.
163
+ name_columbian_celebration = "Columbian Celebration"
164
+
165
+ # Heatless Day.
166
+ name_heatless_day = "Heatless Day"
167
+
168
+ # Catch Up Day.
169
+ name_catch_up_day = "Catch Up Day"
170
+
171
+ # Special Bank Holiday.
172
+ name_special_bank_holiday = "Special Bank Holiday"
173
+
174
+ # V-J Day (WWII).
175
+ name_vj_day_wwii = "V-J Day (WWII)"
176
+
177
+ # Christmas Eve.
178
+ name_christmas_eve = "Christmas Eve"
179
+
180
+ # Closed for Sept 11, 2001 Attacks.
181
+ name_sept11_attacks = "Closed for Sept 11, 2001 Attacks"
182
+
183
+ # Hurricane Sandy.
184
+ name_hurricane_sandy = "Hurricane Sandy"
185
+
150
186
  special_public_holidays = {
151
187
  1888: (
152
- (MAR, 12, "Blizzard of 1888"),
153
- (MAR, 13, "Blizzard of 1888"),
188
+ (MAR, 12, name_blizard_1888),
189
+ (MAR, 13, name_blizard_1888),
154
190
  (NOV, 30, "Thanksgiving Friday 1888"),
155
191
  ),
156
192
  1889: (
157
- (APR, 29, "Centennial of Washington Inauguration"),
158
- (APR, 30, "Centennial of Washington Inauguration"),
159
- (MAY, 1, "Centennial of Washington Inauguration"),
193
+ (APR, 29, name_george_washington_centennial),
194
+ (APR, 30, name_george_washington_centennial),
195
+ (MAY, 1, name_george_washington_centennial),
160
196
  ),
161
197
  1892: (
162
- (OCT, 12, "Columbian Celebration"),
163
- (OCT, 21, "Columbian Celebration"),
198
+ (OCT, 12, name_columbian_celebration),
199
+ (OCT, 21, name_columbian_celebration),
164
200
  ),
165
- 1893: (APR, 27, "Columbian Celebration"),
201
+ 1893: (APR, 27, name_columbian_celebration),
166
202
  1897: (APR, 27, "Grant's Birthday"),
167
203
  1898: (MAY, 4, "Charter Day"),
168
204
  1899: (
@@ -170,17 +206,17 @@ class NewYorkStockExchangeStaticHolidays:
170
206
  (JUL, 3, "Monday before Independence Day"),
171
207
  (SEP, 29, "Admiral Dewey Celebration"),
172
208
  ),
173
- 1900: (DEC, 24, "Christmas Eve"),
209
+ 1900: (DEC, 24, name_christmas_eve),
174
210
  1901: (
175
211
  (JUL, 5, "Friday after Independence Day"),
176
- (SEP, 19, "Funeral of President McKinley"),
212
+ (SEP, 19, "National Day of Mourning for President WIlliam McKinley"),
177
213
  ),
178
214
  1903: (APR, 22, "Opening of new NYSE building"),
179
215
  1917: (JUN, 5, "Draft Registration Day"),
180
216
  1918: (
181
- (JAN, 28, "Heatless Day"),
182
- (FEB, 4, "Heatless Day"),
183
- (FEB, 11, "Heatless Day"),
217
+ (JAN, 28, name_heatless_day),
218
+ (FEB, 4, name_heatless_day),
219
+ (FEB, 11, name_heatless_day),
184
220
  (SEP, 12, "Draft Registration Day"),
185
221
  (NOV, 11, "Armistice Day"),
186
222
  ),
@@ -191,58 +227,59 @@ class NewYorkStockExchangeStaticHolidays:
191
227
  ),
192
228
  1923: (
193
229
  (AUG, 3, "Death of President Warren G. Harding"),
194
- (AUG, 10, "Funeral of President Warren G. Harding"),
230
+ (AUG, 10, "National Day of Mourning for President Warren G. Harding"),
195
231
  ),
196
232
  1927: (JUN, 13, "Parade for Colonel Charles Lindbergh"),
197
233
  1929: (
198
- (NOV, 1, "Catch Up Day"),
199
- (NOV, 29, "Catch Up Day"),
234
+ (NOV, 1, name_catch_up_day),
235
+ (NOV, 29, name_catch_up_day),
200
236
  ),
201
237
  1933: (
202
- (MAR, 6, "Special Bank Holiday"),
203
- (MAR, 7, "Special Bank Holiday"),
204
- (MAR, 8, "Special Bank Holiday"),
205
- (MAR, 9, "Special Bank Holiday"),
206
- (MAR, 10, "Special Bank Holiday"),
207
- (MAR, 13, "Special Bank Holiday"),
208
- (MAR, 14, "Special Bank Holiday"),
238
+ (MAR, 6, name_special_bank_holiday),
239
+ (MAR, 7, name_special_bank_holiday),
240
+ (MAR, 8, name_special_bank_holiday),
241
+ (MAR, 9, name_special_bank_holiday),
242
+ (MAR, 10, name_special_bank_holiday),
243
+ (MAR, 13, name_special_bank_holiday),
244
+ (MAR, 14, name_special_bank_holiday),
209
245
  ),
210
246
  1945: (
211
- (AUG, 15, "V-J Day (WWII)"),
212
- (AUG, 16, "V-J Day (WWII)"),
213
- (DEC, 24, "Christmas Eve"),
247
+ (AUG, 15, name_vj_day_wwii),
248
+ (AUG, 16, name_vj_day_wwii),
249
+ (DEC, 24, name_christmas_eve),
214
250
  ),
215
- 1954: (DEC, 24, "Christmas Eve"),
216
- 1956: (DEC, 24, "Christmas Eve"),
251
+ 1954: (DEC, 24, name_christmas_eve),
252
+ 1956: (DEC, 24, name_christmas_eve),
217
253
  1958: (DEC, 26, "Day after Christmas"),
218
254
  1961: (MAY, 29, "Day before Decoration Day"),
219
- 1963: (NOV, 25, "Funeral of President John F. Kennedy"),
220
- 1965: (DEC, 24, "Christmas Eve"),
255
+ 1963: (NOV, 25, "National Day of Mourning for President John F. Kennedy"),
256
+ 1965: (DEC, 24, name_christmas_eve),
221
257
  1968: (
222
- (APR, 9, "Day of Mourning for Martin Luther King Jr."),
258
+ (APR, 9, "National Day of Mourning for Martin Luther King Jr."),
223
259
  (JUL, 5, "Day after Independence Day"),
224
260
  ),
225
261
  1969: (
226
262
  (FEB, 10, "Heavy Snow"),
227
- (MAR, 31, "Funeral of President Dwight D. Eisenhower"),
263
+ (MAR, 31, "National Day of Mourning for former President Dwight D. Eisenhower"),
228
264
  (JUL, 21, "National Participation in Lunar Exploration"),
229
265
  ),
230
- 1972: (DEC, 28, "Funeral for President Harry S. Truman"),
231
- 1973: (JAN, 25, "Funeral for President Lyndon B. Johnson"),
266
+ 1972: (DEC, 28, "National Day of Mourning for former President Harry S. Truman"),
267
+ 1973: (JAN, 25, "National Day of Mourning for former President Lyndon B. Johnson"),
232
268
  1977: (JUL, 14, "Blackout in New York City"),
233
269
  1985: (SEP, 27, "Hurricane Gloria"),
234
- 1994: (APR, 27, "Funeral for President Richard M. Nixon"),
270
+ 1994: (APR, 27, "National Day of Mourning for former President Richard M. Nixon"),
235
271
  2001: (
236
- (SEP, 11, "Closed for Sept 11, 2001 Attacks"),
237
- (SEP, 12, "Closed for Sept 11, 2001 Attacks"),
238
- (SEP, 13, "Closed for Sept 11, 2001 Attacks"),
239
- (SEP, 14, "Closed for Sept 11, 2001 Attacks"),
272
+ (SEP, 11, name_sept11_attacks),
273
+ (SEP, 12, name_sept11_attacks),
274
+ (SEP, 13, name_sept11_attacks),
275
+ (SEP, 14, name_sept11_attacks),
240
276
  ),
241
- 2004: (JUN, 11, "Day of Mourning for President Ronald W. Reagan"),
242
- 2007: (JAN, 2, "Day of Mourning for President Gerald R. Ford"),
277
+ 2004: (JUN, 11, "National Day of Mourning for former President Ronald Reagan"),
278
+ 2007: (JAN, 2, "National Day of Mourning for former President Gerald R. Ford"),
243
279
  2012: (
244
- (OCT, 29, "Hurricane Sandy"),
245
- (OCT, 30, "Hurricane Sandy"),
280
+ (OCT, 29, name_hurricane_sandy),
281
+ (OCT, 30, name_hurricane_sandy),
246
282
  ),
247
- 2018: (DEC, 5, "Day of Mourning for President George H.W. Bush"),
283
+ 2018: (DEC, 5, "National Day of Mourning for former President George H. W. Bush"),
284
+ 2025: (JAN, 9, "National Day of Mourning for former President Jimmy Carter"),
248
285
  }
@@ -17,6 +17,7 @@ from holidays.groups.chinese import ChineseCalendarHolidays
17
17
  from holidays.groups.christian import ChristianHolidays
18
18
  from holidays.groups.custom import StaticHolidays
19
19
  from holidays.groups.eastern import EasternCalendarHolidays
20
+ from holidays.groups.hebrew import HebrewCalendarHolidays
20
21
  from holidays.groups.hindu import HinduCalendarHolidays
21
22
  from holidays.groups.international import InternationalHolidays
22
23
  from holidays.groups.islamic import IslamicHolidays
@@ -110,7 +110,9 @@ class ChristianHolidays:
110
110
 
111
111
  All Souls' Day is a day of prayer and remembrance for the faithful
112
112
  departed, observed by certain Christian denominations on 2 November.
113
+ In Belarussian tradition it is called Dziady.
113
114
  https://en.wikipedia.org/wiki/All_Souls%27_Day
115
+ https://en.wikipedia.org/wiki/Dziady
114
116
  """
115
117
  return self._add_holiday_nov_2(name)
116
118
 
holidays/groups/custom.py CHANGED
@@ -10,6 +10,10 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
+ from datetime import date
14
+
15
+ from holidays.helpers import _normalize_tuple
16
+
13
17
 
14
18
  class StaticHolidays:
15
19
  """Helper class for special and substituted holidays support.
@@ -33,3 +37,11 @@ class StaticHolidays:
33
37
  ):
34
38
  setattr(self, attribute_name, value)
35
39
  self.has_substituted_holidays = True
40
+
41
+ # Populate substituted holidays from adjacent years.
42
+ self.weekend_workdays = set()
43
+ for special_public_holidays in getattr(self, "special_public_holidays", {}).values():
44
+ for special_public_holiday in _normalize_tuple(special_public_holidays):
45
+ if len(special_public_holiday) == 5: # The fifth element is the year.
46
+ _, _, from_month, from_day, from_year = special_public_holiday
47
+ self.weekend_workdays.add(date(from_year, from_month, from_day))