Repository: vacanza/holidays
Pull request #2685 (2025-06-28 18:45:02)

Simplify parent-based entity handling
<!--
  Thanks for contributing to holidays!
-->

## Proposed change

<!--
  Describe the big picture of your changes.
  Don't forget to link your PR to an existing issue if any.
-->

Introduce `ChildEntity` mixin to simplify parent-based entity implementation.

I'm not sure if US-based entity category-specific tests are redundant:

```python
def test_government_holidays(self):
    self.assertHolidays(
        HolidaysAS(categories=GOVERNMENT, years=2024),
        ("2024-01-01", "New Year's Day"),
        ("2024-01-15", "Birthday of Martin Luther King, Jr."),
        ("2024-02-19", "Washington's Birthday"),
        ("2024-05-27", "Memorial Day"),
        ("2024-06-19", "Juneteenth National Independence Day"),
        ("2024-07-04", "Independence Day"),
        ("2024-09-02", "Labor Day"),
        ("2024-10-14", "Columbus Day"),
        ("2024-11-11", "Veterans Day"),
        ("2024-11-28", "Thanksgiving Day"),
        ("2024-12-25", "Christmas Day"),
    )

def test_unofficial_holidays(self):
    self.assertHolidays(
        HolidaysAS(categories=UNOFFICIAL, years=2024),
        ("2024-02-14", "Valentine's Day"),
        ("2024-03-17", "Saint Patrick's Day"),
        ("2024-10-31", "Halloween"),
    )

```
## Type of change

<!--
  Type of change you want to introduce. Please, check one (1) box only!
  If your PR requires multiple boxes to be checked, most likely it needs to
  be split into multiple PRs.
-->

- [ ] New country/market holidays support (thank you!)
- [ ] Supported country/market holidays update (calendar discrepancy fix, localization)
- [x] Existing code/documentation/test/process quality improvement (best practice, cleanup, refactoring, optimization)
- [ ] Dependency update (version deprecation/pin/upgrade)
- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] Breaking change (a code change causing existing functionality to break)
- [ ] New feature (new `holidays` functionality in general)

## Checklist

<!--
  Put an `x` in the boxes that apply. You can change them after PR is created.
-->

- [x] I've followed the [contributing guidelines][contributing-guidelines]
- [x] I've successfully run `make check`, all checks and tests are green

<!--
  Thanks again for your contribution!
-->

[contributing-guidelines]: https://github.com/vacanza/holidays/blob/dev/CONTRIBUTING.md
[docs]: https://github.com/vacanza/holidays/tree/dev/docs/source


KJhellico: > I'm not sure if US-based entity category-specific tests are redundant

I think they are redundant, since all the logic is implemented in the parent class and tested there.
arkid15r: > Can this approach also be applied to countries such as [Alands](https://github.com/vacanza/holidays/blob/5f89948ea54de34b863d4b93a9c62f1e4b093a3f/holidays/countries/aland_islands.py#L42) or [Mayotte](https://github.com/vacanza/holidays/blob/5f89948ea54de34b863d4b93a9c62f1e4b093a3f/holidays/countries/mayotte.py#L35), where `country` differs from the code of parent subdivision?

I extended the mixin logic to support those cases too. Thanks for the suggestion 👍 
KJhellico: This approach will not be suitable for Isle of Man, as it is not a subdivision of United Kingdom.
arkid15r: > Hmm, wait - I think we're missing `IsleOfMan` here

@KJhellico is right -- `IM` is a special case here as it has its own logic that heavily relies on `UnitedKingdom` class.
I've added a comment to clarify it a bit.
sonarqubecloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2685) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2685&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2685&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=vacanza_python-holidays&pullRequest=2685&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2685&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2685&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2685)



Patch:
diff --git a/holidays/countries/aland_islands.py b/holidays/countries/aland_islands.py
index dc797930..63e30a9f 100644
--- a/holidays/countries/aland_islands.py
+++ b/holidays/countries/aland_islands.py
@@ -10,11 +10,11 @@
 #  Website: https://github.com/vacanza/holidays
 #  License: MIT (see LICENSE file)
 
-from holidays.constants import PUBLIC, UNOFFICIAL, WORKDAY
 from holidays.countries.finland import Finland
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysAX(Finland):
+class HolidaysAX(ChildEntity, Finland):
     """Åland Islands holidays.
 
     Alias of a Finnish subdivision that is also officially assigned
@@ -30,26 +30,10 @@ class HolidaysAX(Finland):
 
     country = "AX"
     parent_entity = Finland
-    default_language = "fi"
-    supported_languages = ("en_US", "fi", "sv_FI", "th", "uk")
-    supported_categories = (PUBLIC, UNOFFICIAL, WORKDAY)
-    subdivisions = ()  # Override Finland subdivisions.
-    subdivisions_aliases = {}  # Override Finland subdivisions aliases.
+    parent_entity_subdivision_code = "01"
     # Åland Islands got its autonomy on May 7th, 1920.
     start_year = 1921
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "01"
-        super()._populate_public_holidays()
-
-    def _populate_unofficial_holidays(self) -> None:
-        self.subdiv = "01"
-        super()._populate_unofficial_holidays()
-
-    def _populate_workday_holidays(self) -> None:
-        self.subdiv = "01"
-        super()._populate_workday_holidays()
-
 
 class AlandIslands(HolidaysAX):
     pass
diff --git a/holidays/countries/american_samoa.py b/holidays/countries/american_samoa.py
index 3d029572..a406ce73 100644
--- a/holidays/countries/american_samoa.py
+++ b/holidays/countries/american_samoa.py
@@ -10,11 +10,11 @@
 #  Website: https://github.com/vacanza/holidays
 #  License: MIT (see LICENSE file)
 
-from holidays.constants import GOVERNMENT, PUBLIC, UNOFFICIAL
 from holidays.countries.united_states import UnitedStates
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysAS(UnitedStates):
+class HolidaysAS(ChildEntity, UnitedStates):
     """American Samoa holidays.
 
     Alias of a US subdivision that is also officially assigned its own country code in ISO 3166-1.
