Repository: GothenburgBitFactory/holidata

Issue:
Add Juneteenth to en-US
Add 19 June annually for en-US as a holiday for `Juneteenth National Independence Day` ([details](https://www.nps.gov/subjects/npscelebrates/juneteenth.htm)).

Discussion:

Patch:
diff --git a/ChangeLog b/ChangeLog
index 75be09f..56ce49d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+- #115 US: Implement federal holidays
+       (thanks to J. David Stark)
+
 2024.11.0
 -      hu-HU: Add non-working days for 2025 in Hungary
 
diff --git a/src/holidata/holidays/US.py b/src/holidata/holidays/US.py
index 07e9a44..973ea07 100644
--- a/src/holidata/holidays/US.py
+++ b/src/holidata/holidays/US.py
@@ -1,7 +1,7 @@
 from dateutil.easter import EASTER_WESTERN
 
 from holidata.holiday import Country
-from holidata.utils import first, third, last, second, fourth, day
+from holidata.utils import SmartDayArrow, first, second, third, fourth, last, day
 
 
 class US(Country):
@@ -21,6 +21,53 @@ class US(Country):
             .on(month=1, day=1) \
             .with_flags("NF")
 
+        self.define_holiday() \
+            .with_names({
+                "en": "New Year's Day (in lieu of)",
+                "es": "Año Neuvo (en lugar de)",
+            }) \
+            .on(month=12, day=31) \
+            .on_condition(US.date_is_friday(month=12, day=31)) \
+            .with_flags("NF")
+
+        self.define_holiday() \
+            .with_names({
+                "en": "New Year's Day (in lieu of)",
+                "es": "Año Neuvo (en lugar de)",
+            }) \
+            .on(month=1, day=2) \
+            .on_condition(US.date_is_sunday(month=1, day=1)) \
+            .with_flags("NF")
+
+        self.define_holiday() \
+            .with_names({
+                "en": "Juneteenth National Independence Day",
+                "es": "Juneteenth – Día de la Emancipación",
+            }) \
+            .since(2021) \
+            .on(month=6, day=19) \
+            .with_flags("NF")
+
+        self.define_holiday() \
+            .with_names({
+                "en": "Juneteenth National Independence Day (in lieu of)",
+                "es": "Juneteenth – Día de la Emancipación (en lugar de)",
+            }) \
+            .since(2021) \
+            .on(month=6, day=18) \
+            .on_condition(US.date_is_saturday(month=6, day=19)) \
+            .with_flags("NF")
+
+        self.define_holiday() \
+            .with_names({
+                "en": "Juneteenth National Independence Day (in lieu of)",
+                "es": "Juneteenth – Día de la Emancipación (en lugar de)",
+            }) \
+            .since(2021) \
+            .on(month=6, day=20) \
+            .on_condition(US.date_is_sunday(month=6, day=19)) \
+            .with_flags("NF")
+
         self.define_holiday() \
             .with_names({
                 "en": "Independence Day",
@@ -29,6 +76,24 @@ class US(Country):
             .on(month=7, day=4) \
             .with_flags("NF")
 
+        self.define_holiday() \
+            .with_names({
+                "en": "Independence Day (in lieu of)",
+                "es": "Día de la Independiencia (en lugar de)",
+            }) \
+            .on(month=7, day=3) \
+            .on_condition(US.date_is_saturday(month=7, day=4)) \
+            .with_flags("NF")
+
+        self.define_holiday() \
+            .with_names({
+                "en": "Independence Day (in lieu of)",
+                "es": "Día de la Independiencia (en lugar de)",
+            }) \
+            .on(month=7, day=5) \
+            .on_condition(US.date_is_sunday(month=7, day=4)) \
+            .with_flags("NF")
+
         self.define_holiday() \
             .with_names({
                 "en": "Veterans Day",
@@ -37,12 +102,31 @@ class US(Country):
             .on(month=11, day=11) \
             .with_flags("NF")
 
+        self.define_holiday() \
+            .with_names({
+                "en": "Veterans Day (in lieu of)",
+                "es": "Día de los Veteranos (en lugar de)",
+            }) \
+            .on(month=11, day=10) \
+            .on_condition(US.date_is_saturday(month=11, day=11)) \
+            .with_flags("NF")
+
+        self.define_holiday() \
+            .with_names({
+                "en": "Veterans Day (in lieu of)",
+                "es": "Día de los Veteranos (en lugar de)",
+            }) \
+            .on(month=11, day=12) \
+            .on_condition(US.date_is_sunday(month=11, day=11)) \
+            .with_flags("NF")
+
         self.define_holiday() \
             .with_names({
                 "en": "Christmas Eve",
                 "es": "Nochebuena",
             }) \
             .on(month=12, day=24) \
+            .on_condition(US.date_is_not_saturday(month=12, day=25)) \
             .with_flags("NRF")
 
         self.define_holiday() \
@@ -53,6 +137,24 @@ class US(Country):
             .on(month=12, day=25) \
             .with_flags("NRF")
 
+        self.define_holiday() \
+            .with_names({
+                "en": "Christmas Day (in lieu of)",
+                "es": "Navidad (en lugar de)",
+            }) \
+            .on(month=12, day=24) \
+            .on_condition(US.date_is_saturday(month=12, day=25)) \
+            .with_flags("NRF")
+
+        self.define_holiday() \
+            .with_names({
+                "en": "Christmas Day (in lieu of)",
+                "es": "Navidad (en lugar de)",
+            }) \
+            .on(month=12, day=26) \
+            .on_condition(US.date_is_sunday(month=12, day=25)) \
+            .with_flags("NRF")
+
         self.define_holiday() \
             .with_names({
                 "en": "Birthday of Martin Luther King, Jr.",
@@ -117,3 +219,31 @@ class US(Country):
             }) \
             .on(day(1).after(fourth("thursday").of("november"))) \
             .with_flags("NV")
+
+    @staticmethod
+    def date_is_not_saturday(month, day):
+        def wrapper(year):
+            return SmartDayArrow(year, month, day).weekday() != "saturday"
+
+        return wrapper
+
+    @staticmethod
+    def date_is_friday(month, day):
+        def wrapper(year):
+            return SmartDayArrow(year, month, day).weekday() == "friday"
+
+        return wrapper
+
+    @staticmethod
+    def date_is_saturday(month, day):
+        def wrapper(year):
+            return SmartDayArrow(year, month, day).weekday() == "saturday"
+
+        return wrapper
+
+    @staticmethod
+    def date_is_sunday(month, day):
+        def wrapper(year):
+            return SmartDayArrow(year, month, day).weekday() == "sunday"
+
+        return wrapper


Test patch:
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2011].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2011].json
index 58f2f39..ad33a08 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2011].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2011].json
@@ -110,5 +110,13 @@
     "notes": "",
     "region": "",
     "type": "NRF"
+  },
+  {
+    "date": "2011-12-26",
+    "description": "Christmas Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NRF"
   }
 ]
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2012].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2012].json
index 62ece24..a563d31 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2012].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2012].json
@@ -7,6 +7,14 @@
     "region": "",
     "type": "NF"
   },
