holidays 0.85__py3-none-any.whl → 0.87__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 (63) hide show
  1. holidays/calendars/chinese.py +44 -6
  2. holidays/calendars/hindu.py +85 -1
  3. holidays/countries/bangladesh.py +13 -9
  4. holidays/countries/bulgaria.py +208 -50
  5. holidays/countries/estonia.py +55 -9
  6. holidays/countries/germany.py +75 -74
  7. holidays/countries/gibraltar.py +1 -1
  8. holidays/countries/india.py +5 -3
  9. holidays/countries/italy.py +489 -167
  10. holidays/countries/mongolia.py +1 -5
  11. holidays/countries/nepal.py +46 -41
  12. holidays/countries/russia.py +1 -2
  13. holidays/countries/sweden.py +102 -32
  14. holidays/countries/taiwan.py +3 -6
  15. holidays/countries/thailand.py +5 -5
  16. holidays/countries/united_states.py +55 -46
  17. holidays/financial/ny_stock_exchange.py +591 -89
  18. holidays/groups/chinese.py +11 -18
  19. holidays/groups/hindu.py +24 -0
  20. holidays/holiday_base.py +51 -23
  21. holidays/locale/bg/LC_MESSAGES/BG.mo +0 -0
  22. holidays/locale/bn/LC_MESSAGES/BD.mo +0 -0
  23. holidays/locale/de/LC_MESSAGES/DE.mo +0 -0
  24. holidays/locale/en_US/LC_MESSAGES/BD.mo +0 -0
  25. holidays/locale/en_US/LC_MESSAGES/BG.mo +0 -0
  26. holidays/locale/en_US/LC_MESSAGES/DE.mo +0 -0
  27. holidays/locale/en_US/LC_MESSAGES/EE.mo +0 -0
  28. holidays/locale/en_US/LC_MESSAGES/IT.mo +0 -0
  29. holidays/locale/en_US/LC_MESSAGES/NP.mo +0 -0
  30. holidays/locale/en_US/LC_MESSAGES/SE.mo +0 -0
  31. holidays/locale/en_US/LC_MESSAGES/TW.mo +0 -0
  32. holidays/locale/et/LC_MESSAGES/EE.mo +0 -0
  33. holidays/locale/gu/LC_MESSAGES/IN.mo +0 -0
  34. holidays/locale/it_IT/LC_MESSAGES/IT.mo +0 -0
  35. holidays/locale/ne/LC_MESSAGES/NP.mo +0 -0
  36. holidays/locale/sv/LC_MESSAGES/SE.mo +0 -0
  37. holidays/locale/th/LC_MESSAGES/CA.mo +0 -0
  38. holidays/locale/th/LC_MESSAGES/CN.mo +0 -0
  39. holidays/locale/th/LC_MESSAGES/DE.mo +0 -0
  40. holidays/locale/th/LC_MESSAGES/DK.mo +0 -0
  41. holidays/locale/th/LC_MESSAGES/ES.mo +0 -0
  42. holidays/locale/th/LC_MESSAGES/FI.mo +0 -0
  43. holidays/locale/th/LC_MESSAGES/HK.mo +0 -0
  44. holidays/locale/th/LC_MESSAGES/NO.mo +0 -0
  45. holidays/locale/th/LC_MESSAGES/SE.mo +0 -0
  46. holidays/locale/th/LC_MESSAGES/TL.mo +0 -0
  47. holidays/locale/th/LC_MESSAGES/TW.mo +0 -0
  48. holidays/locale/th/LC_MESSAGES/US.mo +0 -0
  49. holidays/locale/th/LC_MESSAGES/VA.mo +0 -0
  50. holidays/locale/uk/LC_MESSAGES/BG.mo +0 -0
  51. holidays/locale/uk/LC_MESSAGES/DE.mo +0 -0
  52. holidays/locale/uk/LC_MESSAGES/EE.mo +0 -0
  53. holidays/locale/uk/LC_MESSAGES/SE.mo +0 -0
  54. holidays/locale/zh_CN/LC_MESSAGES/TW.mo +0 -0
  55. holidays/locale/zh_TW/LC_MESSAGES/TW.mo +0 -0
  56. holidays/utils.py +10 -1
  57. holidays/version.py +1 -1
  58. {holidays-0.85.dist-info → holidays-0.87.dist-info}/METADATA +18 -11
  59. {holidays-0.85.dist-info → holidays-0.87.dist-info}/RECORD +63 -56
  60. {holidays-0.85.dist-info → holidays-0.87.dist-info}/licenses/CONTRIBUTORS +4 -0
  61. {holidays-0.85.dist-info → holidays-0.87.dist-info}/WHEEL +0 -0
  62. {holidays-0.85.dist-info → holidays-0.87.dist-info}/licenses/LICENSE +0 -0
  63. {holidays-0.85.dist-info → holidays-0.87.dist-info}/top_level.txt +0 -0
@@ -25,8 +25,11 @@ from holidays.calendars.gregorian import (
25
25
  OCT,
26
26
  NOV,
27
27
  DEC,
28
+ SAT,
29
+ SUN,
28
30
  _timedelta,
29
31
  )
32
+ from holidays.constants import HALF_DAY, PUBLIC
30
33
  from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
31
34
  from holidays.observed_holiday_base import ObservedHolidayBase, SAT_TO_PREV_FRI, SUN_TO_NEXT_MON
32
35
 
