holidays 0.86__py3-none-any.whl → 0.88__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 (69) hide show
  1. holidays/calendars/chinese.py +44 -6
  2. holidays/calendars/hindu.py +85 -1
  3. holidays/constants.py +1 -0
  4. holidays/countries/american_samoa.py +2 -0
  5. holidays/countries/bangladesh.py +13 -9
  6. holidays/countries/belarus.py +4 -2
  7. holidays/countries/brazil.py +27 -1
  8. holidays/countries/chile.py +2 -3
  9. holidays/countries/germany.py +75 -74
  10. holidays/countries/guam.py +2 -0
  11. holidays/countries/india.py +5 -3
  12. holidays/countries/macau.py +39 -45
  13. holidays/countries/malaysia.py +171 -71
  14. holidays/countries/new_zealand.py +4 -3
  15. holidays/countries/northern_mariana_islands.py +2 -0
  16. holidays/countries/puerto_rico.py +4 -2
  17. holidays/countries/sweden.py +35 -11
  18. holidays/countries/taiwan.py +6 -5
  19. holidays/countries/turks_and_caicos_islands.py +13 -3
  20. holidays/countries/united_states.py +434 -133
  21. holidays/countries/united_states_minor_outlying_islands.py +2 -0
  22. holidays/countries/united_states_virgin_islands.py +2 -0
  23. holidays/countries/uzbekistan.py +12 -1
  24. holidays/countries/venezuela.py +113 -23
  25. holidays/financial/__init__.py +1 -0
  26. holidays/financial/bombay_stock_exchange.py +33 -0
  27. holidays/financial/national_stock_exchange_of_india.py +1 -1
  28. holidays/financial/ny_stock_exchange.py +591 -89
  29. holidays/groups/chinese.py +11 -18
  30. holidays/groups/hindu.py +24 -0
  31. holidays/holiday_base.py +2 -1
  32. holidays/locale/bn/LC_MESSAGES/BD.mo +0 -0
  33. holidays/locale/de/LC_MESSAGES/DE.mo +0 -0
  34. holidays/locale/en_IN/LC_MESSAGES/XBOM.mo +0 -0
  35. holidays/locale/en_TC/LC_MESSAGES/TC.mo +0 -0
  36. holidays/locale/en_US/LC_MESSAGES/BD.mo +0 -0
  37. holidays/locale/en_US/LC_MESSAGES/BR.mo +0 -0
  38. holidays/locale/en_US/LC_MESSAGES/DE.mo +0 -0
  39. holidays/locale/en_US/LC_MESSAGES/MY.mo +0 -0
  40. holidays/locale/en_US/LC_MESSAGES/SE.mo +0 -0
  41. holidays/locale/en_US/LC_MESSAGES/TC.mo +0 -0
  42. holidays/locale/en_US/LC_MESSAGES/US.mo +0 -0
  43. holidays/locale/en_US/LC_MESSAGES/VE.mo +0 -0
  44. holidays/locale/en_US/LC_MESSAGES/XBOM.mo +0 -0
  45. holidays/locale/es/LC_MESSAGES/VE.mo +0 -0
  46. holidays/locale/gu/LC_MESSAGES/IN.mo +0 -0
  47. holidays/locale/gu/LC_MESSAGES/XBOM.mo +0 -0
  48. holidays/locale/gu/LC_MESSAGES/XNSE.mo +0 -0
  49. holidays/locale/hi/LC_MESSAGES/XBOM.mo +0 -0
  50. holidays/locale/ms_MY/LC_MESSAGES/MY.mo +0 -0
  51. holidays/locale/pt_BR/LC_MESSAGES/BR.mo +0 -0
  52. holidays/locale/sv/LC_MESSAGES/SE.mo +0 -0
  53. holidays/locale/th/LC_MESSAGES/DE.mo +0 -0
  54. holidays/locale/th/LC_MESSAGES/MY.mo +0 -0
  55. holidays/locale/th/LC_MESSAGES/SE.mo +0 -0
  56. holidays/locale/th/LC_MESSAGES/US.mo +0 -0
  57. holidays/locale/uk/LC_MESSAGES/BR.mo +0 -0
  58. holidays/locale/uk/LC_MESSAGES/DE.mo +0 -0
  59. holidays/locale/uk/LC_MESSAGES/SE.mo +0 -0
  60. holidays/locale/uk/LC_MESSAGES/VE.mo +0 -0
  61. holidays/registry.py +1 -0
  62. holidays/utils.py +62 -1
  63. holidays/version.py +3 -1
  64. {holidays-0.86.dist-info → holidays-0.88.dist-info}/METADATA +30 -16
  65. {holidays-0.86.dist-info → holidays-0.88.dist-info}/RECORD +69 -60
  66. {holidays-0.86.dist-info → holidays-0.88.dist-info}/licenses/CONTRIBUTORS +6 -0
  67. {holidays-0.86.dist-info → holidays-0.88.dist-info}/WHEEL +0 -0
  68. {holidays-0.86.dist-info → holidays-0.88.dist-info}/licenses/LICENSE +0 -0
  69. {holidays-0.86.dist-info → holidays-0.88.dist-info}/top_level.txt +0 -0
@@ -13,10 +13,12 @@
13
13
  from gettext import gettext as tr
14
14
 