+  {
+    "date": "2012-01-02",
+    "description": "New Year's Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2012-01-16",
     "description": "Birthday of Martin Luther King, Jr.",
@@ -79,6 +87,14 @@
     "region": "",
     "type": "NF"
   },
+  {
+    "date": "2012-11-12",
+    "description": "Veterans Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2012-11-22",
     "description": "Thanksgiving Day",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2015].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2015].json
index c528522..82ad26a 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2015].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2015].json
@@ -47,6 +47,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2015-07-03",
+    "description": "Independence Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2015-07-04",
     "description": "Independence Day",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2016].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2016].json
index 6368446..5ec9bc0 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2016].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2016].json
@@ -110,5 +110,13 @@
     "notes": "",
     "region": "",
     "type": "NRF"
+  },
+  {
+    "date": "2016-12-26",
+    "description": "Christmas Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NRF"
   }
 ]
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2017].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2017].json
index 9d44422..31e7838 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2017].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2017].json
@@ -7,6 +7,14 @@
     "region": "",
     "type": "NF"
   },
+  {
+    "date": "2017-01-02",
+    "description": "New Year's Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2017-01-16",
     "description": "Birthday of Martin Luther King, Jr.",
@@ -71,6 +79,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2017-11-10",
+    "description": "Veterans Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2017-11-11",
     "description": "Veterans Day",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2018].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2018].json
index 0c4eec5..80da2a3 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2018].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2018].json
@@ -79,6 +79,14 @@
     "region": "",
     "type": "NF"
   },