@@ -23,24 +23,9 @@ class HolidaysAS(UnitedStates):
 
     country = "AS"
     parent_entity = UnitedStates
-    supported_categories = (GOVERNMENT, PUBLIC, UNOFFICIAL)
-    subdivisions = ()  # Override US subdivisions.
-    subdivisions_aliases = {}  # Override US subdivisions aliases.
     # Became a U.S. Territory since April 17th, 1900.
     start_year = 1901
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "AS"
-        super()._populate_public_holidays()
-
-    def _populate_government_holidays(self) -> None:
-        self.subdiv = "AS"
-        super()._populate_government_holidays()
-
-    def _populate_unofficial_holidays(self) -> None:
-        self.subdiv = "AS"
-        super()._populate_unofficial_holidays()
-
 
 class AmericanSamoa(HolidaysAS):
     pass
diff --git a/holidays/countries/french_guiana.py b/holidays/countries/french_guiana.py
index d31cd35f..feb4369c 100644
--- a/holidays/countries/french_guiana.py
+++ b/holidays/countries/french_guiana.py
@@ -11,9 +11,10 @@
 #  License: MIT (see LICENSE file)
 
 from holidays.countries.france import France
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysGF(France):
+class HolidaysGF(ChildEntity, France):
     """French Guiana holidays.
 
     Alias of a French subdivision that is also officially assigned
@@ -26,15 +27,10 @@ class HolidaysGF(France):
 
     country = "GF"
     parent_entity = France
-    subdivisions = ()  # Override France subdivisions.
-    subdivisions_aliases = {}  # Override France subdivisions aliases.
+    parent_entity_subdivision_code = "973"
     # Cession from Portugal on May 30th, 1814.
     start_year = 1815
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "973"
-        super()._populate_public_holidays()
-
 
 class FrenchGuiana(HolidaysGF):
     pass
diff --git a/holidays/countries/french_polynesia.py b/holidays/countries/french_polynesia.py
index eb9d365b..fccd00c5 100644
--- a/holidays/countries/french_polynesia.py
+++ b/holidays/countries/french_polynesia.py
@@ -11,9 +11,10 @@
 #  License: MIT (see LICENSE file)
 
 from holidays.countries.france import France
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysPF(France):
+class HolidaysPF(ChildEntity, France):
     """French Polynesia holidays.
 
     Alias of a French subdivision that is also officially assigned
@@ -26,15 +27,9 @@ class HolidaysPF(France):
 
     country = "PF"
     parent_entity = France
-    subdivisions = ()  # Override France subdivisions.
-    subdivisions_aliases = {}  # Override France subdivisions aliases.
     # Pōmare V abdicated and Tahiti became a French Colony on June 29th, 1880.
     start_year = 1881
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "PF"
-        super()._populate_public_holidays()
-
 
 class FrenchPolynesia(HolidaysPF):
     pass
diff --git a/holidays/countries/french_southern_territories.py b/holidays/countries/french_southern_territories.py
index 7dca29ce..59624d86 100644
--- a/holidays/countries/french_southern_territories.py
+++ b/holidays/countries/french_southern_territories.py
@@ -11,9 +11,10 @@
 #  License: MIT (see LICENSE file)
 
 from holidays.countries.france import France
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysTF(France):
+class HolidaysTF(ChildEntity, France):
     """French Southern Territories holidays.
 
     Alias of a French subdivision that is also officially assigned
@@ -31,15 +32,9 @@ class HolidaysTF(France):
 
     country = "TF"
     parent_entity = France
-    subdivisions = ()  # Override France subdivisions.
-    subdivisions_aliases = {}  # Override France subdivisions aliases.
     # This overseas territory was separated in 1955.
     start_year = 1956
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "TF"
-        super()._populate_public_holidays()
-
 
 class FrenchSouthernTerritories(HolidaysTF):
     pass
diff --git a/holidays/countries/guadeloupe.py b/holidays/countries/guadeloupe.py
index 6df00ffa..0bc9a1d3 100644
--- a/holidays/countries/guadeloupe.py
+++ b/holidays/countries/guadeloupe.py
@@ -11,9 +11,10 @@
 #  License: MIT (see LICENSE file)
 
 from holidays.countries.france import France
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysGP(France):
+class HolidaysGP(ChildEntity, France):
     """Guadeloupe holidays.
 
     Alias of a French subdivision that is also officially assigned
@@ -26,15 +27,10 @@ class HolidaysGP(France):
 
     country = "GP"
     parent_entity = France
-    subdivisions = ()  # Override France subdivisions.
-    subdivisions_aliases = {}  # Override France subdivisions aliases.
+    parent_entity_subdivision_code = "971"
     # Cession from Sweden on May 30th, 1814.
     start_year = 1815
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "971"
-        super()._populate_public_holidays()
-
 
 class Guadeloupe(HolidaysGP):
     pass
diff --git a/holidays/countries/guam.py b/holidays/countries/guam.py
index 6421c66a..ca5c74b9 100644
--- a/holidays/countries/guam.py
+++ b/holidays/countries/guam.py
@@ -10,11 +10,11 @@
 #  Website: https://github.com/vacanza/holidays
 #  License: MIT (see LICENSE file)
 