15
15
  from holidays.calendars.gregorian import (
16
+ JAN,
16
17
  FEB,
17
18
  MAR,
18
19
  APR,
19
20
  MAY,
21
+ JUN,
20
22
  SEP,
21
23
  NOV,
22
24
  DEC,
@@ -28,8 +30,13 @@ from holidays.calendars.gregorian import (
28
30
  SAT,
29
31
  SUN,
30
32
  )
31
- from holidays.constants import GOVERNMENT, PUBLIC, UNOFFICIAL
32
- from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
33
+ from holidays.constants import GOVERNMENT, HALF_DAY, PUBLIC, UNOFFICIAL
34
+ from holidays.groups import (
35
+ ChristianHolidays,
36
+ HinduCalendarHolidays,
37
+ InternationalHolidays,
38
+ StaticHolidays,
39
+ )
33
40
  from holidays.observed_holiday_base import (
34
41
  ObservedHolidayBase,
35
42
  ObservedRule,
@@ -46,7 +53,13 @@ GA_IN_WASHINGTON_BIRTHDAY = ObservedRule(
46
53
  )
47
54
 
48
55
 
49
- class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
56
+ class UnitedStates(
57
+ ObservedHolidayBase,
58
+ ChristianHolidays,
59
+ HinduCalendarHolidays,
60
+ InternationalHolidays,
61
+ StaticHolidays,
62
+ ):
50
63
  """United States of America (the) holidays.
51
64
 
52
65
  References:
@@ -61,6 +74,7 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
61
74
  * [B-112525 February 27th, 1953 32 COMP. GEN. 378](https://web.archive.org/web/20201001081239/https://www.gao.gov/products/b-112525#mt=e-report)
62
75
  * [Public Law 89-554](https://web.archive.org/web/20250512204449/https://www.govinfo.gov/content/pkg/STATUTE-80/pdf/STATUTE-80-Pg378.pdf)
63
76
  * [E.O. 11582 of February 11th, 1971](https://web.archive.org/web/20250326234305/https://www.archives.gov/federal-register/codification/executive-order/11582.html)
77
+ * [CA Diwali state holiday (AB 268, 2025-2026)](https://web.archive.org/web/20251223175415if_/https://leginfo.legislature.ca.gov/faces/billNavClient.xhtml?bill_id=202520260AB268)
64
78
  * Washington's Birthday:
65
79
  * [AK](https://web.archive.org/web/20250306070343/https://doa.alaska.gov/calendar/)
66
80
  * [AL](https://web.archive.org/web/20250125202410/https://admincode.legislature.state.al.us/administrative-code/670-X-12-.01)
@@ -103,14 +117,45 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
103
117
  * Northern Mariana Islands (subdivision MP):
104
118
  * <https://web.archive.org/web/20240727045236/https://governor.gov.mp/archived-news/executive-actions-archive/memorandum-2022-legal-holidays/>
105
119
  * <https://web.archive.org/web/20250429140158/https://governor.gov.mp/archived-news/executive-actions-archive/memorandum-2022-legal-holidays/>
120
+ * Alaska:
121
+ * [Proclamation 3269 - Admission of the State of Alaska Into the Union](https://web.archive.org/web/20250613173049/https://www.presidency.ucsb.edu/documents/proclamation-3269-admission-the-state-alaska-into-the-union)
122
+ * [Alaska Statutes, Sec. 44.12.010](https://web.archive.org/web/20251014215648/https://www.akleg.gov/basis/statutes.asp#44.12.010)
123
+ * [Alaska Day](https://web.archive.org/web/20120502232826/http://www.alaskadispatch.com/article/happy-alaska-day-great-land)
124
+ * [Chapter 109, Session Laws of Alaska (1989)](https://web.archive.org/web/20251228151503/https://www.akleg.gov/basis/folioproxy.asp?url=http://wwwjnu03.akleg.org/cgi-bin/folioisa.dll/slpr/query=*/doc/%7B@1158%7D?next)
106
125
  * American Samoa:
107
126
  * <https://web.archive.org/web/20240808163628/https://asbar.org/code-annotated/1-0501-public-holidays/>
127
+ * Puerto Rico:
128
+ * [1902 Political Code of Puerto Rico](https://web.archive.org/web/20251019021053/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/C%C3%B3digos/0-1902/0-1902.pdf)
129
+ * [Joint Resolution No. 31 of Aug 18, 1913](https://web.archive.org/web/20240923174029/https://bvirtualogp.pr.gov/ogp/Bvirtual/resolucionesConjuntas/PDF/0031-1913.pdf)
130
+ * [Law No. 47 of Dec 1, 1917](https://web.archive.org/web/20240531113045/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0047-1917.pdf)
131
+ * [Law No. 3 of Apr 9, 1925](https://web.archive.org/web/20240531113358/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0003-1925.pdf)
132
+ * [Law No. 3 of Mar 27, 1931](https://web.archive.org/web/20250625060601/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/3-1931.pdf)
133
+ * [Law No. 91 of May 6, 1938](https://web.archive.org/web/20250807060751/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/91-1938.pdf)
134
+ * [Law No. 97 of May 6, 1938](https://web.archive.org/web/20251213203244/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0099-1938.pdf)
135
+ * [Law No. 3 of Mar 15, 1939](https://web.archive.org/web/20240531113040/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0003-1939.pdf)
136
+ * [Law No. 1 of Aug 1, 1952](https://web.archive.org/web/20250430200856/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/3-duplicados/1-1952.pdf)
137
+ * [Law No. 88 of Jun 27, 1969](https://web.archive.org/web/20250605105341/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/88-1969.pdf)
138
+ * [Law No. 260 of Jul 30, 1974](https://web.archive.org/web/20251214005218/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0259-1974.pdf)
139
+ * [Law No. 129 of Jun 13, 1980](https://web.archive.org/web/20251213230716/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0129-1980.pdf)
140
+ * [Law No. 121 of Dec 24, 1991](https://web.archive.org/web/20251213230111/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0121-1991.pdf)
141
+ * [Law No. 39 of Jul 11, 1994](https://web.archive.org/web/20221222034721/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0039-1994.pdf)
142
+ * [Law No. 76 of Jul 6, 1995](https://web.archive.org/web/20250605110906/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/76-1995.pdf)
143
+ * [Law No. 305 of Dec 25, 2002](https://web.archive.org/web/20250625061048/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/305-2002.pdf)
144
+ * [Law No. 182 of Dec 1, 2010](https://web.archive.org/web/20221221221227/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0182-2010.pdf)
145
+ * [Law No. 111 of Jul 29, 2014](https://web.archive.org/web/20250219021118/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0111-2014.pdf)
146
+ * [Law No. 40 of Mar 25, 2015](https://web.archive.org/web/20221221221216/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2/0040-2015.pdf)
147
+ * [Law No. 152 of Jul 23, 2018](https://web.archive.org/web/20250204220144/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2018/0152-2018.pdf)
148
+ * [Law No. 117 of Dec 23, 2022](https://web.archive.org/web/20250204215251/https://bvirtualogp.pr.gov/ogp/Bvirtual/leyesreferencia/PDF/2020/0117-2022.pdf)
108
149
  """
109
150
 
110
151
  country = "US"
111
152
  default_language = "en_US"
112
153
  # %s (observed).
113
154
  observed_label = tr("%s (observed)")
155
+ # %s (estimated).
156
+ estimated_label = tr("%s (estimated)")
157
+ # %s (observed, estimated).
158
+ observed_estimated_label = tr("%s (observed, estimated)")
114
159
  supported_languages = ("en_US", "th")
115
160
  # Independence Declared on July 4th, 1776.
116
161
  start_year = 1777
@@ -232,7 +277,7 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
232
277
  "West Virginia": "WV",
233
278
  "Wyoming": "WY",
234
279
  }
235
- supported_categories = (GOVERNMENT, PUBLIC, UNOFFICIAL)
280
+ supported_categories: tuple[str, ...] = (GOVERNMENT, HALF_DAY, PUBLIC, UNOFFICIAL)
236
281
  _deprecated_subdivisions = (
237
282
  "FM",
238
283
  "MH",
@@ -241,6 +286,7 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
241
286
 
242
287
  def __init__(self, *args, **kwargs):
243
288
  ChristianHolidays.__init__(self)
289
+ HinduCalendarHolidays.__init__(self)
244
290
  InternationalHolidays.__init__(self)
245
291
  StaticHolidays.__init__(self, cls=UnitedStatesStaticHolidays)
246
292
  kwargs.setdefault("observed_rule", SAT_TO_PREV_FRI + SUN_TO_NEXT_MON)
@@ -296,6 +342,19 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
296
342
  if self._year >= 1954:
297
343
  self._add_observed(dt)
298
344
 
345
+ if self._year >= 1938:
346
+ name = (
347
+ # Veterans Day.
348
+ tr("Veterans Day")
349
+ if self._year >= 1954
350
+ # Armistice Day.
351
+ else tr("Armistice Day")
352
+ )
353
+ if 1971 <= self._year <= 1977:
354
+ self._add_holiday_4th_mon_of_oct(name)
355
+ else:
356
+ self._add_observed(self._add_remembrance_day(name))
357
+
299
358
  if self._year >= 1971:
300
359
  # Memorial Day.
301
360
  self._add_holiday_last_mon_of_may(tr("Memorial Day"))
@@ -318,19 +377,6 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
318
377
  # Columbus Day.
319
378
  self._add_holiday_2nd_mon_of_oct(tr("Columbus Day"))
320
379
 
321
- if self._year >= 1938:
322
- name = (
323
- # Veterans Day.
324
- tr("Veterans Day")
325
- if self._year >= 1954
326
- # Armistice Day.
327
- else tr("Armistice Day")
328
- )
329
- if 1971 <= self._year <= 1977:
330
- self._add_holiday_4th_mon_of_oct(name)
331
- else:
332
- self._add_observed(self._add_remembrance_day(name))
333
-
334
380
  # Thanksgiving Day.
335
381
  # Began to be declared annually in 1862 by Abraham Lincoln.
336
382
  # First declared as last THU of NOV in 1863.
@@ -379,99 +425,133 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
379
425
  )
380
426
 
381
427
  def _populate_subdiv_holidays(self):
382
- if PUBLIC not in self.categories:
383
- return None
384
-
385
- if self._year >= 1986 and self.subdiv not in {"AL", "AR", "AZ", "GA", "ID", "MS", "NH"}:
386
- # Martin Luther King Jr. Day.
387
- self._add_holiday_3rd_mon_of_jan(tr("Martin Luther King Jr. Day"))
388
-
389
- if self._year >= 1879 and self.subdiv not in {
390
- "AK",
391
- "AL",
392
- "AR",
393
- "AZ",
394
- "CA",
395
- "CO",
396
- "DE",
397
- "FL",
398
- "GA",
399
- "HI",
400
- "ID",
401
- "IN",
402
- "MD",
403
- "MN",
404
- "MT",
405
- "NJ",
406
- "NM",
407
- "OH",
408
- "OK",
409
- "OR",
410
- "PA",
411
- "PR",
412
- "SC",
413
- "TN",
414
- "TX",
415
- "UT",
416
- "VA",
417
- "VI",
418
- "VT",
419
- "WA",
420
- "WV",
421
- "WY",
422
- }:
423
- # Washington's Birthday.
424
- name = tr("Washington's Birthday")
425
- if self._year >= 1971:
426
- self._add_holiday_3rd_mon_of_feb(name)
427
- else:
428
- self._add_holiday_feb_22(name)
429
-
430
- if self._year >= 1937 and (
431
- self.subdiv is None
432
- or self.subdiv
433
- in {
434
- "AS",
428
+ if PUBLIC in self.categories:
429
+ if self._year >= 1986 and self.subdiv not in {
430
+ "AK",
431
+ "AL",
432
+ "AR",
435
433
  "AZ",
436
- "CT",
437
434
  "GA",
438
435
  "ID",
439
- "IL",
436
+ "MS",
437
+ "NH",
438
+ }:
439
+ # Martin Luther King Jr. Day.
440
+ self._add_holiday_3rd_mon_of_jan(tr("Martin Luther King Jr. Day"))
441
+
442
+ if self._year >= 1879 and self.subdiv not in {
443
+ "AK",
444
+ "AL",
445
+ "AR",
446
+ "DE",
447
+ "FL",
448
+ "GA",
440
449
  "IN",
441
- "MA",
442
- "MD",
443
- "MO",
444
- "MT",
445
- "NJ",
446
- "NY",
447
- "OH",
448
- "PA",
449
- "UT",
450
- "WV",
451
- }
452
- ):
453
- # Columbus Day.
454
- name = tr("Columbus Day")
455
- if self._year >= 1971:
456
- self._add_holiday_2nd_mon_of_oct(name)
457
- else:
458
- self._add_columbus_day(name)
450
+ "NM",
451
+ "PR",
452
+ "VI",
453
+ }:
454
+ # Washington's Birthday.
455
+ name = tr("Washington's Birthday")
456
+ if self._year >= 1971:
457
+ if self.subdiv not in {
458
+ "AZ",
459
+ "CA",
460
+ "CO",
461
+ "HI",
462
+ "ID",
463
+ "MD",
464
+ "MN",
465
+ "MT",
466
+ "NJ",
467
+ "OH",
468
+ "OK",
469
+ "OR",
470
+ "PA",
471
+ "SC",
472
+ "TN",
473
+ "TX",
474
+ "UT",
475
+ "VA",
476
+ "VT",
477
+ "WA",
478
+ "WV",
479
+ "WY",
480
+ }:
481
+ self._add_holiday_3rd_mon_of_feb(name)
482
+ else:
483
+ self._add_holiday_feb_22(name)
484
+
485
+ if self._year >= 1937 and (
486
+ self.subdiv is None
487
+ or self.subdiv
488
+ in {
489
+ "AS",
490
+ "AZ",
491
+ "CT",
492
+ "GA",
493
+ "ID",
494
+ "IL",
495
+ "IN",
496
+ "MA",
497
+ "MD",
498
+ "MO",
499
+ "MT",
500
+ "NJ",
501
+ "NY",
502
+ "OH",
503
+ "PA",
504
+ "UT",
505
+ "WV",
506
+ }
507
+ ):
508
+ # Columbus Day.
509
+ name = tr("Columbus Day")
510
+ if self._year >= 1971:
511
+ self._add_holiday_2nd_mon_of_oct(name)
512
+ else:
513
+ self._add_columbus_day(name)
514
+
515
+ if self._year >= 1938 and self.subdiv != "PR":
516
+ name = (
517
+ # Veterans Day.
518
+ tr("Veterans Day")
519
+ if self._year >= 1954
520
+ # Armistice Day.
521
+ else tr("Armistice Day")
522
+ )
523
+ if 1971 <= self._year <= 1977:
524
+ self._add_holiday_4th_mon_of_oct(name)
525
+ else:
526
+ self._add_observed(self._add_remembrance_day(name))
459
527
 
460
528
  super()._populate_subdiv_holidays()
461
529
 
462
530
  def _populate_subdiv_ak_public_holidays(self):
531
+ # Proclamation 3269 from Jan 3, 1959.
532
+ if self._year <= 1958:
533
+ return None
534
+
535
+ # Chapter 109 SLA 1989.
536
+ if self._year >= 1990:
537
+ # Martin Luther King Jr.'s Birthday.
538
+ self._add_holiday_3rd_mon_of_jan(tr("Martin Luther King Jr.'s Birthday"))
539
+ else:
540
+ # Lincoln's Birthday.
541
+ self._add_observed(self._add_holiday_feb_12(tr("Lincoln's Birthday")))
542
+
463
543
  if self._year >= 1971:
464
- # Presidents' Day.
465
- self._add_holiday_3rd_mon_of_feb(tr("Presidents' Day"))
544
+ # Chapter 109 SLA 1989.
545
+ self._add_holiday_3rd_mon_of_feb(
546
+ # Presidents' Day.
547
+ tr("Presidents' Day")
548
+ if self._year >= 1990
549
+ # Washington's Birthday.
550
+ else tr("Washington's Birthday")
551
+ )
466
552
 
467
- # No observance in 1921: https://web.archive.org/web/20230208015211/https://chroniclingamerica.loc.gov/lccn/sn86072239/1922-03-29/ed-1/seq-8/
468
- if self._year >= 1918 and self._year != 1921:
469
- # Seward's Day.
470
- name = tr("Seward's Day")
471
- if self._year >= 1955:
472
- self._add_holiday_last_mon_of_mar(name)
473
- else:
474
- self._add_holiday_mar_30(name)
553
+ # Seward's Day.
554
+ self._add_holiday_last_mon_of_mar(tr("Seward's Day"))
475
555
 
476
556
  if self._year >= 1971:
477
557
  self._add_holiday_2nd_mon_of_oct(
@@ -482,10 +562,8 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
482
562
  else tr("Columbus Day")
483
563
  )
484
564
 
485
- # https://web.archive.org/web/20120502232826/http://www.alaskadispatch.com/article/happy-alaska-day-great-land
486
- if self._year >= 1917:
487
- # Alaska Day.
488
- self._add_observed(self._add_holiday_oct_18(tr("Alaska Day")))
565
+ # Alaska Day.
566
+ self._add_observed(self._add_holiday_oct_18(tr("Alaska Day")))
489
567
 
490
568
  def _populate_subdiv_al_public_holidays(self):
491
569
  if self._year >= 1986:
@@ -494,13 +572,9 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
494
572
  tr("Martin Luther King, Jr & Robert E. Lee's Birthday")
495
573
  )