+  {
+    "date": "2018-11-12",
+    "description": "Veterans Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2018-11-22",
     "description": "Thanksgiving Day",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2020].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2020].json
index 4dc3e30..d678838 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2020].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2020].json
@@ -47,6 +47,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2020-07-03",
+    "description": "Independence Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2020-07-04",
     "description": "Independence Day",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2021].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2021].json
index 37133e7..b04e5e9 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2021].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2021].json
@@ -47,6 +47,22 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2021-06-18",
+    "description": "Juneteenth National Independence Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
+  {
+    "date": "2021-06-19",
+    "description": "Juneteenth National Independence Day",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2021-07-04",
     "description": "Independence Day",
@@ -55,6 +71,14 @@
     "region": "",
     "type": "NF"
   },
+  {
+    "date": "2021-07-05",
+    "description": "Independence Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2021-09-06",
     "description": "Labor Day",
@@ -97,7 +121,7 @@
   },
   {
     "date": "2021-12-24",
-    "description": "Christmas Eve",
+    "description": "Christmas Day (in lieu of)",
     "locale": "en-US",
     "notes": "",
     "region": "",
@@ -110,5 +134,13 @@
     "notes": "",
     "region": "",
     "type": "NRF"
+  },
+  {
+    "date": "2021-12-31",
+    "description": "New Year's Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
   }
 ]
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2022].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2022].json
index 69bfa43..dde9b01 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2022].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2022].json
@@ -47,6 +47,22 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2022-06-19",
+    "description": "Juneteenth National Independence Day",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
+  {
+    "date": "2022-06-20",
+    "description": "Juneteenth National Independence Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2022-07-04",
     "description": "Independence Day",
@@ -110,5 +126,13 @@
     "notes": "",
     "region": "",
     "type": "NRF"
+  },
+  {
+    "date": "2022-12-26",
+    "description": "Christmas Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NRF"
   }
 ]
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2023].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2023].json
index af45c28..27d683e 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2023].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2023].json
@@ -7,6 +7,14 @@
     "region": "",
     "type": "NF"
   },
+  {
+    "date": "2023-01-02",
+    "description": "New Year's Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2023-01-16",
     "description": "Birthday of Martin Luther King, Jr.",
@@ -47,6 +55,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2023-06-19",
+    "description": "Juneteenth National Independence Day",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2023-07-04",
     "description": "Independence Day",
@@ -71,6 +87,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2023-11-10",
+    "description": "Veterans Day (in lieu of)",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2023-11-11",
     "description": "Veterans Day",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2024].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2024].json
index d2f6d90..884756d 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2024].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2024].json
@@ -47,6 +47,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2024-06-19",
+    "description": "Juneteenth National Independence Day",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2024-07-04",
     "description": "Independence Day",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2025].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2025].json
index 15c3e73..2e35c3b 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2025].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[en-US-2025].json
@@ -47,6 +47,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2025-06-19",
+    "description": "Juneteenth National Independence Day",
+    "locale": "en-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2025-07-04",
     "description": "Independence Day",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2011].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2011].json
index 6f7887b..5798a82 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2011].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2011].json
@@ -110,5 +110,13 @@
     "notes": "",
     "region": "",
     "type": "NRF"
+  },
+  {
+    "date": "2011-12-26",
+    "description": "Navidad (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NRF"
   }
 ]
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2012].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2012].json
index 8517ddd..1975497 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2012].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2012].json
@@ -7,6 +7,14 @@
     "region": "",
     "type": "NF"
   },
+  {
+    "date": "2012-01-02",
+    "description": "Año Neuvo (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2012-01-16",
     "description": "Cumpleaños de Martin Luther King, Jr.",
@@ -79,6 +87,14 @@
     "region": "",
     "type": "NF"
   },
+  {
+    "date": "2012-11-12",
+    "description": "Día de los Veteranos (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2012-11-22",
     "description": "Día de Acción de Gracias",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2015].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2015].json
index 602d485..9d015d3 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2015].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2015].json
@@ -47,6 +47,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2015-07-03",
+    "description": "Día de la Independiencia (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2015-07-04",
     "description": "Día de la Independiencia",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2016].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2016].json
index 3d65785..cf72d92 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2016].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2016].json
@@ -110,5 +110,13 @@
     "notes": "",
     "region": "",
     "type": "NRF"