-from holidays.constants import GOVERNMENT, PUBLIC, UNOFFICIAL
 from holidays.countries.united_states import UnitedStates
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysGU(UnitedStates):
+class HolidaysGU(ChildEntity, UnitedStates):
     """Guam holidays.
 
     Alias of a US subdivision that is also officially assigned its own country code in ISO 3166-1.
@@ -23,24 +23,9 @@ class HolidaysGU(UnitedStates):
 
     country = "GU"
     parent_entity = UnitedStates
-    supported_categories = (GOVERNMENT, PUBLIC, UNOFFICIAL)
-    subdivisions = ()  # Override US subdivisions.
-    subdivisions_aliases = {}  # Override US subdivisions aliases.
     # Became a U.S. Territory on April 11th, 1899.
     start_year = 1900
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "GU"
-        super()._populate_public_holidays()
-
-    def _populate_government_holidays(self) -> None:
-        self.subdiv = "GU"
-        super()._populate_government_holidays()
-
-    def _populate_unofficial_holidays(self) -> None:
-        self.subdiv = "GU"
-        super()._populate_unofficial_holidays()
-
 
 class Guam(HolidaysGU):
     pass
diff --git a/holidays/countries/hongkong.py b/holidays/countries/hongkong.py
index ca851f3e..b14582c5 100644
--- a/holidays/countries/hongkong.py
+++ b/holidays/countries/hongkong.py
@@ -34,7 +34,7 @@ from holidays.groups import (
     InternationalHolidays,
     StaticHolidays,
 )
-from holidays.mixins import PreferredDiscretionaryHolidays
+from holidays.mixins.preferred_discretionary_holidays import PreferredDiscretionaryHolidays
 from holidays.observed_holiday_base import (
     ObservedHolidayBase,
     SAT_SUN_TO_NEXT_WORKDAY,
diff --git a/holidays/countries/isle_of_man.py b/holidays/countries/isle_of_man.py
index 9b6c6093..e409e09d 100644
--- a/holidays/countries/isle_of_man.py
+++ b/holidays/countries/isle_of_man.py
@@ -21,6 +21,10 @@ class IsleOfMan(UnitedKingdom):
     """Isle Of Man holidays."""
 
     country = "IM"
+    # The Isle of Man (IM) is not a subdivision of the United Kingdom (GB)
+    # entity, so the `IsleOfMan` class does not inherit from the `ChildEntity`
+    # mixin. The `parent_entity` is specified below solely to maintain
+    # consistency in holiday name localization.
     parent_entity = UnitedKingdom
     subdivisions = ()  # Override UnitedKingdom subdivisions.
     subdivisions_aliases = {}  # Override UnitedKingdom subdivisions aliases.
diff --git a/holidays/countries/martinique.py b/holidays/countries/martinique.py
index 1c838429..a0415a6a 100644
--- a/holidays/countries/martinique.py
+++ b/holidays/countries/martinique.py
@@ -11,9 +11,10 @@
 #  License: MIT (see LICENSE file)
 
 from holidays.countries.france import France
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysMQ(France):
+class HolidaysMQ(ChildEntity, France):
     """Martinique holidays.
 
     Alias of a French subdivision that is also officially assigned
@@ -26,15 +27,10 @@ class HolidaysMQ(France):
 
     country = "MQ"
     parent_entity = France
-    subdivisions = ()  # Override France subdivisions.
-    subdivisions_aliases = {}  # Override France subdivisions aliases.
+    parent_entity_subdivision_code = "972"
     # Cession from the UK on May 30th, 1814.
     start_year = 1815
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "972"
-        super()._populate_public_holidays()
-
 
 class Martinique(HolidaysMQ):
     pass
diff --git a/holidays/countries/mayotte.py b/holidays/countries/mayotte.py
index 5b4aad78..32b3ce9f 100644
--- a/holidays/countries/mayotte.py
+++ b/holidays/countries/mayotte.py
@@ -11,9 +11,10 @@
 #  License: MIT (see LICENSE file)
 
 from holidays.countries.france import France
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysYT(France):
+class HolidaysYT(ChildEntity, France):
     """Mayotte holidays.
 
     Alias of a French subdivision that is also officially assigned
@@ -26,15 +27,10 @@ class HolidaysYT(France):
 
     country = "YT"
     parent_entity = France
-    subdivisions = ()  # Override France subdivisions.
-    subdivisions_aliases = {}  # Override France subdivisions aliases.
+    parent_entity_subdivision_code = "976"
     # Sold to France on April 25th, 1841.
     start_year = 1842
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "976"
-        super()._populate_public_holidays()
-
 
 class Mayotte(HolidaysYT):
     pass
diff --git a/holidays/countries/new_caledonia.py b/holidays/countries/new_caledonia.py
index f54bb532..f79794cd 100644
--- a/holidays/countries/new_caledonia.py
+++ b/holidays/countries/new_caledonia.py
@@ -11,9 +11,10 @@
 #  License: MIT (see LICENSE file)
 
 from holidays.countries.france import France
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysNC(France):
+class HolidaysNC(ChildEntity, France):
     """New Caledonia holidays.
 
     Alias of a French subdivision that is also officially assigned
@@ -26,15 +27,9 @@ class HolidaysNC(France):
 
     country = "NC"
     parent_entity = France
-    subdivisions = ()  # Override France subdivisions.
-    subdivisions_aliases = {}  # Override France subdivisions aliases.
     # France took formal possession of New Caledonia on September 24th, 1853.
     start_year = 1854
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "NC"
-        super()._populate_public_holidays()
-
 
 class NewCaledonia(HolidaysNC):
     pass
diff --git a/holidays/countries/northern_mariana_islands.py b/holidays/countries/northern_mariana_islands.py
index ecad8d8d..2c3a5dab 100644
--- a/holidays/countries/northern_mariana_islands.py
+++ b/holidays/countries/northern_mariana_islands.py
@@ -10,11 +10,11 @@
 #  Website: https://github.com/vacanza/holidays
 #  License: MIT (see LICENSE file)
 