496
574
 
497
- if self._year >= 1879:
575
+ if self._year >= 1971:
498
576
  # George Washington & Thomas Jefferson's Birthday.
499
- name = tr("George Washington & Thomas Jefferson's Birthday")
500
- if self._year >= 1971:
501
- self._add_holiday_3rd_mon_of_feb(name)
502
- else:
503
- self._add_holiday_feb_22(name)
577
+ self._add_holiday_3rd_mon_of_feb(tr("George Washington & Thomas Jefferson's Birthday"))
504
578
 
505
579
  if self._year >= 1866:
506
580
  # Confederate Memorial Day.
@@ -529,13 +603,11 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
529
603
  else tr("Dr. Martin Luther King Jr. and Robert E. Lee's Birthdays")
530
604
  )
531
605
 
532
- if self._year >= 1879:
533
- # George Washington's Birthday and Daisy Gatson Bates Day.
534
- name = tr("George Washington's Birthday and Daisy Gatson Bates Day")
535
- if self._year >= 1971:
536
- self._add_holiday_3rd_mon_of_feb(name)
537
- else:
538
- self._add_holiday_feb_22(name)
606
+ if self._year >= 1971:
607
+ self._add_holiday_3rd_mon_of_feb(
608
+ # George Washington's Birthday and Daisy Gatson Bates Day.
609
+ tr("George Washington's Birthday and Daisy Gatson Bates Day")
610
+ )
539
611
 