@@ -37,16 +40,18 @@ class NewYorkStockExchange(
37
40
  """New York Stock Exchange holidays.
38
41
 
39
42
  References:
40
- * <https://web.archive.org/web/20240118104341/https://www.nyse.com/publicdocs/nyse/regulation/nyse/NYSE_Rules.pdf>
43
+ * [NYSE Rules](https://web.archive.org/web/20240118104341/https://www.nyse.com/publicdocs/nyse/regulation/nyse/NYSE_Rules.pdf)
44
+ * [NYSE History - Timeline](https://web.archive.org/web/20150113014537/https://www.nyse.com/about/history/timeline_trading.html)
41
45
 
42
46
  Historical data:
43
- * <https://web.archive.org/web/20221206064307/https://s3.amazonaws.com/armstrongeconomics-wp/2013/07/NYSE-Closings.pdf>
44
- * <https://web.archive.org/web/20211101162021/https://www.nyse.com/markets/hours-calendars>
47
+ * [History of NYSE Holidays](https://web.archive.org/web/20221206064307/https://s3.amazonaws.com/armstrongeconomics-wp/2013/07/NYSE-Closings.pdf)
48
+ * [NYSE Holidays & Trading Hours](https://web.archive.org/web/20211101162021/https://www.nyse.com/markets/hours-calendars)
45
49
  """
46
50
 
47
51
  market = "XNYS"
48
52
  observed_label = "%s (observed)"
49
53
  start_year = 1863
54
+ supported_categories = (HALF_DAY, PUBLIC)
50
55
 
51
56
  def __init__(self, *args, **kwargs):
52
57
  ChristianHolidays.__init__(self)
@@ -55,88 +60,195 @@ class NewYorkStockExchange(
55
60
  kwargs.setdefault("observed_rule", SAT_TO_PREV_FRI + SUN_TO_NEXT_MON)
56
61
  super().__init__(*args, **kwargs)
57
62
 
63
+ def _add_observed(self, dt: date, **kwargs) -> tuple[bool, date | None]:
64
+ kwargs["rule"] = SUN_TO_NEXT_MON if dt.year <= 1952 else self._observed_rule
65
+ return super()._add_observed(dt, **kwargs)
66
+
67
+ def _get_weekend(self, dt: date) -> set[int]:
68
+ # September 29, 1952: The NYSE changes its trading hours
69
+ # to 10am to 3:30pm Monday-Friday, and closes on Saturdays.
70
+ return {SAT, SUN} if dt >= date(1952, SEP, 29) else {SUN}
71
+
72
+ def _populate_ranged_holidays(
73
+ self, name: str, start: tuple[int, int], end: tuple[int, int], step: int = 1
74
+ ):
75
+ start_date = date(self._year, *start)
76
+ end_date = date(self._year, *end)
77
+ for dt in (
78
+ _timedelta(start_date, n) for n in range(0, (end_date - start_date).days + 1, step)
79
+ ):
80
+ if self._is_weekend(dt) or dt in self:
81
+ continue
82
+ self._add_holiday(name, dt)
83
+
58
84
  def _populate_public_holidays(self):
85
+ # According to NYSE Rules (Rule 51), when any holiday observed by the Exchange falls on
86
+ # a Saturday, the Exchange will not be open for business on the preceding Friday ...,
87
+ # unless unusual business conditions exist, such as the ending of a monthly or the yearly
88
+ # accounting period.
89
+ # Therefore, New Year's Day holiday is not moved to Dec 31, even after 1952 amendments.
90
+
59
91
  # New Year's Day.
60
- name = "New Year's Day"
61
- self._move_holiday(self._add_new_years_day(name))
92
+ self._move_holiday(self._add_new_years_day("New Year's Day"))
62
93
 
63
- # MLK, 3rd Monday of January.
94
+ # Martin Luther King Jr. Day.
64
95
  if self._year >= 1998:
65
96
  self._add_holiday_3rd_mon_of_jan("Martin Luther King Jr. Day")
66
97
 
67
- # LINCOLN BIRTHDAY: observed 1896 - 1953 and 1968, Feb 12 (observed)
68
- if 1896 <= self._year <= 1953 or self._year == 1968:
98
+ # Lincoln's Birthday.
99
+ if 1896 <= self._year <= 1953:
69
100
  self._move_holiday(self._add_holiday_feb_12("Lincoln's Birthday"))
70
101
 
71
- # WASHINGTON'S BIRTHDAY: Feb 22 (obs) until 1971, then 3rd Mon of Feb
102
+ # Washington's Birthday.
72
103
  name = "Washington's Birthday"
73
- if self._year <= 1970:
74
- self._move_holiday(self._add_holiday_feb_22(name))
75
- else:
104
+ if self._year >= 1971:
76
105
  self._add_holiday_3rd_mon_of_feb(name)
106
+ else:
107
+ self._move_holiday(self._add_holiday_feb_22(name))
77
108
 
78
- # GOOD FRIDAY - closed every year except 1898, 1906, and 1907
109
+ # Good Friday.
79
110
  if self._year not in {1898, 1906, 1907}:
80
111
  self._add_good_friday("Good Friday")
81
112
 
82
- # MEM DAY (May 30) - closed every year since 1873
83
- # last Mon in May since 1971
113
+ # Memorial Day.
84
114
  if self._year >= 1873:
85
115
  name = "Memorial Day"
86
- if self._year <= 1970:
87
- self._move_holiday(self._add_holiday_may_30(name))
88
- else:
116
+ if self._year >= 1971:
89
117
  self._add_holiday_last_mon_of_may(name)
118
+ else:
119
+ self._move_holiday(self._add_holiday_may_30(name))
90
120
 
91
- # FLAG DAY: June 14th 1916 - 1953
121
+ # Flag Day.
92
122
  if 1916 <= self._year <= 1953:
93
123
  self._move_holiday(self._add_holiday_jun_14("Flag Day"))
94
124
 
95
- # JUNETEENTH: since 2022
125
+ # Juneteenth National Independence Day.
96
126
  if self._year >= 2022:
97
127
  self._move_holiday(self._add_holiday_jun_19("Juneteenth National Independence Day"))
98
128
 
99
- # INDEPENDENCE DAY (July 4) - history suggests closed every year
129
+ # Independence Day.
100
130
  self._move_holiday(self._add_holiday_jul_4("Independence Day"))
101
131
 
102
- # LABOR DAY - first mon in Sept, since 1887
132
+ # Labor Day.
103
133
  if self._year >= 1887:
104
134
  self._add_holiday_1st_mon_of_sep("Labor Day")
105
135
 
106
- # COLUMBUS DAY/INDIGENOUS PPL DAY: Oct 12 - closed 1909-1953
136
+ # Columbus Day.
107
137
  if 1909 <= self._year <= 1953:
108
138
  self._move_holiday(self._add_columbus_day("Columbus Day"))
109
139
 
110
- # ELECTION DAY: Tuesday after first Monday in November (2 U.S. Code §7)
111
- # closed until 1969, then closed pres years 1972-80
140
+ # Election Day.
112
141
  if self._year <= 1968 or self._year in {1972, 1976, 1980}:
113
142
  self._add_holiday_1_day_past_1st_mon_of_nov("Election Day")
114
143
 
115
- # VETERAN'S DAY: Nov 11 - closed 1918, 1921, 1934-1953
116
- if self._year in {1918, 1921} or 1934 <= self._year <= 1953:
144
+ # Veteran's Day.
145
+ if 1934 <= self._year <= 1953:
117
146
  self._move_holiday(self._add_remembrance_day("Veteran's Day"))
118
147
 
119
- # THXGIVING DAY: 4th Thurs in Nov - closed every year
120
- self._add_holiday_4th_thu_of_nov("Thanksgiving Day")
148
+ # Thanksgiving Day.
149
+ thanksgiving_day_dates = {
150
+ 1865: (DEC, 7),
151
+ 1869: (NOV, 18),
152
+ 1939: (NOV, 23),
153
+ 1940: (NOV, 21),
154
+ 1941: (NOV, 20),
155
+ }
156
+ name = "Thanksgiving Day"
157
+ if dt := thanksgiving_day_dates.get(self._year):
158
+ self._add_holiday(name, dt)
159
+ elif self._year >= 1942:
160
+ self._add_holiday_4th_thu_of_nov(name)
161
+ else:
162
+ self._add_holiday_last_thu_of_nov(name)
121
163
 
122
- # XMAS DAY: Dec 25th - every year
164
+ # Christmas Day.
123
165
  self._move_holiday(self._add_christmas_day("Christmas Day"))
124
166
 
125
167
  # Special holidays.
168
+
126
169
  if self._year == 1914:
127
- # Beginning of WWI.
128
- begin = date(self._year, JUL, 31)
129
- end = date(self._year, NOV, 27)
130
- for dt in (_timedelta(begin, n) for n in range((end - begin).days + 1)):
131
- if self._is_weekend(dt) or dt in self:
132
- continue
133
- self._add_holiday("World War I", dt)
170
+ self._populate_ranged_holidays("Pending outbreak of World War I", (JUL, 31), (NOV, 27))
134
171
  elif self._year == 1968:
135
- begin = date(self._year, JUN, 12)
136
- end = date(self._year, DEC, 24)
137
- # Wednesday special holiday.
138
- for dt in (_timedelta(begin, n) for n in range(0, (end - begin).days + 1, 7)):
139
- self._add_holiday("Paper Crisis", dt)
172
+ # WED.
173
+ self._populate_ranged_holidays("Paperwork Crisis", (JUN, 12), (DEC, 24), 7)
174
+
175
+ # Closed Saturdays.
176
+ closed_sat_date_ranges = {
177
+ # Start date, end date.
178
+ 1944: ((AUG, 19), (SEP, 2)),
179
+ 1945: ((JUL, 7), (SEP, 1)),
180
+ 1946: ((JUN, 1), (SEP, 28)),
181
+ 1947: ((MAY, 31), (SEP, 27)),
182
+ 1948: ((MAY, 29), (SEP, 25)),
183
+ 1949: ((MAY, 28), (SEP, 24)),
184
+ 1950: ((JUN, 3), (SEP, 30)),
185
+ 1951: ((JUN, 2), (SEP, 29)),
186
+ 1952: ((MAY, 31), (SEP, 27)),
187
+ }
188
+ if self._year in closed_sat_date_ranges:
189
+ start, end = closed_sat_date_ranges[self._year]
190
+ self._populate_ranged_holidays("Closed Saturday", start, end, 7)
191
+
192
+ def _populate_half_day_holidays(self):
193
+ # %s (markets close at 1:00pm).
194
+ close_1pm_label = "%s (markets close at 1:00pm)"
195
+
196
+ # %s (markets close at 2:00pm).
197
+ close_2pm_label = "%s (markets close at 2:00pm)"
198
+
199
+ # %s (markets close at 2:30pm).
200
+ close_2_30pm_label = "%s (markets close at 2:30pm)"
201
+
202
+ # %s (markets close at 3:00pm).
203
+ close_3pm_label = "%s (markets close at 3:00pm)"
204
+
205
+ # Special holidays.
206
+
207
+ name_paperwork_crisis = "Paperwork Crisis"
208
+ if self._year == 1968:
209
+ self._populate_ranged_holidays(
210
+ close_2pm_label % "Back office work load", (JAN, 22), (MAR, 1)
211
+ )
212
+ elif self._year == 1969:
213
+ # THU.
214
+ self._populate_ranged_holidays(
215
+ close_2pm_label % name_paperwork_crisis, (JAN, 2), (JUL, 3), 7
216
+ )
217
+
218
+ # MON-FRI.
219
+ self._populate_ranged_holidays(
220
+ close_2_30pm_label % name_paperwork_crisis, (JUL, 7), (SEP, 26)
221
+ )
222
+
223
+ # MON-FRI.
224
+ self._populate_ranged_holidays(
225
+ close_3pm_label % name_paperwork_crisis, (SEP, 29), (DEC, 31)
226
+ )
227
+ elif self._year == 1970:
228
+ # MON-FRI.
229
+ self._populate_ranged_holidays(
230
+ close_3pm_label % name_paperwork_crisis, (JAN, 2), (MAY, 1)
231
+ )
232
+
233
+ # 1990-1992 early closings are covered by special holidays.
234
+ if self._year >= 1993:
235
+ # Day before Independence Day.
236
+ jul_4 = (JUL, 4)
237
+ if (
238
+ self._is_weekday(jul_4)
239
+ and not self._is_monday(jul_4)
240
+ and self._year not in {1996, 2002}
241
+ ):
242
+ self._add_holiday_jul_3(close_1pm_label % "Day before Independence Day")
243
+
244
+ # Day after Thanksgiving Day.
245
+ self._add_holiday_1_day_past_4th_thu_of_nov(
246
+ close_1pm_label % "Day after Thanksgiving Day"
247
+ )
248
+
249
+ # Christmas Eve.
250
+ if self._is_weekday(self._christmas_day) and not self._is_monday(self._christmas_day):
251
+ self._add_christmas_eve(close_1pm_label % "Christmas Eve")
140
252
 
141
253
 
142
254
  class XNYS(NewYorkStockExchange):
@@ -155,11 +267,35 @@ class NewYorkStockExchangeStaticHolidays:
155
267
  * <https://web.archive.org/web/20250208135423/https://www.presidency.ucsb.edu/documents/proclamation-3561-national-day-mourning-for-president-kennedy>
156
268
  """
157
269
 
270
+ # %s (markets close at 11:00am).
271
+ close_11am_label = "%s (markets close at 11:00am)"
272
+
273
+ # %s (markets close at 12:00pm).
274
+ close_12pm_label = "%s (markets close at 12:00pm)"
275
+
276
+ # %s (markets close at 12:30pm).
277
+ close_12_30pm_label = "%s (markets close at 12:30pm)"
278
+
279
+ # %s (markets close at 1:00pm).
280
+ close_1pm_label = "%s (markets close at 1:00pm)"
281
+
282
+ # %s (markets close at 2:00pm).
283
+ close_2pm_label = "%s (markets close at 2:00pm)"
284
+
285
+ # %s (markets close at 2:30pm).
286
+ close_2_30pm_label = "%s (markets close at 2:30pm)"
287
+
288
+ # %s (markets close at 3:00pm).
289
+ close_3pm_label = "%s (markets close at 3:00pm)"
290
+
291
+ # %s (markets close at 3:30pm).
292
+ close_3_30pm_label = "%s (markets close at 3:30pm)"
293
+
158
294
  # Blizzard of 1888.
159
- name_blizard_1888 = "Blizzard of 1888"
295
+ name_blizzard_of_1888 = "Blizzard of 1888"
160
296
 
161
297
  # Centennial of George Washington's Inauguration.
162
- name_george_washington_centennial = "Centennial of George Washington's Inauguration"
298
+ name_centennial_of_gw_inauguration = "Centennial of George Washington's Inauguration"
163
299
 
164
300
  # Columbian Celebration.
165
301
  name_columbian_celebration = "Columbian Celebration"
@@ -171,110 +307,354 @@ class NewYorkStockExchangeStaticHolidays:
171
307
  name_catch_up_day = "Catch Up Day"
172
308
 
173
309
  # Special Bank Holiday.
174
- name_special_bank_holiday = "Special Bank Holiday"
310
+ name_national_banking_holiday = "National Banking Holiday"
175
311
 
176
- # V-J Day (WWII).
177
- name_vj_day_wwii = "V-J Day (WWII)"
312
+ # V-J Day. End of World War II.
313
+ name_vj_day = "V-J Day. End of World War II"
178
314
 
179
315
  # Christmas Eve.
180
316
  name_christmas_eve = "Christmas Eve"
181
317
 
182
- # Closed for Sept 11, 2001 Attacks.
183
- name_sept11_attacks = "Closed for Sept 11, 2001 Attacks"
318
+ # Closed following Attacks on the World Trade Center.
319
+ name_closed_following_wtc_attacks = "Closed following Attacks on the World Trade Center"
184
320
 
185
321
  # Hurricane Sandy.
186
322
  name_hurricane_sandy = "Hurricane Sandy"
187
323
 
324
+ # Liberty Day.
325
+ name_liberty_day = "Liberty Day"
326
+
327
+ # Heavy volume. To allow member firm offices to catch up on work.
328
+ name_heavy_volume_catch_up = "Heavy volume. To allow member firm offices to catch up on work"
329
+
330
+ # Saturday after Washington's Birthday.
331
+ name_saturday_after_washingtons_birthday = "Saturday after Washington's Birthday"
332
+
333
+ # Saturday after Good Friday.
334
+ name_saturday_after_good_friday = "Saturday after Good Friday"
335
+
336
+ # Saturday before Decoration Day.
337
+ name_saturday_before_decoration_day = "Saturday before Decoration Day"
338
+
339
+ # Saturday after Decoration Day.
340
+ name_saturday_after_decoration_day = "Saturday after Decoration Day"
341
+
342
+ # Saturday before Independence Day.
343
+ name_saturday_before_independence_day = "Saturday before Independence Day"
344
+
345
+ # Saturday after Independence Day.
346
+ name_saturday_after_independence_day = "Saturday after Independence Day"
347
+
348
+ # Day after Independence Day.
349
+ name_day_after_independence_day = "Day after Independence Day"
350
+
351
+ # Saturday before Labor Day.
352
+ name_saturday_before_labor_day = "Saturday before Labor Day"
353
+
354
+ # Saturday after Columbus Day.
355
+ name_saturday_after_columbus_day = "Saturday after Columbus Day"
356
+
357
+ # Saturday before Christmas.
358
+ name_saturday_before_christmas_day = "Saturday before Christmas Day"
359
+
360
+ # Friday after Christmas Day.
361
+ name_friday_after_christmas = "Friday after Christmas Day"
362
+
363
+ # Saturday after Christmas Day.
364
+ name_saturday_after_christmas_day = "Saturday after Christmas Day"
365
+
366
+ # Admiral Dewey Celebration.
367
+ name_admiral_dewey_celebration = "Admiral Dewey Celebration"
368
+
369
+ # Draft Registration Day.
370
+ name_draft_registration_day = "Draft Registration Day"
371
+
372
+ # To allow offices to catch up on work.
373
+ name_to_catch_up = "To allow offices to catch up on work"
374
+
375
+ # Volume activity.
376
+ name_volume_activity = "Volume activity"
377
+
378
+ # Transit strike.
379
+ name_transit_strike = "Transit strike"
380
+
381
+ # Back office work load.
382
+ name_back_office_work_load = "Back office work load"
383
+
384
+ # Snowstorm.
385
+ name_snowstorm = "Snowstorm"
386
+
387
+ # Shortened hours following market break.
388
+ name_shortened_hours_following_market_break = "Shortened hours following market break"
389
+
188
390
  special_public_holidays = {
391
+ 1885: (AUG, 8, "Funeral of former President Ulysses S. Grant"),
392
+ 1887: (
393
+ (JUL, 2, name_saturday_before_independence_day),
394
+ (DEC, 24, name_saturday_before_christmas_day),
395
+ ),
189
396
  1888: (
190
- (MAR, 12, name_blizard_1888),
191
- (MAR, 13, name_blizard_1888),
192
- (NOV, 30, "Thanksgiving Friday 1888"),
397
+ (MAR, 12, name_blizzard_of_1888),
398
+ (MAR, 13, name_blizzard_of_1888),
399
+ (SEP, 1, name_saturday_before_labor_day),
400
+ (NOV, 30, "Friday after Thanksgiving Day"),
193
401
  ),
194
402
  1889: (
195
- (APR, 29, name_george_washington_centennial),
196
- (APR, 30, name_george_washington_centennial),
197
- (MAY, 1, name_george_washington_centennial),
403
+ (APR, 29, name_centennial_of_gw_inauguration),
404
+ (APR, 30, name_centennial_of_gw_inauguration),
405
+ (MAY, 1, name_centennial_of_gw_inauguration),
198
406
  ),
407
+ 1890: (JUL, 5, name_saturday_after_independence_day),
408
+ 1891: (DEC, 26, name_saturday_after_christmas_day),
199
409
  1892: (
410
+ (JUL, 2, name_saturday_before_independence_day),
200
411
  (OCT, 12, name_columbian_celebration),
201
412
  (OCT, 21, name_columbian_celebration),
413
+ (OCT, 22, name_columbian_celebration),
202
414
  ),
203
415
  1893: (APR, 27, name_columbian_celebration),
416
+ 1896: (DEC, 26, name_saturday_after_christmas_day),
204
417
  1897: (APR, 27, "Grant's Birthday"),
205
- 1898: (MAY, 4, "Charter Day"),
418
+ 1898: (
419
+ (MAY, 4, "Charter Day"),
420
+ (JUL, 2, name_saturday_before_independence_day),
421
+ (AUG, 20, "Welcome of naval commanders"),
422
+ (SEP, 3, name_saturday_before_labor_day),
423
+ (DEC, 24, name_saturday_before_christmas_day),
424
+ ),
206
425
  1899: (
426
+ (FEB, 11, "Saturday before Lincoln's Birthday"),
207
427
  (MAY, 29, "Monday before Decoration Day"),
208
428
  (JUL, 3, "Monday before Independence Day"),
209
- (SEP, 29, "Admiral Dewey Celebration"),
429
+ (SEP, 29, name_admiral_dewey_celebration),
430
+ (SEP, 30, name_admiral_dewey_celebration),
431
+ (NOV, 25, "Funeral of Vice-President Garret A. Hobart"),
432
+ ),
433
+ 1900: (
434
+ (APR, 14, name_saturday_after_good_friday),
435
+ (SEP, 1, name_saturday_before_labor_day),
436
+ (DEC, 24, name_saturday_before_christmas_day),
210
437
  ),
211
- 1900: (DEC, 24, name_christmas_eve),
212
438
  1901: (
439
+ (FEB, 2, "Funeral of Queen Victoria of England"),
440
+ (FEB, 23, name_saturday_after_washingtons_birthday),
441
+ (APR, 6, name_saturday_after_good_friday),
442
+ (APR, 27, "Moved to temporary quarters in Produce Exchange"),
443
+ (MAY, 11, "Enlarged temporary quarters in Produce Exchange"),
213
444
  (JUL, 5, "Friday after Independence Day"),
214
- (SEP, 19, "National Day of Mourning for President WIlliam McKinley"),
445
+ (JUL, 6, name_saturday_after_independence_day),
446
+ (AUG, 31, name_saturday_before_labor_day),
447
+ (SEP, 14, "Death of President William McKinley"),
448
+ (SEP, 19, "Funeral of President William McKinley"),
449
+ ),
450
+ 1902: (
451
+ (MAR, 29, name_saturday_after_good_friday),
452
+ (MAY, 31, name_saturday_after_decoration_day),
453
+ (JUL, 5, name_saturday_after_independence_day),
454
+ (AUG, 9, "Coronation of King Edward VII of England"),
455
+ (AUG, 30, name_saturday_before_labor_day),
456
+ ),
457
+ 1903: (
458
+ (FEB, 21, "Saturday before Washington's Birthday"),
459
+ (APR, 11, name_saturday_after_good_friday),
460
+ (APR, 22, "Opening of new NYSE building"),
461
+ (SEP, 5, name_saturday_before_labor_day),
462
+ (DEC, 26, name_saturday_after_christmas_day),
463
+ ),
464
+ 1904: (
465
+ (MAY, 28, name_saturday_before_decoration_day),
466
+ (JUL, 2, name_saturday_before_independence_day),
467
+ (SEP, 3, name_saturday_before_labor_day),
468
+ (DEC, 24, name_saturday_before_christmas_day),
469
+ ),
470
+ 1905: (APR, 22, name_saturday_after_good_friday),
471
+ 1907: (
472
+ (FEB, 23, name_saturday_after_washingtons_birthday),
473
+ (MAR, 30, name_saturday_after_good_friday),
474
+ (AUG, 31, name_saturday_before_labor_day),
475
+ ),
476
+ 1908: (
477
+ (APR, 18, name_saturday_after_good_friday),
478
+ (SEP, 5, name_saturday_before_labor_day),
479
+ (DEC, 26, name_saturday_after_christmas_day),
480
+ ),
481
+ 1909: (
482
+ (FEB, 13, "Saturday after Lincoln's Birthday"),
483
+ (APR, 10, name_saturday_after_good_friday),
484
+ (MAY, 29, name_saturday_before_decoration_day),
485
+ (JUL, 3, name_saturday_before_independence_day),
486
+ (SEP, 4, name_saturday_before_labor_day),
487
+ (SEP, 25, "Reception Day of the Hudson-Fulton Celebration"),
488
+ ),
489
+ 1910: (
490
+ (MAR, 26, name_saturday_after_good_friday),
491
+ (MAY, 28, name_saturday_before_decoration_day),
492
+ (JUL, 2, name_saturday_before_independence_day),
493
+ (SEP, 3, name_saturday_before_labor_day),
494
+ (DEC, 24, name_saturday_before_christmas_day),
495
+ ),
496
+ 1911: (
497
+ (APR, 15, name_saturday_after_good_friday),
498
+ (SEP, 2, name_saturday_before_labor_day),
499
+ (DEC, 23, name_saturday_before_christmas_day),
500
+ ),
501
+ 1912: (
502
+ (AUG, 31, name_saturday_before_labor_day),
503
+ (NOV, 2, "Funeral of Vice-President James S. Sherman"),
504
+ ),
505
+ 1913: (
506
+ (MAR, 22, name_saturday_after_good_friday),
507
+ (MAY, 31, name_saturday_after_decoration_day),
508
+ (JUL, 5, name_saturday_after_independence_day),
509
+ (AUG, 30, name_saturday_before_labor_day),
510
+ ),
511
+ 1916: (DEC, 30, "Saturday before New Year's Day"),
512
+ 1917: (
513
+ (JUN, 5, name_draft_registration_day),
514
+ (AUG, 4, "Heat"),
515
+ (SEP, 1, name_saturday_before_labor_day),
516
+ (OCT, 13, name_saturday_after_columbus_day),
215
517
  ),
216
- 1903: (APR, 22, "Opening of new NYSE building"),
217
- 1917: (JUN, 5, "Draft Registration Day"),
218
518
  1918: (
219
519
  (JAN, 28, name_heatless_day),
220
520
  (FEB, 4, name_heatless_day),
221
521
  (FEB, 11, name_heatless_day),
222
- (SEP, 12, "Draft Registration Day"),
223
- (NOV, 11, "Armistice Day"),
522
+ (SEP, 12, name_draft_registration_day),
523
+ (NOV, 11, "Armistice signed"),
224
524
  ),
225
525
  1919: (
226
- (MAR, 25, "Homecoming Day for 27th Division"),
227
- (MAY, 6, "Parade Day for 77th Division"),
228
- (SEP, 10, "Return of General Pershing"),
526
+ (MAR, 25, "Homecoming of 27th Division"),
527
+ (MAY, 6, "Parade of 77th Division"),
528
+ (MAY, 31, name_saturday_after_decoration_day),
529
+ (JUL, 5, name_saturday_after_independence_day),
530
+ (JUL, 19, "Heat and to allow offices to catch up on work"),
531
+ (AUG, 2, name_to_catch_up),
532
+ (AUG, 16, name_to_catch_up),
533
+ (AUG, 30, name_saturday_before_labor_day),
534
+ (SEP, 10, "Return of General John J. Pershing"),
535
+ ),
536
+ 1920: (
537
+ (APR, 3, name_saturday_after_good_friday),
538
+ (MAY, 1, "Many firms changed office locations"),
539
+ (JUL, 3, name_saturday_before_independence_day),
540
+ (SEP, 4, name_saturday_before_labor_day),
229
541
  ),
542
+ 1921: (
543
+ (MAY, 28, name_saturday_before_decoration_day),
544
+ (JUL, 2, name_saturday_before_independence_day),
545
+ (SEP, 3, name_saturday_before_labor_day),
546
+ (NOV, 11, "Veteran's Day"),
547
+ ),
548
+ 1922: (DEC, 23, name_saturday_before_christmas_day),
230
549
  1923: (
231
550
  (AUG, 3, "Death of President Warren G. Harding"),
232
- (AUG, 10, "National Day of Mourning for President Warren G. Harding"),
551
+ (AUG, 10, "Funeral of President Warren G. Harding"),
552
+ ),
553
+ 1924: (MAY, 31, name_saturday_after_decoration_day),
554
+ 1925: (DEC, 26, name_saturday_after_christmas_day),
555
+ 1926: (
556
+ (MAY, 29, name_saturday_before_decoration_day),
557
+ (JUL, 3, name_saturday_before_independence_day),
558
+ (SEP, 4, name_saturday_before_labor_day),
559
+ ),
560
+ 1927: (JUN, 13, "Parade for Colonel Charles A. Lindbergh"),
561
+ 1928: (
562
+ (APR, 7, name_heavy_volume_catch_up),
563
+ (APR, 21, name_heavy_volume_catch_up),
564
+ (MAY, 5, name_heavy_volume_catch_up),
565
+ (MAY, 12, name_heavy_volume_catch_up),
566
+ (MAY, 19, name_heavy_volume_catch_up),
567
+ (MAY, 26, name_heavy_volume_catch_up),
568
+ (NOV, 24, name_heavy_volume_catch_up),
233
569
  ),
234
- 1927: (JUN, 13, "Parade for Colonel Charles Lindbergh"),
235
570
  1929: (
571
+ (FEB, 9, name_heavy_volume_catch_up),
572
+ (FEB, 23, name_saturday_after_washingtons_birthday),
573
+ (MAR, 30, name_saturday_after_good_friday),
574
+ (AUG, 31, name_saturday_before_labor_day),
236
575
  (NOV, 1, name_catch_up_day),
576
+ (NOV, 2, name_catch_up_day),
577
+ (NOV, 9, name_catch_up_day),
578
+ (NOV, 16, name_catch_up_day),
579
+ (NOV, 23, name_catch_up_day),
237
580
  (NOV, 29, name_catch_up_day),
581
+ (NOV, 30, name_catch_up_day),
582
+ ),
583
+ 1930: (
584
+ (APR, 19, name_saturday_after_good_friday),
585
+ (MAY, 31, name_saturday_after_decoration_day),
586
+ (JUL, 5, name_saturday_after_independence_day),
587
+ (AUG, 30, name_saturday_before_labor_day),
588
+ ),
589
+ 1931: (
590
+ (SEP, 5, name_saturday_before_labor_day),
591
+ (DEC, 26, name_saturday_after_christmas_day),
238
592
  ),
593
+ 1932: (JUL, 2, name_saturday_before_independence_day),
239
594
  1933: (
240
- (MAR, 6, name_special_bank_holiday),
241
- (MAR, 7, name_special_bank_holiday),
242
- (MAR, 8, name_special_bank_holiday),
243
- (MAR, 9, name_special_bank_holiday),
244
- (MAR, 10, name_special_bank_holiday),
245
- (MAR, 13, name_special_bank_holiday),
246
- (MAR, 14, name_special_bank_holiday),
595
+ (JAN, 7, "Funeral of former President Calvin Coolidge"),
596
+ (MAR, 4, "State Banking Holiday"),
597
+ (MAR, 6, name_national_banking_holiday),
598
+ (MAR, 7, name_national_banking_holiday),
599
+ (MAR, 8, name_national_banking_holiday),
600
+ (MAR, 9, name_national_banking_holiday),
601
+ (MAR, 10, name_national_banking_holiday),
602
+ (MAR, 11, name_national_banking_holiday),
603
+ (MAR, 13, name_national_banking_holiday),
604
+ (MAR, 14, name_national_banking_holiday),
605
+ (JUL, 28, name_volume_activity),
606
+ (AUG, 5, name_volume_activity),
607
+ (AUG, 12, name_volume_activity),
608
+ (AUG, 19, name_volume_activity),
609
+ (AUG, 26, name_volume_activity),
610
+ (SEP, 2, name_volume_activity),
611
+ ),
612
+ 1936: (DEC, 26, name_saturday_after_christmas_day),
613
+ 1937: (
614
+ (MAY, 29, name_saturday_before_decoration_day),
615
+ (JUL, 3, name_saturday_before_independence_day),
247
616
  ),
248
617
  1945: (
249
- (AUG, 15, name_vj_day_wwii),
250
- (AUG, 16, name_vj_day_wwii),
618
+ (APR, 14, "National Day of Mourning for President Franklin D. Roosevelt"),
619
+ (AUG, 15, name_vj_day),
620
+ (AUG, 16, name_vj_day),
621
+ (OCT, 13, name_saturday_after_columbus_day),
622
+ (OCT, 27, "Navy Day"),
251
623
  (DEC, 24, name_christmas_eve),
252
624
  ),
625
+ 1946: (
626
+ (FEB, 23, name_saturday_after_washingtons_birthday),
627
+ (MAY, 25, "Railroad strike"),
628
+ ),
629
+ 1948: (JAN, 3, "Severe weather conditions"),
630
+ 1949: (DEC, 24, name_christmas_eve),
631
+ 1950: (DEC, 23, "Saturday before Christmas Eve"),
253
632
  1954: (DEC, 24, name_christmas_eve),
254
633
  1956: (DEC, 24, name_christmas_eve),
255
634
  1958: (DEC, 26, "Day after Christmas"),
256
635
  1961: (MAY, 29, "Day before Decoration Day"),
257
- 1963: (NOV, 25, "National Day of Mourning for President John F. Kennedy"),
636
+ 1963: (NOV, 25, "Funeral of President John F. Kennedy"),
258
637
  1965: (DEC, 24, name_christmas_eve),
259
638
  1968: (
260
- (APR, 9, "National Day of Mourning for Martin Luther King Jr."),
261
- (JUL, 5, "Day after Independence Day"),
639
+ (FEB, 12, "Lincoln's Birthday"),
640
+ (APR, 9, "National Day of Mourning for Martin Luther King, Jr."),
641
+ (JUL, 5, name_day_after_independence_day),
262
642
  ),
263
643
  1969: (
264
644
  (FEB, 10, "Heavy Snow"),
265
- (MAR, 31, "National Day of Mourning for former President Dwight D. Eisenhower"),
266
- (JUL, 21, "National Participation in Lunar Exploration"),
645
+ (MAR, 31, "Funeral of former President Dwight D. Eisenhower"),
646
+ (JUL, 21, "National Day of Participation for the Lunar Exploration"),
267
647
  ),
268
- 1972: (DEC, 28, "National Day of Mourning for former President Harry S. Truman"),
269
- 1973: (JAN, 25, "National Day of Mourning for former President Lyndon B. Johnson"),
648
+ 1972: (DEC, 28, "Funeral of former President Harry S. Truman"),
649
+ 1973: (JAN, 25, "Funeral of former President Lyndon B. Johnson"),
270
650
  1977: (JUL, 14, "Blackout in New York City"),
271
651
  1985: (SEP, 27, "Hurricane Gloria"),
272
- 1994: (APR, 27, "National Day of Mourning for former President Richard M. Nixon"),
652
+ 1994: (APR, 27, "Funeral of former President Richard M. Nixon"),
273
653
  2001: (
274
- (SEP, 11, name_sept11_attacks),
275
- (SEP, 12, name_sept11_attacks),
276
- (SEP, 13, name_sept11_attacks),
277
- (SEP, 14, name_sept11_attacks),
654
+ (SEP, 11, name_closed_following_wtc_attacks),
655
+ (SEP, 12, name_closed_following_wtc_attacks),
656
+ (SEP, 13, name_closed_following_wtc_attacks),
657
+ (SEP, 14, name_closed_following_wtc_attacks),
278
658
  ),
279
659
  2004: (JUN, 11, "National Day of Mourning for former President Ronald Reagan"),
280
660
  2007: (JAN, 2, "National Day of Mourning for former President Gerald R. Ford"),
@@ -285,3 +665,125 @@ class NewYorkStockExchangeStaticHolidays:
285
665
  2018: (DEC, 5, "National Day of Mourning for former President George H. W. Bush"),
286
666
  2025: (JAN, 9, "National Day of Mourning for former President Jimmy Carter"),
287
667
  }
668
+
669
+ # Late opens and partial suspensions of work during the day are not implemented, such as:
670
+ # * May 20, 1910 (Fri) - Closed from 10:00am to 12:00pm. Funeral of King Edward VII.
671
+ # * Apr. 14, 1913 (Mon) - Closed from 10:00am to 12:00pm. Funeral of J. P. Morgan.
672
+ # * Sept. 22, 1913 (Mon) - Closed from 10:00am to 12:00pm. Funeral of
673
+ # Mayor William J. Gaynor.
674
+ # * July 11, 1918 (Thu) - Closed from 11:00am to 12:00pm. Funeral of former Mayor
675
+ # John Purroy Mitchell.
676
+ # * Aug. 8, 1923 (Wed) - Closed from 11:00am to 12:30pm during funeral services for President
677
+ # Warren G. Harding in Washington, DC.
678
+ # * Jan. 28, 1936 (Tue) - Closed from 10:00 to 11:00am. Funeral of King George V of England.
679
+ # * May 18, 1942 (Mon) - Closed from 12:00pm to 1:00pm. NYSE 150th anniversary.
680
+ # * June 19, 1945 (Tue) - Closed from 11:00am to 1:00pm. Parade for General Eisenhower.
681
+ # * Apr. 20, 1951 (Fri) - Closed from 11:00am to 1:00pm. Parade for General MacArthur.
682
+
683
+ special_half_day_holidays = {
684
+ 1908: (JUN, 26, close_1pm_label % "Funeral of former President Grover Cleveland"),
685
+ 1910: (MAY, 7, close_11am_label % "Death of King Edward VII of England"),
686
+ 1917: (
687
+ (AUG, 29, close_12pm_label % "Parade of National Guard"),
688
+ (OCT, 24, close_12pm_label % name_liberty_day),
689
+ ),
690
+ 1918: (
691
+ (APR, 26, close_12pm_label % name_liberty_day),
692
+ (NOV, 7, close_2_30pm_label % "False armistice report"),
693
+ ),
694
+ 1919: (JAN, 7, close_12_30pm_label % "Funeral of former President Theodore Roosevelt"),
695
+ 1920: (SEP, 16, close_12pm_label % "Wall Street explosion"),
696
+ 1924: (FEB, 6, close_12_30pm_label % "Funeral of former President Woodrow Wilson"),
697
+ 1925: (
698
+ SEP,
699
+ 18,
700
+ close_2_30pm_label % "Funeral of former NYSE president Seymour L. Cromwell",
701
+ ),
702
+ 1928: (
703
+ (MAY, 21, close_2pm_label % name_heavy_volume_catch_up),
704
+ (MAY, 22, close_2pm_label % name_heavy_volume_catch_up),
705
+ (MAY, 23, close_2pm_label % name_heavy_volume_catch_up),
706
+ (MAY, 24, close_2pm_label % name_heavy_volume_catch_up),
707
+ (MAY, 25, close_2pm_label % name_heavy_volume_catch_up),
708
+ ),
709
+ 1929: (
710
+ (NOV, 6, close_1pm_label % name_catch_up_day),
711
+ (NOV, 7, close_1pm_label % name_catch_up_day),
712
+ (NOV, 8, close_1pm_label % name_catch_up_day),
713
+ (NOV, 11, close_1pm_label % name_catch_up_day),
714
+ (NOV, 12, close_1pm_label % name_catch_up_day),
715
+ (NOV, 13, close_1pm_label % name_catch_up_day),
716
+ (NOV, 14, close_1pm_label % name_catch_up_day),
717
+ (NOV, 15, close_1pm_label % name_catch_up_day),
718
+ (NOV, 18, close_1pm_label % name_catch_up_day),
719
+ (NOV, 19, close_1pm_label % name_catch_up_day),
720
+ (NOV, 20, close_1pm_label % name_catch_up_day),
721
+ (NOV, 21, close_1pm_label % name_catch_up_day),
722
+ (NOV, 22, close_1pm_label % name_catch_up_day),
723
+ ),
724
+ 1930: (MAR, 11, close_12_30pm_label % "Funeral of former President William Howard Taft"),
725
+ 1933: (SEP, 13, close_12pm_label % "NRA demonstration"),
726
+ 1951: (DEC, 24, close_1pm_label % name_christmas_eve),
727
+ 1963: (NOV, 22, "Assassination of President John F. Kennedy (markets close at 2:07pm)"),
728
+ 1964: (OCT, 23, close_2pm_label % "Funeral of former President Herbert C. Hoover"),
729
+ 1966: (
730
+ (JAN, 6, close_2pm_label % name_transit_strike),
731
+ (JAN, 7, close_2pm_label % name_transit_strike),
732
+ (JAN, 10, close_2pm_label % name_transit_strike),
733
+ (JAN, 11, close_2pm_label % name_transit_strike),
734
+ (JAN, 12, close_2pm_label % name_transit_strike),
735
+ (JAN, 13, close_2pm_label % name_transit_strike),
736
+ (JAN, 14, close_2pm_label % name_transit_strike),
737
+ ),
738
+ 1967: (
739
+ (AUG, 8, close_2pm_label % name_back_office_work_load),
740
+ (AUG, 9, close_2pm_label % name_back_office_work_load),
741
+ (AUG, 10, close_2pm_label % name_back_office_work_load),
742
+ (AUG, 11, close_2pm_label % name_back_office_work_load),
743
+ (AUG, 14, close_2pm_label % name_back_office_work_load),
744
+ (AUG, 15, close_2pm_label % name_back_office_work_load),
745
+ (AUG, 16, close_2pm_label % name_back_office_work_load),
746
+ (AUG, 17, close_2pm_label % name_back_office_work_load),
747
+ (AUG, 18, close_2pm_label % name_back_office_work_load),
748
+ ),
749
+ 1974: (DEC, 24, close_2pm_label % name_christmas_eve),
750
+ 1975: (
751
+ (FEB, 12, close_2_30pm_label % name_snowstorm),
752
+ (DEC, 24, close_2pm_label % name_christmas_eve),
753
+ ),
754
+ 1976: (AUG, 9, close_3pm_label % "Hurricane watch"),
755
+ 1978: (FEB, 6, close_2pm_label % name_snowstorm),
756
+ 1981: (
757
+ (MAR, 30, "Assassination attempt on President Reagan (markets close at 3:17pm)"),
758
+ (SEP, 9, "Con Edison power failure in lower Manhattan (markets close at 3:28pm)"),
759
+ ),
760
+ 1987: (
761
+ (OCT, 23, close_2pm_label % name_shortened_hours_following_market_break),
762
+ (OCT, 26, close_2pm_label % name_shortened_hours_following_market_break),
763
+ (OCT, 27, close_2pm_label % name_shortened_hours_following_market_break),
764
+ (OCT, 28, close_2pm_label % name_shortened_hours_following_market_break),
765
+ (OCT, 29, close_2pm_label % name_shortened_hours_following_market_break),
766
+ (OCT, 30, close_2pm_label % name_shortened_hours_following_market_break),
767
+ (NOV, 2, close_2_30pm_label % name_shortened_hours_following_market_break),
768
+ (NOV, 3, close_2_30pm_label % name_shortened_hours_following_market_break),
769
+ (NOV, 4, close_2_30pm_label % name_shortened_hours_following_market_break),
770
+ (NOV, 5, close_3pm_label % name_shortened_hours_following_market_break),
771
+ (NOV, 6, close_3pm_label % name_shortened_hours_following_market_break),
772
+ (NOV, 9, close_3_30pm_label % name_shortened_hours_following_market_break),
773
+ (NOV, 10, close_3_30pm_label % name_shortened_hours_following_market_break),
774
+ (NOV, 11, close_3_30pm_label % name_shortened_hours_following_market_break),
775
+ ),
776
+ 1990: (DEC, 24, close_2pm_label % name_christmas_eve),
777
+ 1991: (DEC, 24, close_2pm_label % name_christmas_eve),
778
+ 1992: (
779
+ (NOV, 27, close_2pm_label % "Day after Thanksgiving Day"),
780
+ (DEC, 24, close_2pm_label % name_christmas_eve),
781
+ ),
782
+ 1994: (FEB, 11, close_2_30pm_label % name_snowstorm),
783
+ 1996: (JUL, 5, close_1pm_label % name_day_after_independence_day),
784
+ 1997: (DEC, 26, close_1pm_label % name_friday_after_christmas),
785
+ 1999: (DEC, 31, close_1pm_label % "New Year's Eve"),
786
+ 2002: (JUL, 5, close_1pm_label % name_day_after_independence_day),
787
+ 2003: (DEC, 26, close_1pm_label % name_friday_after_christmas),
788
+ 2013: (JUL, 3, close_1pm_label % "Day before Independence Day"),
789
+ }