-from holidays.constants import GOVERNMENT, PUBLIC, UNOFFICIAL
 from holidays.countries.united_states import UnitedStates
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysMP(UnitedStates):
+class HolidaysMP(ChildEntity, UnitedStates):
     """Northern Mariana Islands (the) holidays.
 
     Alias of a US subdivision that is also officially assigned its own country code in ISO 3166-1.
@@ -23,24 +23,9 @@ class HolidaysMP(UnitedStates):
 
     country = "MP"
     parent_entity = UnitedStates
-    supported_categories = (GOVERNMENT, PUBLIC, UNOFFICIAL)
-    subdivisions = ()  # Override US subdivisions.
-    subdivisions_aliases = {}  # Override US subdivisions aliases.
     # UNSC Resolution 21 on April 2nd, 1947.
     start_year = 1948
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "MP"
-        super()._populate_public_holidays()
-
-    def _populate_government_holidays(self) -> None:
-        self.subdiv = "MP"
-        super()._populate_government_holidays()
-
-    def _populate_unofficial_holidays(self) -> None:
-        self.subdiv = "MP"
-        super()._populate_unofficial_holidays()
-
 
 class NorthernMarianaIslands(HolidaysMP):
     pass
diff --git a/holidays/countries/puerto_rico.py b/holidays/countries/puerto_rico.py
index cdbed556..32a624cd 100644
--- a/holidays/countries/puerto_rico.py
+++ b/holidays/countries/puerto_rico.py
@@ -10,11 +10,11 @@
 #  Website: https://github.com/vacanza/holidays
 #  License: MIT (see LICENSE file)
 
-from holidays.constants import GOVERNMENT, PUBLIC, UNOFFICIAL
 from holidays.countries.united_states import UnitedStates
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysPR(UnitedStates):
+class HolidaysPR(ChildEntity, UnitedStates):
     """Puerto Rico holidays.
 
     Alias of a US subdivision that is also officially assigned its own country code in ISO 3166-1.
@@ -23,24 +23,9 @@ class HolidaysPR(UnitedStates):
 
     country = "PR"
     parent_entity = UnitedStates
-    supported_categories = (GOVERNMENT, PUBLIC, UNOFFICIAL)
-    subdivisions = ()  # Override US subdivisions.
-    subdivisions_aliases = {}  # Override US subdivisions aliases.
     # Became a U.S. Territory on April 11th, 1899.
     start_year = 1900
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "PR"
-        super()._populate_public_holidays()
-
-    def _populate_government_holidays(self) -> None:
-        self.subdiv = "PR"
-        super()._populate_government_holidays()
-
-    def _populate_unofficial_holidays(self) -> None:
-        self.subdiv = "PR"
-        super()._populate_unofficial_holidays()
-
 
 class PuertoRico(HolidaysPR):
     pass
diff --git a/holidays/countries/reunion.py b/holidays/countries/reunion.py
index a3e82db7..8d43ae4c 100644
--- a/holidays/countries/reunion.py
+++ b/holidays/countries/reunion.py
@@ -11,9 +11,10 @@
 #  License: MIT (see LICENSE file)
 
 from holidays.countries.france import France
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysRE(France):
+class HolidaysRE(ChildEntity, France):
     """Réunion holidays.
 
     Alias of a French subdivision that is also officially assigned
@@ -26,15 +27,10 @@ class HolidaysRE(France):
 
     country = "RE"
     parent_entity = France
-    subdivisions = ()  # Override France subdivisions.
-    subdivisions_aliases = {}  # Override France subdivisions aliases.
+    parent_entity_subdivision_code = "974"
     # Cession from the UK on May 30th, 1814.
     start_year = 1815
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "974"
-        super()._populate_public_holidays()
-
 
 class Reunion(HolidaysRE):
     pass
diff --git a/holidays/countries/saint_barthelemy.py b/holidays/countries/saint_barthelemy.py
index 69e4a0ca..34618753 100644
--- a/holidays/countries/saint_barthelemy.py
+++ b/holidays/countries/saint_barthelemy.py
@@ -11,9 +11,10 @@
 #  License: MIT (see LICENSE file)
 
 from holidays.countries.france import France
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysBL(France):
+class HolidaysBL(ChildEntity, France):
     """Saint Barthélemy holidays.
 
     Alias of a French subdivision that is also officially assigned
@@ -26,15 +27,9 @@ class HolidaysBL(France):
 
     country = "BL"
     parent_entity = France
-    subdivisions = ()  # Override France subdivisions.
-    subdivisions_aliases = {}  # Override France subdivisions aliases.
     # Cession from Guadeloupe on July 15th, 2007.
     start_year = 2008
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "BL"
-        super()._populate_public_holidays()
-
 
 class SaintBarthelemy(HolidaysBL):
     pass
diff --git a/holidays/countries/saint_martin.py b/holidays/countries/saint_martin.py
index c9afdd96..1f351a5a 100644
--- a/holidays/countries/saint_martin.py
+++ b/holidays/countries/saint_martin.py
@@ -11,9 +11,10 @@
 #  License: MIT (see LICENSE file)
 
 from holidays.countries.france import France
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysMF(France):
+class HolidaysMF(ChildEntity, France):
     """Saint Martin holidays.
 
     Alias of a French subdivision that is also officially assigned
@@ -26,15 +27,9 @@ class HolidaysMF(France):
 
     country = "MF"
     parent_entity = France
-    subdivisions = ()  # Override France subdivisions.
-    subdivisions_aliases = {}  # Override France subdivisions aliases.
     # Cession from Guadeloupe on July 15th, 2007.
     start_year = 2008
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "MF"
-        super()._populate_public_holidays()
-
 
 class SaintMartin(HolidaysMF):
     pass
diff --git a/holidays/countries/saint_pierre_and_miquelon.py b/holidays/countries/saint_pierre_and_miquelon.py
index 35f099be..cd647fae 100644
--- a/holidays/countries/saint_pierre_and_miquelon.py
+++ b/holidays/countries/saint_pierre_and_miquelon.py
@@ -11,9 +11,10 @@
 #  License: MIT (see LICENSE file)
 
 from holidays.countries.france import France
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysPM(France):
+class HolidaysPM(ChildEntity, France):
     """Saint Pierre and Miquelon holidays.
 
     Alias of a French subdivision that is also officially assigned
@@ -26,15 +27,9 @@ class HolidaysPM(France):
 
     country = "PM"
     parent_entity = France