+  },
+  {
+    "date": "2016-12-26",
+    "description": "Navidad (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NRF"
   }
 ]
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2017].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2017].json
index ab16ca8..cb71604 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2017].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2017].json
@@ -7,6 +7,14 @@
     "region": "",
     "type": "NF"
   },
+  {
+    "date": "2017-01-02",
+    "description": "Año Neuvo (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2017-01-16",
     "description": "Cumpleaños de Martin Luther King, Jr.",
@@ -71,6 +79,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2017-11-10",
+    "description": "Día de los Veteranos (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2017-11-11",
     "description": "Día de los Veteranos",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2018].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2018].json
index 63397ee..edf8148 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2018].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2018].json
@@ -79,6 +79,14 @@
     "region": "",
     "type": "NF"
   },
+  {
+    "date": "2018-11-12",
+    "description": "Día de los Veteranos (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2018-11-22",
     "description": "Día de Acción de Gracias",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2020].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2020].json
index 723d48d..e49f096 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2020].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2020].json
@@ -47,6 +47,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2020-07-03",
+    "description": "Día de la Independiencia (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2020-07-04",
     "description": "Día de la Independiencia",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2021].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2021].json
index e0b4ffa..01414a1 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2021].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2021].json
@@ -47,6 +47,22 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2021-06-18",
+    "description": "Juneteenth – Día de la Emancipación (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
+  {
+    "date": "2021-06-19",
+    "description": "Juneteenth – Día de la Emancipación",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2021-07-04",
     "description": "Día de la Independiencia",
@@ -55,6 +71,14 @@
     "region": "",
     "type": "NF"
   },
+  {
+    "date": "2021-07-05",
+    "description": "Día de la Independiencia (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2021-09-06",
     "description": "Día del Trabajo",
@@ -97,7 +121,7 @@
   },
   {
     "date": "2021-12-24",
-    "description": "Nochebuena",
+    "description": "Navidad (en lugar de)",
     "locale": "es-US",
     "notes": "",
     "region": "",
@@ -110,5 +134,13 @@
     "notes": "",
     "region": "",
     "type": "NRF"
+  },
+  {
+    "date": "2021-12-31",
+    "description": "Año Neuvo (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
   }
 ]
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2022].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2022].json
index c5bb277..0a5c3b7 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2022].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2022].json
@@ -47,6 +47,22 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2022-06-19",
+    "description": "Juneteenth – Día de la Emancipación",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
+  {
+    "date": "2022-06-20",
+    "description": "Juneteenth – Día de la Emancipación (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2022-07-04",
     "description": "Día de la Independiencia",
@@ -110,5 +126,13 @@
     "notes": "",
     "region": "",
     "type": "NRF"
+  },
+  {
+    "date": "2022-12-26",
+    "description": "Navidad (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NRF"
   }
 ]
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2023].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2023].json
index 603ba75..fe256f0 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2023].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2023].json
@@ -7,6 +7,14 @@
     "region": "",
     "type": "NF"
   },
+  {
+    "date": "2023-01-02",
+    "description": "Año Neuvo (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2023-01-16",
     "description": "Cumpleaños de Martin Luther King, Jr.",
@@ -47,6 +55,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2023-06-19",
+    "description": "Juneteenth – Día de la Emancipación",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2023-07-04",
     "description": "Día de la Independiencia",
@@ -71,6 +87,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2023-11-10",
+    "description": "Día de los Veteranos (en lugar de)",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2023-11-11",
     "description": "Día de los Veteranos",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2024].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2024].json
index 804e066..c245dd3 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2024].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2024].json
@@ -47,6 +47,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2024-06-19",
+    "description": "Juneteenth – Día de la Emancipación",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2024-07-04",
     "description": "Día de la Independiencia",
diff --git a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2025].json b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2025].json
index 0b38f1c..2d71046 100644
--- a/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2025].json
+++ b/tests/__snapshots__/test_holidata/test_holidata_produces_holidays_for_locale_and_year[es-US-2025].json
@@ -47,6 +47,14 @@
     "region": "",
     "type": "NV"
   },
+  {
+    "date": "2025-06-19",
+    "description": "Juneteenth – Día de la Emancipación",
+    "locale": "es-US",
+    "notes": "",
+    "region": "",
+    "type": "NF"
+  },
   {
     "date": "2025-07-04",
     "description": "Día de la Independiencia",