540
612
  def _populate_subdiv_as_public_holidays(self):
541
613
  if self._year >= 1901:
@@ -586,6 +658,10 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
586
658
  # Day After Thanksgiving.
587
659
  self._add_holiday_1_day_past_4th_thu_of_nov(tr("Day After Thanksgiving"))
588
660
 
661
+ if self._year >= 2026:
662
+ # Diwali.
663
+ self._add_diwali_india(tr("Diwali"))
664
+
589
665
  def _populate_subdiv_co_public_holidays(self):
590
666
  if self._year >= 1971:
591
667
  # Washington-Lincoln Day.
@@ -635,6 +711,15 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
635
711
  # Good Friday.
636
712
  self._add_good_friday(tr("Good Friday"))
637
713
 
714
+ if 1971 <= self._year <= 2009:
715
+ self._add_holiday_3rd_mon_of_feb(
716
+ # Presidents' Day.
717
+ tr("Presidents' Day")
718
+ if self._year >= 1990
719
+ # Washington's Birthday.
720
+ else tr("Washington's Birthday")
721
+ )
722
+
638
723
  if self._year >= 2008 and self._year % 2 == 0:
639
724
  # Election Day.
640
725
  self._add_holiday_1_day_past_1st_mon_of_nov(tr("Election Day"))