-    subdivisions = ()  # Override France subdivisions.
-    subdivisions_aliases = {}  # Override France subdivisions aliases.
     # Cession from the UK on May 30th, 1814.
     start_year = 1815
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "PM"
-        super()._populate_public_holidays()
-
 
 class SaintPierreAndMiquelon(HolidaysPM):
     pass
diff --git a/holidays/countries/svalbard_and_jan_mayen.py b/holidays/countries/svalbard_and_jan_mayen.py
index 559926d8..4298899d 100644
--- a/holidays/countries/svalbard_and_jan_mayen.py
+++ b/holidays/countries/svalbard_and_jan_mayen.py
@@ -11,9 +11,10 @@
 #  License: MIT (see LICENSE file)
 
 from holidays.countries.norway import Norway
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysSJ(Norway):
+class HolidaysSJ(ChildEntity, Norway):
     """Svalbard and Jan Mayen holidays.
 
     Alias of Norwegian subdivisions that are also officially assigned
@@ -25,12 +26,7 @@ class HolidaysSJ(Norway):
 
     country = "SJ"
     parent_entity = Norway
-    subdivisions = ()  # Override Norway subdivisions.
-    subdivisions_aliases = {}  # Override Norway subdivisions aliases.
-
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "21"
-        super()._populate_public_holidays()
+    parent_entity_subdivision_code = "21"
 
 
 class SvalbardAndJanMayen(HolidaysSJ):
diff --git a/holidays/countries/turks_and_caicos_islands.py b/holidays/countries/turks_and_caicos_islands.py
index 5e542d94..2a25d96b 100644
--- a/holidays/countries/turks_and_caicos_islands.py
+++ b/holidays/countries/turks_and_caicos_islands.py
@@ -36,7 +36,7 @@ class TurksAndCaicosIslands(ObservedHolidayBase, ChristianHolidays, Internationa
         * [2021](https://www.facebook.com/pressofficetcig/photos/a.349345645161128/3511371698958491/?type=3)
         * [2022](https://www.facebook.com/pressofficetcig/photos/a.349345645161128/4515540038541647/?type=3)
         * [2023](https://web.archive.org/web/20250608202452/https://www.facebook.com/photo/?fbid=557741379734203&set=a.363028765872133)
-        * [2025](https://www.facebook.com/photo/?fbid=1019082573584944&set=a.353200576839817)
+        * [2025](https://web.archive.org/web/20250608202433/https://www.facebook.com/photo/?fbid=1019082573584944&set=a.353200576839817)
         * [Destination TCI](https://web.archive.org/web/20250429024708/https://destinationtci.tc/turks-and-caicos-islands-public-holidays/)
         * [Time and Date](https://web.archive.org/web/20250429024853/https://www.timeanddate.com/holidays/turks-and-caicos-islands/)
     """
diff --git a/holidays/countries/united_states_minor_outlying_islands.py b/holidays/countries/united_states_minor_outlying_islands.py
index 094f433c..abb1c4e1 100644
--- a/holidays/countries/united_states_minor_outlying_islands.py
+++ b/holidays/countries/united_states_minor_outlying_islands.py
@@ -10,11 +10,11 @@
 #  Website: https://github.com/vacanza/holidays
 #  License: MIT (see LICENSE file)
 
-from holidays.constants import GOVERNMENT, PUBLIC, UNOFFICIAL
 from holidays.countries.united_states import UnitedStates
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysUM(UnitedStates):
+class HolidaysUM(ChildEntity, UnitedStates):
     """United States Minor Outlying Islands holidays.
 
     Alias of a US subdivision that is also officially assigned its own country code in ISO 3166-1.
@@ -23,24 +23,9 @@ class HolidaysUM(UnitedStates):
 
     country = "UM"
     parent_entity = UnitedStates
-    supported_categories = (GOVERNMENT, PUBLIC, UNOFFICIAL)
-    subdivisions = ()  # Override US subdivisions.
-    subdivisions_aliases = {}  # Override US subdivisions aliases.
     # The first islands were claimed via Guano Islands Act on August 18th, 1856.
     start_year = 1857
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "UM"
-        super()._populate_public_holidays()
-
-    def _populate_government_holidays(self) -> None:
-        self.subdiv = "UM"
-        super()._populate_government_holidays()
-
-    def _populate_unofficial_holidays(self) -> None:
-        self.subdiv = "UM"
-        super()._populate_unofficial_holidays()
-
 
 class UnitedStatesMinorOutlyingIslands(HolidaysUM):
     pass
diff --git a/holidays/countries/united_states_virgin_islands.py b/holidays/countries/united_states_virgin_islands.py
index 55fd03f8..cd48cebd 100644
--- a/holidays/countries/united_states_virgin_islands.py
+++ b/holidays/countries/united_states_virgin_islands.py
@@ -10,11 +10,11 @@
 #  Website: https://github.com/vacanza/holidays
 #  License: MIT (see LICENSE file)
 
-from holidays.constants import GOVERNMENT, PUBLIC, UNOFFICIAL
 from holidays.countries.united_states import UnitedStates
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysVI(UnitedStates):
+class HolidaysVI(ChildEntity, UnitedStates):
     """United States Virgin Islands (the) holidays.
 
     Alias of a US subdivision that is also officially assigned its own country code in ISO 3166-1.
@@ -23,24 +23,9 @@ class HolidaysVI(UnitedStates):
 
     country = "VI"
     parent_entity = UnitedStates
-    supported_categories = (GOVERNMENT, PUBLIC, UNOFFICIAL)
-    subdivisions = ()  # Override US subdivisions.
-    subdivisions_aliases = {}  # Override US subdivisions aliases.
     # Became a U.S. Territory since March 31st, 1917.
     start_year = 1918
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "VI"
-        super()._populate_public_holidays()
-
-    def _populate_government_holidays(self) -> None:
-        self.subdiv = "VI"
-        super()._populate_government_holidays()
-
-    def _populate_unofficial_holidays(self) -> None:
-        self.subdiv = "VI"
-        super()._populate_unofficial_holidays()
-
 
 class UnitedStatesVirginIslands(HolidaysVI):
     pass
diff --git a/holidays/countries/wallis_and_futuna.py b/holidays/countries/wallis_and_futuna.py
index efa4fa48..24dd1c62 100644
--- a/holidays/countries/wallis_and_futuna.py
+++ b/holidays/countries/wallis_and_futuna.py
@@ -11,9 +11,10 @@
 #  License: MIT (see LICENSE file)
 
 from holidays.countries.france import France
+from holidays.mixins.child_entity import ChildEntity
 
 
-class HolidaysWF(France):
+class HolidaysWF(ChildEntity, France):
     """Wallis and Futuna holidays.
 
     Alias of a French subdivision that is also officially assigned
@@ -26,15 +27,9 @@ class HolidaysWF(France):
 
     country = "WF"
     parent_entity = France
-    subdivisions = ()  # Override France subdivisions.
-    subdivisions_aliases = {}  # Override France subdivisions aliases.
     # Separation from French Caledonia on July 29th, 1961.
     start_year = 1962
 
-    def _populate_public_holidays(self) -> None:
-        self.subdiv = "WF"
-        super()._populate_public_holidays()
-
 
 class WallisAndFutuna(HolidaysWF):
     pass
diff --git a/holidays/holiday_base.py b/holidays/holiday_base.py
index bb2b102d..c9463bb8 100644
--- a/holidays/holiday_base.py
+++ b/holidays/holiday_base.py
@@ -348,11 +348,16 @@ class HolidayBase(dict[date, str]):
             if isinstance(subdiv, int):
                 subdiv = str(subdiv)
 
-            subdivisions_aliases = tuple(sorted(self.subdivisions_aliases))
+            subdivision_aliases = tuple(self.subdivisions_aliases)
+            supported_subdivisions = set(
+                self.subdivisions
+                + subdivision_aliases
+                + self._deprecated_subdivisions
+                + (self.parent_entity.subdivisions if self.parent_entity else ())
+            )
+
             # Unsupported subdivisions.
-            if not isinstance(self, HolidaySum) and subdiv not in (
-                self.subdivisions + subdivisions_aliases + self._deprecated_subdivisions
-            ):
+            if not isinstance(self, HolidaySum) and subdiv not in supported_subdivisions:
                 raise NotImplementedError(
                     f"Entity `{self._entity_code}` does not have subdivision {subdiv}"
                 )
@@ -371,7 +376,7 @@ class HolidayBase(dict[date, str]):
                     "Dec, 1 2023. The list of supported subdivisions: "
                     f"{', '.join(sorted(self.subdivisions))}; "
                     "the list of supported subdivisions aliases: "
-                    f"{', '.join(subdivisions_aliases)}.",
+                    f"{', '.join(sorted(subdivision_aliases))}.",
                     DeprecationWarning,
                 )
 
diff --git a/holidays/mixins/__init__.py b/holidays/mixins/__init__.py
new file mode 100644
index 00000000..e86bf258
--- /dev/null
+++ b/holidays/mixins/__init__.py
@@ -0,0 +1,18 @@
+#  holidays
+#  --------
+#  A fast, efficient Python library for generating country, province and state
+#  specific sets of holidays on the fly. It aims to make determining whether a
+#  specific date is a holiday as fast and flexible as possible.
+#
+#  Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+#           dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
+#           ryanss <ryanssdev@icloud.com> (c) 2014-2017
+#  Website: https://github.com/vacanza/holidays
+#  License: MIT (see LICENSE file)
+
+# ruff: noqa: F401
+
+"""Mixins for the holidays package."""
+
+from holidays.mixins.child_entity import ChildEntity
+from holidays.mixins.preferred_discretionary_holidays import PreferredDiscretionaryHolidays
diff --git a/holidays/mixins/child_entity.py b/holidays/mixins/child_entity.py
new file mode 100644
index 00000000..7298e6ec
--- /dev/null
+++ b/holidays/mixins/child_entity.py
@@ -0,0 +1,43 @@
+#  holidays
+#  --------
+#  A fast, efficient Python library for generating country, province and state
+#  specific sets of holidays on the fly. It aims to make determining whether a
+#  specific date is a holiday as fast and flexible as possible.
+#
+#  Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+#           dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
+#           ryanss <ryanssdev@icloud.com> (c) 2014-2017
+#  Website: https://github.com/vacanza/holidays
+#  License: MIT (see LICENSE file)
+
+
+from typing import Optional
+
+from holidays.holiday_base import HolidayBase
+
+
+class ChildEntity:
+    """A mixin for child entities that inherit from a parent entity."""
+
+    parent_entity: type[HolidayBase]
+    """The parent entity class."""
+
+    parent_entity_subdivision_code: Optional[str] = None
+    """The parent entity's corresponding ISO 3166-2 subdivision code."""
+
+    subdivisions: tuple[str, ...] = ()
+    """Override parent subdivisions."""
+
+    subdivisions_aliases: dict[str, str] = {}
+    """Override parent subdivisions aliases."""
+
+    def __init__(self, *args, **kwargs):
+        """Initialize the child entity using its country code.
+
+        A child entity always has its own country code that is different from
+        the parent entity's country code but (in majority of cases) is a
+        subdivision of the parent entity. For setting specific subdivision code
+        value use `parent_entity_subdivision_code`.
+        """
+        kwargs["subdiv"] = self.parent_entity_subdivision_code or self.country
+        super().__init__(*args, **kwargs)


Test patch:
diff --git a/holidays/mixins.py b/holidays/mixins/preferred_discretionary_holidays.py
similarity index 100%
rename from holidays/mixins.py
rename to holidays/mixins/preferred_discretionary_holidays.py
diff --git a/tests/countries/test_american_samoa.py b/tests/countries/test_american_samoa.py
index 8bd71256..11af4fe3 100644
--- a/tests/countries/test_american_samoa.py
+++ b/tests/countries/test_american_samoa.py
@@ -12,7 +12,6 @@
 
 from unittest import TestCase
 