@@ -684,11 +769,13 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
684
769
  else tr("Robert E. Lee's Birthday")
685
770
  )
686
771
 
687
- if self._year >= 1879:
688
- self._add_holiday(
772
+ if self._year >= 1971:
773
+ self._add_observed(
774
+ self._christmas_day,
689
775
  # Washington's Birthday.
690
- tr("Washington's Birthday"),
691
- self._get_observed_date(self._christmas_day, rule=GA_IN_WASHINGTON_BIRTHDAY),
776
+ name=tr("Washington's Birthday"),
777
+ rule=GA_IN_WASHINGTON_BIRTHDAY,
778
+ show_observed_label=False,
692
779
  )
693
780
 
694
781
  def _populate_subdiv_gu_public_holidays(self):
@@ -780,11 +867,13 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
780
867
  # Lincoln's Birthday.
781
868
  self._add_holiday_1_day_past_4th_thu_of_nov(tr("Lincoln's Birthday"))
782
869
 
783
- if self._year >= 1879:
784
- self._add_holiday(
870
+ if self._year >= 1971:
871
+ self._add_observed(
872
+ self._christmas_day,
785
873
  # Washington's Birthday.
786
- tr("Washington's Birthday"),
787
- self._get_observed_date(self._christmas_day, rule=GA_IN_WASHINGTON_BIRTHDAY),
874
+ name=tr("Washington's Birthday"),
875
+ rule=GA_IN_WASHINGTON_BIRTHDAY,
876
+ show_observed_label=False,
788
877
  )
789
878
 
790
879
  def _populate_subdiv_ks_public_holidays(self):
@@ -1070,24 +1159,174 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
1070
1159
  self._add_holiday_1_day_past_4th_thu_of_nov(tr("Day After Thanksgiving"))
1071
1160
 
1072
1161
  def _populate_subdiv_pr_public_holidays(self):
1073
- # Epiphany.
1074
- self._add_epiphany_day(tr("Epiphany"))
1162
+ # Art. 387 of the 1902 Political Code of Puerto Rico.
1163
+ if self._year <= 1902:
1164
+ return None
1075
1165
 
1166
+ # Día de Reyes.
1167
+ # Law No. 3 of Mar 27, 1931.
1168
+ if self._year >= 1932:
1169
+ # Epiphany.
1170
+ self._add_epiphany_day(tr("Epiphany"))
1171
+
1172
+ # Natalicio de Eugenio María de Hostos.
1173
+ # Established by Law No. 3 of Mar 15, 1939.
1174
+ # Made movable by Law No. 88 of Jun 27, 1969.
1175
+ # Abolished by Law No. 111 of Jul 29, 2014.
1176
+ if 1940 <= self._year <= 2014:
1177
+ # Birthday of Eugenio María de Hostos.
1178
+ name = tr("Birthday of Eugenio María de Hostos")
1179
+ if self._year >= 1971:
1180
+ self._add_holiday_2nd_mon_of_jan(name)
1181
+ else:
1182
+ self._add_observed(self._add_holiday_jan_11(name), rule=SUN_TO_NEXT_MON)
1183
+
1184
+ # ...Día de las Mujeres y Hombres Próceres de Puerto Rico.
1185
+ # Law No. 152 of Jul 23, 2018.
1186
+ if self._year >= 2019:
1187
+ # George Washington Day, Presidents' Day, and the Day of the Women and Men
1188
+ # Heroes of Puerto Rico.
1189
+ name = tr(
1190
+ "George Washington Day, Presidents' Day, and the Day of the Women and Men "
1191
+ "Heroes of Puerto Rico"
1192
+ )
1193
+ # ...Día del Prócer y la Mujer Ilustre de Puerto Rico.
1194
+ # Law No. 40 of Mar 25, 2015.
1195
+ elif self._year >= 2016:
1196
+ # George Washington Day, Presidents' Day, and the Day of the Hero
1197
+ # and the Illustrious Woman of Puerto Rico.
1198
+ name = tr(
1199
+ "George Washington Day, Presidents' Day, and the Day of the Hero "
1200
+ "and the Illustrious Woman of Puerto Rico"
1201
+ )
1202
+ # ...Día de los Próceres Puertorriqueños.
1203
+ # Law No. 111 of Jul 29, 2014.
1204
+ elif self._year >= 2015:
1205
+ # George Washington Day, Presidents' Day, and the Puerto Rican Heroes Day.
1206
+ name = tr("George Washington Day, Presidents' Day, and the Puerto Rican Heroes Day")
1207
+ else:
1208
+ name = tr("George Washington Day")
1076
1209
  if self._year >= 1971:
1077
- # Presidents' Day.
1078
- self._add_holiday_3rd_mon_of_feb(tr("Presidents' Day"))
1210
+ self._add_holiday_3rd_mon_of_feb(name)
1211
+ else:
1212
+ self._add_observed(self._add_holiday_feb_22(name), rule=SUN_TO_NEXT_MON)
1213
+
1214
+ # Día de la Abolición de la Esclavitud.
1079
1215
 
1080
1216
  # Emancipation Day.
1081
1217
  self._add_observed(self._add_holiday_mar_22(tr("Emancipation Day")), rule=SUN_TO_NEXT_MON)
1082
1218
 
1219
+ # Viernes Santo.
1220
+
1083
1221
  # Good Friday.
1084
1222
  self._add_good_friday(tr("Good Friday"))
1085
1223
 
1086
- # Constitution Day.
1087
- self._add_observed(self._add_holiday_jul_25(tr("Constitution Day")), rule=SUN_TO_NEXT_MON)
1224
+ # Día de José de Diego.
1225
+ # Established by Law No. 3 of Apr 9, 1925.
1226
+ # Made movable by Law No. 88 of Jun 27, 1969.
1227
+ # Abolished by Law No. 111 of Jul 29, 2014.
1228
+ if 1925 <= self._year <= 2014:
1229
+ # José de Diego Day.
1230
+ name = tr("José de Diego Day")
1231
+ if self._year >= 1971:
1232
+ self._add_holiday_3rd_mon_of_apr(name)
1233
+ else:
1234
+ self._add_observed(self._add_holiday_apr_16(name), rule=SUN_TO_NEXT_MON)
1235
+
1236
+ # Día de Luis Muñoz Rivera.
1237
+ # Established by Law No. 47 of Dec 1, 1917.
1238
+ # Made movable by Law No. 88 of Jun 27, 1969.
1239
+ # Abolished by Law No. 111 of Jul 29, 2014.
1240
+ if 1918 <= self._year <= 2014:
1241
+ # Luis Muñoz Rivera Day.
1242
+ name = tr("Luis Muñoz Rivera Day")
1243
+ if self._year >= 1971:
1244
+ self._add_holiday_3rd_mon_of_jul(name)
1245
+ else:
1246
+ self._add_observed(self._add_holiday_jul_17(name), rule=SUN_TO_NEXT_MON)
1247
+
1248
+ # Día de la Ocupación / Día de la Constitución del Estado Libre Asociado de Puerto Rico.
1249
+ self._add_observed(
1250
+ self._add_holiday_jul_25(
1251
+ # Puerto Rico Constitution Day.
1252
+ tr("Puerto Rico Constitution Day")
1253
+ # Renamed by Law No. 1 of Aug 1, 1952.
1254
+ if self._year >= 1953
1255
+ # Occupation Day.
1256
+ else tr("Occupation Day")
1257
+ ),
1258
+ rule=SUN_TO_NEXT_MON,
1259
+ )
1260
+
1261
+ # Día de José Celso Barbosa.
1262
+ # Established by Law No. 97 of May 6, 1938.
1263
+ # Abolished by Law No. 111 of Jul 29, 2014.
1264
+ if 1938 <= self._year <= 2014:
1265
+ # José Celso Barbosa Day.
1266
+ name = tr("José Celso Barbosa Day")
1267
+ # Made movable by Law No. 88 of Jun 27, 1969.
1268
+ # Made fixed by:
1269
+ # Law No. 39 of Jul 11, 1994 (for 1994),
1270
+ # Law No. 76 of Jul 6, 1995.
1271
+ if 1971 <= self._year <= 1993:
1272
+ self._add_holiday_4th_mon_of_jul(name)
1273
+ else:
1274
+ self._add_observed(self._add_holiday_jul_27(name), rule=SUN_TO_NEXT_MON)
1275
+
1276
+ # Día de la Raza.
1277
+ # Established by Joint Resolution No. 31 of Aug 18, 1913.
1278
+ # Made movable by Law No. 88 of Jun 27, 1969.
1279
+ # Made fixed by Law No. 260 of Jul 30, 1974.
1280
+ # Made movable by Law No. 111 of Jul 29, 2014.
1281
+ if self._year >= 1913:
1282
+ # Columbus Day.
1283
+ name = tr("Columbus Day")
1284
+ if 1971 <= self._year <= 1973 or self._year >= 2014:
1285
+ self._add_holiday_2nd_mon_of_oct(name)
1286
+ else:
1287
+ self._add_observed(self._add_columbus_day(name), rule=SUN_TO_NEXT_MON)
1088
1288
 
1089
- # Discovery Day.
1090
- self._add_observed(self._add_holiday_nov_19(tr("Discovery Day")), rule=SUN_TO_NEXT_MON)
1289
+ # Día del Armisticio / Día del Veterano.
1290
+ # The exact year of holiday appearance is currently uncertain.
1291
+ if self._year >= 1938:
1292
+ self._add_observed(
1293
+ self._add_remembrance_day(
1294
+ # Veterans Day.
1295
+ tr("Veterans Day")
1296
+ # Renamed by Law No. 129 of Jun 13, 1980.
1297
+ if self._year >= 1980
1298
+ # Armistice Day.
1299
+ else tr("Armistice Day")
1300
+ ),
1301
+ rule=SUN_TO_NEXT_MON,
1302
+ )
1303
+
1304
+ # Día del Descubrimiento de Puerto Rico.
1305
+ # Established by Law No. 91 of May 6, 1938.
1306
+ if self._year >= 1938:
1307
+ # Día de la Puertorriqueñidad.
1308
+ # Renamed by Law No. 117 of Dec 23, 2022.
1309
+ if self._year >= 2023:
1310
+ # Puerto Rican Identity Day.
1311
+ name = tr("Puerto Rican Identity Day")
1312
+ # Día de la Cultura Puertorriqueña y el Descubrimiento de Puerto Rico.
1313
+ # Renamed by Law No. 111 of Jul 29, 2014.
1314
+ elif self._year >= 2014:
1315
+ # Puerto Rican Culture and Discovery of Puerto Rico Day.
1316
+ name = tr("Puerto Rican Culture and Discovery of Puerto Rico Day")
1317
+ else:
1318
+ # Discovery of Puerto Rico Day.
1319
+ name = tr("Discovery of Puerto Rico Day")
1320
+ self._add_observed(self._add_holiday_nov_19(name), rule=SUN_TO_NEXT_MON)
1321
+
1322
+ def _populate_subdiv_pr_half_day_holidays(self):
1323
+ # Established by Law No. 305 of Dec 25, 2002.
1324
+ if self._year >= 2003:
1325
+ # %s (from 12pm).
1326
+ begin_time_label = self.tr("%s (from 12pm)")
1327
+
1328
+ # Christmas Eve.
1329
+ self._add_christmas_eve(begin_time_label % self.tr("Christmas Eve"))
1091
1330
 
1092
1331
  def _populate_subdiv_ri_public_holidays(self):
1093
1332
  if self._year >= 1948:
@@ -1406,6 +1645,27 @@ class UnitedStatesStaticHolidays(StaticHolidays):
1406
1645
  * [1813](https://web.archive.org/web/20240621142030/https://founders.archives.gov/documents/Madison/03-06-02-0434)
1407
1646
  * [1815](https://web.archive.org/web/20240621142030/https://founders.archives.gov/documents/Madison/03-09-02-0066)
1408
1647
 
1648
+ Federal Government Closings:
1649
+ * [2001, EO 13238](https://web.archive.org/web/20250414100019/http://www.federalregister.gov/documents/2001/12/10/01-30624/closing-of-federal-government-executive-departments-and-agencies-on-monday-december-24-2001)
1650
+ * [2002, EO 13281](https://web.archive.org/web/20250213083130/https://www.federalregister.gov/documents/2002/12/23/02-32518/half-day-closing-of-executive-departments-and-agencies-of-the-federal-government-on-tuesday-december)
1651
+ * [2003, EO 13320](https://web.archive.org/web/20250201153913/https://www.federalregister.gov/documents/2003/12/12/03-30913/closing-of-executive-departments-and-agencies-of-the)
1652
+ * [2004, EO 13343](https://web.archive.org/web/20250414155140/https://www.federalregister.gov/documents/2004/06/08/04-13123/providing-for-the-closing-of-government-departments-and-agencies-on-june-11-2004)
1653
+ * [2007, EO 13421](https://web.archive.org/web/20250208143815/https://www.federalregister.gov/documents/2007/01/04/06-9993/providing-for-the-closing-of-government-departments-and-agencies-on-january-2-2007)
1654
+ * [2007, EO 13453](https://web.archive.org/web/20250414113515/https://www.federalregister.gov/documents/2007/12/11/07-6022/closing-of-executive-departments-and-agencies-of-the-federal-government-on-monday-december-24-2007)
1655
+ * [2008, EO 13482](https://web.archive.org/web/20250413080630/https://www.federalregister.gov/documents/2008/12/16/E8-30042/closing-of-executive-departments-and-agencies-of-the-federal-government-on-friday-december-26-2008)
1656
+ * [2009, EO 13523](https://web.archive.org/web/20250204020329/https://www.federalregister.gov/documents/2009/12/16/E9-30020/half-day-closing-of-executive-departments-and-agencies-on-thursday-december-24-2009)
1657
+ * [2012, EO 13633](https://web.archive.org/web/20250202102026/https://www.federalregister.gov/documents/2012/12/28/2012-31225/closing-of-executive-departments-and-agencies-of-the-federal-government-on-monday-december-24-2012)
1658
+ * [2014, EO 13682](https://web.archive.org/web/20250204140956/https://www.federalregister.gov/documents/2014/12/10/2014-29121/closing-of-executive-departments-and-agencies-of-the-federal-government-on-friday-december-26-2014)
1659
+ * [2015, EO 13713]https://web.archive.org/web/20250204021239/https://www.federalregister.gov/documents/2015/12/16/2015-31749/half-day-closing-of-executive-departments-and-agencies-of-the-federal-government-on-thursday)
1660
+ * [2018, EO 13852](https://web.archive.org/web/20250507175643/https://www.federalregister.gov/documents/2018/12/04/2018-26552/providing-for-the-closing-of-executive-departments-and-agencies-of-the-federal-government-on)
1661
+ * [2018, EO 13854](https://web.archive.org/web/20250202030122/https://www.federalregister.gov/documents/2018/12/21/2018-27945/providing-for-the-closing-of-executive-departments-and-agencies-of-the-federal-government-on)
1662
+ * [2019, EO 13900](https://web.archive.org/web/20250205125417/https://www.federalregister.gov/documents/2019/12/20/2019-27678/providing-for-the-closing-of-executive-departments-and-agencies-of-the-federal-government-on)
1663
+ * [2020, EO 13965](https://web.archive.org/web/20250212090335/https://www.federalregister.gov/documents/2020/12/16/2020-27807/providing-for-the-closing-of-executive-departments-and-agencies-of-the-federal-government-on)
1664
+ * [2024, EO 14129](https://web.archive.org/web/20250219155414/https://www.federalregister.gov/documents/2024/12/26/2024-31143/providing-for-the-closing-of-executive-departments-and-agencies-of-the-federal-government-on)
1665
+ * [2025, EO 14133](https://web.archive.org/web/20250218220403/https://www.federalregister.gov/documents/2025/01/03/2024-31766/providing-for-the-closing-of-executive-departments-and-agencies-of-the-federal-government-on-january)
1666
+ * [2025](https://web.archive.org/web/20251219180805/https://www.whitehouse.gov/presidential-actions/2025/12/providing-for-the-closure-of-executive-departments-and-agencies-of-the-federal-government-on-december-24-2025-and-december-26-2025/)
1667
+
1668
+
1409
1669
  Pre-1971 Inauguration Day observances has been moved here.
1410
1670
  """
1411
1671
 
@@ -1419,6 +1679,15 @@ class UnitedStatesStaticHolidays(StaticHolidays):
1419
1679
  # Inauguration Day.
1420
1680
  inauguration_day_name = tr("Inauguration Day")
1421
1681
 
1682
+ # %s (half-day closing).
1683
+ half_day_closing_label = tr("%s (half-day closing)")
1684
+
1685
+ # Christmas Eve.
1686
+ christmas_eve_name = tr("Christmas Eve")
1687
+
1688
+ # Day After Christmas.
1689
+ day_after_christmas_name = tr("Day After Christmas")
1690
+
1422
1691
  special_public_holidays = {
1423
1692
  1777: (DEC, 18, public_thanksgiving_and_prayer_day_name),
1424
1693
  1782: (NOV, 28, public_thanksgiving_and_prayer_day_name),
@@ -1430,6 +1699,38 @@ class UnitedStatesStaticHolidays(StaticHolidays):
1430
1699
  1815: (APR, 13, public_humiliation_and_prayer_day_name),
1431
1700
  }
1432
1701
 
1702
+ special_government_holidays = {
1703
+ 2001: (DEC, 24, christmas_eve_name),
1704
+ 2002: (DEC, 24, half_day_closing_label % christmas_eve_name),
1705
+ 2003: (DEC, 26, day_after_christmas_name),
1706
+ # National Day of Mourning for former President Ronald Reagan.
1707
+ 2004: (JUN, 11, tr("National Day of Mourning for former President Ronald Reagan")),
1708
+ 2007: (
1709
+ # National Day of Mourning for former President Gerald R. Ford.
1710
+ (JAN, 2, tr("National Day of Mourning for former President Gerald R. Ford")),
1711
+ (DEC, 24, christmas_eve_name),
1712
+ ),
1713
+ 2008: (DEC, 26, day_after_christmas_name),
1714
+ 2009: (DEC, 24, half_day_closing_label % christmas_eve_name),
1715
+ 2012: (DEC, 24, christmas_eve_name),
1716
+ 2014: (DEC, 26, day_after_christmas_name),
1717
+ 2015: (DEC, 24, half_day_closing_label % christmas_eve_name),
1718
+ 2018: (
1719
+ # National Day of Mourning for former President George H. W. Bush.
1720
+ (DEC, 5, tr("National Day of Mourning for former President George H. W. Bush")),
1721
+ (DEC, 24, christmas_eve_name),
1722
+ ),
1723
+ 2019: (DEC, 24, christmas_eve_name),
1724
+ 2020: (DEC, 24, christmas_eve_name),
1725
+ 2024: (DEC, 24, christmas_eve_name),
1726
+ 2025: (
1727
+ # National Day of Mourning for former President Jimmy Carter.
1728
+ (JAN, 9, tr("National Day of Mourning for former President Jimmy Carter")),
1729
+ (DEC, 24, christmas_eve_name),
1730
+ (DEC, 26, day_after_christmas_name),
1731
+ ),
1732
+ }
1733
+
1433
1734
  # Pre-1953 Inauguration Day observances.
1434
1735
  special_dc_public_holidays_observed = {
1435
1736
  1877: (MAR, 5, inauguration_day_name),