-from holidays.constants import GOVERNMENT, UNOFFICIAL
 from holidays.countries.american_samoa import HolidaysAS, AmericanSamoa, AS, ASM
 from tests.common import CommonCountryTests
 
@@ -36,30 +35,6 @@ class TestAS(CommonCountryTests, TestCase):
         self.assertHolidayName("Manu'a Islands Cession Day", "2016-07-16")
         self.assertHolidayName("White Sunday", "2016-10-09")
 
-    def test_government_holidays(self):
-        self.assertHolidays(
-            HolidaysAS(categories=GOVERNMENT, years=2024),
-            ("2024-01-01", "New Year's Day"),
-            ("2024-01-15", "Birthday of Martin Luther King, Jr."),
-            ("2024-02-19", "Washington's Birthday"),
-            ("2024-05-27", "Memorial Day"),
-            ("2024-06-19", "Juneteenth National Independence Day"),
-            ("2024-07-04", "Independence Day"),
-            ("2024-09-02", "Labor Day"),
-            ("2024-10-14", "Columbus Day"),
-            ("2024-11-11", "Veterans Day"),
-            ("2024-11-28", "Thanksgiving Day"),
-            ("2024-12-25", "Christmas Day"),
-        )
-
-    def test_unofficial_holidays(self):
-        self.assertHolidays(
-            HolidaysAS(categories=UNOFFICIAL, years=2024),
-            ("2024-02-14", "Valentine's Day"),
-            ("2024-03-17", "Saint Patrick's Day"),
-            ("2024-10-31", "Halloween"),
-        )
-
     def test_l10n_default(self):
         self.assertLocalizedHolidays(
             ("2022-01-01", "New Year's Day"),
diff --git a/tests/countries/test_guam.py b/tests/countries/test_guam.py
index 694cab88..cb3fbf21 100644
--- a/tests/countries/test_guam.py
+++ b/tests/countries/test_guam.py
@@ -12,7 +12,6 @@
 
 from unittest import TestCase
 
-from holidays.constants import GOVERNMENT, UNOFFICIAL
 from holidays.countries.guam import HolidaysGU, Guam, GU, GUM
 from tests.common import CommonCountryTests
 
@@ -37,30 +36,6 @@ class TestGU(CommonCountryTests, TestCase):
         self.assertHolidayName("All Souls' Day", "2016-11-02")
         self.assertHolidayName("Lady of Camarin Day", "2016-12-08")
 
-    def test_government_holidays(self):
-        self.assertHolidays(
-            HolidaysGU(categories=GOVERNMENT, years=2024),
-            ("2024-01-01", "New Year's Day"),
-            ("2024-01-15", "Birthday of Martin Luther King, Jr."),
-            ("2024-02-19", "Washington's Birthday"),
-            ("2024-05-27", "Memorial Day"),
-            ("2024-06-19", "Juneteenth National Independence Day"),
-            ("2024-07-04", "Independence Day"),
-            ("2024-09-02", "Labor Day"),
-            ("2024-10-14", "Columbus Day"),
-            ("2024-11-11", "Veterans Day"),
-            ("2024-11-28", "Thanksgiving Day"),
-            ("2024-12-25", "Christmas Day"),
-        )
-
-    def test_unofficial_holidays(self):
-        self.assertHolidays(
-            HolidaysGU(categories=UNOFFICIAL, years=2024),
-            ("2024-02-14", "Valentine's Day"),
-            ("2024-03-17", "Saint Patrick's Day"),
-            ("2024-10-31", "Halloween"),
-        )
-
     def test_l10n_default(self):
         self.assertLocalizedHolidays(
             ("2022-01-01", "New Year's Day"),
diff --git a/tests/countries/test_northern_mariana_islands.py b/tests/countries/test_northern_mariana_islands.py
index 84af04f7..dee6951c 100644
--- a/tests/countries/test_northern_mariana_islands.py
+++ b/tests/countries/test_northern_mariana_islands.py
@@ -12,7 +12,6 @@
 
 from unittest import TestCase
 
-from holidays.constants import GOVERNMENT, UNOFFICIAL
 from holidays.countries.northern_mariana_islands import HolidaysMP, NorthernMarianaIslands, MP, MNP
 from tests.common import CommonCountryTests
 
@@ -38,30 +37,6 @@ class TestMP(CommonCountryTests, TestCase):
         self.assertHolidayName("Election Day", "2016-11-08")
         self.assertHolidayName("Constitution Day", "2016-12-08")
 
-    def test_government_holidays(self):
-        self.assertHolidays(
-            HolidaysMP(categories=GOVERNMENT, years=2024),
-            ("2024-01-01", "New Year's Day"),
-            ("2024-01-15", "Birthday of Martin Luther King, Jr."),
-            ("2024-02-19", "Washington's Birthday"),
-            ("2024-05-27", "Memorial Day"),
-            ("2024-06-19", "Juneteenth National Independence Day"),
-            ("2024-07-04", "Independence Day"),
-            ("2024-09-02", "Labor Day"),
-            ("2024-10-14", "Columbus Day"),
-            ("2024-11-11", "Veterans Day"),
-            ("2024-11-28", "Thanksgiving Day"),
-            ("2024-12-25", "Christmas Day"),
-        )
-
-    def test_unofficial_holidays(self):
-        self.assertHolidays(
-            HolidaysMP(categories=UNOFFICIAL, years=2024),
-            ("2024-02-14", "Valentine's Day"),
-            ("2024-03-17", "Saint Patrick's Day"),
-            ("2024-10-31", "Halloween"),
-        )
-
     def test_l10n_default(self):
         self.assertLocalizedHolidays(
             ("2022-01-01", "New Year's Day"),
diff --git a/tests/countries/test_puerto_rico.py b/tests/countries/test_puerto_rico.py
index 185349b8..0b8f2bbe 100644
--- a/tests/countries/test_puerto_rico.py
+++ b/tests/countries/test_puerto_rico.py
@@ -12,7 +12,6 @@
 
 from unittest import TestCase
 
-from holidays.constants import GOVERNMENT, UNOFFICIAL
 from holidays.countries.puerto_rico import HolidaysPR, PuertoRico, PR, PRI
 from tests.common import CommonCountryTests
 
@@ -38,30 +37,6 @@ class TestPR(CommonCountryTests, TestCase):
         self.assertHolidayName("Constitution Day", "2016-07-25")
         self.assertHolidayName("Discovery Day", "2016-11-19")
 
-    def test_government_holidays(self):
-        self.assertHolidays(
-            HolidaysPR(categories=GOVERNMENT, years=2024),
-            ("2024-01-01", "New Year's Day"),
-            ("2024-01-15", "Birthday of Martin Luther King, Jr."),
-            ("2024-02-19", "Washington's Birthday"),
-            ("2024-05-27", "Memorial Day"),
-            ("2024-06-19", "Juneteenth National Independence Day"),
-            ("2024-07-04", "Independence Day"),
-            ("2024-09-02", "Labor Day"),
-            ("2024-10-14", "Columbus Day"),
-            ("2024-11-11", "Veterans Day"),
-            ("2024-11-28", "Thanksgiving Day"),
-            ("2024-12-25", "Christmas Day"),
-        )
-
-    def test_unofficial_holidays(self):
-        self.assertHolidays(
-            HolidaysPR(categories=UNOFFICIAL, years=2024),
-            ("2024-02-14", "Valentine's Day"),
-            ("2024-03-17", "Saint Patrick's Day"),
-            ("2024-10-31", "Halloween"),
-        )
-
     def test_l10n_default(self):
         self.assertLocalizedHolidays(
             ("2022-01-01", "New Year's Day"),
diff --git a/tests/countries/test_united_states_minor_outlying_islands.py b/tests/countries/test_united_states_minor_outlying_islands.py
index f039b953..9d71ee62 100644
--- a/tests/countries/test_united_states_minor_outlying_islands.py
+++ b/tests/countries/test_united_states_minor_outlying_islands.py
@@ -12,7 +12,6 @@
 
 from unittest import TestCase
 
-from holidays.constants import GOVERNMENT, UNOFFICIAL
 from holidays.countries.united_states_minor_outlying_islands import (
     HolidaysUM,
     UnitedStatesMinorOutlyingIslands,
@@ -48,30 +47,6 @@ class TestUM(CommonCountryTests, TestCase):
             ("2024-12-25", "Christmas Day"),
         )
 
-    def test_government_holidays(self):
-        self.assertHolidays(
-            HolidaysUM(categories=GOVERNMENT, years=2024),
-            ("2024-01-01", "New Year's Day"),
-            ("2024-01-15", "Birthday of Martin Luther King, Jr."),
-            ("2024-02-19", "Washington's Birthday"),
-            ("2024-05-27", "Memorial Day"),
-            ("2024-06-19", "Juneteenth National Independence Day"),
-            ("2024-07-04", "Independence Day"),
-            ("2024-09-02", "Labor Day"),
-            ("2024-10-14", "Columbus Day"),
-            ("2024-11-11", "Veterans Day"),
-            ("2024-11-28", "Thanksgiving Day"),
-            ("2024-12-25", "Christmas Day"),
-        )
-
-    def test_unofficial_holidays(self):
-        self.assertHolidays(
-            HolidaysUM(categories=UNOFFICIAL, years=2024),
-            ("2024-02-14", "Valentine's Day"),
-            ("2024-03-17", "Saint Patrick's Day"),
-            ("2024-10-31", "Halloween"),
-        )
-
     def test_l10n_default(self):
         self.assertLocalizedHolidays(
             ("2022-01-01", "New Year's Day"),
diff --git a/tests/countries/test_united_states_virgin_islands.py b/tests/countries/test_united_states_virgin_islands.py
index 8ffbb3b9..89cf4b7f 100644
--- a/tests/countries/test_united_states_virgin_islands.py
+++ b/tests/countries/test_united_states_virgin_islands.py
@@ -12,7 +12,6 @@
 
 from unittest import TestCase
 
-from holidays.constants import GOVERNMENT, UNOFFICIAL
 from holidays.countries.united_states_virgin_islands import (
     HolidaysVI,
     UnitedStatesVirginIslands,
@@ -47,30 +46,6 @@ class TestVI(CommonCountryTests, TestCase):
         self.assertHolidayName("Liberty Day", "2016-11-01")
         self.assertHolidayName("Christmas Second Day", "2016-12-26")
 
-    def test_government_holidays(self):
-        self.assertHolidays(
-            HolidaysVI(categories=GOVERNMENT, years=2024),
-            ("2024-01-01", "New Year's Day"),
-            ("2024-01-15", "Birthday of Martin Luther King, Jr."),
-            ("2024-02-19", "Washington's Birthday"),
-            ("2024-05-27", "Memorial Day"),
-            ("2024-06-19", "Juneteenth National Independence Day"),
-            ("2024-07-04", "Independence Day"),
-            ("2024-09-02", "Labor Day"),
-            ("2024-10-14", "Columbus Day"),
-            ("2024-11-11", "Veterans Day"),
-            ("2024-11-28", "Thanksgiving Day"),
-            ("2024-12-25", "Christmas Day"),
-        )
-
-    def test_unofficial_holidays(self):
-        self.assertHolidays(
-            HolidaysVI(categories=UNOFFICIAL, years=2024),
-            ("2024-02-14", "Valentine's Day"),
-            ("2024-03-17", "Saint Patrick's Day"),
-            ("2024-10-31", "Halloween"),
-        )
-
     def test_l10n_default(self):
         self.assertLocalizedHolidays(
             ("2022-01-01", "New Year's Day"),