Repository: vacanza/holidays
Pull request #2155 (2024-12-02 19:15:14)

v0.62
Version 0.62
============

Released December 2, 2024

- Introduce start/end year for entity (#2141 by @KJhellico)
- Add Guernsey holidays (#2135 by @PPsyrius)
- Update AZ holidays: add 2025 special holidays (#2154 by @KJhellico)
- Update Argentina holidays: Add 2025 Bridge Public Holidays (#2146 by @PPsyrius)
- Update CA holidays: Nunavut Day is NU public holiday since 2020 (#2143 by @KJhellico)
- Update Finland holidays: fix Independence Day appearing pre-1917 (#2145 by @PPsyrius)
- Update Paraguay holidays (#2151 by @KJhellico)
- Update Timor Leste holidays: Add 2024 Nov 29 Special Holiday (#2150 by @PPsyrius)
- Update pyproject.toml: clarify project summary (#2139 by @arkid15r)
- Add SECURITY.md (#2142 by @arkid15r)


Patch:
diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml
index ccfe7f17..3560c273 100644
--- a/.github/workflows/ci-cd.yml
+++ b/.github/workflows/ci-cd.yml
@@ -103,7 +103,7 @@ jobs:
           make test
 
       - name: Upload coverage to Codecov
-        uses: codecov/codecov-action@v4.6.0
+        uses: codecov/codecov-action@v5
         with:
           token: ${{ secrets.CODECOV_TOKEN }}
 
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index ca109061..303c4f46 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -23,7 +23,7 @@ repos:
           - --py39-plus
 
   - repo: https://github.com/astral-sh/ruff-pre-commit
-    rev: v0.7.4
+    rev: v0.8.1
     hooks:
       - id: ruff
       - id: ruff-format
@@ -39,7 +39,7 @@ repos:
           - docs/file_header.txt
 
   - repo: https://github.com/pycqa/bandit
-    rev: 1.7.10
+    rev: 1.8.0
     hooks:
       - id: bandit
         additional_dependencies:
diff --git a/CHANGES b/CHANGES
index b26fc16b..d10f335d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,19 @@
+Version 0.62
+============
+
+Released December 2, 2024
+
+- Introduce start/end year for entity (#2141 by @KJhellico)
+- Add Guernsey holidays (#2135 by @PPsyrius)
+- Update AZ holidays: add 2025 special holidays (#2154 by @KJhellico)
+- Update Argentina holidays: Add 2025 Bridge Public Holidays (#2146 by @PPsyrius)
+- Update CA holidays: Nunavut Day is NU public holiday since 2020 (#2143 by @KJhellico)
+- Update Finland holidays: fix Independence Day appearing pre-1917 (#2145 by @PPsyrius)
+- Update Paraguay holidays (#2151 by @KJhellico)
+- Update Timor Leste holidays: Add 2024 Nov 29 Special Holiday (#2150 by @PPsyrius)
+- Update pyproject.toml: clarify project summary (#2139 by @arkid15r)
+- Add SECURITY.md (#2142 by @arkid15r)
+
 Version 0.61
 ============
 
diff --git a/README.rst b/README.rst
index d257bdaa..4c2404aa 100644
--- a/README.rst
+++ b/README.rst
@@ -146,7 +146,7 @@ Available Countries
 .. _ISO 639-1 code: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
 .. _ISO 639-2 code: https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes
 
-We currently support 154 country codes. The standard way to refer to a country
+We currently support 155 country codes. The standard way to refer to a country
 is by using its `ISO 3166-1 alpha-2 code`_, the same used for domain names, and
 for a subdivision its `ISO 3166-2 code`_. Some countries have common or foreign
 names or abbreviations as aliases for their subdivisions. These are defined in
@@ -480,6 +480,11 @@ All other default values are highlighted with bold:
      -
      - en_US, **es**
      -
+   * - Guernsey
+     - GG
+     -
+     -
+     -
    * - Haiti
      - HT
      -
diff --git a/RELEASE.rst b/RELEASE.rst
index fcd1c21e..d94c3cb4 100644
--- a/RELEASE.rst
+++ b/RELEASE.rst
@@ -8,8 +8,11 @@ How to release a new version of Holidays
   - generate release notes by running ``make release-notes``
   - insert the command's output into the top of ``CHANGES`` file
     (see previous release notes for consistent formatting)
-  - commit the updated ``CHANGES`` file to ``dev`` branch with the following
-    commit message 'Finalize v<version>', e.g. 'Finalize v0.39'
+  - update the supported versions table at ``SECURITY.md`` file (the
+    table should contain the version being currently released)
+  - commit the updated ``CHANGES`` and ``SECURITY.md`` files to ``dev`` 
+    branch with the following commit message 'Finalize v<version>', 
+    e.g. 'Finalize v0.39'
   - push changes to https://github.com/vacanza/holidays ``dev`` branch
   - make sure the push related CI/CD jobs have been completed successfully
 
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 00000000..8f91016a
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,12 @@
+# Security Policy
+
+## Supported Versions
+
+| Version | Supported          |
+| ------- | ------------------ |
+| 0.62    | :white_check_mark: |
+| < 0.62  | :x:                |
+
+## Reporting a Vulnerability
+
+Please use [this form](https://github.com/vacanza/holidays/security/advisories/new) to report a security vulnerability.
diff --git a/holidays/constants.py b/holidays/constants.py
index d2ec9029..11cf37c8 100644
--- a/holidays/constants.py
+++ b/holidays/constants.py
@@ -54,3 +54,6 @@ CHRISTIAN = "christian"
 HEBREW = "hebrew"
 HINDU = "hindu"
 ISLAMIC = "islamic"
+
+DEFAULT_START_YEAR = 1901
+DEFAULT_END_YEAR = 2100
diff --git a/holidays/countries/__init__.py b/holidays/countries/__init__.py
index bb839fcf..3a49a6b6 100644
--- a/holidays/countries/__init__.py
+++ b/holidays/countries/__init__.py
@@ -72,6 +72,7 @@ from .greece import Greece, GR, GRC
 from .greenland import Greenland, GL, GRL
 from .guam import Guam, GU, GUM, HolidaysGU
 from .guatemala import Guatemala, GT, GUA
+from .guernsey import Guernsey, GG, GGY
 from .haiti import Haiti, HT, HTI
 from .honduras import Honduras, HN, HND
 from .hongkong import HongKong, HK, HKG
diff --git a/holidays/countries/albania.py b/holidays/countries/albania.py
index 8c612b37..5f261ca4 100644
--- a/holidays/countries/albania.py
+++ b/holidays/countries/albania.py
@@ -43,6 +43,8 @@ class Albania(
     # %s (observed, estimated).
     observed_estimated_label = tr("%s (ditë pushimi e shtyrë, e vlerësuar)")
     supported_languages = ("en_US", "sq", "uk")
+    # Law No. 7651 from 21.12.1992.
+    start_year = 1993
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -53,10 +55,6 @@ class Albania(
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Law No. 7651 from 21.12.1992.
-        if self._year <= 1992:
-            return None
-
         dts_observed = set()
 
         # New Year's Day.
diff --git a/holidays/countries/angola.py b/holidays/countries/angola.py
index 857f5e4f..3254ef4d 100644
--- a/holidays/countries/angola.py
+++ b/holidays/countries/angola.py
@@ -46,6 +46,8 @@ class Angola(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
     supported_languages = ("en_US", "pt_AO", "uk")
     # %s (observed).
     observed_label = tr("%s (ponte)")
+    # Decree #5/75.
+    start_year = 1975
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -68,10 +70,6 @@ class Angola(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
         return super()._add_observed(dt, **kwargs)
 
     def _populate_public_holidays(self):
-        # Decree #5/75.
-        if self._year <= 1974:
-            return None
-
         # New Year's Day.
         name = self.tr("Dia do Ano Novo")
         dt = self._add_new_years_day(name)
diff --git a/holidays/countries/argentina.py b/holidays/countries/argentina.py
index c1e34e0e..bc5508ba 100644
--- a/holidays/countries/argentina.py
+++ b/holidays/countries/argentina.py
@@ -33,16 +33,31 @@ class Argentina(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
     - Based on:
         https://es.wikipedia.org/wiki/Anexo:D%C3%ADas_feriados_en_Argentina
     - [Ley 24455] Belgrano and San Martin Day as third Monday
+        https://servicios.infoleg.gob.ar/infolegInternet/anexos/0-4999/782/norma.htm
     - [Ley 27399] - For 2018++
         https://www.argentina.gob.ar/normativa/nacional/ley-27399-281835/texto
     - [Decreto 1585/2010] - 2011-2013 Bridge Holidays, Movable Holidays Law
+        https://www.argentina.gob.ar/normativa/nacional/decreto-1585-2010-174391/texto
     - [Decreto 1768/2013] - 2014-2016 Bridge Holidays
+        https://www.argentina.gob.ar/normativa/nacional/decreto-1768-2013-222021/texto
     - [Decretos 52-80-923/2017] - 2017-2019 Bridge Holidays
+        https://www.argentina.gob.ar/normativa/nacional/decreto-52-2017-271094/texto
+        https://www.argentina.gob.ar/normativa/nacional/decreto-80-2017-271382/texto
+        https://www.argentina.gob.ar/normativa/nacional/decreto-923-2017-287145
     - [Decreto 717/2019] - 2020 Bridge Holidays
+        https://www.argentina.gob.ar/normativa/nacional/decreto-717-2019-330204/texto
     - [Decreto 297/2020] - Veteran Day moved due to Covid-19
+        https://www.argentina.gob.ar/normativa/nacional/decreto-297-2020-335741/texto
     - [Decreto 947/2020] - 2021 Bridge Holidays
+        https://www.argentina.gob.ar/normativa/nacional/decreto-947-2020-344620/texto
     - [Decreto 789/2021] - 2022 Bridge Holidays
+        https://www.argentina.gob.ar/normativa/nacional/decreto-789-2021-356678/texto
     - [Decreto 764/2022] - 2023 Bridge Holidays
+        https://www.argentina.gob.ar/normativa/nacional/decreto-764-2022-375264/texto
+    - [Decreto 106/2023] - 2024 Bridge Holidays
+        https://www.argentina.gob.ar/normativa/nacional/decreto-106-2023-395689/texto
+    - [Decreto 1017/2024] - 2025 Bridge Holidays
+        https://www.argentina.gob.ar/normativa/nacional/decreto-1027-2024-406417/texto
     - [Always Update Calendar Year Link]
         https://www.argentina.gob.ar/interior/feriados
         http://servicios.lanacion.com.ar/feriados
@@ -60,7 +75,8 @@ class Argentina(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
         https://servicios.lanacion.com.ar/app-mobile/feriados/2016
         https://servicios.lanacion.com.ar/app-mobile/feriados/2015
 
-        Movable Holidays Laws:
+    Movable Holidays Laws:
+
     - Decreto 1584/2010: 2010-11-03
         - AUG 17, OCT 12, NOV 20 Holidays will always be on MON
     - Decreto 52/2017: 2017-01-23 (Reconfirmed in Ley 27399)
@@ -73,6 +89,7 @@ class Argentina(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
     supported_languages = ("en_US", "es", "uk")
     # %s (observed).
     observed_label = tr("%s (observado)")
+    start_year = 1801
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -345,4 +362,9 @@ class ArgentinaStaticHolidays:
             (JUN, 21, arg_bridge_public_holiday),
             (OCT, 11, arg_bridge_public_holiday),
         ),
+        2025: (
+            (MAY, 2, arg_bridge_public_holiday),
+            (AUG, 15, arg_bridge_public_holiday),
+            (NOV, 21, arg_bridge_public_holiday),
+        ),
     }
diff --git a/holidays/countries/armenia.py b/holidays/countries/armenia.py
index 937e1081..2464008e 100644
--- a/holidays/countries/armenia.py
+++ b/holidays/countries/armenia.py
@@ -30,6 +30,7 @@ class Armenia(HolidayBase, ChristianHolidays, InternationalHolidays):
     country = "AM"
     default_language = "hy"
     supported_languages = ("en_US", "hy")
+    start_year = 1991
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self, JULIAN_CALENDAR)
@@ -37,9 +38,6 @@ class Armenia(HolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1990:
-            return None
-
         # New Year's Day.
         name = tr("Նոր տարվա օր")
         self._add_new_years_day(name)
diff --git a/holidays/countries/aruba.py b/holidays/countries/aruba.py
index 0d9ca52f..20662b53 100644
--- a/holidays/countries/aruba.py
+++ b/holidays/countries/aruba.py
@@ -32,6 +32,8 @@ class Aruba(HolidayBase, ChristianHolidays, InternationalHolidays):
     country = "AW"
     default_language = "pap_AW"
     supported_languages = ("en_US", "nl", "pap_AW", "uk")
+    # AUG 1947: Autonomous State status in the Kingdom of the Netherlands.
+    start_year = 1947
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -39,10 +41,6 @@ class Aruba(HolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # AUG 1947: Autonomous State status in the Kingdom of the Netherlands.
-        if self._year <= 1946:
-            return None
-
         # Aña Nobo.
         # Status: In-Use.
 
diff --git a/holidays/countries/australia.py b/holidays/countries/australia.py
index 2de0cf21..689aeb90 100644
--- a/holidays/countries/australia.py
+++ b/holidays/countries/australia.py
@@ -65,6 +65,7 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
         "Victoria": "VIC",
         "Western Australia": "WA",
     }
+    start_year = 1801
 
     @property
     def sovereign_birthday(self) -> str:
diff --git a/holidays/countries/azerbaijan.py b/holidays/countries/azerbaijan.py
index 4562f379..917215b8 100644
--- a/holidays/countries/azerbaijan.py
+++ b/holidays/countries/azerbaijan.py
@@ -25,9 +25,12 @@ from holidays.observed_holiday_base import (
 
 
 class Azerbaijan(ObservedHolidayBase, InternationalHolidays, IslamicHolidays, StaticHolidays):
-    # [1] https://en.wikipedia.org/wiki/Public_holidays_in_Azerbaijan
-    # [2] https://az.wikipedia.org/wiki/Az%C9%99rbaycan%C4%B1n_d%C3%B6vl%C9%99t_bayramlar%C4%B1_v%C9%99_x%C3%BCsusi_g%C3%BCnl%C9%99ri
-    # [3] https://www.sosial.gov.az/en/prod-calendar
+    """
+    References:
+        - https://en.wikipedia.org/wiki/Public_holidays_in_Azerbaijan
+        - https://az.wikipedia.org/wiki/Az%C9%99rbaycan%C4%B1n_d%C3%B6vl%C9%99t_bayramlar%C4%B1_v%C9%99_x%C3%BCsusi_g%C3%BCnl%C9%99ri
+        - https://www.sosial.gov.az/en/prod-calendar
+    """
 
     country = "AZ"
     default_language = "az"
@@ -39,6 +42,7 @@ class Azerbaijan(ObservedHolidayBase, InternationalHolidays, IslamicHolidays, St
     observed_estimated_label = tr("%s (müşahidə olunur, təxmini)")
     supported_categories = (PUBLIC, WORKDAY)
     supported_languages = ("az", "en_US", "uk")
+    start_year = 1990
 
     def __init__(self, *args, **kwargs):
         InternationalHolidays.__init__(self)
@@ -49,9 +53,6 @@ class Azerbaijan(ObservedHolidayBase, InternationalHolidays, IslamicHolidays, St
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         dts_observed = set()
         dts_non_observed = set()
         dts_bairami = set()
@@ -246,6 +247,21 @@ class AzerbaijanIslamicHolidays(_CustomIslamicHolidays):
 
 
 class AzerbaijanStaticHolidays:
+    """
+    Substituted holidays references:
+        - https://nk.gov.az/az/senedler/qerarlar/is-va-istirahat-gunlarinin-yerlarinin-dayisdirilmasi-haqqinda-5423
+        - https://nk.gov.az/az/senedler/qerarlar/is-va-istirahat-gunlarinin-yerlarinin--dayisdirilmasi-haqqinda-5982
+        - https://nk.gov.az/az/senedler/qerarlar/is-va-istirahat-gunlarinin-yerlarinin-dayisdirilmasi-haqqinda-6488
+        - https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-7047
+        - https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-7466
+        - https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-7576
+        - https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-7843
+        - https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-8332
+        - https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-8449
+    Special holidays references:
+        - https://www.msk.gov.az/en/elections/pages/municipal-elections/belediyye-29-01-2025
+    """
+
     eid_al_adha = tr("Qurban bayrami")
     # Substituted date format.
     substituted_date_format = tr("%d.%m.%Y")
@@ -255,6 +271,9 @@ class AzerbaijanStaticHolidays:
     # Presidential elections.
     presidential_elections = tr("Prezidenti seçkiləri")
 
+    # Municipal elections.
+    municipal_elections = tr("Bələdiyyə seçkiləri")
+
     special_public_holidays = {
         2011: (AUG, 29, AUG, 27),
         2013: (
@@ -266,8 +285,7 @@ class AzerbaijanStaticHolidays:
             (JAN, 6, DEC, 29, 2013),
         ),
         2018: (APR, 11, presidential_elections),
-        # Municipal elections.
-        2019: (DEC, 27, tr("Bələdiyyə seçkiləri")),
+        2019: (DEC, 27, municipal_elections),
         2020: (
             (MAR, 27, MAR, 29),
             (MAY, 27, MAY, 30),
@@ -295,6 +313,11 @@ class AzerbaijanStaticHolidays:
             (APR, 12, APR, 6),
             (NOV, 12, NOV, 16),
             (NOV, 13, NOV, 23),
+            (DEC, 30, DEC, 28),
+        ),
+        2025: (
+            (JAN, 3, DEC, 29, 2024),
+            (JAN, 29, municipal_elections),
         ),
     }
 
diff --git a/holidays/countries/bahamas.py b/holidays/countries/bahamas.py
index f7eb6e7c..17eeafa8 100644
--- a/holidays/countries/bahamas.py
+++ b/holidays/countries/bahamas.py
@@ -39,6 +39,8 @@ class Bahamas(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
 
     country = "BS"
     observed_label = "%s (observed)"
+    # Gained Independence on Jul 10, 1973.
+    start_year = 1974
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -48,10 +50,6 @@ class Bahamas(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Gained Independence on Jul 10, 1973.
-        if self._year <= 1973:
-            return None
-
         # New Year's Day.
         # Pre-2012 Observance:
         # - If TUE, New Year's Day (observed) prev MON.
diff --git a/holidays/countries/barbados.py b/holidays/countries/barbados.py
index 00c124b3..483eb471 100644
--- a/holidays/countries/barbados.py
+++ b/holidays/countries/barbados.py
@@ -33,6 +33,8 @@ class Barbados(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, St
 
     country = "BB"
     observed_label = "%s (observed)"
+    # Public Holidays Act Cap.352, 1968-12-30
+    start_year = 1969
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -42,10 +44,6 @@ class Barbados(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, St
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Public Holidays Act Cap.352, 1968-12-30
-        if self._year <= 1968:
-            return None
-
         # New Year's Day
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
diff --git a/holidays/countries/belarus.py b/holidays/countries/belarus.py
index d209f096..3794fa55 100644
--- a/holidays/countries/belarus.py
+++ b/holidays/countries/belarus.py
@@ -33,6 +33,8 @@ class Belarus(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
     country = "BY"
     default_language = "be"
     supported_languages = ("be", "en_US")
+    # The current set of holidays actual from 1998.
+    start_year = 1998
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self, JULIAN_CALENDAR)
@@ -41,10 +43,6 @@ class Belarus(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # The current set of holidays actual from 1998.
-        if self._year <= 1997:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Новы год"))
 
diff --git a/holidays/countries/belize.py b/holidays/countries/belize.py
index 3a943c9a..fc440492 100644
--- a/holidays/countries/belize.py
+++ b/holidays/countries/belize.py
@@ -30,6 +30,8 @@ class Belize(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
 
     country = "BZ"
     observed_label = "%s (observed)"
+    # Belize was granted independence on 21.09.1981.
+    start_year = 1982
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -42,10 +44,6 @@ class Belize(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Belize was granted independence on 21.09.1981.
-        if self._year <= 1981:
-            return None
-
         # New Year's Day.
         self._move_holiday(self._add_new_years_day("New Year's Day"))
 
diff --git a/holidays/countries/bolivia.py b/holidays/countries/bolivia.py
index 623f0d5a..76afdc02 100644
--- a/holidays/countries/bolivia.py
+++ b/holidays/countries/bolivia.py
@@ -51,6 +51,7 @@ class Bolivia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
         "S",  # Santa Cruz
         "T",  # Tarija
     )
+    start_year = 1825
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -61,9 +62,6 @@ class Bolivia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1824:
-            return None
-
         # New Year's Day.
         self._add_observed(self._add_new_years_day(tr("Año Nuevo")))
 
diff --git a/holidays/countries/botswana.py b/holidays/countries/botswana.py
index e898a17f..239cf78f 100644
--- a/holidays/countries/botswana.py
+++ b/holidays/countries/botswana.py
@@ -30,6 +30,7 @@ class Botswana(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, St
 
     country = "BW"
     observed_label = "%s (observed)"
+    start_year = 1966
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -40,9 +41,6 @@ class Botswana(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, St
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1965:
-            return None
-
         self._add_observed(self._add_new_years_day("New Year's Day"), rule=SUN_TO_NEXT_TUE)
         self._add_observed(self._add_new_years_day_two("New Year's Day Holiday"))
 
diff --git a/holidays/countries/brazil.py b/holidays/countries/brazil.py
index 501755bf..e79a6d16 100644
--- a/holidays/countries/brazil.py
+++ b/holidays/countries/brazil.py
@@ -92,6 +92,8 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
 
     supported_categories = (OPTIONAL, PUBLIC)
     supported_languages = ("en_US", "pt_BR", "uk")
+    # Decreto n. 155-B, de 14.01.1890
+    start_year = 1890
 
     def __init__(self, *args, **kwargs) -> None:
         ChristianHolidays.__init__(self)
@@ -99,10 +101,6 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Decreto n. 155-B, de 14.01.1890
-        if self._year <= 1889:
-            return None
-
         # Universal Fraternization Day.
         self._add_new_years_day(tr("Confraternização Universal"))
 
@@ -158,9 +156,6 @@ class Brazil(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
             self._add_christmas_day(tr("Natal"))
 
     def _populate_optional_holidays(self):
-        if self._year <= 1889:
-            return None
-
         # Carnival.
         name = tr("Carnaval")
         self._add_carnival_monday(name)
diff --git a/holidays/countries/brunei.py b/holidays/countries/brunei.py
index 9327613d..9737a90d 100644
--- a/holidays/countries/brunei.py
+++ b/holidays/countries/brunei.py
@@ -127,6 +127,8 @@ class Brunei(
     observed_estimated_label = tr("%s (diperhatikan, anggaran)")
     supported_languages = ("en_US", "ms", "th")
     weekend = {FRI, SUN}
+    # Available post-Independence from 1984 afterwards
+    start_year = 1984
 
     def __init__(self, *args, **kwargs):
         ChineseCalendarHolidays.__init__(self)
@@ -138,10 +140,6 @@ class Brunei(
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Available post-Independence from 1984 afterwards
-        if self._year <= 1983:
-            return None
-
         # Awal Tahun Masihi
         # Status: In-Use.
 
diff --git a/holidays/countries/bulgaria.py b/holidays/countries/bulgaria.py
index d6a75aff..df43b9ce 100644
--- a/holidays/countries/bulgaria.py
+++ b/holidays/countries/bulgaria.py
@@ -48,6 +48,7 @@ class Bulgaria(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
     observed_label = tr("%s (почивен ден)")
     supported_categories = (PUBLIC, SCHOOL)
     supported_languages = ("bg", "en_US", "uk")
+    start_year = 1990
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self, JULIAN_REVISED_CALENDAR)
@@ -65,9 +66,6 @@ class Bulgaria(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
                     self._add_observed(dt, name)
 
     def _populate_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         dts_observed = set()
 
         # New Year's Day.
@@ -129,9 +127,6 @@ class Bulgaria(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
             )
 
     def _populate_school_holidays(self):
-        if self._year <= 1989:
-            return None
-
         # National Awakening Day.
         self._add_holiday_nov_1(tr("Ден на народните будители"))
 
diff --git a/holidays/countries/burkina_faso.py b/holidays/countries/burkina_faso.py
index 52add844..94a05231 100644
--- a/holidays/countries/burkina_faso.py
+++ b/holidays/countries/burkina_faso.py
@@ -24,6 +24,9 @@ class BurkinaFaso(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
 
     country = "BF"
     observed_label = "%s (observed)"
+    # On 5 August 1960, Burkina Faso (Republic of Upper Volta at that time)
+    # gained independence from France.
+    start_year = 1961
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -33,11 +36,6 @@ class BurkinaFaso(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # On 5 August 1960, Burkina Faso (Republic of Upper Volta at that time)
-        # gained independence from France.
-        if self._year <= 1960:
-            return None
-
         # New Year's Day.
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
diff --git a/holidays/countries/burundi.py b/holidays/countries/burundi.py
index 1cfcf2cf..6277db6e 100644
--- a/holidays/countries/burundi.py
+++ b/holidays/countries/burundi.py
@@ -28,6 +28,7 @@ class Burundi(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Isl
 
     country = "BI"
     observed_label = "%s (observed)"
+    start_year = 1962
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -37,9 +38,6 @@ class Burundi(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Isl
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1961:
-            return None
-
         # New Year's Day
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
diff --git a/holidays/countries/cambodia.py b/holidays/countries/cambodia.py
index 966faa46..88393cc4 100644
--- a/holidays/countries/cambodia.py
+++ b/holidays/countries/cambodia.py
@@ -52,6 +52,8 @@ class Cambodia(HolidayBase, InternationalHolidays, StaticHolidays, ThaiCalendarH
     country = "KH"
     default_language = "km"
     supported_languages = ("en_US", "km", "th")
+    # Available post-Independence from 1993 afterwards
+    start_year = 1993
 
     def __init__(self, *args, **kwargs):
         InternationalHolidays.__init__(self)
@@ -60,10 +62,6 @@ class Cambodia(HolidayBase, InternationalHolidays, StaticHolidays, ThaiCalendarH
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Available post-Independence from 1993 afterwards
-        if self._year <= 1992:
-            return None
-
         # Fixed Holidays
 
         #  ទិវាចូលឆ្នាំសាកល
diff --git a/holidays/countries/cameroon.py b/holidays/countries/cameroon.py
index d68d01c6..0f4dc05e 100644
--- a/holidays/countries/cameroon.py
+++ b/holidays/countries/cameroon.py
@@ -33,6 +33,8 @@ class Cameroon(
 
     country = "CM"
     observed_label = "%s (observed)"
+    # On 1 January 1960, French Cameroun gained independence from France.
+    start_year = 1960
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -43,10 +45,6 @@ class Cameroon(
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # On 1 January 1960, French Cameroun gained independence from France.
-        if self._year <= 1959:
-            return None
-
         dts_observed = set()
 
         # New Year's Day.
diff --git a/holidays/countries/canada.py b/holidays/countries/canada.py
index ae62cafe..6247e0cc 100644
--- a/holidays/countries/canada.py
+++ b/holidays/countries/canada.py
@@ -37,6 +37,7 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
         - http://web2.gov.mb.ca/laws/statutes/ccsm/r120e.php
         - https://www2.gnb.ca/content/gnb/en/departments/elg/local_government/content/governance/content/days_of_rest_act.html
         - https://www.ontario.ca/document/your-guide-employment-standards-act-0/public-holidays
+        - https://www.gov.nu.ca/en/print/pdf/node/52266
         - https://www.officeholidays.com/countries/canada/
         - https://www.timeanddate.com/holidays/canada/
     """
@@ -62,6 +63,7 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
         "YT",
     )
     supported_languages = ("ar", "en_CA", "en_US", "fr", "th")
+    start_year = 1867
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -99,9 +101,6 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
         self._add_christmas_day(tr("Christmas Day"))
 
     def _populate_public_holidays(self):
-        if self._year <= 1866:
-            return None
-
         self._add_statutory_holidays()
 
         self._add_observed(self._christmas_day)
@@ -109,9 +108,6 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
     def _populate_government_holidays(self):
         """Holidays for federally regulated workplaces."""
 
-        if self._year <= 1866:
-            return None
-
         self._add_statutory_holidays()
 
         if self._year >= 1953:
@@ -141,9 +137,6 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
         )
 
     def _populate_optional_holidays(self):
-        if self._year <= 1866:
-            return None
-
         # Christmas Day.
         self._add_observed(
             self._add_christmas_day(tr("Christmas Day")), rule=SAT_SUN_TO_NEXT_MON_TUE
@@ -361,6 +354,10 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
             # Victoria Day.
             self._add_holiday_1st_mon_before_may_24(tr("Victoria Day"))
 
+        if self._year >= 2020:
+            # Nunavut Day.
+            self._add_holiday_jul_9(tr("Nunavut Day"))
+
         if self._year >= 1900:
             # Civic Holiday.
             self._add_holiday_1st_mon_of_aug(tr("Civic Holiday"))
@@ -376,8 +373,7 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
             self._add_remembrance_day(tr("Remembrance Day"))
 
     def _populate_subdiv_nu_optional_holidays(self):
-        if self._year >= 2000:
-            # Nunavut Day.
+        if 2000 <= self._year <= 2019:
             name = tr("Nunavut Day")
             if self._year == 2000:
                 self._add_holiday_apr_1(name)
diff --git a/holidays/countries/chad.py b/holidays/countries/chad.py
index 0c4ea459..2da7820d 100644
--- a/holidays/countries/chad.py
+++ b/holidays/countries/chad.py
@@ -32,6 +32,8 @@ class Chad(
 
     country = "TD"
     observed_label = "%s (observed)"
+    # On 11 August 1960, Chad gained independence from France.
+    start_year = 1961
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -42,10 +44,6 @@ class Chad(
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # On 11 August 1960, Chad gained independence from France.
-        if self._year <= 1960:
-            return None
-
         # New Year's Day.
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
diff --git a/holidays/countries/chile.py b/holidays/countries/chile.py
index d9d49cb1..4c08d74e 100644
--- a/holidays/countries/chile.py
+++ b/holidays/countries/chile.py
@@ -79,6 +79,7 @@ class Chile(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
     )
     supported_categories = (BANK, PUBLIC)
     supported_languages = ("en_US", "es", "uk")
+    start_year = 1915
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -89,9 +90,6 @@ class Chile(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1914:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Año Nuevo"))
         if self._year >= 2017:
diff --git a/holidays/countries/china.py b/holidays/countries/china.py
index 7ee9af62..ea532536 100644
--- a/holidays/countries/china.py
+++ b/holidays/countries/china.py
@@ -69,6 +69,8 @@ class China(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays,
     supported_categories = (PUBLIC, HALF_DAY)
     default_language = "zh_CN"
     supported_languages = ("en_US", "th", "zh_CN", "zh_TW")
+    # Proclamation of the People's Republic of China on Oct 1, 1949.
+    start_year = 1950
 
     def __init__(self, *args, **kwargs):
         ChineseCalendarHolidays.__init__(self)
@@ -79,10 +81,6 @@ class China(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays,
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Proclamation of the People's Republic of China on Oct 1, 1949.
-        if self._year <= 1949:
-            return None
-
         dts_observed = set()
 
         # 元旦 (simp.) / 新年 (trad.)
@@ -186,9 +184,6 @@ class China(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays,
 
     def _populate_half_day_holidays(self):
         # No in lieus are given for this category.
-        # Proclamation of the People's Republic of China on Oct 1, 1949.
-        if self._year <= 1949:
-            return None
 
         # International Women's Day.
         self._add_womens_day(tr("国际妇女节"))
diff --git a/holidays/countries/congo.py b/holidays/countries/congo.py
index 5c8b7efa..bc8357ff 100644
--- a/holidays/countries/congo.py
+++ b/holidays/countries/congo.py
@@ -31,6 +31,8 @@ class Congo(HolidayBase, ChristianHolidays, InternationalHolidays):
     country = "CG"
     default_language = "fr"
     supported_languages = ("en_US", "fr")
+    # Loi N° 2-94 of 1 March 1994.
+    start_year = 1994
 
     def __init__(self, *args, **kwargs) -> None:
         ChristianHolidays.__init__(self)
@@ -38,10 +40,6 @@ class Congo(HolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Loi N° 2-94 of 1 March 1994
-        if self._year <= 1993:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Jour de l'An"))
 
diff --git a/holidays/countries/croatia.py b/holidays/countries/croatia.py
index ed22e7cb..c4a82f9b 100644
--- a/holidays/countries/croatia.py
+++ b/holidays/countries/croatia.py
@@ -27,6 +27,7 @@ class Croatia(HolidayBase, ChristianHolidays, InternationalHolidays):
     country = "HR"
     default_language = "hr"
     supported_languages = ("en_US", "hr", "uk")
+    start_year = 1992
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -34,9 +35,6 @@ class Croatia(HolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1991:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Nova godina"))
 
diff --git a/holidays/countries/cuba.py b/holidays/countries/cuba.py
index 03556fa0..32ce1567 100644
--- a/holidays/countries/cuba.py
+++ b/holidays/countries/cuba.py
@@ -36,6 +36,8 @@ class Cuba(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
     # %s (observed).
     observed_label = tr("%s (observado)")
     supported_languages = ("en_US", "es", "uk")
+    # This calendar only works from 1959 onwards.
+    start_year = 1959
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -44,10 +46,6 @@ class Cuba(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # This calendar only works from 1959 onwards.
-        if self._year <= 1958:
-            return None
-
         # Liberation Day.
         jan_1 = self._add_holiday_jan_1(tr("Triunfo de la Revolución"))
         if self._year <= 2013:
diff --git a/holidays/countries/curacao.py b/holidays/countries/curacao.py
index 49725a97..5fd3b2d0 100644
--- a/holidays/countries/curacao.py
+++ b/holidays/countries/curacao.py
@@ -29,6 +29,8 @@ class Curacao(HolidayBase, ChristianHolidays, InternationalHolidays):
     default_language = "pap_CW"
     supported_categories = (HALF_DAY, PUBLIC)
     supported_languages = ("en_US", "nl", "pap_CW", "uk")
+    # 1954: Creation of the Netherlands Antilles.
+    start_year = 1954
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -36,10 +38,6 @@ class Curacao(HolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # 1954: Creation of the Netherlands Antilles.
-        if self._year <= 1953:
-            return None
-
         # Aña Nobo.
         # Status: In-Use.
 
@@ -136,9 +134,6 @@ class Curacao(HolidayBase, ChristianHolidays, InternationalHolidays):
         self._add_christmas_day_two(tr("Di dos dia di Pasku di Nasementu"))
 
     def _populate_half_day_holidays(self):
-        if self._year <= 1953:
-            return None
-
         # New Year's Eve.
         self._add_new_years_eve(tr("Vispu di Aña Nobo"))
 
diff --git a/holidays/countries/cyprus.py b/holidays/countries/cyprus.py
index f3aac8a1..42563430 100644
--- a/holidays/countries/cyprus.py
+++ b/holidays/countries/cyprus.py
@@ -31,6 +31,7 @@ class Cyprus(HolidayBase, ChristianHolidays, InternationalHolidays):
     default_language = "el"
     supported_categories = (BANK, OPTIONAL, PUBLIC)
     supported_languages = ("el", "en_CY", "en_US", "uk")
+    start_year = 1961
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self, JULIAN_REVISED_CALENDAR)
@@ -38,9 +39,6 @@ class Cyprus(HolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1960:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Πρωτοχρονιά"))
 
@@ -88,16 +86,10 @@ class Cyprus(HolidayBase, ChristianHolidays, InternationalHolidays):
         self._add_christmas_day_two(tr("Επομένη Χριστουγέννων"))
 
     def _populate_bank_holidays(self):
-        if self._year <= 1960:
-            return None
-
         # Easter Tuesday.
         self._add_easter_tuesday(tr("Τρίτη της Διακαινησίμου"))
 
     def _populate_optional_holidays(self):
-        if self._year <= 1960:
-            return None
-
         # Holy Saturday.
         self._add_holy_saturday(tr("Μεγάλο Σάββατο"))
 
diff --git a/holidays/countries/djibouti.py b/holidays/countries/djibouti.py
index a9338122..0b516eb2 100644
--- a/holidays/countries/djibouti.py
+++ b/holidays/countries/djibouti.py
@@ -24,6 +24,8 @@ class Djibouti(HolidayBase, ChristianHolidays, IslamicHolidays, InternationalHol
     estimated_label = tr("%s (estimé)")
     supported_languages = ("ar", "en_US", "fr")
     weekend = {FRI, SAT}
+    # On 27 June 1977, Djibouti gained independence from France.
+    start_year = 1978
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -32,10 +34,6 @@ class Djibouti(HolidayBase, ChristianHolidays, IslamicHolidays, InternationalHol
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # On 27 June 1977, Djibouti gained independence from France.
-        if self._year <= 1977:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Nouvel an"))
 
diff --git a/holidays/countries/dominica.py b/holidays/countries/dominica.py
index aeb36bc2..f3174828 100644
--- a/holidays/countries/dominica.py
+++ b/holidays/countries/dominica.py
@@ -39,6 +39,8 @@ class Dominica(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, St
 
     country = "DM"
     observed_label = "%s (observed)"
+    # Public Holidays Act, L.I. 12 of 1990 Amendment.
+    start_year = 1990
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -48,10 +50,6 @@ class Dominica(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, St
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Public Holidays Act, L.I. 12 of 1990 Amendment.
-        if self._year <= 1989:
-            return None
-
         # New Year's Day.
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
diff --git a/holidays/countries/dominican_republic.py b/holidays/countries/dominican_republic.py
index d0a02c4b..c3cc4404 100644
--- a/holidays/countries/dominican_republic.py
+++ b/holidays/countries/dominican_republic.py
@@ -30,6 +30,8 @@ class DominicanRepublic(ObservedHolidayBase, ChristianHolidays, InternationalHol
     country = "DO"
     default_language = "es"
     supported_languages = ("en_US", "es", "uk")
+    # Law No. 139-97 - Holidays Dominican Republic (Jun 27, 1997).
+    start_year = 1998
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -38,10 +40,6 @@ class DominicanRepublic(ObservedHolidayBase, ChristianHolidays, InternationalHol
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Law No. 139-97 - Holidays Dominican Republic (Jun 27, 1997).
-        if self._year <= 1997:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Año Nuevo"))
 
diff --git a/holidays/countries/eswatini.py b/holidays/countries/eswatini.py
index d6396335..81768359 100644
--- a/holidays/countries/eswatini.py
+++ b/holidays/countries/eswatini.py
@@ -25,6 +25,7 @@ class Eswatini(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, St
 
     country = "SZ"
     observed_label = "%s (observed)"
+    start_year = 1939
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -35,10 +36,6 @@ class Eswatini(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, St
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Observed since 1939
-        if self._year <= 1938:
-            return None
-
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
         self._add_good_friday("Good Friday")
diff --git a/holidays/countries/ethiopia.py b/holidays/countries/ethiopia.py
index 63da9f10..674ee9ed 100644
--- a/holidays/countries/ethiopia.py
+++ b/holidays/countries/ethiopia.py
@@ -31,6 +31,7 @@ class Ethiopia(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHol
     # %s (estimated).
     estimated_label = tr("%s (ግምት)")
     supported_languages = ("am", "ar", "en_US")
+    start_year = 1898
 
     def _is_leap_year(self):
         """
@@ -49,9 +50,6 @@ class Ethiopia(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHol
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1897:
-            return None
-
         # Christmas Day.
         self._add_christmas_day(tr("ገና"))
 
diff --git a/holidays/countries/finland.py b/holidays/countries/finland.py
index 40ae4359..6797cc1f 100644
--- a/holidays/countries/finland.py
+++ b/holidays/countries/finland.py
@@ -28,12 +28,14 @@ class Finland(HolidayBase, ChristianHolidays, InternationalHolidays):
         - https://en.wikipedia.org/wiki/Flag_flying_days_in_Finland#Customary_flag_days
         - https://intermin.fi/en/flag-and-arms/flag-flying-days
         - https://intermin.fi/en/flag-and-arms/flag-days/2024
+        - https://en.wikipedia.org/wiki/Independence_Day_(Finland)
     """
 
     country = "FI"
     default_language = "fi"
     supported_languages = ("en_US", "fi", "sv_FI", "uk")
     supported_categories = (PUBLIC, UNOFFICIAL)
+    start_year = 1853
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -90,8 +92,9 @@ class Finland(HolidayBase, ChristianHolidays, InternationalHolidays):
         else:
             self._add_holiday_nov_1(name)
 
-        # Independence Day.
-        self._add_holiday_dec_6(tr("Itsenäisyyspäivä"))
+        if self._year >= 1917:
+            # Independence Day.
+            self._add_holiday_dec_6(tr("Itsenäisyyspäivä"))
 
         # Christmas Eve.
         self._add_christmas_eve(tr("Jouluaatto"))
diff --git a/holidays/countries/france.py b/holidays/countries/france.py
index 28623497..e0786b90 100644
--- a/holidays/countries/france.py
+++ b/holidays/countries/france.py
@@ -62,6 +62,7 @@ class France(HolidayBase, ChristianHolidays, InternationalHolidays):
         "Saint-Martin",
         "Wallis-et-Futuna",
     )
+    start_year = 1801
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
diff --git a/holidays/countries/gabon.py b/holidays/countries/gabon.py
index 8ac8aeab..26f6d23d 100644
--- a/holidays/countries/gabon.py
+++ b/holidays/countries/gabon.py
@@ -26,6 +26,8 @@ class Gabon(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolida
     """
 
     country = "GA"
+    # On 17 August 1960, Gabon gained independence from France.
+    start_year = 1961
 
     def __init__(self, *args, **kwargs) -> None:
         ChristianHolidays.__init__(self)
@@ -34,10 +36,6 @@ class Gabon(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolida
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # On 17 August 1960, Gabon gained independence from France.
-        if self._year <= 1960:
-            return None
-
         # New Year's Day.
         self._add_new_years_day("New Year's Day")
 
diff --git a/holidays/countries/georgia.py b/holidays/countries/georgia.py
index d6803436..5b43f75c 100644
--- a/holidays/countries/georgia.py
+++ b/holidays/countries/georgia.py
@@ -32,6 +32,7 @@ class Georgia(HolidayBase, ChristianHolidays, InternationalHolidays):
     supported_categories = (GOVERNMENT, PUBLIC)
     default_language = "ka"
     supported_languages = ("en_US", "ka", "uk")
+    start_year = 1991
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self, JULIAN_CALENDAR)
@@ -40,9 +41,6 @@ class Georgia(HolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1990:
-            return None
-
         # New Year's Day.
         name = tr("ახალი წელი")
         self._add_new_years_day(name)
diff --git a/holidays/countries/germany.py b/holidays/countries/germany.py
index e4f6cc70..9a61b958 100644
--- a/holidays/countries/germany.py
+++ b/holidays/countries/germany.py
@@ -95,6 +95,7 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
         "Thüringen": "TH",
     }
     _deprecated_subdivisions = ("BYP",)
+    start_year = 1990
 
     def __init__(self, *args, **kwargs) -> None:
         ChristianHolidays.__init__(self)
@@ -103,9 +104,6 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 1991:
             # New Year's Day.
             self._add_new_years_day(tr("Neujahr"))
@@ -142,9 +140,6 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
             self._populate_subdiv_by_public_holidays()
 
     def _populate_subdiv_bb_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 1991:
             # Easter Sunday.
             self._add_easter_sunday(tr("Ostersonntag"))
@@ -156,17 +151,11 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
         self._add_holiday_oct_31(tr("Reformationstag"))
 
     def _populate_subdiv_be_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 2019:
             # International Women's Day.
             self._add_womens_day(tr("Internationaler Frauentag"))
 
     def _populate_subdiv_bw_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 1991:
             # Epiphany.
             self._add_epiphany_day(tr("Heilige Drei Könige"))
@@ -178,9 +167,6 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
         self._add_all_saints_day(tr("Allerheiligen"))
 
     def _populate_subdiv_by_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 1991:
             self._add_epiphany_day(tr("Heilige Drei Könige"))
             self._add_corpus_christi_day(tr("Fronleichnam"))
@@ -188,78 +174,49 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
         self._add_all_saints_day(tr("Allerheiligen"))
 
     def _populate_subdiv_by_catholic_holidays(self):
-        if self._year <= 1990:
-            return None
-
-        # Assumption Day.
-        self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
+        if self._year >= 1991:
+            # Assumption Day.
+            self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
 
     def _populate_subdiv_hb_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 2018:
             self._add_holiday_oct_31(tr("Reformationstag"))
 
     def _populate_subdiv_he_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 1991:
             self._add_corpus_christi_day(tr("Fronleichnam"))
 
     def _populate_subdiv_hh_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 2018:
             self._add_holiday_oct_31(tr("Reformationstag"))
 
     def _populate_subdiv_mv_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 2023:
             self._add_womens_day(tr("Internationaler Frauentag"))
 
         self._add_holiday_oct_31(tr("Reformationstag"))
 
     def _populate_subdiv_ni_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 2018:
             self._add_holiday_oct_31(tr("Reformationstag"))
 
     def _populate_subdiv_nw_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 1991:
             self._add_corpus_christi_day(tr("Fronleichnam"))
 
         self._add_all_saints_day(tr("Allerheiligen"))
 
     def _populate_subdiv_rp_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 1991:
             self._add_corpus_christi_day(tr("Fronleichnam"))
 
         self._add_all_saints_day(tr("Allerheiligen"))
 
     def _populate_subdiv_sh_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 2018:
             self._add_holiday_oct_31(tr("Reformationstag"))
 
     def _populate_subdiv_sl_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 1991:
             self._add_corpus_christi_day(tr("Fronleichnam"))
             self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
@@ -267,27 +224,18 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
         self._add_all_saints_day(tr("Allerheiligen"))
 
     def _populate_subdiv_sn_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         self._add_holiday_oct_31(tr("Reformationstag"))
 
         if self._year >= 1995:
             self._add_holiday_1st_wed_before_nov_22(tr("Buß- und Bettag"))
 
     def _populate_subdiv_st_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 1991:
             self._add_epiphany_day(tr("Heilige Drei Könige"))
 
         self._add_holiday_oct_31(tr("Reformationstag"))
 
     def _populate_subdiv_th_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         if self._year >= 2019:
             # World Children's Day.
             self._add_holiday_sep_20(tr("Weltkindertag"))
diff --git a/holidays/countries/ghana.py b/holidays/countries/ghana.py
index 324ad587..ba02b420 100644
--- a/holidays/countries/ghana.py
+++ b/holidays/countries/ghana.py
@@ -28,6 +28,7 @@ class Ghana(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Islam
     estimated_label = "%s (estimated)"
     observed_label = "%s (observed)"
     observed_estimated_label = "%s (observed, estimated)"
+    start_year = 1957
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -37,10 +38,6 @@ class Ghana(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Islam
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Holidays observed since 1957
-        if self._year <= 1956:
-            return None
-
         # New Year's Day
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
diff --git a/holidays/countries/guernsey.py b/holidays/countries/guernsey.py
new file mode 100644
index 00000000..cdc16a5d
--- /dev/null
+++ b/holidays/countries/guernsey.py
@@ -0,0 +1,328 @@
+#  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 AUTHORS 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 datetime import date
+from typing import Optional
+
+from holidays.calendars.gregorian import JAN, APR, MAY, JUN, JUL, SEP, OCT, DEC
+from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
+from holidays.observed_holiday_base import (
+    ObservedHolidayBase,
+    SAT_SUN_TO_NEXT_WORKDAY,
+    SUN_TO_NEXT_WORKDAY,
+)
+
+
+class Guernsey(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
+    """
+    References:
+      - https://en.wikipedia.org/wiki/Public_holidays_in_Guernsey
+      - https://guernseylegalresources.gg/ordinances/guernsey-bailiwick/p/public-holidays/
+      - https://www.thegazette.co.uk/all-notices
+    Checked with:
+      - https://www.gov.gg/holidaydates
+
+    His/Her Majesty's Birthday pre-1946 is cross-checked with The London Gazette's Record,
+    Specifically as "Home Station" entry under King's Birthday declaration lists.
+
+    Since 1955, if a bank holiday is on a sunday, a substitute weekday becomes a bank holiday,
+    normally the following Monday. From 2009 onwards this also applies to saturday as well.
+    """
+
+    country = "GG"
+    observed_label = "%s (substitute day)"
+    # Ordonnance relative aux Jours Fériés, 1909.
+    start_year = 1909
+
+    def __init__(self, *args, **kwargs):
+        ChristianHolidays.__init__(self)
+        InternationalHolidays.__init__(self)
+        StaticHolidays.__init__(self, GuernseyStaticHolidays)
+        kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_WORKDAY)
+        kwargs.setdefault("observed_since", 1955)
+        ObservedHolidayBase.__init__(self, *args, **kwargs)
+
+    def _add_observed(self, dt: date, **kwargs) -> tuple[bool, Optional[date]]:
+        # Prior to 2009, in-lieu are only given for Sundays.
+        # https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=55179
+        kwargs.setdefault(
+            "rule", SUN_TO_NEXT_WORKDAY if dt < date(2009, DEC, 15) else self._observed_rule
+        )
+        return super()._add_observed(dt, **kwargs)
+
+    def _populate_public_holidays(self) -> None:
+        # New Year's Day
+        # Le jour de l'An
+
+        # New Year's Day.
+        self._add_observed(self._add_new_years_day("New Year's Day"))
+
+        # Good Friday
+        # Vendredi Saint
+
+        # Good Friday.
+        self._add_good_friday("Good Friday")
+
+        # Easter Monday
+        # Le Lundi de Pâques
+
+        # Easter Monday.
+        self._add_easter_monday("Easter Monday")
+
+        # May Day
+        # (No official Guernésiais translation available)
+        # Started in 1980 for Guernsey.
+        # Moved to May 8 specifically for 1995 and 2020.
+
+        if self._year >= 1980:
+            # May Day Bank Holiday
+            name = "May Day Bank Holiday"
+            if self._year in {1995, 2020}:
+                self._add_holiday_may_8(name)
+            else:
+                self._add_holiday_1st_mon_of_may(name)
+
+        # Spring bank holiday
+        # (No official Guernésiais translation available)
+        # Replaced Whit Monday in 1967, 1970, 1973, 1974, 1975, 1976.
+        # No observance in 1977-1978. Properly established from 1979 onwards.
+        # Moved for Queen Elizabeth II's Jubilee Dates in 2002, 2012, and 2022.
+
+        if self._year in {1967, 1970} or 1973 <= self._year <= 1976 or self._year >= 1979:
+            spring_bank_dates = {
+                2002: (JUN, 4),
+                2012: (JUN, 4),
+                2022: (JUN, 2),
+            }
+            # Spring Bank Holiday
+            name = "Spring Bank Holiday"
+            if self._year in spring_bank_dates:
+                self._add_holiday(name, spring_bank_dates[self._year])
+            else:
+                self._add_holiday_last_mon_of_may(name)
+
+        # Whit Monday
+        # Le lundi de Pentecôte
+        # Replaced by Spring Bank Holiday in 1967, 1970, 1973, 1974, 1975, 1976.
+        # Fully Removed in 1977.
+
+        if self._year <= 1966 or self._year in {1968, 1969, 1971, 1972}:
+            # Whit Monday.
+            self._add_whit_monday("Whit Monday")
+
+        # His/Her Majesty's Birthday
+        # La jour fixé pour la célébration du jour de naissanee de Sa Majesté
+        # Special Non-Observance Decree was issued in 1940.
+        # This was fully replaced by Liberation Day in 1947.
+
+        if self._year <= 1946:
+            his_majesty_birth_dates = {
+                # Edward VII (MAY/JUN observance).
+                1909: (JUN, 25),  # (NOV, 9) for overseas.
+                # George V.
+                1910: (JUN, 24),  # (NOV, 9) for overseas; No decree cancelled Edward VII ones.
+                1911: (MAY, 27),  # (JUN, 3) for overseas.
+                1912: (JUN, 14),  # (JUN, 3) for overseas.
+                1913: (JUN, 3),
+                1914: (JUN, 24),  # Specifically held on the 24th on Guernsey, is 22nd elsewhere.
+                # Not observed in 1915-1918 due to WW1.
+                1919: (JUN, 3),
+                1920: (JUN, 5),  # (JUN, 3) for overseas.
+                1921: (JUN, 4),  # (JUN, 3) for overseas.
+                1922: (JUN, 3),
+                1923: (JUN, 2),
+                1924: (JUN, 3),
+                1925: (JUN, 3),
+                1926: (JUN, 5),
+                1927: (JUN, 3),
+                1928: (JUN, 4),
+                1929: (JUN, 3),
+                1930: (JUN, 3),
+                1931: (JUN, 3),
+                1932: (JUN, 3),
+                1933: (JUN, 3),
+                1934: (JUN, 4),
+                1935: (JUN, 3),
+                # Edward VIII.
+                1936: (JUN, 23),
+                # George VI.
+                1937: (JUN, 9),
+                1938: (JUN, 9),
+                1939: (JUN, 8),
+                # Not observed in 1940-1941 due to WW2.
+                # Although this was only de jure cancelled in 1940 for Guernsey.
+                1942: (JUN, 11),
+                1943: (JUN, 2),
+                1944: (JUN, 8),
+                1945: (JUN, 14),
+                1946: (JUN, 13),
+            }
+            if self._year in his_majesty_birth_dates:
+                # His Majesty's Birthday.
+                self._add_holiday("His Majesty's Birthday", his_majesty_birth_dates[self._year])
+
+        # Summer Bank Holiday
+        # Le premier Lundi du mois d'Août
+        # Current Pattern started in 1965. Was initially on first Monday of August for Guernsey.
+        # Briefly as first Monday of September between 1968-1969 and no observance for 1977-1978.
+
+        # Summer Bank Holiday.
+        summer_bank_holiday = "Summer Bank Holiday"
+        if self._year <= 1976 or self._year >= 1979:
+            if 1968 <= self._year <= 1969:
+                self._add_holiday_1st_mon_of_sep(summer_bank_holiday)
+            elif self._year >= 1965:
+                self._add_holiday_last_mon_of_aug(summer_bank_holiday)
+            else:
+                self._add_holiday_1st_mon_of_aug(summer_bank_holiday)
+
+        # Christmas Day
+        # Le jour de Noël
+
+        # Christmas Day
+        christmas_day = self._add_christmas_day("Christmas Day")
+
+        # Boxing Day
+        # Le premier jour ouvrier après le jour de Noël
+
+        # Boxing Day
+        boxing_day = self._add_christmas_day_two("Boxing Day")
+
+        self._add_observed(christmas_day)
+        self._add_observed(boxing_day)
+
+        # Guernsey exclusive holidays
+
+        # Liberation Day
+        # Le jour fixé par les Etats pour la célébration de la Libération de cette Ile
+        # de l'occupation allemande par les Forces Britannique
+        # Started in 1946 for Guernsey. Fully replaced HM Birthdays in 1947. This has no in-lieus.
+        # Specifically moved to May 10 in 2010.
+        # Unlike Jersey this wasn't moved in 2021.
+
+        if self._year >= 1946:
+            liberation_dates = {
+                2010: (MAY, 10),
+            }
+            # Liberation Day.
+            name = "Liberation Day"
+            if self._year in liberation_dates:
+                self._add_holiday(name, liberation_dates[self._year])
+            else:
+                self._add_holiday_may_9(name)
+
+
+class GG(Guernsey):
+    pass
+
+
+class GGY(Guernsey):
+    pass
+
+
+class GuernseyStaticHolidays:
+    """
+    References:
+      - https://www.gov.gg/holidaydates
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=52182
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=52183
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=52184
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=52185
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=52188
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=52189
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=52631
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=55175
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=55176
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=55177
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=55179
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=55180
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=55183
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=55185
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=55505
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=57425
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=60605
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=60606
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=60607
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=60608
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=60613
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=60614
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=79939
+      - https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=83147
+      - https://www.bbc.com/news/world-europe-guernsey-62864318
+      - https://www.bbc.co.uk/news/articles/c1441ddn87po
+
+    All "jour de relâche" entries are translated as special day off instead.
+
+    While there's no source for Queen Elizabeth II's Silver Jubilee being observed
+    by Guernsey - it's safe to assume such holiday was declared.
+    """
+
+    # Special Day Off.
+    special_day_off = "Special Day Off"
+
+    # The visit of Her Majesty Queen Elizabeth II.
+    elizabeth_2_royal_visit = "The visit of Her Majesty Queen Elizabeth II"
+
+    # Millenium Celebrations.
+    millenium_celebrations = "Millennium Celebrations"
+
+    # New Year's Day.
+    new_years_day_in_lieu = "New Year's Day"
+
+    # Christmas Day.
+    christmas_day_in_lieu = "Christmas Day"
+
+    # Boxing Day.
+    boxing_day_in_lieu = "Boxing Day"
+
+    special_public_holidays = {
+        1930: (OCT, 10, special_day_off),
+        1935: (MAY, 6, "Silver Jubilee of King George V"),
+        1937: (MAY, 12, "The Coronation of King George VI and Queen Elizabeth"),
+        1939: (SEP, 4, special_day_off),
+        1949: (SEP, 19, special_day_off),
+        1953: (JUN, 2, "The Coronation of Queen Elizabeth II"),
+        1957: (JUL, 26, elizabeth_2_royal_visit),
+        1977: (JUN, 7, "Silver Jubilee of Elizabeth II"),
+        1978: (JUN, 28, elizabeth_2_royal_visit),
+        1981: (JUL, 29, "Wedding of Charles and Diana"),
+        1989: (MAY, 23, elizabeth_2_royal_visit),
+        1999: (
+            (DEC, 28, millenium_celebrations),
+            (DEC, 31, millenium_celebrations),
+        ),
+        2000: (JAN, 3, millenium_celebrations),
+        2001: (JUL, 12, elizabeth_2_royal_visit),
+        2002: (JUN, 3, "Golden Jubilee of Elizabeth II"),
+        2011: (APR, 29, "Wedding of William and Catherine"),
+        2012: (JUN, 5, "Diamond Jubilee of Elizabeth II"),
+        2022: (
+            (JUN, 3, "Queen's Platinum Jubilee Bank Holiday"),
+            (SEP, 19, "State Funeral of Queen Elizabeth II"),
+        ),
+        2023: (MAY, 8, "Extra Public Holiday for the Coronation of King Charles III"),
+        2024: (JUL, 16, "The visit of His Majesty King Charles III and Queen Camilla"),
+    }
+    special_public_holidays_observed = {
+        1932: (DEC, 27, christmas_day_in_lieu),
+        1933: (JAN, 2, new_years_day_in_lieu),
+        1938: (DEC, 27, christmas_day_in_lieu),
+        1939: (JAN, 2, new_years_day_in_lieu),
+        1981: (DEC, 28, boxing_day_in_lieu),
+        1982: (DEC, 28, christmas_day_in_lieu),
+        1983: (JAN, 3, new_years_day_in_lieu),
+        1987: (DEC, 28, boxing_day_in_lieu),
+        1993: (DEC, 28, christmas_day_in_lieu),
+        1994: (JAN, 3, new_years_day_in_lieu),
+        2004: (DEC, 28, christmas_day_in_lieu),
+        2005: (JAN, 3, new_years_day_in_lieu),
+    }
diff --git a/holidays/countries/haiti.py b/holidays/countries/haiti.py
index a4b5ad68..430d1567 100644
--- a/holidays/countries/haiti.py
+++ b/holidays/countries/haiti.py
@@ -29,6 +29,8 @@ class Haiti(HolidayBase, ChristianHolidays, InternationalHolidays):
     supported_categories = (OPTIONAL, PUBLIC)
     default_language = "fr_HT"
     supported_languages = ("en_US", "es", "fr_HT", "ht")
+    # 1987 Constitution.
+    start_year = 1987
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -36,10 +38,6 @@ class Haiti(HolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # 1987 Constitution.
-        if self._year <= 1986:
-            return None
-
         # ARTICLE 275.1 : National Holidays.
         # Both Battle of Vertieres Day and Armed Forces Day are on Nov 18, declared discretely.
 
@@ -100,10 +98,6 @@ class Haiti(HolidayBase, ChristianHolidays, InternationalHolidays):
         self._add_christmas_day(tr("Noël"))
 
     def _populate_optional_holidays(self):
-        # 1987 Constitution.
-        if self._year <= 1986:
-            return None
-
         # Ash Wednesday.
         self._add_ash_wednesday(tr("Mercredi des Cendres"))
 
diff --git a/holidays/countries/hongkong.py b/holidays/countries/hongkong.py
index 8d02f8c9..e1bbed80 100644
--- a/holidays/countries/hongkong.py
+++ b/holidays/countries/hongkong.py
@@ -68,6 +68,8 @@ class HongKong(
     observed_label = "%s (observed)"
     supported_categories = (OPTIONAL, PUBLIC)
     weekend = {SUN}
+    # Current set of holidays actually valid since 1946
+    start_year = 1946
 
     def __init__(self, *args, **kwargs):
         ChineseCalendarHolidays.__init__(self)
@@ -238,9 +240,6 @@ class HongKong(
             self._add_observed(self._add_christmas_day("Christmas Day"))
 
     def _populate_optional_holidays(self):
-        if self._year <= 1945:
-            return None
-
         # General Holidays.
 
         # The first day of January.
diff --git a/holidays/countries/indonesia.py b/holidays/countries/indonesia.py
index 18c01c5e..8c7e3ff2 100644
--- a/holidays/countries/indonesia.py
+++ b/holidays/countries/indonesia.py
@@ -60,6 +60,7 @@ class Indonesia(
     observed_estimated_label = tr("Pegangti %s (perkiraan)")
     supported_languages = ("en_US", "id", "th", "uk")
     supported_categories = (GOVERNMENT, PUBLIC)
+    start_year = 1946
 
     def __init__(self, *args, **kwargs):
         BuddhistCalendarHolidays.__init__(self, cls=IndonesiaBuddhistHolidays, show_estimated=True)
@@ -71,9 +72,6 @@ class Indonesia(
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1945:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Tahun Baru Masehi"))
 
diff --git a/holidays/countries/iran.py b/holidays/countries/iran.py
index d49d593a..db7595e3 100644
--- a/holidays/countries/iran.py
+++ b/holidays/countries/iran.py
@@ -28,6 +28,7 @@ class Iran(HolidayBase, IslamicHolidays, PersianCalendarHolidays):
     # %s (estimated).
     estimated_label = tr("(تخمین زده) %s")
     supported_languages = ("en_US", "fa")
+    start_year = 1980
 
     def __init__(self, *args, **kwargs):
         IslamicHolidays.__init__(self)
@@ -35,9 +36,6 @@ class Iran(HolidayBase, IslamicHolidays, PersianCalendarHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1979:
-            return None
-
         # Persian New Year.
         name = tr("نوروز")
         self._add_nowruz_day(name)
diff --git a/holidays/countries/ireland.py b/holidays/countries/ireland.py
index 71c3235f..036a8814 100644
--- a/holidays/countries/ireland.py
+++ b/holidays/countries/ireland.py
@@ -23,6 +23,7 @@ class Ireland(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
     """
 
     country = "IE"
+    start_year = 1872
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -31,9 +32,6 @@ class Ireland(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1871:
-            return None
-
         # New Year's Day.
         if self._year >= 1975:
             self._add_new_years_day("New Year's Day")
diff --git a/holidays/countries/israel.py b/holidays/countries/israel.py
index c4f3f950..8fe08f6a 100644
--- a/holidays/countries/israel.py
+++ b/holidays/countries/israel.py
@@ -54,6 +54,7 @@ class Israel(ObservedHolidayBase):
     supported_categories = (OPTIONAL, PUBLIC, SCHOOL)
     supported_languages = ("en_US", "he", "uk")
     weekend = {FRI, SAT}
+    start_year = 1948
 
     def __init__(self, *args, **kwargs):
         kwargs.setdefault("observed_rule", FRI_TO_PREV_THU + SAT_TO_PREV_THU)
@@ -63,12 +64,6 @@ class Israel(ObservedHolidayBase):
         return _HebrewLunisolar._get_holiday(holiday, self._year)
 
     def _populate_public_holidays(self):
-        if self._year <= 1947:
-            return None
-
-        if self._year >= 2101:
-            raise NotImplementedError
-
         # Rosh Hashanah (New Year).
         name = tr("ראש השנה")
         rosh_hashanah_dt = self._get_holiday(ROSH_HASHANAH)
@@ -105,12 +100,6 @@ class Israel(ObservedHolidayBase):
         self._add_holiday(tr("שבועות"), self._get_holiday(SHAVUOT))
 
     def _populate_optional_holidays(self):
-        if self._year <= 1947:
-            return None
-
-        if self._year >= 2101:
-            raise NotImplementedError
-
         sukkot_dt = self._get_holiday(SUKKOT)
         for offset in range(1, 6):
             # Chol HaMoed Sukkot (Feast of Tabernacles holiday).
@@ -151,12 +140,6 @@ class Israel(ObservedHolidayBase):
             self._add_holiday(name, tisha_bav_dt)
 
     def _populate_school_holidays(self):
-        if self._year <= 1947:
-            return None
-
-        if self._year >= 2101:
-            raise NotImplementedError
-
         sukkot_dt = self._get_holiday(SUKKOT)
         for offset in range(1, 6):
             # Chol HaMoed Sukkot (Feast of Tabernacles holiday).
diff --git a/holidays/countries/japan.py b/holidays/countries/japan.py
index 1de0ca1a..a4462572 100644
--- a/holidays/countries/japan.py
+++ b/holidays/countries/japan.py
@@ -43,6 +43,8 @@ class Japan(ObservedHolidayBase, InternationalHolidays, StaticHolidays):
     default_language = "ja"
     supported_categories = (BANK, PUBLIC)
     supported_languages = ("en_US", "ja", "th")
+    start_year = 1949
+    end_year = 2099
 
     def __init__(self, *args, **kwargs) -> None:
         InternationalHolidays.__init__(self)
@@ -80,9 +82,6 @@ class Japan(ObservedHolidayBase, InternationalHolidays, StaticHolidays):
                     break
 
     def _populate_public_holidays(self):
-        if self._year < 1949 or self._year > 2099:
-            raise NotImplementedError
-
         dts_observed = set()
 
         # New Year's Day.
@@ -199,9 +198,6 @@ class Japan(ObservedHolidayBase, InternationalHolidays, StaticHolidays):
             self._populate_observed(dts_observed)
 
     def _populate_bank_holidays(self):
-        if self._year < 1949 or self._year > 2099:
-            raise NotImplementedError
-
         # Bank Holiday.
         name = tr("銀行休業日")
         self._add_new_years_day(name)
diff --git a/holidays/countries/jersey.py b/holidays/countries/jersey.py
index e2e89590..12557ec4 100644
--- a/holidays/countries/jersey.py
+++ b/holidays/countries/jersey.py
@@ -48,6 +48,8 @@ class Jersey(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
 
     country = "JE"
     observed_label = "%s (substitute day)"
+    # Earliest available piece of law available is from 1952.
+    start_year = 1952
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -65,10 +67,6 @@ class Jersey(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
         return super()._add_observed(dt, **kwargs)
 
     def _populate_public_holidays(self) -> None:
-        # Earliest available piece of law available is from 1952.
-        if self._year <= 1951:
-            return None
-
         # New Year's Day.
         # Available online source shown that this was celebrated since at least 1952.
         # Was briefly removed in 1983 only to be added back again before that came to effect.
diff --git a/holidays/countries/kazakhstan.py b/holidays/countries/kazakhstan.py
index 836146cb..f477123f 100644
--- a/holidays/countries/kazakhstan.py
+++ b/holidays/countries/kazakhstan.py
@@ -85,6 +85,8 @@ class Kazakhstan(
     # %s (observed, estimated).
     observed_estimated_label = tr("%s (қайта белгіленген демалыс, бағаланған)")
     supported_languages = ("en_US", "kk", "uk")
+    # Kazakhstan declared its sovereignty on 25 October 1990.
+    start_year = 1991
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self, JULIAN_CALENDAR)
@@ -96,10 +98,6 @@ class Kazakhstan(
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Kazakhstan declared its sovereignty on 25 October 1990
-        if self._year <= 1990:
-            return None
-
         dts_observed = set()
 
         # New Year's Day.
diff --git a/holidays/countries/kenya.py b/holidays/countries/kenya.py
index beafaa48..972d1350 100644
--- a/holidays/countries/kenya.py
+++ b/holidays/countries/kenya.py
@@ -24,6 +24,7 @@ class Kenya(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
 
     country = "KE"
     observed_label = "%s (observed)"
+    start_year = 1963
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -33,9 +34,6 @@ class Kenya(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1962:
-            return None
-
         # New Year's Day
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
diff --git a/holidays/countries/laos.py b/holidays/countries/laos.py
index 99efb499..87cad68a 100644
--- a/holidays/countries/laos.py
+++ b/holidays/countries/laos.py
@@ -66,6 +66,8 @@ class Laos(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiCalen
     # %s (in lieu).
     observed_label = tr("ພັກຊົດເຊີຍ%s")
     supported_languages = ("en_US", "lo", "th")
+    # Available post-Lao PDR proclamation on Dec 2, 1975.
+    start_year = 1976
 
     def __init__(self, *args, **kwargs):
         InternationalHolidays.__init__(self)
@@ -77,9 +79,6 @@ class Laos(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiCalen
 
     def _populate_bank_holidays(self):
         # Based on both LSX and BCEL calendar.
-        # Available post-Lao PDR proclamation on Dec 2, 1975.
-        if self._year <= 1975:
-            return None
 
         # ວັນສ້າງຕັ້ງທະນາຄານແຫ່ງ ສປປ ລາວ
         # Status: In-Use.
@@ -109,10 +108,6 @@ class Laos(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiCalen
         self._add_holiday(name, self._get_next_workday(second_to_last_workday, -1))
 
     def _populate_public_holidays(self):
-        # Available post-Lao PDR proclamation on Dec 2, 1975.
-        if self._year <= 1975:
-            return None
-
         # ວັນປີໃໝ່ສາກົນ
         # Status: In-Use.
 
@@ -178,8 +173,6 @@ class Laos(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiCalen
         # As such, no in lieu observance are in place for these holidays.
 
         # Laotian Lunar Calendar Holidays only work from 1941 to 2157.
-        if self._year <= 1975:
-            return None
 
         # ວັນບຸນມາຂະບູຊາ
         # Status: In-Use.
@@ -253,10 +246,6 @@ class Laos(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiCalen
     def _populate_workday_holidays(self):
         # No Public Holidays are issued, though still observed by the government.
 
-        # Available post-Lao PDR proclamation on Dec 2, 1975.
-        if self._year <= 1975:
-            return None
-
         # ວັນສ້າງຕັ້ງກອງທັບປະຊາຊົນລາວ
         # Status: In-Use.
         # Celebrated the creation of the independent Lao army on Jan 20, 1949.
diff --git a/holidays/countries/latvia.py b/holidays/countries/latvia.py
index 356b5a4e..7eb7a1aa 100644
--- a/holidays/countries/latvia.py
+++ b/holidays/countries/latvia.py
@@ -29,6 +29,7 @@ class Latvia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
     # %s (observed).
     observed_label = tr("%s (brīvdiena)")
     supported_languages = ("en_US", "lv", "uk")
+    start_year = 1990
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -38,9 +39,6 @@ class Latvia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Jaunais Gads"))
 
diff --git a/holidays/countries/lesotho.py b/holidays/countries/lesotho.py
index 80d37487..f2ee8e23 100644
--- a/holidays/countries/lesotho.py
+++ b/holidays/countries/lesotho.py
@@ -24,6 +24,7 @@ class Lesotho(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
     """
 
     country = "LS"
+    start_year = 1996
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -32,9 +33,6 @@ class Lesotho(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1995:
-            return None
-
         # New Year's Day.
         self._add_new_years_day("New Year's Day")
 
diff --git a/holidays/countries/lithuania.py b/holidays/countries/lithuania.py
index 22ad8e43..05e34610 100644
--- a/holidays/countries/lithuania.py
+++ b/holidays/countries/lithuania.py
@@ -28,6 +28,7 @@ class Lithuania(HolidayBase, ChristianHolidays, InternationalHolidays):
     country = "LT"
     default_language = "lt"
     supported_languages = ("en_US", "lt", "uk")
+    start_year = 1990
 
     def __init__(self, *args, **kwargs) -> None:
         ChristianHolidays.__init__(self)
@@ -35,9 +36,6 @@ class Lithuania(HolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self) -> None:
-        if self._year <= 1989:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Naujųjų metų diena"))
 
diff --git a/holidays/countries/madagascar.py b/holidays/countries/madagascar.py
index abba740d..4ceed943 100644
--- a/holidays/countries/madagascar.py
+++ b/holidays/countries/madagascar.py
@@ -27,6 +27,7 @@ class Madagascar(HolidayBase, ChristianHolidays, InternationalHolidays):
     country = "MG"
     default_language = "mg"
     supported_languages = ("en_US", "mg", "uk")
+    start_year = 1947
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -34,10 +35,6 @@ class Madagascar(HolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Observed since 1947
-        if self._year <= 1946:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Taom-baovao"))
 
diff --git a/holidays/countries/malawi.py b/holidays/countries/malawi.py
index 45c214f2..48d6680f 100644
--- a/holidays/countries/malawi.py
+++ b/holidays/countries/malawi.py
@@ -26,6 +26,7 @@ class Malawi(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
 
     country = "MW"
     observed_label = "%s (observed)"
+    start_year = 2000
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -34,10 +35,6 @@ class Malawi(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Observed since 2000
-        if self._year <= 1999:
-            return None
-
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
         self._add_observed(self._add_holiday_jan_15("John Chilembwe Day"))
diff --git a/holidays/countries/malaysia.py b/holidays/countries/malaysia.py
index 5d1eb7ef..fc68cf88 100644
--- a/holidays/countries/malaysia.py
+++ b/holidays/countries/malaysia.py
@@ -123,6 +123,7 @@ class Malaysia(
         "PJY": "16",
     }
     supported_languages = ("en_US", "ms_MY", "th")
+    start_year = 1952
 
     def __init__(self, *args, **kwargs):
         """
@@ -152,9 +153,6 @@ class Malaysia(
         self.dts_observed = set()
 
     def _populate_public_holidays(self):
-        if self._year <= 1951:
-            return None
-
         # This must be done for every `_populate_public_holidays()` call.
         # Otherwise, 2006/2007 Eid al-Adha observance would be miscalculated.
         self.dts_observed = set()
@@ -212,9 +210,6 @@ class Malaysia(
         self.dts_observed.update(self._add_eid_al_adha_day(tr("Hari Raya Qurban")))
 
     def _populate_subdiv_holidays(self):
-        if self._year <= 1951:
-            return None
-
         if self.subdiv and self.subdiv not in {"13", "15"}:
             # Deepavali.
             self.dts_observed.add(self._add_diwali(tr("Hari Deepavali")))
diff --git a/holidays/countries/malta.py b/holidays/countries/malta.py
index fa2875af..39abf5d8 100644
--- a/holidays/countries/malta.py
+++ b/holidays/countries/malta.py
@@ -40,6 +40,8 @@ class Malta(HolidayBase, ChristianHolidays, InternationalHolidays):
     country = "MT"
     default_language = "mt"
     supported_languages = ("en_US", "mt")
+    # Earliest available source is 1980.
+    start_year = 1980
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -47,10 +49,6 @@ class Malta(HolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Earliest available source is 1980
-        if self._year <= 1979:
-            return None
-
         # L-Ewwel tas-Sena
         # Status: In-Use.
 
diff --git a/holidays/countries/moldova.py b/holidays/countries/moldova.py
index 0946ac4c..043a610b 100644
--- a/holidays/countries/moldova.py
+++ b/holidays/countries/moldova.py
@@ -27,6 +27,7 @@ class Moldova(HolidayBase, ChristianHolidays, InternationalHolidays):
     country = "MD"
     default_language = "ro"
     supported_languages = ("en_US", "ro", "uk")
+    start_year = 1991
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self, JULIAN_CALENDAR)
@@ -34,9 +35,6 @@ class Moldova(HolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1990:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Anul Nou"))
 
diff --git a/holidays/countries/mozambique.py b/holidays/countries/mozambique.py
index a69f833f..98008af1 100644
--- a/holidays/countries/mozambique.py
+++ b/holidays/countries/mozambique.py
@@ -22,6 +22,7 @@ class Mozambique(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
     # %s (observed).
     observed_label = tr("%s (ponte)")
     supported_languages = ("en_US", "pt_MZ", "uk")
+    start_year = 1975
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -30,9 +31,6 @@ class Mozambique(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1974:
-            return None
-
         # International Fraternalism Day.
         self._add_observed(self._add_new_years_day(tr("Dia da Fraternidade universal")))
 
diff --git a/holidays/countries/namibia.py b/holidays/countries/namibia.py
index 6e88cf80..a1683092 100644
--- a/holidays/countries/namibia.py
+++ b/holidays/countries/namibia.py
@@ -30,6 +30,7 @@ class Namibia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
     country = "NA"
     # %s (observed).
     observed_label = "%s (observed)"
+    start_year = 1990
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -40,9 +41,6 @@ class Namibia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1989:
-            return None
-
         # New Year's Day.
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
diff --git a/holidays/countries/netherlands.py b/holidays/countries/netherlands.py
index ad655914..a3740432 100644
--- a/holidays/countries/netherlands.py
+++ b/holidays/countries/netherlands.py
@@ -32,6 +32,7 @@ class Netherlands(HolidayBase, ChristianHolidays, InternationalHolidays):
     default_language = "nl"
     supported_categories = (OPTIONAL, PUBLIC)
     supported_languages = ("en_US", "nl", "uk")
+    start_year = 1801
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
diff --git a/holidays/countries/new_zealand.py b/holidays/countries/new_zealand.py
index 9f42f3ae..fa67210a 100644
--- a/holidays/countries/new_zealand.py
+++ b/holidays/countries/new_zealand.py
@@ -112,6 +112,7 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
         "STC",  # For 'South Canterbury' Subregional Holidays.
         "WTL",  # Westland, Correct code is WTC (for West Coast).
     )
+    start_year = 1894
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -137,9 +138,6 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
         # Sovereign's Birthday Observance Act 1937, 1952
         # Holidays Act 1981, 2003
 
-        if self._year <= 1893:
-            return None
-
         # New Year's Day
         self._add_observed(self._add_new_years_day("New Year's Day"), rule=SAT_SUN_TO_NEXT_MON_TUE)
         self._add_observed(
diff --git a/holidays/countries/nigeria.py b/holidays/countries/nigeria.py
index 2fdad49b..119cef1f 100644
--- a/holidays/countries/nigeria.py
+++ b/holidays/countries/nigeria.py
@@ -29,6 +29,7 @@ class Nigeria(
 
     country = "NG"
     observed_label = "%s (observed)"
+    start_year = 1979
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -40,9 +41,6 @@ class Nigeria(
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1978:
-            return None
-
         dts_observed = set()
 
         # New Year's Day.
diff --git a/holidays/countries/pakistan.py b/holidays/countries/pakistan.py
index dcb3b1a9..265de6cd 100644
--- a/holidays/countries/pakistan.py
+++ b/holidays/countries/pakistan.py
@@ -18,6 +18,7 @@ from holidays.holiday_base import HolidayBase
 
 class Pakistan(HolidayBase, InternationalHolidays, IslamicHolidays):
     country = "PK"
+    start_year = 1948
 
     def __init__(self, *args, **kwargs):
         InternationalHolidays.__init__(self)
@@ -25,9 +26,6 @@ class Pakistan(HolidayBase, InternationalHolidays, IslamicHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1947:
-            return None
-
         # Kashmir Solidarity Day.
         if self._year >= 1990:
             self._add_holiday_feb_5("Kashmir Solidarity Day")
diff --git a/holidays/countries/palau.py b/holidays/countries/palau.py
index d7f3c769..1062e176 100644
--- a/holidays/countries/palau.py
+++ b/holidays/countries/palau.py
@@ -37,6 +37,11 @@ class Palau(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
     country = "PW"
     supported_categories = (ARMED_FORCES, HALF_DAY, PUBLIC)
     observed_label = "%s (observed)"
+    # Republic of Palau Public Law No. 2-15.
+    # The legislation was first adopted by the 2nd Olbiil Era Kelulau (1984-1988),
+    # but since we cannot find any info on its actual adoption date, we may as
+    # well use the formation date of the country as the placeholder cut-off date.
+    start_year = 1981
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -46,13 +51,6 @@ class Palau(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Republic of Palau Public Law No. 2-15.
-        # The legislation was first adopted by the 2nd Olbiil Era Kelulau (1984-1988),
-        # but since we cannot find any info on its actual adoption date, we may as
-        # well use the formation date of the country as the placeholder cut-off date.
-        if self._year <= 1980:
-            return None
-
         # Fixed Date Public Holidays.
 
         # New Year's Day.
diff --git a/holidays/countries/papua_new_guinea.py b/holidays/countries/papua_new_guinea.py
index dd7a2e38..fe204805 100644
--- a/holidays/countries/papua_new_guinea.py
+++ b/holidays/countries/papua_new_guinea.py
@@ -42,6 +42,8 @@ class PapuaNewGuinea(
 
     country = "PG"
     observed_label = "%s (observed)"
+    # Public Holidays Law 1953 (No. 38 of 1953).
+    start_year = 1953
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -51,10 +53,6 @@ class PapuaNewGuinea(
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Public Holidays Law 1953 (No. 38 of 1953).
-        if self._year <= 1952:
-            return None
-
         # Section 1: Public Holidays.
         # - Easter Saturday is currently not gazetted as a Public Holiday in 2024.
         # - While Easter Sunday itself is not listed, this is de facto always a day-off.
diff --git a/holidays/countries/paraguay.py b/holidays/countries/paraguay.py
index b54e6daf..4b8ec5a8 100644
--- a/holidays/countries/paraguay.py
+++ b/holidays/countries/paraguay.py
@@ -10,7 +10,6 @@
 #  Website: https://github.com/vacanza/holidays
 #  License: MIT (see LICENSE file)
 
-from datetime import date
 from gettext import gettext as tr
 
 from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, DEC
@@ -22,8 +21,12 @@ from holidays.holiday_base import HolidayBase
 class Paraguay(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
     """
     References:
+        - `Ley 8/1990 <https://www.bacn.gov.py/leyes-paraguayas/2358/ley-n-8--por-la-cual-se-determinan-los-feriados-de-la-republica>`_
+        - `Ley 715/1995 <https://www.bacn.gov.py/leyes-paraguayas/792/ley-n-715--amplia-la-ley-no-0890->`_
+        - `Ley 1.601/2000 <https://www.bacn.gov.py/leyes-paraguayas/1677/ley-n-1601--modifica-el-articulo-1-de-la-ley-no-71595-que-amplia-la-ley-n-0890-por-la-cual-se-determinan-los-feriados-de-la-republica>`_
+        - `Ley 1.723/2001 <https://www.bacn.gov.py/leyes-paraguayas/634/ley-n-1723--autoriza-al-poder-ejecutivo-a-trasladar-los-feriados-nacionales-al-dia-lunes>`_
+        - `Ley 4.531/2011 <https://www.bacn.gov.py/leyes-paraguayas/3831/ley-n-4531-restablece-el-dia-14-de-mayo-de-cada-ano-como-feriado-nacional>`_
         - https://es.wikipedia.org/wiki/Anexo:D%C3%ADas_festivos_en_Paraguay
-        - https://www.ghp.com.py/news/feriados-nacionales-del-ano-2019-en-paraguay
         - http://www.calendarioparaguay.com/
     """
 
@@ -31,6 +34,8 @@ class Paraguay(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
     default_language = "es"
     supported_categories = (GOVERNMENT, PUBLIC)
     supported_languages = ("en_US", "es", "uk")
+    # Ley 8/1990.
+    start_year = 1991
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -38,21 +43,18 @@ class Paraguay(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
         StaticHolidays.__init__(self, ParaguayStaticHolidays)
         super().__init__(*args, **kwargs)
 
-    def _move_holiday(self, dt: date) -> None:
-        if not self.observed and self._is_weekend(dt):
-            self.pop(dt)
-
     def _populate_public_holidays(self):
         # New Year's Day.
-        self._move_holiday(self._add_new_years_day(tr("Año Nuevo")))
+        self._add_new_years_day(tr("Año Nuevo"))
 
         dates_obs = {
             2013: (MAR, 4),
             2016: (FEB, 29),
             2018: (FEB, 26),
+            2019: (MAR, 4),
             2022: (FEB, 28),
+            2023: (FEB, 27),
         }
-
         self._add_holiday(
             # Patriots Day.
             tr("Día de los Héroes de la Patria"),
@@ -66,52 +68,51 @@ class Paraguay(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
         self._add_good_friday(tr("Viernes Santo"))
 
         # Easter Sunday.
-        self._move_holiday(self._add_easter_sunday(tr("Domingo de Resurrección")))
+        self._add_easter_sunday(tr("Domingo de Resurrección"))
 
-        # Labor Day.
-        self._move_holiday(self._add_labor_day(tr("Día del Trabajador")))
+        # Workers' Day.
+        self._add_labor_day(tr("Día de los Trabajadores"))
 
-        # Independence Day.
-        name = tr("Día de la Independencia Nacional")
         if self._year >= 2012:
-            self._move_holiday(self._add_holiday_may_14(name))
-        may_15 = self._add_holiday_may_15(name)
-        if self._year != 2021:
-            self._move_holiday(may_15)
+            # National Holiday.
+            self._add_holiday_may_14(tr("Feriado Nacional"))
+
+        # Independence Day.
+        self._add_holiday_may_15(tr("Día de la Independencia Nacional"))
 
         dates_obs = {
             2014: (JUN, 16),
             2018: (JUN, 11),
+            2019: (JUN, 17),
+            2024: (JUN, 10),
         }
-        self._move_holiday(
-            # Chaco Armistice Day.
-            self._add_holiday(tr("Día de la Paz del Chaco"), dates_obs.get(self._year, (JUN, 12)))
-        )
+        # Chaco Armistice Day.
+        self._add_holiday(tr("Día de la Paz del Chaco"), dates_obs.get(self._year, (JUN, 12)))
 
         # Asuncion Foundation's Day.
-        self._move_holiday(self._add_holiday_aug_15(tr("Día de la Fundación de Asunción")))
+        self._add_holiday_aug_15(tr("Día de la Fundación de Asunción"))
 
-        if self._year >= 2000:
+        # Ley 715/1995, 1.601/2000.
+        if self._year >= 1995:
             dates_obs = {
                 2015: (SEP, 28),
                 2016: (OCT, 3),
                 2017: (OCT, 2),
                 2021: (SEP, 27),
                 2022: (OCT, 3),
+                2024: (SEP, 30),
             }
-            self._move_holiday(
-                self._add_holiday(
-                    # Boqueron Battle Day.
-                    tr("Día de la Batalla de Boquerón"),
-                    dates_obs.get(self._year, (SEP, 29)),
-                )
+            self._add_holiday(
+                # Boqueron Battle Day.
+                tr("Día de la Batalla de Boquerón"),
+                dates_obs.get(self._year, (SEP, 29)),
             )
 
         # Caacupe Virgin Day.
-        self._move_holiday(self._add_holiday_dec_8(tr("Día de la Virgen de Caacupé")))
+        self._add_holiday_dec_8(tr("Día de la Virgen de Caacupé"))
 
         # Christmas Day.
-        self._add_christmas_day(tr("Navidad"))
+        self._add_christmas_day(tr("Día de la Navidad"))
 
 
 class PY(Paraguay):
diff --git a/holidays/countries/philippines.py b/holidays/countries/philippines.py
index 769fc9e3..f396eaa0 100644
--- a/holidays/countries/philippines.py
+++ b/holidays/countries/philippines.py
@@ -58,6 +58,7 @@ class Philippines(
     # %s (estimated).
     estimated_label = tr("%s (estimated)")
     supported_languages = ("en_PH", "en_US", "fil", "th")
+    start_year = 1988
 
     def __init__(self, *args, **kwargs):
         ChineseCalendarHolidays.__init__(self, cls=PhilippinesChineseHolidays)
@@ -68,9 +69,6 @@ class Philippines(
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1987:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("New Year's Day"))
 
diff --git a/holidays/countries/poland.py b/holidays/countries/poland.py
index c293d8ff..f6179ee8 100644
--- a/holidays/countries/poland.py
+++ b/holidays/countries/poland.py
@@ -25,6 +25,7 @@ class Poland(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolida
     country = "PL"
     default_language = "pl"
     supported_languages = ("en_US", "pl", "uk")
+    start_year = 1925
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -33,9 +34,6 @@ class Poland(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolida
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1924:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Nowy Rok"))
 
diff --git a/holidays/countries/portugal.py b/holidays/countries/portugal.py
index 057be7f4..96505738 100644
--- a/holidays/countries/portugal.py
+++ b/holidays/countries/portugal.py
@@ -39,6 +39,7 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
     country = "PT"
     default_language = "pt_PT"
     supported_categories = (OPTIONAL, PUBLIC)
+    start_year = 1801
 
     # https://en.wikipedia.org/wiki/ISO_3166-2:PT
     subdivisions = (
diff --git a/holidays/countries/russia.py b/holidays/countries/russia.py
index c2c8aff6..957eb54d 100644
--- a/holidays/countries/russia.py
+++ b/holidays/countries/russia.py
@@ -27,6 +27,7 @@ class Russia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
     country = "RU"
     default_language = "ru"
     supported_languages = ("en_US", "ru")
+    start_year = 1991
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self, JULIAN_CALENDAR)
@@ -35,9 +36,6 @@ class Russia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1990:
-            return None
-
         if self._year <= 2004:
             # New Year's Day.
             name = tr("Новый год")
diff --git a/holidays/countries/saint_kitts_and_nevis.py b/holidays/countries/saint_kitts_and_nevis.py
index 990d76a0..6a0b7839 100644
--- a/holidays/countries/saint_kitts_and_nevis.py
+++ b/holidays/countries/saint_kitts_and_nevis.py
@@ -47,6 +47,8 @@ class SaintKittsAndNevis(
     # %s (observed).
     observed_label = "%s (observed)"
     weekend = {SUN}
+    # Public Holidays Act, Act 7 of 1983 Amendment.
+    start_year = 1983
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -56,10 +58,6 @@ class SaintKittsAndNevis(
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Public Holidays Act, Act 7 of 1983 Amendment.
-        if self._year <= 1982:
-            return None
-
         # Carnival Day.
         self._add_observed(self._add_new_years_day("Carnival Day"), rule=SUN_TO_NEXT_TUE)
 
diff --git a/holidays/countries/seychelles.py b/holidays/countries/seychelles.py
index 5cb3a47f..0c304980 100644
--- a/holidays/countries/seychelles.py
+++ b/holidays/countries/seychelles.py
@@ -41,6 +41,8 @@ class Seychelles(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
     # %s (observed).
     observed_label = tr("%s (observed)")
     supported_languages = ("en_SC", "en_US")
+    # Earliest source is the 1994 amendment of Seychelles Public Holidays Act.
+    start_year = 1994
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -50,10 +52,6 @@ class Seychelles(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Earliest source is the 1994 amendment of Seychelles Public Holidays Act.
-        if self._year <= 1993:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("New Year's Day"))
 
diff --git a/holidays/countries/slovakia.py b/holidays/countries/slovakia.py
index 726e72df..5ba3152d 100644
--- a/holidays/countries/slovakia.py
+++ b/holidays/countries/slovakia.py
@@ -29,6 +29,8 @@ class Slovakia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
     default_language = "sk"
     supported_categories = (PUBLIC, WORKDAY)
     supported_languages = ("en_US", "sk", "uk")
+    # Independent Slovak Republic established on Jan 01, 1993
+    start_year = 1993
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -37,10 +39,6 @@ class Slovakia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Independent Slovak Republic established on Jan 01, 1993
-        if self._year <= 1992:
-            return None
-
         # Day of the Establishment of the Slovak Republic.
         self._add_holiday_jan_1(tr("Deň vzniku Slovenskej republiky"))
 
diff --git a/holidays/countries/slovenia.py b/holidays/countries/slovenia.py
index 0fce3f34..ed5ea24f 100644
--- a/holidays/countries/slovenia.py
+++ b/holidays/countries/slovenia.py
@@ -31,6 +31,7 @@ class Slovenia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
     country = "SI"
     default_language = "sl"
     supported_languages = ("en_US", "sl", "uk")
+    start_year = 1991
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -39,9 +40,6 @@ class Slovenia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1990:
-            return None
-
         # New Year's Day.
         name = tr("novo leto")
         self._add_new_years_day(name)
diff --git a/holidays/countries/south_africa.py b/holidays/countries/south_africa.py
index 73cc85b6..57ae0608 100644
--- a/holidays/countries/south_africa.py
+++ b/holidays/countries/south_africa.py
@@ -25,6 +25,8 @@ class SouthAfrica(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
 
     country = "ZA"
     observed_label = "%s (observed)"
+    # Observed since 1910, with a few name changes
+    start_year = 1910
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -35,10 +37,6 @@ class SouthAfrica(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Observed since 1910, with a few name changes
-        if self._year <= 1909:
-            return None
-
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
         self._add_good_friday("Good Friday")
diff --git a/holidays/countries/south_korea.py b/holidays/countries/south_korea.py
index 8e1441da..2bf16dd8 100644
--- a/holidays/countries/south_korea.py
+++ b/holidays/countries/south_korea.py
@@ -92,6 +92,7 @@ class SouthKorea(
     # Alternative holiday for %s.
     observed_label = tr("%s 대체 휴일")
     supported_languages = ("en_US", "ko", "th")
+    start_year = 1948
 
     def __init__(self, *args, **kwargs):
         ChineseCalendarHolidays.__init__(self, cls=SouthKoreaLunisolarHolidays)
@@ -134,9 +135,6 @@ class SouthKorea(
             ):
                 three_days_holidays[dt_alt] = name
 
-        if self._year <= 1947:
-            return None
-
         dts_observed = set()
         three_days_holidays = {}
 
@@ -281,9 +279,6 @@ class SouthKorea(
             self._populate_observed(dts_observed, three_days_holidays)
 
     def _populate_bank_holidays(self):
-        if self._year <= 1947:
-            return None
-
         # Workers' Day.
         name = tr("근로자의날")
         if self._year >= 1994:
diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py
index 6aa8d020..11bc9e06 100644
--- a/holidays/countries/switzerland.py
+++ b/holidays/countries/switzerland.py
@@ -58,6 +58,7 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays)
     )
     supported_categories = (HALF_DAY, OPTIONAL, PUBLIC)
     supported_languages = ("de", "en_US", "fr", "it", "uk")
+    start_year = 1801
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
diff --git a/holidays/countries/taiwan.py b/holidays/countries/taiwan.py
index e1203ff4..591e0146 100644
--- a/holidays/countries/taiwan.py
+++ b/holidays/countries/taiwan.py
@@ -70,6 +70,7 @@ class Taiwan(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays
     observed_label = tr("%s（慶祝）")
     default_language = "zh_TW"
     supported_languages = ("en_US", "th", "zh_CN", "zh_TW")
+    start_year = 1912
 
     def __init__(self, *args, **kwargs):
         ChineseCalendarHolidays.__init__(self)
@@ -96,9 +97,6 @@ class Taiwan(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays
                 )
 
     def _populate_public_holidays(self):
-        if self._year <= 1911:
-            return None
-
         dts_observed = set()
         dts_observed_forward = set()
 
diff --git a/holidays/countries/tanzania.py b/holidays/countries/tanzania.py
index 2b49062a..637e367e 100644
--- a/holidays/countries/tanzania.py
+++ b/holidays/countries/tanzania.py
@@ -64,6 +64,8 @@ class Tanzania(
     # %s (estimated).
     estimated_label = tr("%s (makisio)")
     supported_languages = ("en_US", "sw")
+    # Written Law (Miscellaneous Amendments) (No. 2) Act, 1994.
+    start_year = 1994
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -73,10 +75,6 @@ class Tanzania(
         super().__init__(*args, **kwargs)
 
     def _populate_bank_holidays(self):
-        # Written Law (Miscellaneous Amendments) (No. 2) Act, 1994.
-        if self._year <= 1993:
-            return None
-
         # Sikukuu ya Pasaka.
         # Status: In-Use.
         # Only observed by financial institutions.
@@ -85,10 +83,6 @@ class Tanzania(
         self._add_easter_sunday(tr("Sikukuu ya Pasaka"))
 
     def _populate_public_holidays(self):
-        # Written Law (Miscellaneous Amendments) (No. 2) Act, 1994.
-        if self._year <= 1993:
-            return None
-
         # In-lieus ("Badala ya %s") are observed on Monday should it fall on the weekends.
         # Abrogated in Public Holidays Ordinance  No. 28 of 1966.
         # Reinstituted in Written Law (Miscellaneous Amendments) (No. 2) Act, 1994.
diff --git a/holidays/countries/thailand.py b/holidays/countries/thailand.py
index e3f58f5b..01897cdf 100644
--- a/holidays/countries/thailand.py
+++ b/holidays/countries/thailand.py
@@ -143,6 +143,9 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
     # %s (in lieu).
     observed_label = tr("ชดเชย%s")
     supported_languages = ("en_US", "th")
+    # Due to Thai Calendar Migration, this is capped off at 1941.
+    # But certain holidays were implemented before 1941.
+    start_year = 1941
 
     def __init__(self, *args, **kwargs):
         InternationalHolidays.__init__(self)
@@ -155,11 +158,6 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
         return 1961 <= self._year <= 1973 or 1995 <= self._year <= 1997 or self._year >= 2001
 
     def _populate_public_holidays(self):
-        # Due to Thai Calendar Migration, this is capped off at 1941.
-        # But certain holidays were implemented before 1941.
-        if self._year <= 1940:
-            return None
-
         # Fixed Date Holidays
 
         # วันขึ้นปีใหม่
@@ -682,10 +680,10 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
 
         # วันลอยกระทง
         # Status: In-Use.
+        # Started in 1941.
 
-        if self._year >= 1941:
-            # Loy Krathong
-            self._add_loy_krathong(tr("วันลอยกระทง"))
+        # Loy Krathong
+        self._add_loy_krathong(tr("วันลอยกระทง"))
 
 
 class TH(Thailand):
diff --git a/holidays/countries/timor_leste.py b/holidays/countries/timor_leste.py
index 38b27999..3c68897f 100644
--- a/holidays/countries/timor_leste.py
+++ b/holidays/countries/timor_leste.py
@@ -48,6 +48,8 @@ class TimorLeste(
     # %s (estimated).
     estimated_label = tr("%s (aproximada)")
     supported_languages = ("en_US", "pt_TL", "tet")
+    # Law No. 10/2005 Of 10 August, Public Holidays and Official Commemorative Dates.
+    start_year = 2006
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -57,10 +59,6 @@ class TimorLeste(
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Law No. 10/2005 Of 10 August, Public Holidays and Official Commemorative Dates.
-        if self._year <= 2005:
-            return None
-
         # Fixed Date Public Holidays.
 
         # New Year's Day.
@@ -141,10 +139,6 @@ class TimorLeste(
         self._add_eid_al_adha_day(tr("Idul Adha"))
 
     def _populate_workday_holidays(self):
-        # Law No. 10/2005 Of 10 August, Public Holidays and Official Commemorative Dates.
-        if self._year <= 2005:
-            return None
-
         # Fixed Date Government Holidays.
 
         # World Children's Day.
@@ -486,5 +480,7 @@ class TimorLesteStaticHolidays:
             (SEP, 11, pope_francis_visit),
             # https://timor-leste.gov.tl/?p=40592&lang=en
             (OCT, 31, special_national_holidays),
+            # https://timor-leste.gov.tl/?p=40955&lang=en
+            (NOV, 29, special_national_holidays),
         ),
     }
diff --git a/holidays/countries/tonga.py b/holidays/countries/tonga.py
index 8ea32c15..04aea30d 100644
--- a/holidays/countries/tonga.py
+++ b/holidays/countries/tonga.py
@@ -75,6 +75,8 @@ class Tonga(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
     # %s (observed).
     observed_label = tr("%s (fakatokanga'i)")
     supported_languages = ("en_US", "to")
+    # Public Holidays Act, 1988 Revision.
+    start_year = 1989
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -89,10 +91,6 @@ class Tonga(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
         return super()._add_observed(dt, **kwargs)
 
     def _populate_public_holidays(self):
-        # Public Holidays Act, 1988 Revision.
-        if self._year <= 1988:
-            return None
-
         # New Year's Day.
         jan_1 = self._add_new_years_day(tr("'Uluaki 'Aho 'o e Ta'u Fo'ou"))
         if self._year <= 2016:
diff --git a/holidays/countries/turkey.py b/holidays/countries/turkey.py
index 9a564582..b409b79c 100644
--- a/holidays/countries/turkey.py
+++ b/holidays/countries/turkey.py
@@ -35,6 +35,8 @@ class Turkey(HolidayBase, InternationalHolidays, IslamicHolidays, StaticHolidays
     estimated_label = tr("%s (tahmini)")
     supported_categories = (HALF_DAY, PUBLIC)
     supported_languages = ("en_US", "tr", "uk")
+    # Law 2739 of 27 May 1935.
+    start_year = 1936
 
     def __init__(self, *args, **kwargs):
         InternationalHolidays.__init__(self)
@@ -43,10 +45,6 @@ class Turkey(HolidayBase, InternationalHolidays, IslamicHolidays, StaticHolidays
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Law 2739 of 27 May 1935.
-        if self._year <= 1935:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Yılbaşı"))
 
@@ -103,9 +101,6 @@ class Turkey(HolidayBase, InternationalHolidays, IslamicHolidays, StaticHolidays
         self._add_eid_al_adha_day_four(name)
 
     def _populate_half_day_holidays(self):
-        if self._year <= 1935:
-            return None
-
         # %s (from 1pm).
         begin_time_label = self.tr("%s (saat 13.00'ten)")
 
diff --git a/holidays/countries/ukraine.py b/holidays/countries/ukraine.py
index ff709c6a..8f4eca79 100644
--- a/holidays/countries/ukraine.py
+++ b/holidays/countries/ukraine.py
@@ -35,6 +35,8 @@ class Ukraine(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
     observed_label = tr("%s (вихідний)")
     supported_categories = (PUBLIC, WORKDAY)
     supported_languages = ("ar", "en_US", "uk")
+    # The current set of holidays came into force in 1991.
+    start_year = 1991
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self, JULIAN_REVISED_CALENDAR)
@@ -53,10 +55,6 @@ class Ukraine(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
         return date(1995, JAN, 27) <= dt <= date(1998, JAN, 9) or dt >= date(1999, APR, 23)
 
     def _populate_common(self, is_martial_law: bool = False):
-        # The current set of holidays came into force in 1991
-        if self._year <= 1990:
-            return None
-
         # There is no public holidays in Ukraine during the period of martial law
         # https://zakon.rada.gov.ua/laws/show/2136-20#n26
         # law is in force from March 15, 2022
diff --git a/holidays/countries/united_kingdom.py b/holidays/countries/united_kingdom.py
index d9ed5bda..f2c0b8c6 100644
--- a/holidays/countries/united_kingdom.py
+++ b/holidays/countries/united_kingdom.py
@@ -51,6 +51,8 @@ class UnitedKingdom(ObservedHolidayBase, ChristianHolidays, InternationalHoliday
         "Wales": "WLS",
     }
     _deprecated_subdivisions = ("UK",)
+    # Bank Holidays Act 1871
+    start_year = 1872
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -62,10 +64,6 @@ class UnitedKingdom(ObservedHolidayBase, ChristianHolidays, InternationalHoliday
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self) -> None:
-        # Bank Holidays Act 1871
-        if self._year <= 1871:
-            return None
-
         # Good Friday
         self._add_good_friday("Good Friday")
 
@@ -91,10 +89,6 @@ class UnitedKingdom(ObservedHolidayBase, ChristianHolidays, InternationalHoliday
                 self._add_holiday_last_mon_of_may(name)
 
     def _populate_subdiv_holidays(self):
-        # Bank Holidays Act 1871
-        if self._year <= 1871:
-            return None
-
         if self.subdiv != "SCT":
             # New Year's Day
             if self._year >= 1975:
diff --git a/holidays/countries/united_states.py b/holidays/countries/united_states.py
index b19eefdf..3905a8bf 100644
--- a/holidays/countries/united_states.py
+++ b/holidays/countries/united_states.py
@@ -127,6 +127,7 @@ class UnitedStates(ObservedHolidayBase, ChristianHolidays, InternationalHolidays
         "MH",
         "PW",
     )
+    start_year = 1777
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
diff --git a/holidays/countries/uruguay.py b/holidays/countries/uruguay.py
index a4e53be4..adbb75b5 100644
--- a/holidays/countries/uruguay.py
+++ b/holidays/countries/uruguay.py
@@ -39,6 +39,8 @@ class Uruguay(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
     default_language = "es"
     supported_categories = (BANK, PUBLIC)
     supported_languages = ("en_US", "es", "uk")
+    # Law # 6997.
+    start_year = 1920
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -52,10 +54,6 @@ class Uruguay(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
         return 1980 <= self._year <= 1983 or self._year >= 1997
 
     def _populate_public_holidays(self):
-        # Law # 6997.
-        if self._year <= 1919:
-            return None
-
         # New Year's Day.
         self._add_new_years_day(tr("Año Nuevo"))
 
@@ -105,9 +103,6 @@ class Uruguay(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
         # These holidays are generally observed by schools, public sector offices, banks,
         # and a few private companies.
 
-        if self._year <= 1919:
-            return None
-
         # Children's Day.
         self._add_holiday_jan_6(tr("Día de los Niños"))
 
diff --git a/holidays/countries/uzbekistan.py b/holidays/countries/uzbekistan.py
index 7fdd9925..442d04d6 100644
--- a/holidays/countries/uzbekistan.py
+++ b/holidays/countries/uzbekistan.py
@@ -36,6 +36,7 @@ class Uzbekistan(ObservedHolidayBase, InternationalHolidays, IslamicHolidays, St
     # %s (observed, estimated).
     observed_estimated_label = tr("%s (ko‘chirilgan, taxminiy)")
     supported_languages = ("en_US", "uk", "uz")
+    start_year = 1992
 
     def __init__(self, *args, **kwargs):
         InternationalHolidays.__init__(self)
@@ -49,8 +50,6 @@ class Uzbekistan(ObservedHolidayBase, InternationalHolidays, IslamicHolidays, St
         return dt >= date(2023, APR, 30)
 
     def _populate_public_holidays(self):
-        if self._year <= 1991:
-            return None
         dts_observed = set()
 
         # New Year's Day.
diff --git a/holidays/countries/vanuatu.py b/holidays/countries/vanuatu.py
index 7e6fe162..7240c441 100644
--- a/holidays/countries/vanuatu.py
+++ b/holidays/countries/vanuatu.py
@@ -24,6 +24,8 @@ class Vanuatu(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
 
     country = "VU"
     observed_label = "%s (observed)"
+    # On 30 July 1980, Vanuatu gained independence from Britain and France.
+    start_year = 1981
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -33,10 +35,6 @@ class Vanuatu(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # On 30 July 1980, Vanuatu gained independence from Britain and France.
-        if self._year <= 1980:
-            return None
-
         # New Years Day.
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
diff --git a/holidays/countries/vatican_city.py b/holidays/countries/vatican_city.py
index 09c05245..fba38017 100644
--- a/holidays/countries/vatican_city.py
+++ b/holidays/countries/vatican_city.py
@@ -23,15 +23,13 @@ class VaticanCity(HolidayBase, ChristianHolidays):
     """
 
     country = "VA"
+    start_year = 1929
 
     def __init__(self, *args, **kwargs) -> None:
         ChristianHolidays.__init__(self)
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self) -> None:
-        if self._year <= 1928:
-            return None
-
         # Solemnity of Mary Day.
         # This is supposedly the same as International New Year.
         # Modern adoption across the entire Latin Church in 1931 though this
diff --git a/holidays/countries/venezuela.py b/holidays/countries/venezuela.py
index c949f0b1..ba75f667 100644
--- a/holidays/countries/venezuela.py
+++ b/holidays/countries/venezuela.py
@@ -24,6 +24,7 @@ class Venezuela(HolidayBase, ChristianHolidays, InternationalHolidays):
     country = "VE"
     default_language = "es"
     supported_languages = ("en_US", "es", "uk")
+    start_year = 1801
 
     def __init__(self, *args, **kwargs) -> None:
         ChristianHolidays.__init__(self)
diff --git a/holidays/countries/zambia.py b/holidays/countries/zambia.py
index bd346761..8822084f 100644
--- a/holidays/countries/zambia.py
+++ b/holidays/countries/zambia.py
@@ -25,6 +25,7 @@ class Zambia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
 
     country = "ZM"
     observed_label = "%s (observed)"
+    start_year = 1965
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -34,10 +35,6 @@ class Zambia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Observed since 1965
-        if self._year <= 1964:
-            return None
-
         # New Year's Day.
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
diff --git a/holidays/countries/zimbabwe.py b/holidays/countries/zimbabwe.py
index f37c1f68..48113d28 100644
--- a/holidays/countries/zimbabwe.py
+++ b/holidays/countries/zimbabwe.py
@@ -22,6 +22,7 @@ class Zimbabwe(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
 
     country = "ZW"
     observed_label = "%s (observed)"
+    start_year = 1988
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -30,9 +31,6 @@ class Zimbabwe(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        if self._year <= 1987:
-            return None
-
         # New Year's Day.
         self._add_observed(self._add_new_years_day("New Year's Day"))
 
diff --git a/holidays/financial/brasil_bolsa_balcao.py b/holidays/financial/brasil_bolsa_balcao.py
index bfb434e2..94ea0129 100644
--- a/holidays/financial/brasil_bolsa_balcao.py
+++ b/holidays/financial/brasil_bolsa_balcao.py
@@ -35,6 +35,10 @@ class BrasilBolsaBalcao(HolidayBase, ChristianHolidays, InternationalHolidays):
     market = "BVMF"
     default_language = "pt_BR"
     supported_languages = ("en_US", "pt_BR", "uk")
+    # Decreto n. 155-B, de 14.01.1890
+    # Curiously enough, 1890 is also the year of foundation of the
+    # São Paulo Stock Exchange, which would later become the B3.
+    start_year = 1890
 
     def __init__(self, *args, **kwargs) -> None:
         ChristianHolidays.__init__(self)
@@ -42,12 +46,6 @@ class BrasilBolsaBalcao(HolidayBase, ChristianHolidays, InternationalHolidays):
         super().__init__(*args, **kwargs)
 
     def _populate_public_holidays(self):
-        # Decreto n. 155-B, de 14.01.1890
-        # Curiously enough, 1890 is also the year of foundation of the
-        # São Paulo Stock Exchange, which would later become the B3.
-        if self._year <= 1889:
-            return None
-
         # Universal Fraternization Day.
         self._add_new_years_day(tr("Confraternização Universal"))
 
diff --git a/holidays/financial/european_central_bank.py b/holidays/financial/european_central_bank.py
index 03e2fc83..abc47eec 100644
--- a/holidays/financial/european_central_bank.py
+++ b/holidays/financial/european_central_bank.py
@@ -24,6 +24,7 @@ class EuropeanCentralBank(HolidayBase, ChristianHolidays, InternationalHolidays)
     """
 
     market = "ECB"
+    start_year = 2000
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -31,11 +32,7 @@ class EuropeanCentralBank(HolidayBase, ChristianHolidays, InternationalHolidays)
         StaticHolidays.__init__(self, EuropeanCentralBankStaticHolidays)
         super().__init__(*args, **kwargs)
 
-    def _populate(self, year):
-        if year <= 1999:
-            return None
-        super()._populate(year)
-
+    def _populate_public_holidays(self):
         self._add_new_years_day("New Year's Day")
 
         self._add_good_friday("Good Friday")
diff --git a/holidays/financial/ice_futures_europe.py b/holidays/financial/ice_futures_europe.py
index 10e8c323..1673a84e 100644
--- a/holidays/financial/ice_futures_europe.py
+++ b/holidays/financial/ice_futures_europe.py
@@ -24,6 +24,7 @@ class ICEFuturesEurope(ObservedHolidayBase, ChristianHolidays, InternationalHoli
     """
 
     market = "IFEU"
+    start_year = 2014
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -31,11 +32,7 @@ class ICEFuturesEurope(ObservedHolidayBase, ChristianHolidays, InternationalHoli
         kwargs.setdefault("observed_rule", SAT_TO_NONE + SUN_TO_NEXT_MON)
         super().__init__(*args, **kwargs)
 
-    def _populate(self, year):
-        if year <= 2013:
-            return None
-        super()._populate(year)
-
+    def _populate_public_holidays(self):
         self._move_holiday(self._add_new_years_day("New Year's Day"))
 
         self._add_good_friday("Good Friday")
diff --git a/holidays/financial/ny_stock_exchange.py b/holidays/financial/ny_stock_exchange.py
index 2cc2ce27..9231c71f 100644
--- a/holidays/financial/ny_stock_exchange.py
+++ b/holidays/financial/ny_stock_exchange.py
@@ -45,6 +45,7 @@ class NewYorkStockExchange(
 
     market = "NYSE"
     observed_label = "%s (observed)"
+    start_year = 1863
 
     def __init__(self, *args, **kwargs):
         ChristianHolidays.__init__(self)
@@ -53,67 +54,65 @@ class NewYorkStockExchange(
         kwargs.setdefault("observed_rule", SAT_TO_PREV_FRI + SUN_TO_NEXT_MON)
         super().__init__(*args, **kwargs)
 
-    def _populate(self, year):
-        super()._populate(year)
-
+    def _populate_public_holidays(self):
         # New Year's Day.
         name = "New Year's Day"
         self._move_holiday(self._add_new_years_day(name))
 
         # MLK, 3rd Monday of January.
-        if year >= 1998:
+        if self._year >= 1998:
             self._add_holiday_3rd_mon_of_jan("Martin Luther King Jr. Day")
 
         # LINCOLN BIRTHDAY: observed 1896 - 1953 and 1968, Feb 12 (observed)
-        if 1896 <= year <= 1953 or year == 1968:
+        if 1896 <= self._year <= 1953 or self._year == 1968:
             self._move_holiday(self._add_holiday_feb_12("Lincoln's Birthday"))
 
         # WASHINGTON'S BIRTHDAY: Feb 22 (obs) until 1971, then 3rd Mon of Feb
         name = "Washington's Birthday"
-        if year <= 1970:
+        if self._year <= 1970:
             self._move_holiday(self._add_holiday_feb_22(name))
         else:
             self._add_holiday_3rd_mon_of_feb(name)
 
         # GOOD FRIDAY - closed every year except 1898, 1906, and 1907
-        if year not in {1898, 1906, 1907}:
+        if self._year not in {1898, 1906, 1907}:
             self._add_good_friday("Good Friday")
 
         # MEM DAY (May 30) - closed every year since 1873
         # last Mon in May since 1971
-        if year >= 1873:
+        if self._year >= 1873:
             name = "Memorial Day"
-            if year <= 1970:
+            if self._year <= 1970:
                 self._move_holiday(self._add_holiday_may_30(name))
             else:
                 self._add_holiday_last_mon_of_may(name)
 
         # FLAG DAY: June 14th 1916 - 1953
-        if 1916 <= year <= 1953:
+        if 1916 <= self._year <= 1953:
             self._move_holiday(self._add_holiday_jun_14("Flag Day"))
 
         # JUNETEENTH: since 2022
-        if year >= 2022:
+        if self._year >= 2022:
             self._move_holiday(self._add_holiday_jun_19("Juneteenth National Independence Day"))
 
         # INDEPENDENCE DAY (July 4) - history suggests closed every year
         self._move_holiday(self._add_holiday_jul_4("Independence Day"))
 
         # LABOR DAY - first mon in Sept, since 1887
-        if year >= 1887:
+        if self._year >= 1887:
             self._add_holiday_1st_mon_of_sep("Labor Day")
 
         # COLUMBUS DAY/INDIGENOUS PPL DAY: Oct 12 - closed 1909-1953
-        if 1909 <= year <= 1953:
+        if 1909 <= self._year <= 1953:
             self._move_holiday(self._add_columbus_day("Columbus Day"))
 
         # ELECTION DAY: Tuesday after first Monday in November (2 U.S. Code §7)
         # closed until 1969, then closed pres years 1972-80
-        if year <= 1968 or year in {1972, 1976, 1980}:
+        if self._year <= 1968 or self._year in {1972, 1976, 1980}:
             self._add_holiday_1_day_past_1st_mon_of_nov("Election Day")
 
         # VETERAN'S DAY: Nov 11 - closed 1918, 1921, 1934-1953
-        if year in {1918, 1921} or 1934 <= year <= 1953:
+        if self._year in {1918, 1921} or 1934 <= self._year <= 1953:
             self._move_holiday(self._add_remembrance_day("Veteran's Day"))
 
         # THXGIVING DAY: 4th Thurs in Nov - closed every year
@@ -123,17 +122,17 @@ class NewYorkStockExchange(
         self._move_holiday(self._add_christmas_day("Christmas Day"))
 
         # Special holidays.
-        if year == 1914:
+        if self._year == 1914:
             # Beginning of WWI.
-            begin = date(year, JUL, 31)
-            end = date(year, NOV, 27)
+            begin = date(self._year, JUL, 31)
+            end = date(self._year, NOV, 27)
             for dt in (_timedelta(begin, n) for n in range((end - begin).days + 1)):
                 if self._is_weekend(dt) or dt in self:
                     continue
                 self._add_holiday("World War I", dt)
-        elif year == 1968:
-            begin = date(year, JUN, 12)
-            end = date(year, DEC, 24)
+        elif self._year == 1968:
+            begin = date(self._year, JUN, 12)
+            end = date(self._year, DEC, 24)
             # Wednesday special holiday.
             for dt in (_timedelta(begin, n) for n in range(0, (end - begin).days + 1, 7)):
                 self._add_holiday("Paper Crisis", dt)
diff --git a/holidays/holiday_base.py b/holidays/holiday_base.py
index 70d8b80e..bf0bc72e 100644
--- a/holidays/holiday_base.py
+++ b/holidays/holiday_base.py
@@ -39,7 +39,7 @@ from holidays.calendars.gregorian import (
     MONTHS,
     WEEKDAYS,
 )
-from holidays.constants import HOLIDAY_NAME_DELIMITER, PUBLIC
+from holidays.constants import HOLIDAY_NAME_DELIMITER, PUBLIC, DEFAULT_START_YEAR, DEFAULT_END_YEAR
 from holidays.helpers import _normalize_arguments, _normalize_tuple
 
 CategoryArg = Union[str, Iterable[str]]
@@ -245,6 +245,10 @@ class HolidayBase(dict[date, str]):
     """All holiday categories supported by this entity."""
     supported_languages: tuple[str, ...] = ()
     """All languages supported by this entity."""
+    start_year: int = DEFAULT_START_YEAR
+    """Start year of holidays presence for this entity."""
+    end_year: int = DEFAULT_END_YEAR
+    """End year of holidays presence for this entity."""
 
     def __init__(
         self,
@@ -829,6 +833,9 @@ class HolidayBase(dict[date, str]):
         >>> us_holidays.update(country_holidays('US', years=2021))
         """
 
+        if year < self.start_year or year > self.end_year:
+            return None
+
         self._year = year
         self._populate_common_holidays()
         self._populate_subdiv_holidays()
diff --git a/holidays/locale/en_US/LC_MESSAGES/PY.po b/holidays/locale/en_US/LC_MESSAGES/PY.po
index 12f1b91c..4f5f40d0 100644
--- a/holidays/locale/en_US/LC_MESSAGES/PY.po
+++ b/holidays/locale/en_US/LC_MESSAGES/PY.po
@@ -14,9 +14,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Holidays 0.41\n"
+"Project-Id-Version: Holidays 0.62\n"
 "POT-Creation-Date: 2023-03-05 12:33+0200\n"
-"PO-Revision-Date: 2024-01-05 12:44+0200\n"
+"PO-Revision-Date: 2024-11-28 14:08+0200\n"
 "Last-Translator: ~Jhellico <jhellico@gmail.com>\n"
 "Language-Team: Holidays Localization Team\n"
 "Language: en_US\n"
@@ -27,14 +27,6 @@ msgstr ""
 "Generated-By: pygettext.py 1.5\n"
 "X-Generator: Poedit 3.4\n"
 
-#. Public holiday.
-msgid "Asueto adicionale"
-msgstr "Public holiday"
-
-#. Public sector holiday.
-msgid "Asueto de la Administración Pública"
-msgstr "Public sector holiday"
-
 #. New Year's Day.
 msgid "Año Nuevo"
 msgstr "New Year's Day"
@@ -55,9 +47,13 @@ msgstr "Good Friday"
 msgid "Domingo de Resurrección"
 msgstr "Easter Sunday"
 
-#. Labor Day.
-msgid "Día del Trabajador"
-msgstr "Labor Day"
+#. Workers' Day.
+msgid "Día de los Trabajadores"
+msgstr "Workers' Day"
+
+#. National Holiday.
+msgid "Feriado Nacional"
+msgstr "National Holiday"
 
 #. Independence Day.
 msgid "Día de la Independencia Nacional"
@@ -80,5 +76,13 @@ msgid "Día de la Virgen de Caacupé"
 msgstr "Caacupe Virgin Day"
 
 #. Christmas Day.
-msgid "Navidad"
+msgid "Día de la Navidad"
 msgstr "Christmas Day"
+
+#. Public holiday.
+msgid "Asueto adicionale"
+msgstr "Public holiday"
+
+#. Public sector holiday.
+msgid "Asueto de la Administración Pública"
+msgstr "Public sector holiday"
diff --git a/holidays/locale/es/LC_MESSAGES/PY.po b/holidays/locale/es/LC_MESSAGES/PY.po
index 1c61a6af..271dbae5 100644
--- a/holidays/locale/es/LC_MESSAGES/PY.po
+++ b/holidays/locale/es/LC_MESSAGES/PY.po
@@ -14,9 +14,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Holidays 0.41\n"
+"Project-Id-Version: Holidays 0.62\n"
 "POT-Creation-Date: 2023-03-05 12:33+0200\n"
-"PO-Revision-Date: 2024-01-05 12:41+0200\n"
+"PO-Revision-Date: 2024-11-28 14:07+0200\n"
 "Last-Translator: ~Jhellico <jhellico@gmail.com>\n"
 "Language-Team: Holidays Localization Team\n"
 "Language: es\n"
@@ -27,14 +27,6 @@ msgstr ""
 "Generated-By: pygettext.py 1.5\n"
 "X-Generator: Poedit 3.2.2\n"
 
-#. Public holiday.
-msgid "Asueto adicionale"
-msgstr ""
-
-#. Public sector holiday.
-msgid "Asueto de la Administración Pública"
-msgstr ""
-
 #. New Year's Day.
 msgid "Año Nuevo"
 msgstr ""
@@ -55,8 +47,12 @@ msgstr ""
 msgid "Domingo de Resurrección"
 msgstr ""
 
-#. Labor Day.
-msgid "Día del Trabajador"
+#. Workers' Day.
+msgid "Día de los Trabajadores"
+msgstr ""
+
+#. National Holiday.
+msgid "Feriado Nacional"
 msgstr ""
 
 #. Independence Day.
@@ -80,5 +76,13 @@ msgid "Día de la Virgen de Caacupé"
 msgstr ""
 
 #. Christmas Day.
-msgid "Navidad"
+msgid "Día de la Navidad"
+msgstr ""
+
+#. Public holiday.
+msgid "Asueto adicionale"
+msgstr ""
+
+#. Public sector holiday.
+msgid "Asueto de la Administración Pública"
 msgstr ""
diff --git a/holidays/locale/uk/LC_MESSAGES/PY.po b/holidays/locale/uk/LC_MESSAGES/PY.po
index 77ccd0fc..dcf030db 100644
--- a/holidays/locale/uk/LC_MESSAGES/PY.po
+++ b/holidays/locale/uk/LC_MESSAGES/PY.po
@@ -14,9 +14,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Holidays 0.41\n"
+"Project-Id-Version: Holidays 0.62\n"
 "POT-Creation-Date: 2023-03-05 12:33+0200\n"
-"PO-Revision-Date: 2024-01-05 12:45+0200\n"
+"PO-Revision-Date: 2024-11-28 14:10+0200\n"
 "Last-Translator: ~Jhellico <jhellico@gmail.com>\n"
 "Language-Team: Holidays Localization Team\n"
 "Language: uk\n"
@@ -27,14 +27,6 @@ msgstr ""
 "Generated-By: pygettext.py 1.5\n"
 "X-Generator: Poedit 3.2.2\n"
 
-#. Public holiday.
-msgid "Asueto adicionale"
-msgstr "Додатковий вихідний"
-
-#. Public sector holiday.
-msgid "Asueto de la Administración Pública"
-msgstr "Вихідний державних установ"
-
 #. New Year's Day.
 msgid "Año Nuevo"
 msgstr "Новий рік"
@@ -55,10 +47,14 @@ msgstr "Страсна пʼятниця"
 msgid "Domingo de Resurrección"
 msgstr "Великдень"
 
-#. Labor Day.
-msgid "Día del Trabajador"
+#. Workers' Day.
+msgid "Día de los Trabajadores"
 msgstr "День трудящих"
 
+#. National Holiday.
+msgid "Feriado Nacional"
+msgstr "Національне свято"
+
 #. Independence Day.
 msgid "Día de la Independencia Nacional"
 msgstr "День незалежності"
@@ -77,8 +73,16 @@ msgstr "День битви за Бокерон"
 
 #. Caacupe Virgin Day.
 msgid "Día de la Virgen de Caacupé"
-msgstr "Успіння Пресвятої Богородиці"
+msgstr "День Богоматері Каакупе"
 
 #. Christmas Day.
-msgid "Navidad"
+msgid "Día de la Navidad"
 msgstr "Різдво Христове"
+
+#. Public holiday.
+msgid "Asueto adicionale"
+msgstr "Додатковий вихідний"
+
+#. Public sector holiday.
+msgid "Asueto de la Administración Pública"
+msgstr "Вихідний державних установ"
diff --git a/holidays/registry.py b/holidays/registry.py
index ee61e336..96818ded 100644
--- a/holidays/registry.py
+++ b/holidays/registry.py
@@ -81,6 +81,7 @@ COUNTRIES: RegistryDict = {
     "greenland": ("Greenland", "GL", "GRL"),
     "guam": ("Guam", "GU", "GUM", "HolidaysGU"),
     "guatemala": ("Guatemala", "GT", "GUA"),
+    "guernsey": ("Guernsey", "GG", "GGY"),
     "haiti": ("Haiti", "HT", "HTI"),
     "honduras": ("Honduras", "HN", "HND"),
     "hongkong": ("HongKong", "HK", "HKG"),
diff --git a/holidays/version.py b/holidays/version.py
index 45684445..e09afe48 100644
--- a/holidays/version.py
+++ b/holidays/version.py
@@ -10,4 +10,4 @@
 #  Website: https://github.com/vacanza/holidays
 #  License: MIT (see LICENSE file)
 
-__version__ = "0.61"
+__version__ = "0.62"
diff --git a/pyproject.toml b/pyproject.toml
index 53b185b4..9f725d14 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [project]
 name = "holidays"
-description = "World Holidays Framework"
+description = "Open World Holidays Framework"
 license = { "text" = "MIT" }
 readme = "README.rst"
 requires-python = ">=3.9"
diff --git a/requirements/dev.txt b/requirements/dev.txt
index 28502c5e..8ebd4d5d 100644
--- a/requirements/dev.txt
+++ b/requirements/dev.txt
@@ -7,7 +7,7 @@ hijridate==2.5.0
 lingva==5.0.4
 pre-commit==4.0.1
 pygithub==2.5.0
-ruff==0.7.3
+ruff==0.8.0
 tox==4.23.2
 urllib3>=2.2.2 # not directly required, pinned by Snyk to avoid a vulnerability
 zipp>=3.19.1 # not directly required, pinned by Snyk to avoid a vulnerability
diff --git a/snapshots/countries/AR_COMMON.json b/snapshots/countries/AR_COMMON.json
index 1a0eda8b..9f7d7e8e 100644
--- a/snapshots/countries/AR_COMMON.json
+++ b/snapshots/countries/AR_COMMON.json
@@ -952,12 +952,15 @@
     "2025-04-02": "Veterans Day and the Fallen in the Malvinas War",
     "2025-04-18": "Good Friday",
     "2025-05-01": "Labor Day",
+    "2025-05-02": "Bridge Public Holiday",
     "2025-05-25": "May Revolution Day",
     "2025-06-16": "Pass to the Immortality of General Don Mart\u00edn Miguel de G\u00fcemes (observed)",
     "2025-06-20": "Pass to the Immortality of General Don Manuel Belgrano",
     "2025-07-09": "Independence Day",
+    "2025-08-15": "Bridge Public Holiday",
     "2025-08-17": "Pass to the Immortality of General Don Jos\u00e9 de San Martin",
     "2025-10-12": "Respect for Cultural Diversity Day",
+    "2025-11-21": "Bridge Public Holiday",
     "2025-11-24": "National Sovereignty Day (observed)",
     "2025-12-08": "Immaculate Conception",
     "2025-12-25": "Christmas Day",
diff --git a/snapshots/countries/AZ_COMMON.json b/snapshots/countries/AZ_COMMON.json
index 95d1045d..c5672109 100644
--- a/snapshots/countries/AZ_COMMON.json
+++ b/snapshots/countries/AZ_COMMON.json
@@ -732,10 +732,13 @@
     "2024-11-12": "Constitution Day; Day off (substituted from 11/16/2024)",
     "2024-11-13": "Day off (substituted from 11/23/2024)",
     "2024-11-17": "National Revival Day",
+    "2024-12-30": "Day off (substituted from 12/28/2024)",
     "2024-12-31": "International Azerbaijanis Solidarity Day",
     "2025-01-01": "New Year's Day",
     "2025-01-02": "New Year's Day",
+    "2025-01-03": "Day off (substituted from 12/29/2024)",
     "2025-01-20": "Martyrs' Day",
+    "2025-01-29": "Municipal elections",
     "2025-03-08": "Women's Day",
     "2025-03-10": "Women's Day (observed)",
     "2025-03-20": "Spring Festival",
diff --git a/snapshots/countries/GG_COMMON.json b/snapshots/countries/GG_COMMON.json
new file mode 100644
index 00000000..17917cd7
--- /dev/null
+++ b/snapshots/countries/GG_COMMON.json
@@ -0,0 +1,963 @@
+{
+    "1950-01-01": "New Year's Day",
+    "1950-04-07": "Good Friday",
+    "1950-04-10": "Easter Monday",
+    "1950-05-09": "Liberation Day",
+    "1950-05-29": "Whit Monday",
+    "1950-08-07": "Summer Bank Holiday",
+    "1950-12-25": "Christmas Day",
+    "1950-12-26": "Boxing Day",
+    "1951-01-01": "New Year's Day",
+    "1951-03-23": "Good Friday",
+    "1951-03-26": "Easter Monday",
+    "1951-05-09": "Liberation Day",
+    "1951-05-14": "Whit Monday",
+    "1951-08-06": "Summer Bank Holiday",
+    "1951-12-25": "Christmas Day",
+    "1951-12-26": "Boxing Day",
+    "1952-01-01": "New Year's Day",
+    "1952-04-11": "Good Friday",
+    "1952-04-14": "Easter Monday",
+    "1952-05-09": "Liberation Day",
+    "1952-06-02": "Whit Monday",
+    "1952-08-04": "Summer Bank Holiday",
+    "1952-12-25": "Christmas Day",
+    "1952-12-26": "Boxing Day",
+    "1953-01-01": "New Year's Day",
+    "1953-04-03": "Good Friday",
+    "1953-04-06": "Easter Monday",
+    "1953-05-09": "Liberation Day",
+    "1953-05-25": "Whit Monday",
+    "1953-06-02": "The Coronation of Queen Elizabeth II",
+    "1953-08-03": "Summer Bank Holiday",
+    "1953-12-25": "Christmas Day",
+    "1953-12-26": "Boxing Day",
+    "1954-01-01": "New Year's Day",
+    "1954-04-16": "Good Friday",
+    "1954-04-19": "Easter Monday",
+    "1954-05-09": "Liberation Day",
+    "1954-06-07": "Whit Monday",
+    "1954-08-02": "Summer Bank Holiday",
+    "1954-12-25": "Christmas Day",
+    "1954-12-26": "Boxing Day",
+    "1955-01-01": "New Year's Day",
+    "1955-04-08": "Good Friday",
+    "1955-04-11": "Easter Monday",
+    "1955-05-09": "Liberation Day",
+    "1955-05-30": "Whit Monday",
+    "1955-08-01": "Summer Bank Holiday",
+    "1955-12-25": "Christmas Day",
+    "1955-12-26": "Boxing Day",
+    "1955-12-27": "Christmas Day (substitute day)",
+    "1956-01-01": "New Year's Day",
+    "1956-01-02": "New Year's Day (substitute day)",
+    "1956-03-30": "Good Friday",
+    "1956-04-02": "Easter Monday",
+    "1956-05-09": "Liberation Day",
+    "1956-05-21": "Whit Monday",
+    "1956-08-06": "Summer Bank Holiday",
+    "1956-12-25": "Christmas Day",
+    "1956-12-26": "Boxing Day",
+    "1957-01-01": "New Year's Day",
+    "1957-04-19": "Good Friday",
+    "1957-04-22": "Easter Monday",
+    "1957-05-09": "Liberation Day",
+    "1957-06-10": "Whit Monday",
+    "1957-07-26": "The visit of Her Majesty Queen Elizabeth II",
+    "1957-08-05": "Summer Bank Holiday",
+    "1957-12-25": "Christmas Day",
+    "1957-12-26": "Boxing Day",
+    "1958-01-01": "New Year's Day",
+    "1958-04-04": "Good Friday",
+    "1958-04-07": "Easter Monday",
+    "1958-05-09": "Liberation Day",
+    "1958-05-26": "Whit Monday",
+    "1958-08-04": "Summer Bank Holiday",
+    "1958-12-25": "Christmas Day",
+    "1958-12-26": "Boxing Day",
+    "1959-01-01": "New Year's Day",
+    "1959-03-27": "Good Friday",
+    "1959-03-30": "Easter Monday",
+    "1959-05-09": "Liberation Day",
+    "1959-05-18": "Whit Monday",
+    "1959-08-03": "Summer Bank Holiday",
+    "1959-12-25": "Christmas Day",
+    "1959-12-26": "Boxing Day",
+    "1960-01-01": "New Year's Day",
+    "1960-04-15": "Good Friday",
+    "1960-04-18": "Easter Monday",
+    "1960-05-09": "Liberation Day",
+    "1960-06-06": "Whit Monday",
+    "1960-08-01": "Summer Bank Holiday",
+    "1960-12-25": "Christmas Day",
+    "1960-12-26": "Boxing Day",
+    "1960-12-27": "Christmas Day (substitute day)",
+    "1961-01-01": "New Year's Day",
+    "1961-01-02": "New Year's Day (substitute day)",
+    "1961-03-31": "Good Friday",
+    "1961-04-03": "Easter Monday",
+    "1961-05-09": "Liberation Day",
+    "1961-05-22": "Whit Monday",
+    "1961-08-07": "Summer Bank Holiday",
+    "1961-12-25": "Christmas Day",
+    "1961-12-26": "Boxing Day",
+    "1962-01-01": "New Year's Day",
+    "1962-04-20": "Good Friday",
+    "1962-04-23": "Easter Monday",
+    "1962-05-09": "Liberation Day",
+    "1962-06-11": "Whit Monday",
+    "1962-08-06": "Summer Bank Holiday",
+    "1962-12-25": "Christmas Day",
+    "1962-12-26": "Boxing Day",
+    "1963-01-01": "New Year's Day",
+    "1963-04-12": "Good Friday",
+    "1963-04-15": "Easter Monday",
+    "1963-05-09": "Liberation Day",
+    "1963-06-03": "Whit Monday",
+    "1963-08-05": "Summer Bank Holiday",
+    "1963-12-25": "Christmas Day",
+    "1963-12-26": "Boxing Day",
+    "1964-01-01": "New Year's Day",
+    "1964-03-27": "Good Friday",
+    "1964-03-30": "Easter Monday",
+    "1964-05-09": "Liberation Day",
+    "1964-05-18": "Whit Monday",
+    "1964-08-03": "Summer Bank Holiday",
+    "1964-12-25": "Christmas Day",
+    "1964-12-26": "Boxing Day",
+    "1965-01-01": "New Year's Day",
+    "1965-04-16": "Good Friday",
+    "1965-04-19": "Easter Monday",
+    "1965-05-09": "Liberation Day",
+    "1965-06-07": "Whit Monday",
+    "1965-08-30": "Summer Bank Holiday",
+    "1965-12-25": "Christmas Day",
+    "1965-12-26": "Boxing Day",
+    "1965-12-27": "Boxing Day (substitute day)",
+    "1966-01-01": "New Year's Day",
+    "1966-04-08": "Good Friday",
+    "1966-04-11": "Easter Monday",
+    "1966-05-09": "Liberation Day",
+    "1966-05-30": "Whit Monday",
+    "1966-08-29": "Summer Bank Holiday",
+    "1966-12-25": "Christmas Day",
+    "1966-12-26": "Boxing Day",
+    "1966-12-27": "Christmas Day (substitute day)",
+    "1967-01-01": "New Year's Day",
+    "1967-01-02": "New Year's Day (substitute day)",
+    "1967-03-24": "Good Friday",
+    "1967-03-27": "Easter Monday",
+    "1967-05-09": "Liberation Day",
+    "1967-05-29": "Spring Bank Holiday",
+    "1967-08-28": "Summer Bank Holiday",
+    "1967-12-25": "Christmas Day",
+    "1967-12-26": "Boxing Day",
+    "1968-01-01": "New Year's Day",
+    "1968-04-12": "Good Friday",
+    "1968-04-15": "Easter Monday",
+    "1968-05-09": "Liberation Day",
+    "1968-06-03": "Whit Monday",
+    "1968-09-02": "Summer Bank Holiday",
+    "1968-12-25": "Christmas Day",
+    "1968-12-26": "Boxing Day",
+    "1969-01-01": "New Year's Day",
+    "1969-04-04": "Good Friday",
+    "1969-04-07": "Easter Monday",
+    "1969-05-09": "Liberation Day",
+    "1969-05-26": "Whit Monday",
+    "1969-09-01": "Summer Bank Holiday",
+    "1969-12-25": "Christmas Day",
+    "1969-12-26": "Boxing Day",
+    "1970-01-01": "New Year's Day",
+    "1970-03-27": "Good Friday",
+    "1970-03-30": "Easter Monday",
+    "1970-05-09": "Liberation Day",
+    "1970-05-25": "Spring Bank Holiday",
+    "1970-08-31": "Summer Bank Holiday",
+    "1970-12-25": "Christmas Day",
+    "1970-12-26": "Boxing Day",
+    "1971-01-01": "New Year's Day",
+    "1971-04-09": "Good Friday",
+    "1971-04-12": "Easter Monday",
+    "1971-05-09": "Liberation Day",
+    "1971-05-31": "Whit Monday",
+    "1971-08-30": "Summer Bank Holiday",
+    "1971-12-25": "Christmas Day",
+    "1971-12-26": "Boxing Day",
+    "1971-12-27": "Boxing Day (substitute day)",
+    "1972-01-01": "New Year's Day",
+    "1972-03-31": "Good Friday",
+    "1972-04-03": "Easter Monday",
+    "1972-05-09": "Liberation Day",
+    "1972-05-22": "Whit Monday",
+    "1972-08-28": "Summer Bank Holiday",
+    "1972-12-25": "Christmas Day",
+    "1972-12-26": "Boxing Day",
+    "1973-01-01": "New Year's Day",
+    "1973-04-20": "Good Friday",
+    "1973-04-23": "Easter Monday",
+    "1973-05-09": "Liberation Day",
+    "1973-05-28": "Spring Bank Holiday",
+    "1973-08-27": "Summer Bank Holiday",
+    "1973-12-25": "Christmas Day",
+    "1973-12-26": "Boxing Day",
+    "1974-01-01": "New Year's Day",
+    "1974-04-12": "Good Friday",
+    "1974-04-15": "Easter Monday",
+    "1974-05-09": "Liberation Day",
+    "1974-05-27": "Spring Bank Holiday",
+    "1974-08-26": "Summer Bank Holiday",
+    "1974-12-25": "Christmas Day",
+    "1974-12-26": "Boxing Day",
+    "1975-01-01": "New Year's Day",
+    "1975-03-28": "Good Friday",
+    "1975-03-31": "Easter Monday",
+    "1975-05-09": "Liberation Day",
+    "1975-05-26": "Spring Bank Holiday",
+    "1975-08-25": "Summer Bank Holiday",
+    "1975-12-25": "Christmas Day",
+    "1975-12-26": "Boxing Day",
+    "1976-01-01": "New Year's Day",
+    "1976-04-16": "Good Friday",
+    "1976-04-19": "Easter Monday",
+    "1976-05-09": "Liberation Day",
+    "1976-05-31": "Spring Bank Holiday",
+    "1976-08-30": "Summer Bank Holiday",
+    "1976-12-25": "Christmas Day",
+    "1976-12-26": "Boxing Day",
+    "1976-12-27": "Boxing Day (substitute day)",
+    "1977-01-01": "New Year's Day",
+    "1977-04-08": "Good Friday",
+    "1977-04-11": "Easter Monday",
+    "1977-05-09": "Liberation Day",
+    "1977-06-07": "Silver Jubilee of Elizabeth II",
+    "1977-12-25": "Christmas Day",
+    "1977-12-26": "Boxing Day",
+    "1977-12-27": "Christmas Day (substitute day)",
+    "1978-01-01": "New Year's Day",
+    "1978-01-02": "New Year's Day (substitute day)",
+    "1978-03-24": "Good Friday",
+    "1978-03-27": "Easter Monday",
+    "1978-05-09": "Liberation Day",
+    "1978-06-28": "The visit of Her Majesty Queen Elizabeth II",
+    "1978-12-25": "Christmas Day",
+    "1978-12-26": "Boxing Day",
+    "1979-01-01": "New Year's Day",
+    "1979-04-13": "Good Friday",
+    "1979-04-16": "Easter Monday",
+    "1979-05-09": "Liberation Day",
+    "1979-05-28": "Spring Bank Holiday",
+    "1979-08-27": "Summer Bank Holiday",
+    "1979-12-25": "Christmas Day",
+    "1979-12-26": "Boxing Day",
+    "1980-01-01": "New Year's Day",
+    "1980-04-04": "Good Friday",
+    "1980-04-07": "Easter Monday",
+    "1980-05-05": "May Day Bank Holiday",
+    "1980-05-09": "Liberation Day",
+    "1980-05-26": "Spring Bank Holiday",
+    "1980-08-25": "Summer Bank Holiday",
+    "1980-12-25": "Christmas Day",
+    "1980-12-26": "Boxing Day",
+    "1981-01-01": "New Year's Day",
+    "1981-04-17": "Good Friday",
+    "1981-04-20": "Easter Monday",
+    "1981-05-04": "May Day Bank Holiday",
+    "1981-05-09": "Liberation Day",
+    "1981-05-25": "Spring Bank Holiday",
+    "1981-07-29": "Wedding of Charles and Diana",
+    "1981-08-31": "Summer Bank Holiday",
+    "1981-12-25": "Christmas Day",
+    "1981-12-26": "Boxing Day",
+    "1981-12-28": "Boxing Day (substitute day)",
+    "1982-01-01": "New Year's Day",
+    "1982-04-09": "Good Friday",
+    "1982-04-12": "Easter Monday",
+    "1982-05-03": "May Day Bank Holiday",
+    "1982-05-09": "Liberation Day",
+    "1982-05-31": "Spring Bank Holiday",
+    "1982-08-30": "Summer Bank Holiday",
+    "1982-12-25": "Christmas Day",
+    "1982-12-26": "Boxing Day",
+    "1982-12-27": "Boxing Day (substitute day)",
+    "1982-12-28": "Christmas Day (substitute day)",
+    "1983-01-01": "New Year's Day",
+    "1983-01-03": "New Year's Day (substitute day)",
+    "1983-04-01": "Good Friday",
+    "1983-04-04": "Easter Monday",
+    "1983-05-02": "May Day Bank Holiday",
+    "1983-05-09": "Liberation Day",
+    "1983-05-30": "Spring Bank Holiday",
+    "1983-08-29": "Summer Bank Holiday",
+    "1983-12-25": "Christmas Day",
+    "1983-12-26": "Boxing Day",
+    "1983-12-27": "Christmas Day (substitute day)",
+    "1984-01-01": "New Year's Day",
+    "1984-01-02": "New Year's Day (substitute day)",
+    "1984-04-20": "Good Friday",
+    "1984-04-23": "Easter Monday",
+    "1984-05-07": "May Day Bank Holiday",
+    "1984-05-09": "Liberation Day",
+    "1984-05-28": "Spring Bank Holiday",
+    "1984-08-27": "Summer Bank Holiday",
+    "1984-12-25": "Christmas Day",
+    "1984-12-26": "Boxing Day",
+    "1985-01-01": "New Year's Day",
+    "1985-04-05": "Good Friday",
+    "1985-04-08": "Easter Monday",
+    "1985-05-06": "May Day Bank Holiday",
+    "1985-05-09": "Liberation Day",
+    "1985-05-27": "Spring Bank Holiday",
+    "1985-08-26": "Summer Bank Holiday",
+    "1985-12-25": "Christmas Day",
+    "1985-12-26": "Boxing Day",
+    "1986-01-01": "New Year's Day",
+    "1986-03-28": "Good Friday",
+    "1986-03-31": "Easter Monday",
+    "1986-05-05": "May Day Bank Holiday",
+    "1986-05-09": "Liberation Day",
+    "1986-05-26": "Spring Bank Holiday",
+    "1986-08-25": "Summer Bank Holiday",
+    "1986-12-25": "Christmas Day",
+    "1986-12-26": "Boxing Day",
+    "1987-01-01": "New Year's Day",
+    "1987-04-17": "Good Friday",
+    "1987-04-20": "Easter Monday",
+    "1987-05-04": "May Day Bank Holiday",
+    "1987-05-09": "Liberation Day",
+    "1987-05-25": "Spring Bank Holiday",
+    "1987-08-31": "Summer Bank Holiday",
+    "1987-12-25": "Christmas Day",
+    "1987-12-26": "Boxing Day",
+    "1987-12-28": "Boxing Day (substitute day)",
+    "1988-01-01": "New Year's Day",
+    "1988-04-01": "Good Friday",
+    "1988-04-04": "Easter Monday",
+    "1988-05-02": "May Day Bank Holiday",
+    "1988-05-09": "Liberation Day",
+    "1988-05-30": "Spring Bank Holiday",
+    "1988-08-29": "Summer Bank Holiday",
+    "1988-12-25": "Christmas Day",
+    "1988-12-26": "Boxing Day",
+    "1988-12-27": "Christmas Day (substitute day)",
+    "1989-01-01": "New Year's Day",
+    "1989-01-02": "New Year's Day (substitute day)",
+    "1989-03-24": "Good Friday",
+    "1989-03-27": "Easter Monday",
+    "1989-05-01": "May Day Bank Holiday",
+    "1989-05-09": "Liberation Day",
+    "1989-05-23": "The visit of Her Majesty Queen Elizabeth II",
+    "1989-05-29": "Spring Bank Holiday",
+    "1989-08-28": "Summer Bank Holiday",
+    "1989-12-25": "Christmas Day",
+    "1989-12-26": "Boxing Day",
+    "1990-01-01": "New Year's Day",
+    "1990-04-13": "Good Friday",
+    "1990-04-16": "Easter Monday",
+    "1990-05-07": "May Day Bank Holiday",
+    "1990-05-09": "Liberation Day",
+    "1990-05-28": "Spring Bank Holiday",
+    "1990-08-27": "Summer Bank Holiday",
+    "1990-12-25": "Christmas Day",
+    "1990-12-26": "Boxing Day",
+    "1991-01-01": "New Year's Day",
+    "1991-03-29": "Good Friday",
+    "1991-04-01": "Easter Monday",
+    "1991-05-06": "May Day Bank Holiday",
+    "1991-05-09": "Liberation Day",
+    "1991-05-27": "Spring Bank Holiday",
+    "1991-08-26": "Summer Bank Holiday",
+    "1991-12-25": "Christmas Day",
+    "1991-12-26": "Boxing Day",
+    "1992-01-01": "New Year's Day",
+    "1992-04-17": "Good Friday",
+    "1992-04-20": "Easter Monday",
+    "1992-05-04": "May Day Bank Holiday",
+    "1992-05-09": "Liberation Day",
+    "1992-05-25": "Spring Bank Holiday",
+    "1992-08-31": "Summer Bank Holiday",
+    "1992-12-25": "Christmas Day",
+    "1992-12-26": "Boxing Day",
+    "1993-01-01": "New Year's Day",
+    "1993-04-09": "Good Friday",
+    "1993-04-12": "Easter Monday",
+    "1993-05-03": "May Day Bank Holiday",
+    "1993-05-09": "Liberation Day",
+    "1993-05-31": "Spring Bank Holiday",
+    "1993-08-30": "Summer Bank Holiday",
+    "1993-12-25": "Christmas Day",
+    "1993-12-26": "Boxing Day",
+    "1993-12-27": "Boxing Day (substitute day)",
+    "1993-12-28": "Christmas Day (substitute day)",
+    "1994-01-01": "New Year's Day",
+    "1994-01-03": "New Year's Day (substitute day)",
+    "1994-04-01": "Good Friday",
+    "1994-04-04": "Easter Monday",
+    "1994-05-02": "May Day Bank Holiday",
+    "1994-05-09": "Liberation Day",
+    "1994-05-30": "Spring Bank Holiday",
+    "1994-08-29": "Summer Bank Holiday",
+    "1994-12-25": "Christmas Day",
+    "1994-12-26": "Boxing Day",
+    "1994-12-27": "Christmas Day (substitute day)",
+    "1995-01-01": "New Year's Day",
+    "1995-01-02": "New Year's Day (substitute day)",
+    "1995-04-14": "Good Friday",
+    "1995-04-17": "Easter Monday",
+    "1995-05-08": "May Day Bank Holiday",
+    "1995-05-09": "Liberation Day",
+    "1995-05-29": "Spring Bank Holiday",
+    "1995-08-28": "Summer Bank Holiday",
+    "1995-12-25": "Christmas Day",
+    "1995-12-26": "Boxing Day",
+    "1996-01-01": "New Year's Day",
+    "1996-04-05": "Good Friday",
+    "1996-04-08": "Easter Monday",
+    "1996-05-06": "May Day Bank Holiday",
+    "1996-05-09": "Liberation Day",
+    "1996-05-27": "Spring Bank Holiday",
+    "1996-08-26": "Summer Bank Holiday",
+    "1996-12-25": "Christmas Day",
+    "1996-12-26": "Boxing Day",
+    "1997-01-01": "New Year's Day",
+    "1997-03-28": "Good Friday",
+    "1997-03-31": "Easter Monday",
+    "1997-05-05": "May Day Bank Holiday",
+    "1997-05-09": "Liberation Day",
+    "1997-05-26": "Spring Bank Holiday",
+    "1997-08-25": "Summer Bank Holiday",
+    "1997-12-25": "Christmas Day",
+    "1997-12-26": "Boxing Day",
+    "1998-01-01": "New Year's Day",
+    "1998-04-10": "Good Friday",
+    "1998-04-13": "Easter Monday",
+    "1998-05-04": "May Day Bank Holiday",
+    "1998-05-09": "Liberation Day",
+    "1998-05-25": "Spring Bank Holiday",
+    "1998-08-31": "Summer Bank Holiday",
+    "1998-12-25": "Christmas Day",
+    "1998-12-26": "Boxing Day",
+    "1999-01-01": "New Year's Day",
+    "1999-04-02": "Good Friday",
+    "1999-04-05": "Easter Monday",
+    "1999-05-03": "May Day Bank Holiday",
+    "1999-05-09": "Liberation Day",
+    "1999-05-31": "Spring Bank Holiday",
+    "1999-08-30": "Summer Bank Holiday",
+    "1999-12-25": "Christmas Day",
+    "1999-12-26": "Boxing Day",
+    "1999-12-27": "Boxing Day (substitute day)",
+    "1999-12-28": "Millennium Celebrations",
+    "1999-12-31": "Millennium Celebrations",
+    "2000-01-01": "New Year's Day",
+    "2000-01-03": "Millennium Celebrations",
+    "2000-04-21": "Good Friday",
+    "2000-04-24": "Easter Monday",
+    "2000-05-01": "May Day Bank Holiday",
+    "2000-05-09": "Liberation Day",
+    "2000-05-29": "Spring Bank Holiday",
+    "2000-08-28": "Summer Bank Holiday",
+    "2000-12-25": "Christmas Day",
+    "2000-12-26": "Boxing Day",
+    "2001-01-01": "New Year's Day",
+    "2001-04-13": "Good Friday",
+    "2001-04-16": "Easter Monday",
+    "2001-05-07": "May Day Bank Holiday",
+    "2001-05-09": "Liberation Day",
+    "2001-05-28": "Spring Bank Holiday",
+    "2001-07-12": "The visit of Her Majesty Queen Elizabeth II",
+    "2001-08-27": "Summer Bank Holiday",
+    "2001-12-25": "Christmas Day",
+    "2001-12-26": "Boxing Day",
+    "2002-01-01": "New Year's Day",
+    "2002-03-29": "Good Friday",
+    "2002-04-01": "Easter Monday",
+    "2002-05-06": "May Day Bank Holiday",
+    "2002-05-09": "Liberation Day",
+    "2002-06-03": "Golden Jubilee of Elizabeth II",
+    "2002-06-04": "Spring Bank Holiday",
+    "2002-08-26": "Summer Bank Holiday",
+    "2002-12-25": "Christmas Day",
+    "2002-12-26": "Boxing Day",
+    "2003-01-01": "New Year's Day",
+    "2003-04-18": "Good Friday",
+    "2003-04-21": "Easter Monday",
+    "2003-05-05": "May Day Bank Holiday",
+    "2003-05-09": "Liberation Day",
+    "2003-05-26": "Spring Bank Holiday",
+    "2003-08-25": "Summer Bank Holiday",
+    "2003-12-25": "Christmas Day",
+    "2003-12-26": "Boxing Day",
+    "2004-01-01": "New Year's Day",
+    "2004-04-09": "Good Friday",
+    "2004-04-12": "Easter Monday",
+    "2004-05-03": "May Day Bank Holiday",
+    "2004-05-09": "Liberation Day",
+    "2004-05-31": "Spring Bank Holiday",
+    "2004-08-30": "Summer Bank Holiday",
+    "2004-12-25": "Christmas Day",
+    "2004-12-26": "Boxing Day",
+    "2004-12-27": "Boxing Day (substitute day)",
+    "2004-12-28": "Christmas Day (substitute day)",
+    "2005-01-01": "New Year's Day",
+    "2005-01-03": "New Year's Day (substitute day)",
+    "2005-03-25": "Good Friday",
+    "2005-03-28": "Easter Monday",
+    "2005-05-02": "May Day Bank Holiday",
+    "2005-05-09": "Liberation Day",
+    "2005-05-30": "Spring Bank Holiday",
+    "2005-08-29": "Summer Bank Holiday",
+    "2005-12-25": "Christmas Day",
+    "2005-12-26": "Boxing Day",
+    "2005-12-27": "Christmas Day (substitute day)",
+    "2006-01-01": "New Year's Day",
+    "2006-01-02": "New Year's Day (substitute day)",
+    "2006-04-14": "Good Friday",
+    "2006-04-17": "Easter Monday",
+    "2006-05-01": "May Day Bank Holiday",
+    "2006-05-09": "Liberation Day",
+    "2006-05-29": "Spring Bank Holiday",
+    "2006-08-28": "Summer Bank Holiday",
+    "2006-12-25": "Christmas Day",
+    "2006-12-26": "Boxing Day",
+    "2007-01-01": "New Year's Day",
+    "2007-04-06": "Good Friday",
+    "2007-04-09": "Easter Monday",
+    "2007-05-07": "May Day Bank Holiday",
+    "2007-05-09": "Liberation Day",
+    "2007-05-28": "Spring Bank Holiday",
+    "2007-08-27": "Summer Bank Holiday",
+    "2007-12-25": "Christmas Day",
+    "2007-12-26": "Boxing Day",
+    "2008-01-01": "New Year's Day",
+    "2008-03-21": "Good Friday",
+    "2008-03-24": "Easter Monday",
+    "2008-05-05": "May Day Bank Holiday",
+    "2008-05-09": "Liberation Day",
+    "2008-05-26": "Spring Bank Holiday",
+    "2008-08-25": "Summer Bank Holiday",
+    "2008-12-25": "Christmas Day",
+    "2008-12-26": "Boxing Day",
+    "2009-01-01": "New Year's Day",
+    "2009-04-10": "Good Friday",
+    "2009-04-13": "Easter Monday",
+    "2009-05-04": "May Day Bank Holiday",
+    "2009-05-09": "Liberation Day",
+    "2009-05-25": "Spring Bank Holiday",
+    "2009-08-31": "Summer Bank Holiday",
+    "2009-12-25": "Christmas Day",
+    "2009-12-26": "Boxing Day",
+    "2009-12-28": "Boxing Day (substitute day)",
+    "2010-01-01": "New Year's Day",
+    "2010-04-02": "Good Friday",
+    "2010-04-05": "Easter Monday",
+    "2010-05-03": "May Day Bank Holiday",
+    "2010-05-10": "Liberation Day",
+    "2010-05-31": "Spring Bank Holiday",
+    "2010-08-30": "Summer Bank Holiday",
+    "2010-12-25": "Christmas Day",
+    "2010-12-26": "Boxing Day",
+    "2010-12-27": "Christmas Day (substitute day)",
+    "2010-12-28": "Boxing Day (substitute day)",
+    "2011-01-01": "New Year's Day",
+    "2011-01-03": "New Year's Day (substitute day)",
+    "2011-04-22": "Good Friday",
+    "2011-04-25": "Easter Monday",
+    "2011-04-29": "Wedding of William and Catherine",
+    "2011-05-02": "May Day Bank Holiday",
+    "2011-05-09": "Liberation Day",
+    "2011-05-30": "Spring Bank Holiday",
+    "2011-08-29": "Summer Bank Holiday",
+    "2011-12-25": "Christmas Day",
+    "2011-12-26": "Boxing Day",
+    "2011-12-27": "Christmas Day (substitute day)",
+    "2012-01-01": "New Year's Day",
+    "2012-01-02": "New Year's Day (substitute day)",
+    "2012-04-06": "Good Friday",
+    "2012-04-09": "Easter Monday",
+    "2012-05-07": "May Day Bank Holiday",
+    "2012-05-09": "Liberation Day",
+    "2012-06-04": "Spring Bank Holiday",
+    "2012-06-05": "Diamond Jubilee of Elizabeth II",
+    "2012-08-27": "Summer Bank Holiday",
+    "2012-12-25": "Christmas Day",
+    "2012-12-26": "Boxing Day",
+    "2013-01-01": "New Year's Day",
+    "2013-03-29": "Good Friday",
+    "2013-04-01": "Easter Monday",
+    "2013-05-06": "May Day Bank Holiday",
+    "2013-05-09": "Liberation Day",
+    "2013-05-27": "Spring Bank Holiday",
+    "2013-08-26": "Summer Bank Holiday",
+    "2013-12-25": "Christmas Day",
+    "2013-12-26": "Boxing Day",
+    "2014-01-01": "New Year's Day",
+    "2014-04-18": "Good Friday",
+    "2014-04-21": "Easter Monday",
+    "2014-05-05": "May Day Bank Holiday",
+    "2014-05-09": "Liberation Day",
+    "2014-05-26": "Spring Bank Holiday",
+    "2014-08-25": "Summer Bank Holiday",
+    "2014-12-25": "Christmas Day",
+    "2014-12-26": "Boxing Day",
+    "2015-01-01": "New Year's Day",
+    "2015-04-03": "Good Friday",
+    "2015-04-06": "Easter Monday",
+    "2015-05-04": "May Day Bank Holiday",
+    "2015-05-09": "Liberation Day",
+    "2015-05-25": "Spring Bank Holiday",
+    "2015-08-31": "Summer Bank Holiday",
+    "2015-12-25": "Christmas Day",
+    "2015-12-26": "Boxing Day",
+    "2015-12-28": "Boxing Day (substitute day)",
+    "2016-01-01": "New Year's Day",
+    "2016-03-25": "Good Friday",
+    "2016-03-28": "Easter Monday",
+    "2016-05-02": "May Day Bank Holiday",
+    "2016-05-09": "Liberation Day",
+    "2016-05-30": "Spring Bank Holiday",
+    "2016-08-29": "Summer Bank Holiday",
+    "2016-12-25": "Christmas Day",
+    "2016-12-26": "Boxing Day",
+    "2016-12-27": "Christmas Day (substitute day)",
+    "2017-01-01": "New Year's Day",
+    "2017-01-02": "New Year's Day (substitute day)",
+    "2017-04-14": "Good Friday",
+    "2017-04-17": "Easter Monday",
+    "2017-05-01": "May Day Bank Holiday",
+    "2017-05-09": "Liberation Day",
+    "2017-05-29": "Spring Bank Holiday",
+    "2017-08-28": "Summer Bank Holiday",
+    "2017-12-25": "Christmas Day",
+    "2017-12-26": "Boxing Day",
+    "2018-01-01": "New Year's Day",
+    "2018-03-30": "Good Friday",
+    "2018-04-02": "Easter Monday",
+    "2018-05-07": "May Day Bank Holiday",
+    "2018-05-09": "Liberation Day",
+    "2018-05-28": "Spring Bank Holiday",
+    "2018-08-27": "Summer Bank Holiday",
+    "2018-12-25": "Christmas Day",
+    "2018-12-26": "Boxing Day",
+    "2019-01-01": "New Year's Day",
+    "2019-04-19": "Good Friday",
+    "2019-04-22": "Easter Monday",
+    "2019-05-06": "May Day Bank Holiday",
+    "2019-05-09": "Liberation Day",
+    "2019-05-27": "Spring Bank Holiday",
+    "2019-08-26": "Summer Bank Holiday",
+    "2019-12-25": "Christmas Day",
+    "2019-12-26": "Boxing Day",
+    "2020-01-01": "New Year's Day",
+    "2020-04-10": "Good Friday",
+    "2020-04-13": "Easter Monday",
+    "2020-05-08": "May Day Bank Holiday",
+    "2020-05-09": "Liberation Day",
+    "2020-05-25": "Spring Bank Holiday",
+    "2020-08-31": "Summer Bank Holiday",
+    "2020-12-25": "Christmas Day",
+    "2020-12-26": "Boxing Day",
+    "2020-12-28": "Boxing Day (substitute day)",
+    "2021-01-01": "New Year's Day",
+    "2021-04-02": "Good Friday",
+    "2021-04-05": "Easter Monday",
+    "2021-05-03": "May Day Bank Holiday",
+    "2021-05-09": "Liberation Day",
+    "2021-05-31": "Spring Bank Holiday",
+    "2021-08-30": "Summer Bank Holiday",
+    "2021-12-25": "Christmas Day",
+    "2021-12-26": "Boxing Day",
+    "2021-12-27": "Christmas Day (substitute day)",
+    "2021-12-28": "Boxing Day (substitute day)",
+    "2022-01-01": "New Year's Day",
+    "2022-01-03": "New Year's Day (substitute day)",
+    "2022-04-15": "Good Friday",
+    "2022-04-18": "Easter Monday",
+    "2022-05-02": "May Day Bank Holiday",
+    "2022-05-09": "Liberation Day",
+    "2022-06-02": "Spring Bank Holiday",
+    "2022-06-03": "Queen's Platinum Jubilee Bank Holiday",
+    "2022-08-29": "Summer Bank Holiday",
+    "2022-09-19": "State Funeral of Queen Elizabeth II",
+    "2022-12-25": "Christmas Day",
+    "2022-12-26": "Boxing Day",
+    "2022-12-27": "Christmas Day (substitute day)",
+    "2023-01-01": "New Year's Day",
+    "2023-01-02": "New Year's Day (substitute day)",
+    "2023-04-07": "Good Friday",
+    "2023-04-10": "Easter Monday",
+    "2023-05-01": "May Day Bank Holiday",
+    "2023-05-08": "Extra Public Holiday for the Coronation of King Charles III",
+    "2023-05-09": "Liberation Day",
+    "2023-05-29": "Spring Bank Holiday",
+    "2023-08-28": "Summer Bank Holiday",
+    "2023-12-25": "Christmas Day",
+    "2023-12-26": "Boxing Day",
+    "2024-01-01": "New Year's Day",
+    "2024-03-29": "Good Friday",
+    "2024-04-01": "Easter Monday",
+    "2024-05-06": "May Day Bank Holiday",
+    "2024-05-09": "Liberation Day",
+    "2024-05-27": "Spring Bank Holiday",
+    "2024-07-16": "The visit of His Majesty King Charles III and Queen Camilla",
+    "2024-08-26": "Summer Bank Holiday",
+    "2024-12-25": "Christmas Day",
+    "2024-12-26": "Boxing Day",
+    "2025-01-01": "New Year's Day",
+    "2025-04-18": "Good Friday",
+    "2025-04-21": "Easter Monday",
+    "2025-05-05": "May Day Bank Holiday",
+    "2025-05-09": "Liberation Day",
+    "2025-05-26": "Spring Bank Holiday",
+    "2025-08-25": "Summer Bank Holiday",
+    "2025-12-25": "Christmas Day",
+    "2025-12-26": "Boxing Day",
+    "2026-01-01": "New Year's Day",
+    "2026-04-03": "Good Friday",
+    "2026-04-06": "Easter Monday",
+    "2026-05-04": "May Day Bank Holiday",
+    "2026-05-09": "Liberation Day",
+    "2026-05-25": "Spring Bank Holiday",
+    "2026-08-31": "Summer Bank Holiday",
+    "2026-12-25": "Christmas Day",
+    "2026-12-26": "Boxing Day",
+    "2026-12-28": "Boxing Day (substitute day)",
+    "2027-01-01": "New Year's Day",
+    "2027-03-26": "Good Friday",
+    "2027-03-29": "Easter Monday",
+    "2027-05-03": "May Day Bank Holiday",
+    "2027-05-09": "Liberation Day",
+    "2027-05-31": "Spring Bank Holiday",
+    "2027-08-30": "Summer Bank Holiday",
+    "2027-12-25": "Christmas Day",
+    "2027-12-26": "Boxing Day",
+    "2027-12-27": "Christmas Day (substitute day)",
+    "2027-12-28": "Boxing Day (substitute day)",
+    "2028-01-01": "New Year's Day",
+    "2028-01-03": "New Year's Day (substitute day)",
+    "2028-04-14": "Good Friday",
+    "2028-04-17": "Easter Monday",
+    "2028-05-01": "May Day Bank Holiday",
+    "2028-05-09": "Liberation Day",
+    "2028-05-29": "Spring Bank Holiday",
+    "2028-08-28": "Summer Bank Holiday",
+    "2028-12-25": "Christmas Day",
+    "2028-12-26": "Boxing Day",
+    "2029-01-01": "New Year's Day",
+    "2029-03-30": "Good Friday",
+    "2029-04-02": "Easter Monday",
+    "2029-05-07": "May Day Bank Holiday",
+    "2029-05-09": "Liberation Day",
+    "2029-05-28": "Spring Bank Holiday",
+    "2029-08-27": "Summer Bank Holiday",
+    "2029-12-25": "Christmas Day",
+    "2029-12-26": "Boxing Day",
+    "2030-01-01": "New Year's Day",
+    "2030-04-19": "Good Friday",
+    "2030-04-22": "Easter Monday",
+    "2030-05-06": "May Day Bank Holiday",
+    "2030-05-09": "Liberation Day",
+    "2030-05-27": "Spring Bank Holiday",
+    "2030-08-26": "Summer Bank Holiday",
+    "2030-12-25": "Christmas Day",
+    "2030-12-26": "Boxing Day",
+    "2031-01-01": "New Year's Day",
+    "2031-04-11": "Good Friday",
+    "2031-04-14": "Easter Monday",
+    "2031-05-05": "May Day Bank Holiday",
+    "2031-05-09": "Liberation Day",
+    "2031-05-26": "Spring Bank Holiday",
+    "2031-08-25": "Summer Bank Holiday",
+    "2031-12-25": "Christmas Day",
+    "2031-12-26": "Boxing Day",
+    "2032-01-01": "New Year's Day",
+    "2032-03-26": "Good Friday",
+    "2032-03-29": "Easter Monday",
+    "2032-05-03": "May Day Bank Holiday",
+    "2032-05-09": "Liberation Day",
+    "2032-05-31": "Spring Bank Holiday",
+    "2032-08-30": "Summer Bank Holiday",
+    "2032-12-25": "Christmas Day",
+    "2032-12-26": "Boxing Day",
+    "2032-12-27": "Christmas Day (substitute day)",
+    "2032-12-28": "Boxing Day (substitute day)",
+    "2033-01-01": "New Year's Day",
+    "2033-01-03": "New Year's Day (substitute day)",
+    "2033-04-15": "Good Friday",
+    "2033-04-18": "Easter Monday",
+    "2033-05-02": "May Day Bank Holiday",
+    "2033-05-09": "Liberation Day",
+    "2033-05-30": "Spring Bank Holiday",
+    "2033-08-29": "Summer Bank Holiday",
+    "2033-12-25": "Christmas Day",
+    "2033-12-26": "Boxing Day",
+    "2033-12-27": "Christmas Day (substitute day)",
+    "2034-01-01": "New Year's Day",
+    "2034-01-02": "New Year's Day (substitute day)",
+    "2034-04-07": "Good Friday",
+    "2034-04-10": "Easter Monday",
+    "2034-05-01": "May Day Bank Holiday",
+    "2034-05-09": "Liberation Day",
+    "2034-05-29": "Spring Bank Holiday",
+    "2034-08-28": "Summer Bank Holiday",
+    "2034-12-25": "Christmas Day",
+    "2034-12-26": "Boxing Day",
+    "2035-01-01": "New Year's Day",
+    "2035-03-23": "Good Friday",
+    "2035-03-26": "Easter Monday",
+    "2035-05-07": "May Day Bank Holiday",
+    "2035-05-09": "Liberation Day",
+    "2035-05-28": "Spring Bank Holiday",
+    "2035-08-27": "Summer Bank Holiday",
+    "2035-12-25": "Christmas Day",
+    "2035-12-26": "Boxing Day",
+    "2036-01-01": "New Year's Day",
+    "2036-04-11": "Good Friday",
+    "2036-04-14": "Easter Monday",
+    "2036-05-05": "May Day Bank Holiday",
+    "2036-05-09": "Liberation Day",
+    "2036-05-26": "Spring Bank Holiday",
+    "2036-08-25": "Summer Bank Holiday",
+    "2036-12-25": "Christmas Day",
+    "2036-12-26": "Boxing Day",
+    "2037-01-01": "New Year's Day",
+    "2037-04-03": "Good Friday",
+    "2037-04-06": "Easter Monday",
+    "2037-05-04": "May Day Bank Holiday",
+    "2037-05-09": "Liberation Day",
+    "2037-05-25": "Spring Bank Holiday",
+    "2037-08-31": "Summer Bank Holiday",
+    "2037-12-25": "Christmas Day",
+    "2037-12-26": "Boxing Day",
+    "2037-12-28": "Boxing Day (substitute day)",
+    "2038-01-01": "New Year's Day",
+    "2038-04-23": "Good Friday",
+    "2038-04-26": "Easter Monday",
+    "2038-05-03": "May Day Bank Holiday",
+    "2038-05-09": "Liberation Day",
+    "2038-05-31": "Spring Bank Holiday",
+    "2038-08-30": "Summer Bank Holiday",
+    "2038-12-25": "Christmas Day",
+    "2038-12-26": "Boxing Day",
+    "2038-12-27": "Christmas Day (substitute day)",
+    "2038-12-28": "Boxing Day (substitute day)",
+    "2039-01-01": "New Year's Day",
+    "2039-01-03": "New Year's Day (substitute day)",
+    "2039-04-08": "Good Friday",
+    "2039-04-11": "Easter Monday",
+    "2039-05-02": "May Day Bank Holiday",
+    "2039-05-09": "Liberation Day",
+    "2039-05-30": "Spring Bank Holiday",
+    "2039-08-29": "Summer Bank Holiday",
+    "2039-12-25": "Christmas Day",
+    "2039-12-26": "Boxing Day",
+    "2039-12-27": "Christmas Day (substitute day)",
+    "2040-01-01": "New Year's Day",
+    "2040-01-02": "New Year's Day (substitute day)",
+    "2040-03-30": "Good Friday",
+    "2040-04-02": "Easter Monday",
+    "2040-05-07": "May Day Bank Holiday",
+    "2040-05-09": "Liberation Day",
+    "2040-05-28": "Spring Bank Holiday",
+    "2040-08-27": "Summer Bank Holiday",
+    "2040-12-25": "Christmas Day",
+    "2040-12-26": "Boxing Day",
+    "2041-01-01": "New Year's Day",
+    "2041-04-19": "Good Friday",
+    "2041-04-22": "Easter Monday",
+    "2041-05-06": "May Day Bank Holiday",
+    "2041-05-09": "Liberation Day",
+    "2041-05-27": "Spring Bank Holiday",
+    "2041-08-26": "Summer Bank Holiday",
+    "2041-12-25": "Christmas Day",
+    "2041-12-26": "Boxing Day",
+    "2042-01-01": "New Year's Day",
+    "2042-04-04": "Good Friday",
+    "2042-04-07": "Easter Monday",
+    "2042-05-05": "May Day Bank Holiday",
+    "2042-05-09": "Liberation Day",
+    "2042-05-26": "Spring Bank Holiday",
+    "2042-08-25": "Summer Bank Holiday",
+    "2042-12-25": "Christmas Day",
+    "2042-12-26": "Boxing Day",
+    "2043-01-01": "New Year's Day",
+    "2043-03-27": "Good Friday",
+    "2043-03-30": "Easter Monday",
+    "2043-05-04": "May Day Bank Holiday",
+    "2043-05-09": "Liberation Day",
+    "2043-05-25": "Spring Bank Holiday",
+    "2043-08-31": "Summer Bank Holiday",
+    "2043-12-25": "Christmas Day",
+    "2043-12-26": "Boxing Day",
+    "2043-12-28": "Boxing Day (substitute day)",
+    "2044-01-01": "New Year's Day",
+    "2044-04-15": "Good Friday",
+    "2044-04-18": "Easter Monday",
+    "2044-05-02": "May Day Bank Holiday",
+    "2044-05-09": "Liberation Day",
+    "2044-05-30": "Spring Bank Holiday",
+    "2044-08-29": "Summer Bank Holiday",
+    "2044-12-25": "Christmas Day",
+    "2044-12-26": "Boxing Day",
+    "2044-12-27": "Christmas Day (substitute day)",
+    "2045-01-01": "New Year's Day",
+    "2045-01-02": "New Year's Day (substitute day)",
+    "2045-04-07": "Good Friday",
+    "2045-04-10": "Easter Monday",
+    "2045-05-01": "May Day Bank Holiday",
+    "2045-05-09": "Liberation Day",
+    "2045-05-29": "Spring Bank Holiday",
+    "2045-08-28": "Summer Bank Holiday",
+    "2045-12-25": "Christmas Day",
+    "2045-12-26": "Boxing Day",
+    "2046-01-01": "New Year's Day",
+    "2046-03-23": "Good Friday",
+    "2046-03-26": "Easter Monday",
+    "2046-05-07": "May Day Bank Holiday",
+    "2046-05-09": "Liberation Day",
+    "2046-05-28": "Spring Bank Holiday",
+    "2046-08-27": "Summer Bank Holiday",
+    "2046-12-25": "Christmas Day",
+    "2046-12-26": "Boxing Day",
+    "2047-01-01": "New Year's Day",
+    "2047-04-12": "Good Friday",
+    "2047-04-15": "Easter Monday",
+    "2047-05-06": "May Day Bank Holiday",
+    "2047-05-09": "Liberation Day",
+    "2047-05-27": "Spring Bank Holiday",
+    "2047-08-26": "Summer Bank Holiday",
+    "2047-12-25": "Christmas Day",
+    "2047-12-26": "Boxing Day",
+    "2048-01-01": "New Year's Day",
+    "2048-04-03": "Good Friday",
+    "2048-04-06": "Easter Monday",
+    "2048-05-04": "May Day Bank Holiday",
+    "2048-05-09": "Liberation Day",
+    "2048-05-25": "Spring Bank Holiday",
+    "2048-08-31": "Summer Bank Holiday",
+    "2048-12-25": "Christmas Day",
+    "2048-12-26": "Boxing Day",
+    "2048-12-28": "Boxing Day (substitute day)",
+    "2049-01-01": "New Year's Day",
+    "2049-04-16": "Good Friday",
+    "2049-04-19": "Easter Monday",
+    "2049-05-03": "May Day Bank Holiday",
+    "2049-05-09": "Liberation Day",
+    "2049-05-31": "Spring Bank Holiday",
+    "2049-08-30": "Summer Bank Holiday",
+    "2049-12-25": "Christmas Day",
+    "2049-12-26": "Boxing Day",
+    "2049-12-27": "Christmas Day (substitute day)",
+    "2049-12-28": "Boxing Day (substitute day)",
+    "2050-01-01": "New Year's Day",
+    "2050-01-03": "New Year's Day (substitute day)",
+    "2050-04-08": "Good Friday",
+    "2050-04-11": "Easter Monday",
+    "2050-05-02": "May Day Bank Holiday",
+    "2050-05-09": "Liberation Day",
+    "2050-05-30": "Spring Bank Holiday",
+    "2050-08-29": "Summer Bank Holiday",
+    "2050-12-25": "Christmas Day",
+    "2050-12-26": "Boxing Day",
+    "2050-12-27": "Christmas Day (substitute day)"
+}
diff --git a/snapshots/countries/PY_COMMON.json b/snapshots/countries/PY_COMMON.json
index 356756b9..0660e3ba 100644
--- a/snapshots/countries/PY_COMMON.json
+++ b/snapshots/countries/PY_COMMON.json
@@ -1,461 +1,10 @@
 {
-    "1950-01-01": "New Year's Day",
-    "1950-03-01": "Patriots Day",
-    "1950-04-06": "Maundy Thursday",
-    "1950-04-07": "Good Friday",
-    "1950-04-09": "Easter Sunday",
-    "1950-05-01": "Labor Day",
-    "1950-05-15": "Independence Day",
-    "1950-06-12": "Chaco Armistice Day",
-    "1950-08-15": "Asuncion Foundation's Day",
-    "1950-12-08": "Caacupe Virgin Day",
-    "1950-12-25": "Christmas Day",
-    "1951-01-01": "New Year's Day",
-    "1951-03-01": "Patriots Day",
-    "1951-03-22": "Maundy Thursday",
-    "1951-03-23": "Good Friday",
-    "1951-03-25": "Easter Sunday",
-    "1951-05-01": "Labor Day",
-    "1951-05-15": "Independence Day",
-    "1951-06-12": "Chaco Armistice Day",
-    "1951-08-15": "Asuncion Foundation's Day",
-    "1951-12-08": "Caacupe Virgin Day",
-    "1951-12-25": "Christmas Day",
-    "1952-01-01": "New Year's Day",
-    "1952-03-01": "Patriots Day",
-    "1952-04-10": "Maundy Thursday",
-    "1952-04-11": "Good Friday",
-    "1952-04-13": "Easter Sunday",
-    "1952-05-01": "Labor Day",
-    "1952-05-15": "Independence Day",
-    "1952-06-12": "Chaco Armistice Day",
-    "1952-08-15": "Asuncion Foundation's Day",
-    "1952-12-08": "Caacupe Virgin Day",
-    "1952-12-25": "Christmas Day",
-    "1953-01-01": "New Year's Day",
-    "1953-03-01": "Patriots Day",
-    "1953-04-02": "Maundy Thursday",
-    "1953-04-03": "Good Friday",
-    "1953-04-05": "Easter Sunday",
-    "1953-05-01": "Labor Day",
-    "1953-05-15": "Independence Day",
-    "1953-06-12": "Chaco Armistice Day",
-    "1953-08-15": "Asuncion Foundation's Day",
-    "1953-12-08": "Caacupe Virgin Day",
-    "1953-12-25": "Christmas Day",
-    "1954-01-01": "New Year's Day",
-    "1954-03-01": "Patriots Day",
-    "1954-04-15": "Maundy Thursday",
-    "1954-04-16": "Good Friday",
-    "1954-04-18": "Easter Sunday",
-    "1954-05-01": "Labor Day",
-    "1954-05-15": "Independence Day",
-    "1954-06-12": "Chaco Armistice Day",
-    "1954-08-15": "Asuncion Foundation's Day",
-    "1954-12-08": "Caacupe Virgin Day",
-    "1954-12-25": "Christmas Day",
-    "1955-01-01": "New Year's Day",
-    "1955-03-01": "Patriots Day",
-    "1955-04-07": "Maundy Thursday",
-    "1955-04-08": "Good Friday",
-    "1955-04-10": "Easter Sunday",
-    "1955-05-01": "Labor Day",
-    "1955-05-15": "Independence Day",
-    "1955-06-12": "Chaco Armistice Day",
-    "1955-08-15": "Asuncion Foundation's Day",
-    "1955-12-08": "Caacupe Virgin Day",
-    "1955-12-25": "Christmas Day",
-    "1956-01-01": "New Year's Day",
-    "1956-03-01": "Patriots Day",
-    "1956-03-29": "Maundy Thursday",
-    "1956-03-30": "Good Friday",
-    "1956-04-01": "Easter Sunday",
-    "1956-05-01": "Labor Day",
-    "1956-05-15": "Independence Day",
-    "1956-06-12": "Chaco Armistice Day",
-    "1956-08-15": "Asuncion Foundation's Day",
-    "1956-12-08": "Caacupe Virgin Day",
-    "1956-12-25": "Christmas Day",
-    "1957-01-01": "New Year's Day",
-    "1957-03-01": "Patriots Day",
-    "1957-04-18": "Maundy Thursday",
-    "1957-04-19": "Good Friday",
-    "1957-04-21": "Easter Sunday",
-    "1957-05-01": "Labor Day",
-    "1957-05-15": "Independence Day",
-    "1957-06-12": "Chaco Armistice Day",
-    "1957-08-15": "Asuncion Foundation's Day",
-    "1957-12-08": "Caacupe Virgin Day",
-    "1957-12-25": "Christmas Day",
-    "1958-01-01": "New Year's Day",
-    "1958-03-01": "Patriots Day",
-    "1958-04-03": "Maundy Thursday",
-    "1958-04-04": "Good Friday",
-    "1958-04-06": "Easter Sunday",
-    "1958-05-01": "Labor Day",
-    "1958-05-15": "Independence Day",
-    "1958-06-12": "Chaco Armistice Day",
-    "1958-08-15": "Asuncion Foundation's Day",
-    "1958-12-08": "Caacupe Virgin Day",
-    "1958-12-25": "Christmas Day",
-    "1959-01-01": "New Year's Day",
-    "1959-03-01": "Patriots Day",
-    "1959-03-26": "Maundy Thursday",
-    "1959-03-27": "Good Friday",
-    "1959-03-29": "Easter Sunday",
-    "1959-05-01": "Labor Day",
-    "1959-05-15": "Independence Day",
-    "1959-06-12": "Chaco Armistice Day",
-    "1959-08-15": "Asuncion Foundation's Day",
-    "1959-12-08": "Caacupe Virgin Day",
-    "1959-12-25": "Christmas Day",
-    "1960-01-01": "New Year's Day",
-    "1960-03-01": "Patriots Day",
-    "1960-04-14": "Maundy Thursday",
-    "1960-04-15": "Good Friday",
-    "1960-04-17": "Easter Sunday",
-    "1960-05-01": "Labor Day",
-    "1960-05-15": "Independence Day",
-    "1960-06-12": "Chaco Armistice Day",
-    "1960-08-15": "Asuncion Foundation's Day",
-    "1960-12-08": "Caacupe Virgin Day",
-    "1960-12-25": "Christmas Day",
-    "1961-01-01": "New Year's Day",
-    "1961-03-01": "Patriots Day",
-    "1961-03-30": "Maundy Thursday",
-    "1961-03-31": "Good Friday",
-    "1961-04-02": "Easter Sunday",
-    "1961-05-01": "Labor Day",
-    "1961-05-15": "Independence Day",
-    "1961-06-12": "Chaco Armistice Day",
-    "1961-08-15": "Asuncion Foundation's Day",
-    "1961-12-08": "Caacupe Virgin Day",
-    "1961-12-25": "Christmas Day",
-    "1962-01-01": "New Year's Day",
-    "1962-03-01": "Patriots Day",
-    "1962-04-19": "Maundy Thursday",
-    "1962-04-20": "Good Friday",
-    "1962-04-22": "Easter Sunday",
-    "1962-05-01": "Labor Day",
-    "1962-05-15": "Independence Day",
-    "1962-06-12": "Chaco Armistice Day",
-    "1962-08-15": "Asuncion Foundation's Day",
-    "1962-12-08": "Caacupe Virgin Day",
-    "1962-12-25": "Christmas Day",
-    "1963-01-01": "New Year's Day",
-    "1963-03-01": "Patriots Day",
-    "1963-04-11": "Maundy Thursday",
-    "1963-04-12": "Good Friday",
-    "1963-04-14": "Easter Sunday",
-    "1963-05-01": "Labor Day",
-    "1963-05-15": "Independence Day",
-    "1963-06-12": "Chaco Armistice Day",
-    "1963-08-15": "Asuncion Foundation's Day",
-    "1963-12-08": "Caacupe Virgin Day",
-    "1963-12-25": "Christmas Day",
-    "1964-01-01": "New Year's Day",
-    "1964-03-01": "Patriots Day",
-    "1964-03-26": "Maundy Thursday",
-    "1964-03-27": "Good Friday",
-    "1964-03-29": "Easter Sunday",
-    "1964-05-01": "Labor Day",
-    "1964-05-15": "Independence Day",
-    "1964-06-12": "Chaco Armistice Day",
-    "1964-08-15": "Asuncion Foundation's Day",
-    "1964-12-08": "Caacupe Virgin Day",
-    "1964-12-25": "Christmas Day",
-    "1965-01-01": "New Year's Day",
-    "1965-03-01": "Patriots Day",
-    "1965-04-15": "Maundy Thursday",
-    "1965-04-16": "Good Friday",
-    "1965-04-18": "Easter Sunday",
-    "1965-05-01": "Labor Day",
-    "1965-05-15": "Independence Day",
-    "1965-06-12": "Chaco Armistice Day",
-    "1965-08-15": "Asuncion Foundation's Day",
-    "1965-12-08": "Caacupe Virgin Day",
-    "1965-12-25": "Christmas Day",
-    "1966-01-01": "New Year's Day",
-    "1966-03-01": "Patriots Day",
-    "1966-04-07": "Maundy Thursday",
-    "1966-04-08": "Good Friday",
-    "1966-04-10": "Easter Sunday",
-    "1966-05-01": "Labor Day",
-    "1966-05-15": "Independence Day",
-    "1966-06-12": "Chaco Armistice Day",
-    "1966-08-15": "Asuncion Foundation's Day",
-    "1966-12-08": "Caacupe Virgin Day",
-    "1966-12-25": "Christmas Day",
-    "1967-01-01": "New Year's Day",
-    "1967-03-01": "Patriots Day",
-    "1967-03-23": "Maundy Thursday",
-    "1967-03-24": "Good Friday",
-    "1967-03-26": "Easter Sunday",
-    "1967-05-01": "Labor Day",
-    "1967-05-15": "Independence Day",
-    "1967-06-12": "Chaco Armistice Day",
-    "1967-08-15": "Asuncion Foundation's Day",
-    "1967-12-08": "Caacupe Virgin Day",
-    "1967-12-25": "Christmas Day",
-    "1968-01-01": "New Year's Day",
-    "1968-03-01": "Patriots Day",
-    "1968-04-11": "Maundy Thursday",
-    "1968-04-12": "Good Friday",
-    "1968-04-14": "Easter Sunday",
-    "1968-05-01": "Labor Day",
-    "1968-05-15": "Independence Day",
-    "1968-06-12": "Chaco Armistice Day",
-    "1968-08-15": "Asuncion Foundation's Day",
-    "1968-12-08": "Caacupe Virgin Day",
-    "1968-12-25": "Christmas Day",
-    "1969-01-01": "New Year's Day",
-    "1969-03-01": "Patriots Day",
-    "1969-04-03": "Maundy Thursday",
-    "1969-04-04": "Good Friday",
-    "1969-04-06": "Easter Sunday",
-    "1969-05-01": "Labor Day",
-    "1969-05-15": "Independence Day",
-    "1969-06-12": "Chaco Armistice Day",
-    "1969-08-15": "Asuncion Foundation's Day",
-    "1969-12-08": "Caacupe Virgin Day",
-    "1969-12-25": "Christmas Day",
-    "1970-01-01": "New Year's Day",
-    "1970-03-01": "Patriots Day",
-    "1970-03-26": "Maundy Thursday",
-    "1970-03-27": "Good Friday",
-    "1970-03-29": "Easter Sunday",
-    "1970-05-01": "Labor Day",
-    "1970-05-15": "Independence Day",
-    "1970-06-12": "Chaco Armistice Day",
-    "1970-08-15": "Asuncion Foundation's Day",
-    "1970-12-08": "Caacupe Virgin Day",
-    "1970-12-25": "Christmas Day",
-    "1971-01-01": "New Year's Day",
-    "1971-03-01": "Patriots Day",
-    "1971-04-08": "Maundy Thursday",
-    "1971-04-09": "Good Friday",
-    "1971-04-11": "Easter Sunday",
-    "1971-05-01": "Labor Day",
-    "1971-05-15": "Independence Day",
-    "1971-06-12": "Chaco Armistice Day",
-    "1971-08-15": "Asuncion Foundation's Day",
-    "1971-12-08": "Caacupe Virgin Day",
-    "1971-12-25": "Christmas Day",
-    "1972-01-01": "New Year's Day",
-    "1972-03-01": "Patriots Day",
-    "1972-03-30": "Maundy Thursday",
-    "1972-03-31": "Good Friday",
-    "1972-04-02": "Easter Sunday",
-    "1972-05-01": "Labor Day",
-    "1972-05-15": "Independence Day",
-    "1972-06-12": "Chaco Armistice Day",
-    "1972-08-15": "Asuncion Foundation's Day",
-    "1972-12-08": "Caacupe Virgin Day",
-    "1972-12-25": "Christmas Day",
-    "1973-01-01": "New Year's Day",
-    "1973-03-01": "Patriots Day",
-    "1973-04-19": "Maundy Thursday",
-    "1973-04-20": "Good Friday",
-    "1973-04-22": "Easter Sunday",
-    "1973-05-01": "Labor Day",
-    "1973-05-15": "Independence Day",
-    "1973-06-12": "Chaco Armistice Day",
-    "1973-08-15": "Asuncion Foundation's Day",
-    "1973-12-08": "Caacupe Virgin Day",
-    "1973-12-25": "Christmas Day",
-    "1974-01-01": "New Year's Day",
-    "1974-03-01": "Patriots Day",
-    "1974-04-11": "Maundy Thursday",
-    "1974-04-12": "Good Friday",
-    "1974-04-14": "Easter Sunday",
-    "1974-05-01": "Labor Day",
-    "1974-05-15": "Independence Day",
-    "1974-06-12": "Chaco Armistice Day",
-    "1974-08-15": "Asuncion Foundation's Day",
-    "1974-12-08": "Caacupe Virgin Day",
-    "1974-12-25": "Christmas Day",
-    "1975-01-01": "New Year's Day",
-    "1975-03-01": "Patriots Day",
-    "1975-03-27": "Maundy Thursday",
-    "1975-03-28": "Good Friday",
-    "1975-03-30": "Easter Sunday",
-    "1975-05-01": "Labor Day",
-    "1975-05-15": "Independence Day",
-    "1975-06-12": "Chaco Armistice Day",
-    "1975-08-15": "Asuncion Foundation's Day",
-    "1975-12-08": "Caacupe Virgin Day",
-    "1975-12-25": "Christmas Day",
-    "1976-01-01": "New Year's Day",
-    "1976-03-01": "Patriots Day",
-    "1976-04-15": "Maundy Thursday",
-    "1976-04-16": "Good Friday",
-    "1976-04-18": "Easter Sunday",
-    "1976-05-01": "Labor Day",
-    "1976-05-15": "Independence Day",
-    "1976-06-12": "Chaco Armistice Day",
-    "1976-08-15": "Asuncion Foundation's Day",
-    "1976-12-08": "Caacupe Virgin Day",
-    "1976-12-25": "Christmas Day",
-    "1977-01-01": "New Year's Day",
-    "1977-03-01": "Patriots Day",
-    "1977-04-07": "Maundy Thursday",
-    "1977-04-08": "Good Friday",
-    "1977-04-10": "Easter Sunday",
-    "1977-05-01": "Labor Day",
-    "1977-05-15": "Independence Day",
-    "1977-06-12": "Chaco Armistice Day",
-    "1977-08-15": "Asuncion Foundation's Day",
-    "1977-12-08": "Caacupe Virgin Day",
-    "1977-12-25": "Christmas Day",
-    "1978-01-01": "New Year's Day",
-    "1978-03-01": "Patriots Day",
-    "1978-03-23": "Maundy Thursday",
-    "1978-03-24": "Good Friday",
-    "1978-03-26": "Easter Sunday",
-    "1978-05-01": "Labor Day",
-    "1978-05-15": "Independence Day",
-    "1978-06-12": "Chaco Armistice Day",
-    "1978-08-15": "Asuncion Foundation's Day",
-    "1978-12-08": "Caacupe Virgin Day",
-    "1978-12-25": "Christmas Day",
-    "1979-01-01": "New Year's Day",
-    "1979-03-01": "Patriots Day",
-    "1979-04-12": "Maundy Thursday",
-    "1979-04-13": "Good Friday",
-    "1979-04-15": "Easter Sunday",
-    "1979-05-01": "Labor Day",
-    "1979-05-15": "Independence Day",
-    "1979-06-12": "Chaco Armistice Day",
-    "1979-08-15": "Asuncion Foundation's Day",
-    "1979-12-08": "Caacupe Virgin Day",
-    "1979-12-25": "Christmas Day",
-    "1980-01-01": "New Year's Day",
-    "1980-03-01": "Patriots Day",
-    "1980-04-03": "Maundy Thursday",
-    "1980-04-04": "Good Friday",
-    "1980-04-06": "Easter Sunday",
-    "1980-05-01": "Labor Day",
-    "1980-05-15": "Independence Day",
-    "1980-06-12": "Chaco Armistice Day",
-    "1980-08-15": "Asuncion Foundation's Day",
-    "1980-12-08": "Caacupe Virgin Day",
-    "1980-12-25": "Christmas Day",
-    "1981-01-01": "New Year's Day",
-    "1981-03-01": "Patriots Day",
-    "1981-04-16": "Maundy Thursday",
-    "1981-04-17": "Good Friday",
-    "1981-04-19": "Easter Sunday",
-    "1981-05-01": "Labor Day",
-    "1981-05-15": "Independence Day",
-    "1981-06-12": "Chaco Armistice Day",
-    "1981-08-15": "Asuncion Foundation's Day",
-    "1981-12-08": "Caacupe Virgin Day",
-    "1981-12-25": "Christmas Day",
-    "1982-01-01": "New Year's Day",
-    "1982-03-01": "Patriots Day",
-    "1982-04-08": "Maundy Thursday",
-    "1982-04-09": "Good Friday",
-    "1982-04-11": "Easter Sunday",
-    "1982-05-01": "Labor Day",
-    "1982-05-15": "Independence Day",
-    "1982-06-12": "Chaco Armistice Day",
-    "1982-08-15": "Asuncion Foundation's Day",
-    "1982-12-08": "Caacupe Virgin Day",
-    "1982-12-25": "Christmas Day",
-    "1983-01-01": "New Year's Day",
-    "1983-03-01": "Patriots Day",
-    "1983-03-31": "Maundy Thursday",
-    "1983-04-01": "Good Friday",
-    "1983-04-03": "Easter Sunday",
-    "1983-05-01": "Labor Day",
-    "1983-05-15": "Independence Day",
-    "1983-06-12": "Chaco Armistice Day",
-    "1983-08-15": "Asuncion Foundation's Day",
-    "1983-12-08": "Caacupe Virgin Day",
-    "1983-12-25": "Christmas Day",
-    "1984-01-01": "New Year's Day",
-    "1984-03-01": "Patriots Day",
-    "1984-04-19": "Maundy Thursday",
-    "1984-04-20": "Good Friday",
-    "1984-04-22": "Easter Sunday",
-    "1984-05-01": "Labor Day",
-    "1984-05-15": "Independence Day",
-    "1984-06-12": "Chaco Armistice Day",
-    "1984-08-15": "Asuncion Foundation's Day",
-    "1984-12-08": "Caacupe Virgin Day",
-    "1984-12-25": "Christmas Day",
-    "1985-01-01": "New Year's Day",
-    "1985-03-01": "Patriots Day",
-    "1985-04-04": "Maundy Thursday",
-    "1985-04-05": "Good Friday",
-    "1985-04-07": "Easter Sunday",
-    "1985-05-01": "Labor Day",
-    "1985-05-15": "Independence Day",
-    "1985-06-12": "Chaco Armistice Day",
-    "1985-08-15": "Asuncion Foundation's Day",
-    "1985-12-08": "Caacupe Virgin Day",
-    "1985-12-25": "Christmas Day",
-    "1986-01-01": "New Year's Day",
-    "1986-03-01": "Patriots Day",
-    "1986-03-27": "Maundy Thursday",
-    "1986-03-28": "Good Friday",
-    "1986-03-30": "Easter Sunday",
-    "1986-05-01": "Labor Day",
-    "1986-05-15": "Independence Day",
-    "1986-06-12": "Chaco Armistice Day",
-    "1986-08-15": "Asuncion Foundation's Day",
-    "1986-12-08": "Caacupe Virgin Day",
-    "1986-12-25": "Christmas Day",
-    "1987-01-01": "New Year's Day",
-    "1987-03-01": "Patriots Day",
-    "1987-04-16": "Maundy Thursday",
-    "1987-04-17": "Good Friday",
-    "1987-04-19": "Easter Sunday",
-    "1987-05-01": "Labor Day",
-    "1987-05-15": "Independence Day",
-    "1987-06-12": "Chaco Armistice Day",
-    "1987-08-15": "Asuncion Foundation's Day",
-    "1987-12-08": "Caacupe Virgin Day",
-    "1987-12-25": "Christmas Day",
-    "1988-01-01": "New Year's Day",
-    "1988-03-01": "Patriots Day",
-    "1988-03-31": "Maundy Thursday",
-    "1988-04-01": "Good Friday",
-    "1988-04-03": "Easter Sunday",
-    "1988-05-01": "Labor Day",
-    "1988-05-15": "Independence Day",
-    "1988-06-12": "Chaco Armistice Day",
-    "1988-08-15": "Asuncion Foundation's Day",
-    "1988-12-08": "Caacupe Virgin Day",
-    "1988-12-25": "Christmas Day",
-    "1989-01-01": "New Year's Day",
-    "1989-03-01": "Patriots Day",
-    "1989-03-23": "Maundy Thursday",
-    "1989-03-24": "Good Friday",
-    "1989-03-26": "Easter Sunday",
-    "1989-05-01": "Labor Day",
-    "1989-05-15": "Independence Day",
-    "1989-06-12": "Chaco Armistice Day",
-    "1989-08-15": "Asuncion Foundation's Day",
-    "1989-12-08": "Caacupe Virgin Day",
-    "1989-12-25": "Christmas Day",
-    "1990-01-01": "New Year's Day",
-    "1990-03-01": "Patriots Day",
-    "1990-04-12": "Maundy Thursday",
-    "1990-04-13": "Good Friday",
-    "1990-04-15": "Easter Sunday",
-    "1990-05-01": "Labor Day",
-    "1990-05-15": "Independence Day",
-    "1990-06-12": "Chaco Armistice Day",
-    "1990-08-15": "Asuncion Foundation's Day",
-    "1990-12-08": "Caacupe Virgin Day",
-    "1990-12-25": "Christmas Day",
     "1991-01-01": "New Year's Day",
     "1991-03-01": "Patriots Day",
     "1991-03-28": "Maundy Thursday",
     "1991-03-29": "Good Friday",
     "1991-03-31": "Easter Sunday",
-    "1991-05-01": "Labor Day",
+    "1991-05-01": "Workers' Day",
     "1991-05-15": "Independence Day",
     "1991-06-12": "Chaco Armistice Day",
     "1991-08-15": "Asuncion Foundation's Day",
@@ -466,7 +15,7 @@
     "1992-04-16": "Maundy Thursday",
     "1992-04-17": "Good Friday",
     "1992-04-19": "Easter Sunday",
-    "1992-05-01": "Labor Day",
+    "1992-05-01": "Workers' Day",
     "1992-05-15": "Independence Day",
     "1992-06-12": "Chaco Armistice Day",
     "1992-08-15": "Asuncion Foundation's Day",
@@ -477,7 +26,7 @@
     "1993-04-08": "Maundy Thursday",
     "1993-04-09": "Good Friday",
     "1993-04-11": "Easter Sunday",
-    "1993-05-01": "Labor Day",
+    "1993-05-01": "Workers' Day",
     "1993-05-15": "Independence Day",
     "1993-06-12": "Chaco Armistice Day",
     "1993-08-15": "Asuncion Foundation's Day",
@@ -488,7 +37,7 @@
     "1994-03-31": "Maundy Thursday",
     "1994-04-01": "Good Friday",
     "1994-04-03": "Easter Sunday",
-    "1994-05-01": "Labor Day",
+    "1994-05-01": "Workers' Day",
     "1994-05-15": "Independence Day",
     "1994-06-12": "Chaco Armistice Day",
     "1994-08-15": "Asuncion Foundation's Day",
@@ -499,10 +48,11 @@
     "1995-04-13": "Maundy Thursday",
     "1995-04-14": "Good Friday",
     "1995-04-16": "Easter Sunday",
-    "1995-05-01": "Labor Day",
+    "1995-05-01": "Workers' Day",
     "1995-05-15": "Independence Day",
     "1995-06-12": "Chaco Armistice Day",
     "1995-08-15": "Asuncion Foundation's Day",
+    "1995-09-29": "Boqueron Battle Day",
     "1995-12-08": "Caacupe Virgin Day",
     "1995-12-25": "Christmas Day",
     "1996-01-01": "New Year's Day",
@@ -510,10 +60,11 @@
     "1996-04-04": "Maundy Thursday",
     "1996-04-05": "Good Friday",
     "1996-04-07": "Easter Sunday",
-    "1996-05-01": "Labor Day",
+    "1996-05-01": "Workers' Day",
     "1996-05-15": "Independence Day",
     "1996-06-12": "Chaco Armistice Day",
     "1996-08-15": "Asuncion Foundation's Day",
+    "1996-09-29": "Boqueron Battle Day",
     "1996-12-08": "Caacupe Virgin Day",
     "1996-12-25": "Christmas Day",
     "1997-01-01": "New Year's Day",
@@ -521,10 +72,11 @@
     "1997-03-27": "Maundy Thursday",
     "1997-03-28": "Good Friday",
     "1997-03-30": "Easter Sunday",
-    "1997-05-01": "Labor Day",
+    "1997-05-01": "Workers' Day",
     "1997-05-15": "Independence Day",
     "1997-06-12": "Chaco Armistice Day",
     "1997-08-15": "Asuncion Foundation's Day",
+    "1997-09-29": "Boqueron Battle Day",
     "1997-12-08": "Caacupe Virgin Day",
     "1997-12-25": "Christmas Day",
     "1998-01-01": "New Year's Day",
@@ -532,10 +84,11 @@
     "1998-04-09": "Maundy Thursday",
     "1998-04-10": "Good Friday",
     "1998-04-12": "Easter Sunday",
-    "1998-05-01": "Labor Day",
+    "1998-05-01": "Workers' Day",
     "1998-05-15": "Independence Day",
     "1998-06-12": "Chaco Armistice Day",
     "1998-08-15": "Asuncion Foundation's Day",
+    "1998-09-29": "Boqueron Battle Day",
     "1998-12-08": "Caacupe Virgin Day",
     "1998-12-25": "Christmas Day",
     "1999-01-01": "New Year's Day",
@@ -543,10 +96,11 @@
     "1999-04-01": "Maundy Thursday",
     "1999-04-02": "Good Friday",
     "1999-04-04": "Easter Sunday",
-    "1999-05-01": "Labor Day",
+    "1999-05-01": "Workers' Day",
     "1999-05-15": "Independence Day",
     "1999-06-12": "Chaco Armistice Day",
     "1999-08-15": "Asuncion Foundation's Day",
+    "1999-09-29": "Boqueron Battle Day",
     "1999-12-08": "Caacupe Virgin Day",
     "1999-12-25": "Christmas Day",
     "2000-01-01": "New Year's Day",
@@ -554,7 +108,7 @@
     "2000-04-20": "Maundy Thursday",
     "2000-04-21": "Good Friday",
     "2000-04-23": "Easter Sunday",
-    "2000-05-01": "Labor Day",
+    "2000-05-01": "Workers' Day",
     "2000-05-15": "Independence Day",
     "2000-06-12": "Chaco Armistice Day",
     "2000-08-15": "Asuncion Foundation's Day",
@@ -566,7 +120,7 @@
     "2001-04-12": "Maundy Thursday",
     "2001-04-13": "Good Friday",
     "2001-04-15": "Easter Sunday",
-    "2001-05-01": "Labor Day",
+    "2001-05-01": "Workers' Day",
     "2001-05-15": "Independence Day",
     "2001-06-12": "Chaco Armistice Day",
     "2001-08-15": "Asuncion Foundation's Day",
@@ -578,7 +132,7 @@
     "2002-03-28": "Maundy Thursday",
     "2002-03-29": "Good Friday",
     "2002-03-31": "Easter Sunday",
-    "2002-05-01": "Labor Day",
+    "2002-05-01": "Workers' Day",
     "2002-05-15": "Independence Day",
     "2002-06-12": "Chaco Armistice Day",
     "2002-08-15": "Asuncion Foundation's Day",
@@ -590,7 +144,7 @@
     "2003-04-17": "Maundy Thursday",
     "2003-04-18": "Good Friday",
     "2003-04-20": "Easter Sunday",
-    "2003-05-01": "Labor Day",
+    "2003-05-01": "Workers' Day",
     "2003-05-15": "Independence Day",
     "2003-06-12": "Chaco Armistice Day",
     "2003-08-15": "Asuncion Foundation's Day",
@@ -602,7 +156,7 @@
     "2004-04-08": "Maundy Thursday",
     "2004-04-09": "Good Friday",
     "2004-04-11": "Easter Sunday",
-    "2004-05-01": "Labor Day",
+    "2004-05-01": "Workers' Day",
     "2004-05-15": "Independence Day",
     "2004-06-12": "Chaco Armistice Day",
     "2004-08-15": "Asuncion Foundation's Day",
@@ -614,7 +168,7 @@
     "2005-03-24": "Maundy Thursday",
     "2005-03-25": "Good Friday",
     "2005-03-27": "Easter Sunday",
-    "2005-05-01": "Labor Day",
+    "2005-05-01": "Workers' Day",
     "2005-05-15": "Independence Day",
     "2005-06-12": "Chaco Armistice Day",
     "2005-08-15": "Asuncion Foundation's Day",
@@ -626,7 +180,7 @@
     "2006-04-13": "Maundy Thursday",
     "2006-04-14": "Good Friday",
     "2006-04-16": "Easter Sunday",
-    "2006-05-01": "Labor Day",
+    "2006-05-01": "Workers' Day",
     "2006-05-15": "Independence Day",
     "2006-06-12": "Chaco Armistice Day",
     "2006-08-15": "Asuncion Foundation's Day",
@@ -639,7 +193,7 @@
     "2007-04-05": "Maundy Thursday",
     "2007-04-06": "Good Friday",
     "2007-04-08": "Easter Sunday",
-    "2007-05-01": "Labor Day",
+    "2007-05-01": "Workers' Day",
     "2007-05-15": "Independence Day",
     "2007-06-12": "Chaco Armistice Day",
     "2007-08-15": "Asuncion Foundation's Day",
@@ -651,7 +205,7 @@
     "2008-03-20": "Maundy Thursday",
     "2008-03-21": "Good Friday",
     "2008-03-23": "Easter Sunday",
-    "2008-05-01": "Labor Day",
+    "2008-05-01": "Workers' Day",
     "2008-05-15": "Independence Day",
     "2008-06-12": "Chaco Armistice Day",
     "2008-08-15": "Asuncion Foundation's Day",
@@ -663,7 +217,7 @@
     "2009-04-09": "Maundy Thursday",
     "2009-04-10": "Good Friday",
     "2009-04-12": "Easter Sunday",
-    "2009-05-01": "Labor Day",
+    "2009-05-01": "Workers' Day",
     "2009-05-15": "Independence Day",
     "2009-06-12": "Chaco Armistice Day",
     "2009-08-15": "Asuncion Foundation's Day",
@@ -676,7 +230,7 @@
     "2010-04-01": "Maundy Thursday",
     "2010-04-02": "Good Friday",
     "2010-04-04": "Easter Sunday",
-    "2010-05-01": "Labor Day",
+    "2010-05-01": "Workers' Day",
     "2010-05-15": "Independence Day",
     "2010-06-12": "Chaco Armistice Day",
     "2010-06-14": "Public holiday",
@@ -693,7 +247,7 @@
     "2011-04-21": "Maundy Thursday",
     "2011-04-22": "Good Friday",
     "2011-04-24": "Easter Sunday",
-    "2011-05-01": "Labor Day",
+    "2011-05-01": "Workers' Day",
     "2011-05-14": "Public holiday",
     "2011-05-15": "Independence Day",
     "2011-05-16": "Public holiday",
@@ -710,8 +264,8 @@
     "2012-04-05": "Maundy Thursday",
     "2012-04-06": "Good Friday",
     "2012-04-08": "Easter Sunday",
-    "2012-05-01": "Labor Day",
-    "2012-05-14": "Independence Day",
+    "2012-05-01": "Workers' Day",
+    "2012-05-14": "National Holiday",
     "2012-05-15": "Independence Day",
     "2012-06-12": "Chaco Armistice Day",
     "2012-08-15": "Asuncion Foundation's Day",
@@ -726,8 +280,8 @@
     "2013-03-28": "Maundy Thursday",
     "2013-03-29": "Good Friday",
     "2013-03-31": "Easter Sunday",
-    "2013-05-01": "Labor Day",
-    "2013-05-14": "Independence Day",
+    "2013-05-01": "Workers' Day",
+    "2013-05-14": "National Holiday",
     "2013-05-15": "Independence Day",
     "2013-06-12": "Chaco Armistice Day",
     "2013-08-14": "Public holiday",
@@ -741,8 +295,8 @@
     "2014-04-17": "Maundy Thursday",
     "2014-04-18": "Good Friday",
     "2014-04-20": "Easter Sunday",
-    "2014-05-01": "Labor Day",
-    "2014-05-14": "Independence Day",
+    "2014-05-01": "Workers' Day",
+    "2014-05-14": "National Holiday",
     "2014-05-15": "Independence Day",
     "2014-06-16": "Chaco Armistice Day",
     "2014-08-15": "Asuncion Foundation's Day",
@@ -757,8 +311,8 @@
     "2015-04-02": "Maundy Thursday",
     "2015-04-03": "Good Friday",
     "2015-04-05": "Easter Sunday",
-    "2015-05-01": "Labor Day",
-    "2015-05-14": "Independence Day",
+    "2015-05-01": "Workers' Day",
+    "2015-05-14": "National Holiday",
     "2015-05-15": "Independence Day",
     "2015-06-12": "Chaco Armistice Day",
     "2015-07-10": "Public holiday",
@@ -775,8 +329,8 @@
     "2016-03-24": "Maundy Thursday",
     "2016-03-25": "Good Friday",
     "2016-03-27": "Easter Sunday",
-    "2016-05-01": "Labor Day",
-    "2016-05-14": "Independence Day",
+    "2016-05-01": "Workers' Day",
+    "2016-05-14": "National Holiday",
     "2016-05-15": "Independence Day",
     "2016-06-12": "Chaco Armistice Day",
     "2016-08-15": "Asuncion Foundation's Day",
@@ -789,8 +343,8 @@
     "2017-04-13": "Maundy Thursday",
     "2017-04-14": "Good Friday",
     "2017-04-16": "Easter Sunday",
-    "2017-05-01": "Labor Day",
-    "2017-05-14": "Independence Day",
+    "2017-05-01": "Workers' Day",
+    "2017-05-14": "National Holiday",
     "2017-05-15": "Independence Day",
     "2017-06-12": "Chaco Armistice Day",
     "2017-08-15": "Asuncion Foundation's Day",
@@ -802,8 +356,8 @@
     "2018-03-29": "Maundy Thursday",
     "2018-03-30": "Good Friday",
     "2018-04-01": "Easter Sunday",
-    "2018-05-01": "Labor Day",
-    "2018-05-14": "Independence Day",
+    "2018-05-01": "Workers' Day",
+    "2018-05-14": "National Holiday",
     "2018-05-15": "Independence Day",
     "2018-06-11": "Chaco Armistice Day",
     "2018-08-15": "Asuncion Foundation's Day",
@@ -813,15 +367,15 @@
     "2018-12-25": "Christmas Day",
     "2018-12-31": "Public sector holiday",
     "2019-01-01": "New Year's Day",
-    "2019-03-01": "Patriots Day",
+    "2019-03-04": "Patriots Day",
     "2019-04-17": "Public sector holiday",
     "2019-04-18": "Maundy Thursday",
     "2019-04-19": "Good Friday",
     "2019-04-21": "Easter Sunday",
-    "2019-05-01": "Labor Day",
-    "2019-05-14": "Independence Day",
+    "2019-05-01": "Workers' Day",
+    "2019-05-14": "National Holiday",
     "2019-05-15": "Independence Day",
-    "2019-06-12": "Chaco Armistice Day",
+    "2019-06-17": "Chaco Armistice Day",
     "2019-08-15": "Asuncion Foundation's Day",
     "2019-09-29": "Boqueron Battle Day",
     "2019-12-08": "Caacupe Virgin Day",
@@ -834,8 +388,8 @@
     "2020-04-09": "Maundy Thursday",
     "2020-04-10": "Good Friday",
     "2020-04-12": "Easter Sunday",
-    "2020-05-01": "Labor Day",
-    "2020-05-14": "Independence Day",
+    "2020-05-01": "Workers' Day",
+    "2020-05-14": "National Holiday",
     "2020-05-15": "Independence Day",
     "2020-06-12": "Chaco Armistice Day",
     "2020-08-15": "Asuncion Foundation's Day",
@@ -847,8 +401,8 @@
     "2021-04-01": "Maundy Thursday",
     "2021-04-02": "Good Friday",
     "2021-04-04": "Easter Sunday",
-    "2021-05-01": "Labor Day",
-    "2021-05-14": "Independence Day",
+    "2021-05-01": "Workers' Day",
+    "2021-05-14": "National Holiday",
     "2021-05-15": "Independence Day",
     "2021-06-12": "Chaco Armistice Day",
     "2021-08-15": "Asuncion Foundation's Day",
@@ -863,9 +417,9 @@
     "2022-04-14": "Maundy Thursday",
     "2022-04-15": "Good Friday",
     "2022-04-17": "Easter Sunday",
-    "2022-05-01": "Labor Day",
+    "2022-05-01": "Workers' Day",
     "2022-05-02": "Public sector holiday",
-    "2022-05-14": "Independence Day",
+    "2022-05-14": "National Holiday",
     "2022-05-15": "Independence Day",
     "2022-06-12": "Chaco Armistice Day",
     "2022-08-15": "Asuncion Foundation's Day",
@@ -873,12 +427,12 @@
     "2022-12-08": "Caacupe Virgin Day",
     "2022-12-25": "Christmas Day",
     "2023-01-01": "New Year's Day",
-    "2023-03-01": "Patriots Day",
+    "2023-02-27": "Patriots Day",
     "2023-04-06": "Maundy Thursday",
     "2023-04-07": "Good Friday",
     "2023-04-09": "Easter Sunday",
-    "2023-05-01": "Labor Day",
-    "2023-05-14": "Independence Day",
+    "2023-05-01": "Workers' Day",
+    "2023-05-14": "National Holiday",
     "2023-05-15": "Independence Day",
     "2023-06-12": "Chaco Armistice Day",
     "2023-08-15": "Asuncion Foundation's Day",
@@ -890,12 +444,12 @@
     "2024-03-28": "Maundy Thursday",
     "2024-03-29": "Good Friday",
     "2024-03-31": "Easter Sunday",
-    "2024-05-01": "Labor Day",
-    "2024-05-14": "Independence Day",
+    "2024-05-01": "Workers' Day",
+    "2024-05-14": "National Holiday",
     "2024-05-15": "Independence Day",
-    "2024-06-12": "Chaco Armistice Day",
+    "2024-06-10": "Chaco Armistice Day",
     "2024-08-15": "Asuncion Foundation's Day",
-    "2024-09-29": "Boqueron Battle Day",
+    "2024-09-30": "Boqueron Battle Day",
     "2024-12-08": "Caacupe Virgin Day",
     "2024-12-25": "Christmas Day",
     "2025-01-01": "New Year's Day",
@@ -903,8 +457,8 @@
     "2025-04-17": "Maundy Thursday",
     "2025-04-18": "Good Friday",
     "2025-04-20": "Easter Sunday",
-    "2025-05-01": "Labor Day",
-    "2025-05-14": "Independence Day",
+    "2025-05-01": "Workers' Day",
+    "2025-05-14": "National Holiday",
     "2025-05-15": "Independence Day",
     "2025-06-12": "Chaco Armistice Day",
     "2025-08-15": "Asuncion Foundation's Day",
@@ -916,8 +470,8 @@
     "2026-04-02": "Maundy Thursday",
     "2026-04-03": "Good Friday",
     "2026-04-05": "Easter Sunday",
-    "2026-05-01": "Labor Day",
-    "2026-05-14": "Independence Day",
+    "2026-05-01": "Workers' Day",
+    "2026-05-14": "National Holiday",
     "2026-05-15": "Independence Day",
     "2026-06-12": "Chaco Armistice Day",
     "2026-08-15": "Asuncion Foundation's Day",
@@ -929,8 +483,8 @@
     "2027-03-25": "Maundy Thursday",
     "2027-03-26": "Good Friday",
     "2027-03-28": "Easter Sunday",
-    "2027-05-01": "Labor Day",
-    "2027-05-14": "Independence Day",
+    "2027-05-01": "Workers' Day",
+    "2027-05-14": "National Holiday",
     "2027-05-15": "Independence Day",
     "2027-06-12": "Chaco Armistice Day",
     "2027-08-15": "Asuncion Foundation's Day",
@@ -942,8 +496,8 @@
     "2028-04-13": "Maundy Thursday",
     "2028-04-14": "Good Friday",
     "2028-04-16": "Easter Sunday",
-    "2028-05-01": "Labor Day",
-    "2028-05-14": "Independence Day",
+    "2028-05-01": "Workers' Day",
+    "2028-05-14": "National Holiday",
     "2028-05-15": "Independence Day",
     "2028-06-12": "Chaco Armistice Day",
     "2028-08-15": "Asuncion Foundation's Day",
@@ -955,8 +509,8 @@
     "2029-03-29": "Maundy Thursday",
     "2029-03-30": "Good Friday",
     "2029-04-01": "Easter Sunday",
-    "2029-05-01": "Labor Day",
-    "2029-05-14": "Independence Day",
+    "2029-05-01": "Workers' Day",
+    "2029-05-14": "National Holiday",
     "2029-05-15": "Independence Day",
     "2029-06-12": "Chaco Armistice Day",
     "2029-08-15": "Asuncion Foundation's Day",
@@ -968,8 +522,8 @@
     "2030-04-18": "Maundy Thursday",
     "2030-04-19": "Good Friday",
     "2030-04-21": "Easter Sunday",
-    "2030-05-01": "Labor Day",
-    "2030-05-14": "Independence Day",
+    "2030-05-01": "Workers' Day",
+    "2030-05-14": "National Holiday",
     "2030-05-15": "Independence Day",
     "2030-06-12": "Chaco Armistice Day",
     "2030-08-15": "Asuncion Foundation's Day",
@@ -981,8 +535,8 @@
     "2031-04-10": "Maundy Thursday",
     "2031-04-11": "Good Friday",
     "2031-04-13": "Easter Sunday",
-    "2031-05-01": "Labor Day",
-    "2031-05-14": "Independence Day",
+    "2031-05-01": "Workers' Day",
+    "2031-05-14": "National Holiday",
     "2031-05-15": "Independence Day",
     "2031-06-12": "Chaco Armistice Day",
     "2031-08-15": "Asuncion Foundation's Day",
@@ -994,8 +548,8 @@
     "2032-03-25": "Maundy Thursday",
     "2032-03-26": "Good Friday",
     "2032-03-28": "Easter Sunday",
-    "2032-05-01": "Labor Day",
-    "2032-05-14": "Independence Day",
+    "2032-05-01": "Workers' Day",
+    "2032-05-14": "National Holiday",
     "2032-05-15": "Independence Day",
     "2032-06-12": "Chaco Armistice Day",
     "2032-08-15": "Asuncion Foundation's Day",
@@ -1007,8 +561,8 @@
     "2033-04-14": "Maundy Thursday",
     "2033-04-15": "Good Friday",
     "2033-04-17": "Easter Sunday",
-    "2033-05-01": "Labor Day",
-    "2033-05-14": "Independence Day",
+    "2033-05-01": "Workers' Day",
+    "2033-05-14": "National Holiday",
     "2033-05-15": "Independence Day",
     "2033-06-12": "Chaco Armistice Day",
     "2033-08-15": "Asuncion Foundation's Day",
@@ -1020,8 +574,8 @@
     "2034-04-06": "Maundy Thursday",
     "2034-04-07": "Good Friday",
     "2034-04-09": "Easter Sunday",
-    "2034-05-01": "Labor Day",
-    "2034-05-14": "Independence Day",
+    "2034-05-01": "Workers' Day",
+    "2034-05-14": "National Holiday",
     "2034-05-15": "Independence Day",
     "2034-06-12": "Chaco Armistice Day",
     "2034-08-15": "Asuncion Foundation's Day",
@@ -1033,8 +587,8 @@
     "2035-03-22": "Maundy Thursday",
     "2035-03-23": "Good Friday",
     "2035-03-25": "Easter Sunday",
-    "2035-05-01": "Labor Day",
-    "2035-05-14": "Independence Day",
+    "2035-05-01": "Workers' Day",
+    "2035-05-14": "National Holiday",
     "2035-05-15": "Independence Day",
     "2035-06-12": "Chaco Armistice Day",
     "2035-08-15": "Asuncion Foundation's Day",
@@ -1046,8 +600,8 @@
     "2036-04-10": "Maundy Thursday",
     "2036-04-11": "Good Friday",
     "2036-04-13": "Easter Sunday",
-    "2036-05-01": "Labor Day",
-    "2036-05-14": "Independence Day",
+    "2036-05-01": "Workers' Day",
+    "2036-05-14": "National Holiday",
     "2036-05-15": "Independence Day",
     "2036-06-12": "Chaco Armistice Day",
     "2036-08-15": "Asuncion Foundation's Day",
@@ -1059,8 +613,8 @@
     "2037-04-02": "Maundy Thursday",
     "2037-04-03": "Good Friday",
     "2037-04-05": "Easter Sunday",
-    "2037-05-01": "Labor Day",
-    "2037-05-14": "Independence Day",
+    "2037-05-01": "Workers' Day",
+    "2037-05-14": "National Holiday",
     "2037-05-15": "Independence Day",
     "2037-06-12": "Chaco Armistice Day",
     "2037-08-15": "Asuncion Foundation's Day",
@@ -1072,8 +626,8 @@
     "2038-04-22": "Maundy Thursday",
     "2038-04-23": "Good Friday",
     "2038-04-25": "Easter Sunday",
-    "2038-05-01": "Labor Day",
-    "2038-05-14": "Independence Day",
+    "2038-05-01": "Workers' Day",
+    "2038-05-14": "National Holiday",
     "2038-05-15": "Independence Day",
     "2038-06-12": "Chaco Armistice Day",
     "2038-08-15": "Asuncion Foundation's Day",
@@ -1085,8 +639,8 @@
     "2039-04-07": "Maundy Thursday",
     "2039-04-08": "Good Friday",
     "2039-04-10": "Easter Sunday",
-    "2039-05-01": "Labor Day",
-    "2039-05-14": "Independence Day",
+    "2039-05-01": "Workers' Day",
+    "2039-05-14": "National Holiday",
     "2039-05-15": "Independence Day",
     "2039-06-12": "Chaco Armistice Day",
     "2039-08-15": "Asuncion Foundation's Day",
@@ -1098,8 +652,8 @@
     "2040-03-29": "Maundy Thursday",
     "2040-03-30": "Good Friday",
     "2040-04-01": "Easter Sunday",
-    "2040-05-01": "Labor Day",
-    "2040-05-14": "Independence Day",
+    "2040-05-01": "Workers' Day",
+    "2040-05-14": "National Holiday",
     "2040-05-15": "Independence Day",
     "2040-06-12": "Chaco Armistice Day",
     "2040-08-15": "Asuncion Foundation's Day",
@@ -1111,8 +665,8 @@
     "2041-04-18": "Maundy Thursday",
     "2041-04-19": "Good Friday",
     "2041-04-21": "Easter Sunday",
-    "2041-05-01": "Labor Day",
-    "2041-05-14": "Independence Day",
+    "2041-05-01": "Workers' Day",
+    "2041-05-14": "National Holiday",
     "2041-05-15": "Independence Day",
     "2041-06-12": "Chaco Armistice Day",
     "2041-08-15": "Asuncion Foundation's Day",
@@ -1124,8 +678,8 @@
     "2042-04-03": "Maundy Thursday",
     "2042-04-04": "Good Friday",
     "2042-04-06": "Easter Sunday",
-    "2042-05-01": "Labor Day",
-    "2042-05-14": "Independence Day",
+    "2042-05-01": "Workers' Day",
+    "2042-05-14": "National Holiday",
     "2042-05-15": "Independence Day",
     "2042-06-12": "Chaco Armistice Day",
     "2042-08-15": "Asuncion Foundation's Day",
@@ -1137,8 +691,8 @@
     "2043-03-26": "Maundy Thursday",
     "2043-03-27": "Good Friday",
     "2043-03-29": "Easter Sunday",
-    "2043-05-01": "Labor Day",
-    "2043-05-14": "Independence Day",
+    "2043-05-01": "Workers' Day",
+    "2043-05-14": "National Holiday",
     "2043-05-15": "Independence Day",
     "2043-06-12": "Chaco Armistice Day",
     "2043-08-15": "Asuncion Foundation's Day",
@@ -1150,8 +704,8 @@
     "2044-04-14": "Maundy Thursday",
     "2044-04-15": "Good Friday",
     "2044-04-17": "Easter Sunday",
-    "2044-05-01": "Labor Day",
-    "2044-05-14": "Independence Day",
+    "2044-05-01": "Workers' Day",
+    "2044-05-14": "National Holiday",
     "2044-05-15": "Independence Day",
     "2044-06-12": "Chaco Armistice Day",
     "2044-08-15": "Asuncion Foundation's Day",
@@ -1163,8 +717,8 @@
     "2045-04-06": "Maundy Thursday",
     "2045-04-07": "Good Friday",
     "2045-04-09": "Easter Sunday",
-    "2045-05-01": "Labor Day",
-    "2045-05-14": "Independence Day",
+    "2045-05-01": "Workers' Day",
+    "2045-05-14": "National Holiday",
     "2045-05-15": "Independence Day",
     "2045-06-12": "Chaco Armistice Day",
     "2045-08-15": "Asuncion Foundation's Day",
@@ -1176,8 +730,8 @@
     "2046-03-22": "Maundy Thursday",
     "2046-03-23": "Good Friday",
     "2046-03-25": "Easter Sunday",
-    "2046-05-01": "Labor Day",
-    "2046-05-14": "Independence Day",
+    "2046-05-01": "Workers' Day",
+    "2046-05-14": "National Holiday",
     "2046-05-15": "Independence Day",
     "2046-06-12": "Chaco Armistice Day",
     "2046-08-15": "Asuncion Foundation's Day",
@@ -1189,8 +743,8 @@
     "2047-04-11": "Maundy Thursday",
     "2047-04-12": "Good Friday",
     "2047-04-14": "Easter Sunday",
-    "2047-05-01": "Labor Day",
-    "2047-05-14": "Independence Day",
+    "2047-05-01": "Workers' Day",
+    "2047-05-14": "National Holiday",
     "2047-05-15": "Independence Day",
     "2047-06-12": "Chaco Armistice Day",
     "2047-08-15": "Asuncion Foundation's Day",
@@ -1202,8 +756,8 @@
     "2048-04-02": "Maundy Thursday",
     "2048-04-03": "Good Friday",
     "2048-04-05": "Easter Sunday",
-    "2048-05-01": "Labor Day",
-    "2048-05-14": "Independence Day",
+    "2048-05-01": "Workers' Day",
+    "2048-05-14": "National Holiday",
     "2048-05-15": "Independence Day",
     "2048-06-12": "Chaco Armistice Day",
     "2048-08-15": "Asuncion Foundation's Day",
@@ -1215,8 +769,8 @@
     "2049-04-15": "Maundy Thursday",
     "2049-04-16": "Good Friday",
     "2049-04-18": "Easter Sunday",
-    "2049-05-01": "Labor Day",
-    "2049-05-14": "Independence Day",
+    "2049-05-01": "Workers' Day",
+    "2049-05-14": "National Holiday",
     "2049-05-15": "Independence Day",
     "2049-06-12": "Chaco Armistice Day",
     "2049-08-15": "Asuncion Foundation's Day",
@@ -1228,8 +782,8 @@
     "2050-04-07": "Maundy Thursday",
     "2050-04-08": "Good Friday",
     "2050-04-10": "Easter Sunday",
-    "2050-05-01": "Labor Day",
-    "2050-05-14": "Independence Day",
+    "2050-05-01": "Workers' Day",
+    "2050-05-14": "National Holiday",
     "2050-05-15": "Independence Day",
     "2050-06-12": "Chaco Armistice Day",
     "2050-08-15": "Asuncion Foundation's Day",
diff --git a/snapshots/countries/TL_COMMON.json b/snapshots/countries/TL_COMMON.json
index 45724837..74cf769c 100644
--- a/snapshots/countries/TL_COMMON.json
+++ b/snapshots/countries/TL_COMMON.json
@@ -508,6 +508,7 @@
     "2024-11-03": "National Women's Day",
     "2024-11-12": "National Youth Day",
     "2024-11-28": "Proclamation of Independence Day",
+    "2024-11-29": "National Holidays (Special)",
     "2024-12-07": "Memorial Day",
     "2024-12-08": "Day of Our Lady of Immaculate Conception and Timor-Leste Patroness",
     "2024-12-10": "World Human Rights Day",


Test patch:
diff --git a/requirements/tests.txt b/requirements/tests.txt
index 1f79d213..77ad1355 100644
--- a/requirements/tests.txt
+++ b/requirements/tests.txt
@@ -1,6 +1,6 @@
 # Test requirements.
 
-coverage==7.6.4
+coverage==7.6.8
 importlib-metadata==8.5.0
 numpy<2.1.0; python_version < '3.10'
 numpy==2.1.2; python_version >= '3.10'
diff --git a/tests/countries/test_argentina.py b/tests/countries/test_argentina.py
index d87207c7..8c874045 100644
--- a/tests/countries/test_argentina.py
+++ b/tests/countries/test_argentina.py
@@ -26,6 +26,52 @@ class TestArgentina(CommonCountryTests, TestCase):
     def test_country_aliases(self):
         self.assertAliases(Argentina, AR, ARG)
 
+    def test_special_holidays(self):
+        dt = (
+            "2011-03-25",
+            "2011-12-09",
+            "2012-02-27",
+            "2012-04-30",
+            "2012-09-24",
+            "2012-12-24",
+            "2013-01-31",
+            "2013-02-20",
+            "2013-04-01",
+            "2013-06-21",
+            "2014-05-02",
+            "2014-12-26",
+            "2015-03-23",
+            "2015-12-07",
+            "2016-07-08",
+            "2016-12-09",
+            "2018-04-30",
+            "2018-12-24",
+            "2018-12-31",
+            "2019-07-08",
+            "2019-08-19",
+            "2019-10-14",
+            "2020-03-23",
+            "2020-07-10",
+            "2020-12-07",
+            "2021-05-24",
+            "2021-10-08",
+            "2021-11-22",
+            "2022-05-18",
+            "2022-10-07",
+            "2022-11-21",
+            "2022-12-09",
+            "2023-05-26",
+            "2023-06-19",
+            "2023-10-13",
+            "2024-04-01",
+            "2024-06-21",
+            "2024-10-11",
+            "2025-05-02",
+            "2025-08-15",
+            "2025-11-21",
+        )
+        self.assertHoliday(dt)
+
     def test_new_years_day(self):
         self.assertHoliday(f"{year}-01-01" for year in range(1950, 2050))
 
diff --git a/tests/countries/test_austria.py b/tests/countries/test_austria.py
index 33b05f69..33398062 100644
--- a/tests/countries/test_austria.py
+++ b/tests/countries/test_austria.py
@@ -20,23 +20,22 @@ from tests.common import CommonCountryTests
 class TestAustria(CommonCountryTests, TestCase):
     @classmethod
     def setUpClass(cls):
-        super().setUpClass(Austria, years=range(1900, 2050))
+        super().setUpClass(Austria, years=range(1901, 2050))
 
     def test_country_aliases(self):
         self.assertAliases(Austria, AT, AUT)
 
     def test_new_years(self):
-        self.assertHolidayName("Neujahr", (f"{year}-01-01" for year in range(1900, 2050)))
+        self.assertHolidayName("Neujahr", (f"{year}-01-01" for year in range(1901, 2050)))
 
     def test_epiphany(self):
         self.assertHolidayName(
-            "Heilige Drei Könige", (f"{year}-01-06" for year in range(1900, 2050))
+            "Heilige Drei Könige", (f"{year}-01-06" for year in range(1901, 2050))
         )
 
     def test_easter_monday(self):
         self.assertHolidayName(
             "Ostermontag",
-            "1900-04-16",
             "1901-04-08",
             "1902-03-31",
             "1999-04-05",
@@ -50,12 +49,11 @@ class TestAustria(CommonCountryTests, TestCase):
         )
 
     def test_labour_day(self):
-        self.assertHolidayName("Staatsfeiertag", (f"{year}-05-01" for year in range(1900, 2050)))
+        self.assertHolidayName("Staatsfeiertag", (f"{year}-05-01" for year in range(1901, 2050)))
 
     def test_ascension_day(self):
         self.assertHolidayName(
             "Christi Himmelfahrt",
-            "1900-05-24",
             "1901-05-16",
             "1902-05-08",
             "1999-05-13",
@@ -71,7 +69,6 @@ class TestAustria(CommonCountryTests, TestCase):
     def test_whit_monday(self):
         self.assertHolidayName(
             "Pfingstmontag",
-            "1900-06-04",
             "1901-05-27",
             "1902-05-19",
             "1999-05-24",
@@ -87,7 +84,6 @@ class TestAustria(CommonCountryTests, TestCase):
     def test_corpus_christi(self):
         self.assertHolidayName(
             "Fronleichnam",
-            "1900-06-14",
             "1901-06-06",
             "1902-05-29",
             "1999-06-03",
@@ -102,7 +98,7 @@ class TestAustria(CommonCountryTests, TestCase):
 
     def test_assumption_day(self):
         self.assertHolidayName(
-            "Mariä Himmelfahrt", (f"{year}-08-15" for year in range(1900, 2050))
+            "Mariä Himmelfahrt", (f"{year}-08-15" for year in range(1901, 2050))
         )
 
     def test_national_day(self):
@@ -112,19 +108,19 @@ class TestAustria(CommonCountryTests, TestCase):
             (f"{year}-10-26" for year in range(1967, 2050)),
         )
         self.assertNoHoliday("1918-11-12", "1935-11-12", "1966-10-26")
-        self.assertNoHolidayName("Nationalfeiertag", range(1900, 1919), range(1935, 1967))
+        self.assertNoHolidayName("Nationalfeiertag", range(1901, 1919), range(1935, 1967))
 
     def test_all_saints_day(self):
-        self.assertHolidayName("Allerheiligen", (f"{year}-11-01" for year in range(1900, 2050)))
+        self.assertHolidayName("Allerheiligen", (f"{year}-11-01" for year in range(1901, 2050)))
 
     def test_immaculate_conception_day(self):
-        self.assertHolidayName("Mariä Empfängnis", (f"{year}-12-08" for year in range(1900, 2050)))
+        self.assertHolidayName("Mariä Empfängnis", (f"{year}-12-08" for year in range(1901, 2050)))
 
     def test_christmas_day(self):
-        self.assertHolidayName("Christtag", (f"{year}-12-25" for year in range(1900, 2050)))
+        self.assertHolidayName("Christtag", (f"{year}-12-25" for year in range(1901, 2050)))
 
     def test_st_stephens_day(self):
-        self.assertHolidayName("Stefanitag", (f"{year}-12-26" for year in range(1900, 2050)))
+        self.assertHolidayName("Stefanitag", (f"{year}-12-26" for year in range(1901, 2050)))
 
     def test_2022(self):
         self.assertHolidays(
diff --git a/tests/countries/test_azerbaijan.py b/tests/countries/test_azerbaijan.py
index f4a2e807..462b1359 100644
--- a/tests/countries/test_azerbaijan.py
+++ b/tests/countries/test_azerbaijan.py
@@ -34,6 +34,7 @@ class TestAzerbaijan(CommonCountryTests, TestCase):
             "2018-04-11",
             "2019-12-27",
             "2024-02-07",
+            "2025-01-29",
             "2072-01-05",
         )
 
@@ -61,6 +62,8 @@ class TestAzerbaijan(CommonCountryTests, TestCase):
             "2024-04-12",
             "2024-11-12",
             "2024-11-13",
+            "2024-12-30",
+            "2025-01-03",
         )
 
     def test_new_years_day(self):
diff --git a/tests/countries/test_canada.py b/tests/countries/test_canada.py
index d7d2b44e..5090994c 100644
--- a/tests/countries/test_canada.py
+++ b/tests/countries/test_canada.py
@@ -695,13 +695,17 @@ class TestCanada(CommonCountryTests, TestCase):
 
     def test_nunavut_day(self):
         name = "Nunavut Day"
+        nu_holidays = self.prov_hols["NU"]
+        nu_opt_holidays = self.prov_opt_hols["NU"]
         self.assertNoHolidayName(name)
         self.assertNoHoliday(f"{year}-07-09" for year in range(2001, 2050))
-        self.assertNoHolidayName(name, self.prov_hols["NU"])
-        nu_opt_holidays = self.prov_opt_hols["NU"]
-        self.assertNoHoliday(nu_opt_holidays, "1999-07-09", "2000-07-09")
-        self.assertHoliday(nu_opt_holidays, "2000-04-01")
-        self.assertHoliday(nu_opt_holidays, (f"{year}-07-09" for year in range(2001, 2050)))
+        self.assertHolidayName(name, nu_holidays, (f"{year}-07-09" for year in range(2020, 2050)))
+        self.assertNoHolidayName(name, nu_holidays, range(1867, 2020))
+        self.assertNoHoliday(nu_opt_holidays, "1999-07-09", "2000-07-09", "2020-07-09")
+        self.assertHolidayName(
+            name, nu_opt_holidays, "2000-04-01", (f"{year}-07-09" for year in range(2001, 2020))
+        )
+        self.assertNoHolidayName(name, nu_opt_holidays, range(1867, 2000), range(2020, 2050))
 
     def test_national_patriots_day(self):
         name = "National Patriots' Day"
@@ -803,6 +807,7 @@ class TestCanada(CommonCountryTests, TestCase):
             "Saint Jean Baptiste Day",
             "Canada Day",
             "Canada Day; Memorial Day",
+            "Nunavut Day",
             "British Columbia Day",
             "Civic Holiday",
             "New Brunswick Day",
diff --git a/tests/countries/test_finland.py b/tests/countries/test_finland.py
index c37494b6..a9762204 100644
--- a/tests/countries/test_finland.py
+++ b/tests/countries/test_finland.py
@@ -21,13 +21,13 @@ class TestFinland(CommonCountryTests, TestCase):
     @classmethod
     def setUpClass(cls):
         super().setUpClass(Finland)
-        cls.unofficial_holidays = Finland(categories=UNOFFICIAL, years=range(1853, 2031))
+        cls.unofficial_holidays = Finland(categories=UNOFFICIAL, years=range(1853, 2050))
 
     def test_country_aliases(self):
         self.assertAliases(Finland, FI, FIN)
 
     def test_fixed_holidays(self):
-        for year in range(2010, 2030):
+        for year in range(2010, 2050):
             self.assertHoliday(
                 f"{year}-01-01",
                 f"{year}-01-06",
@@ -167,12 +167,18 @@ class TestFinland(CommonCountryTests, TestCase):
             "1957-11-01",
         )
 
+    def test_independence_day(self):
+        name = "Itsenäisyyspäivä"
+        self.assertHolidayName(name, (f"{year}-12-06" for year in range(1917, 2050)))
+        self.assertNoHoliday(f"{year}-12-06" for year in range(1853, 1917))
+        self.assertNoHolidayName(name, range(1853, 1917))
+
     def _test_unofficial_holiday(self, name, since):
         start_year, month, day = (int(part) for part in since.split("-"))
         self.assertHolidayName(
             name,
             self.unofficial_holidays,
-            (f"{year}-{month}-{day}" for year in range(start_year, 2031)),
+            (f"{year}-{month}-{day}" for year in range(start_year, 2050)),
         )
         self.assertNoHolidayName(name, self.unofficial_holidays, start_year - 1)
 
diff --git a/tests/countries/test_guernsey.py b/tests/countries/test_guernsey.py
new file mode 100644
index 00000000..d234f9f9
--- /dev/null
+++ b/tests/countries/test_guernsey.py
@@ -0,0 +1,240 @@
+#  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 AUTHORS 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 unittest import TestCase
+
+from holidays.countries.guernsey import Guernsey, GG, GGY
+from tests.common import CommonCountryTests
+
+
+class TestGG(CommonCountryTests, TestCase):
+    @classmethod
+    def setUpClass(cls):
+        super().setUpClass(Guernsey, years=range(1909, 2050))
+
+    def test_country_aliases(self):
+        self.assertAliases(Guernsey, GG, GGY)
+
+    def test_no_holidays(self):
+        self.assertNoHolidays(Guernsey(years=1908))
+
+    def test_special_holidays(self):
+        dt = (
+            "1930-10-10",
+            "1935-05-06",
+            "1937-05-12",
+            "1939-09-04",
+            "1949-09-19",
+            "1953-06-02",
+            "1957-07-26",
+            "1977-06-07",
+            "1978-06-28",
+            "1981-07-29",
+            "1989-05-23",
+            "1999-12-28",
+            "1999-12-31",
+            "2000-01-03",
+            "2001-07-12",
+            "2002-06-03",
+            "2011-04-29",
+            "2012-06-05",
+            "2022-06-03",
+            "2022-09-19",
+            "2023-05-08",
+            "2024-07-16",
+        )
+        dt_observed = (
+            "1932-12-27",
+            "1933-01-02",
+            "1938-12-27",
+            "1939-01-02",
+            "1981-12-28",
+            "1982-12-28",
+            "1983-01-03",
+            "1987-12-28",
+            "1993-12-28",
+            "1994-01-03",
+            "2004-12-28",
+            "2005-01-03",
+        )
+        self.assertHoliday(dt, dt_observed)
+        self.assertNoNonObservedHoliday(dt_observed)
+
+    def test_his_majesty_birthday(self):
+        name = "His Majesty's Birthday"
+        dt = (
+            # Edward VII (MAY/JUN observance).
+            "1909-06-25",
+            # George V.
+            "1910-06-24",
+            "1911-05-27",
+            "1912-06-14",
+            "1913-06-03",
+            "1914-06-24",
+            # Not observed in 1915-1918 due to WW1.
+            "1919-06-03",
+            "1920-06-05",
+            "1921-06-04",
+            "1922-06-03",
+            "1923-06-02",
+            "1924-06-03",
+            "1925-06-03",
+            "1926-06-05",
+            "1927-06-03",
+            "1928-06-04",
+            "1929-06-03",
+            "1930-06-03",
+            "1931-06-03",
+            "1932-06-03",
+            "1933-06-03",
+            "1934-06-04",
+            "1935-06-03",
+            # Edward VIII.
+            "1936-06-23",
+            # George VI.
+            "1937-06-09",
+            "1938-06-09",
+            "1939-06-08",
+            # Not observed in 1940-1941 due to WW2.
+            "1942-06-11",
+            "1943-06-02",
+            "1944-06-08",
+            "1945-06-14",
+            "1946-06-13",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertNoHolidayName(name, range(1915, 1919), range(1940, 1942), range(1947, 2050))
+
+    def test_liberation_day(self):
+        self.assertHolidayName(
+            "Liberation Day",
+            "2010-05-10",
+            (f"{year}-05-09" for year in range(1946, 2010)),
+            (f"{year}-05-09" for year in range(2011, 2050)),
+        )
+
+    def test_2019(self):
+        # Wayback Machine of https://www.gov.gg/holidaydates
+        self.assertHolidays(
+            Guernsey(years=2019),
+            ("2019-01-01", "New Year's Day"),
+            ("2019-04-19", "Good Friday"),
+            ("2019-04-22", "Easter Monday"),
+            ("2019-05-06", "May Day Bank Holiday"),
+            ("2019-05-09", "Liberation Day"),
+            ("2019-05-27", "Spring Bank Holiday"),
+            ("2019-08-26", "Summer Bank Holiday"),
+            ("2019-12-25", "Christmas Day"),
+            ("2019-12-26", "Boxing Day"),
+        )
+
+    def test_2020(self):
+        # Wayback Machine of https://www.gov.gg/holidaydates
+        self.assertHolidays(
+            Guernsey(years=2020),
+            ("2020-01-01", "New Year's Day"),
+            ("2020-04-10", "Good Friday"),
+            ("2020-04-13", "Easter Monday"),
+            ("2020-05-08", "May Day Bank Holiday"),
+            ("2020-05-09", "Liberation Day"),
+            ("2020-05-25", "Spring Bank Holiday"),
+            ("2020-08-31", "Summer Bank Holiday"),
+            ("2020-12-25", "Christmas Day"),
+            ("2020-12-26", "Boxing Day"),
+            ("2020-12-28", "Boxing Day (substitute day)"),
+        )
+
+    def test_2021(self):
+        # Wayback Machine of https://www.gov.gg/holidaydates
+        self.assertHolidays(
+            Guernsey(years=2021),
+            ("2021-01-01", "New Year's Day"),
+            ("2021-04-02", "Good Friday"),
+            ("2021-04-05", "Easter Monday"),
+            ("2021-05-03", "May Day Bank Holiday"),
+            ("2021-05-09", "Liberation Day"),
+            ("2021-05-31", "Spring Bank Holiday"),
+            ("2021-08-30", "Summer Bank Holiday"),
+            ("2021-12-25", "Christmas Day"),
+            ("2021-12-26", "Boxing Day"),
+            ("2021-12-27", "Christmas Day (substitute day)"),
+            ("2021-12-28", "Boxing Day (substitute day)"),
+        )
+
+    def test_2022(self):
+        # Wayback Machine of https://www.gov.gg/holidaydates
+        # https://www.bbc.com/news/world-europe-guernsey-62864318
+        self.assertHolidays(
+            Guernsey(years=2022),
+            ("2022-01-01", "New Year's Day"),
+            ("2022-01-03", "New Year's Day (substitute day)"),
+            ("2022-04-15", "Good Friday"),
+            ("2022-04-18", "Easter Monday"),
+            ("2022-05-02", "May Day Bank Holiday"),
+            ("2022-05-09", "Liberation Day"),
+            ("2022-06-02", "Spring Bank Holiday"),
+            ("2022-06-03", "Queen's Platinum Jubilee Bank Holiday"),
+            ("2022-08-29", "Summer Bank Holiday"),
+            ("2022-09-19", "State Funeral of Queen Elizabeth II"),
+            ("2022-12-25", "Christmas Day"),
+            ("2022-12-26", "Boxing Day"),
+            ("2022-12-27", "Christmas Day (substitute day)"),
+        )
+
+    def test_2023(self):
+        # https://www.gov.gg/holidaydates
+        self.assertHolidays(
+            Guernsey(years=2023),
+            ("2023-01-01", "New Year's Day"),
+            ("2023-01-02", "New Year's Day (substitute day)"),
+            ("2023-04-07", "Good Friday"),
+            ("2023-04-10", "Easter Monday"),
+            ("2023-05-01", "May Day Bank Holiday"),
+            ("2023-05-08", "Extra Public Holiday for the Coronation of King Charles III"),
+            ("2023-05-09", "Liberation Day"),
+            ("2023-05-29", "Spring Bank Holiday"),
+            ("2023-08-28", "Summer Bank Holiday"),
+            ("2023-12-25", "Christmas Day"),
+            ("2023-12-26", "Boxing Day"),
+        )
+
+    def test_2024(self):
+        # https://www.gov.gg/holidaydates
+        # https://www.bbc.co.uk/news/articles/c1441ddn87po
+        self.assertHolidays(
+            Guernsey(years=2024),
+            ("2024-01-01", "New Year's Day"),
+            ("2024-03-29", "Good Friday"),
+            ("2024-04-01", "Easter Monday"),
+            ("2024-05-06", "May Day Bank Holiday"),
+            ("2024-05-09", "Liberation Day"),
+            ("2024-05-27", "Spring Bank Holiday"),
+            ("2024-07-16", "The visit of His Majesty King Charles III and Queen Camilla"),
+            ("2024-08-26", "Summer Bank Holiday"),
+            ("2024-12-25", "Christmas Day"),
+            ("2024-12-26", "Boxing Day"),
+        )
+
+    def test_2025(self):
+        # https://www.gov.gg/holidaydates
+        self.assertHolidays(
+            Guernsey(years=2025),
+            ("2025-01-01", "New Year's Day"),
+            ("2025-04-18", "Good Friday"),
+            ("2025-04-21", "Easter Monday"),
+            ("2025-05-05", "May Day Bank Holiday"),
+            ("2025-05-09", "Liberation Day"),
+            ("2025-05-26", "Spring Bank Holiday"),
+            ("2025-08-25", "Summer Bank Holiday"),
+            ("2025-12-25", "Christmas Day"),
+            ("2025-12-26", "Boxing Day"),
+        )
diff --git a/tests/countries/test_israel.py b/tests/countries/test_israel.py
index 4c55dffa..adba83ef 100644
--- a/tests/countries/test_israel.py
+++ b/tests/countries/test_israel.py
@@ -12,7 +12,7 @@
 
 from unittest import TestCase
 
-from holidays.constants import OPTIONAL, SCHOOL
+from holidays.constants import OPTIONAL, PUBLIC, SCHOOL
 from holidays.countries.israel import Israel, IL, ISR
 from tests.common import CommonCountryTests
 
@@ -29,15 +29,8 @@ class TestIsrael(CommonCountryTests, TestCase):
     def test_country_aliases(self):
         self.assertAliases(Israel, IL, ISR)
 
-    def test_not_implemented(self):
-        self.assertRaises(NotImplementedError, lambda: Israel(years=2101))
-        self.assertRaises(NotImplementedError, lambda: Israel(categories=(OPTIONAL,), years=2101))
-        self.assertRaises(NotImplementedError, lambda: Israel(categories=(SCHOOL,), years=2101))
-
     def test_no_holidays(self):
-        self.assertNoHolidays(Israel(years=1947))
-        self.assertNoHolidays(Israel(categories=(OPTIONAL,), years=1947))
-        self.assertNoHolidays(Israel(categories=(SCHOOL,), years=1947))
+        self.assertNoHolidays(Israel(categories=(OPTIONAL, PUBLIC, SCHOOL), years=1947))
 
     def test_independence_day(self):
         name = "יום העצמאות"
diff --git a/tests/countries/test_japan.py b/tests/countries/test_japan.py
index 01bfb976..d7a4b571 100644
--- a/tests/countries/test_japan.py
+++ b/tests/countries/test_japan.py
@@ -12,7 +12,7 @@
 
 from unittest import TestCase
 
-from holidays.constants import BANK
+from holidays.constants import BANK, PUBLIC
 from holidays.countries.japan import Japan, JP, JPN
 from tests.common import CommonCountryTests
 
@@ -25,15 +25,9 @@ class TestJapan(CommonCountryTests, TestCase):
     def test_country_aliases(self):
         self.assertAliases(Japan, JP, JPN)
 
-    def test_not_implemented(self):
-        with self.assertRaises(NotImplementedError):
-            Japan(years=1945)
-        with self.assertRaises(NotImplementedError):
-            Japan(years=2100)
-        with self.assertRaises(NotImplementedError):
-            Japan(categories=BANK, years=1945)
-        with self.assertRaises(NotImplementedError):
-            Japan(categories=BANK, years=2100)
+    def test_no_holidays(self):
+        self.assertNoHolidays(Japan(categories=(BANK, PUBLIC), years=1948))
+        self.assertNoHolidays(Japan(categories=(BANK, PUBLIC), years=2100))
 
     def test_new_years_day(self):
         self.assertHolidayName("元日", (f"{year}-01-01" for year in range(1949, 2051)))
diff --git a/tests/countries/test_liechtenstein.py b/tests/countries/test_liechtenstein.py
index 5a7a9b52..8f66d76e 100644
--- a/tests/countries/test_liechtenstein.py
+++ b/tests/countries/test_liechtenstein.py
@@ -20,7 +20,7 @@ from tests.common import CommonCountryTests
 class TestLiechtenstein(CommonCountryTests, TestCase):
     @classmethod
     def setUpClass(cls):
-        years = range(1900, 2050)
+        years = range(1901, 2050)
         super().setUpClass(Liechtenstein, years=years)
         cls.bank_holidays = Liechtenstein(categories=BANK, years=years)
 
@@ -28,28 +28,27 @@ class TestLiechtenstein(CommonCountryTests, TestCase):
         self.assertAliases(Liechtenstein, LI, LIE)
 
     def test_new_years(self):
-        self.assertHolidayName("Neujahr", (f"{year}-01-01" for year in range(1900, 2050)))
+        self.assertHolidayName("Neujahr", (f"{year}-01-01" for year in range(1901, 2050)))
 
     def test_saint_berchtolds_day(self):
         name = "Berchtoldstag"
         self.assertHolidayName(
-            name, self.bank_holidays, (f"{year}-01-02" for year in range(1900, 2050))
+            name, self.bank_holidays, (f"{year}-01-02" for year in range(1901, 2050))
         )
-        self.assertNoHoliday(f"{year}-01-02" for year in range(1900, 2050))
+        self.assertNoHoliday(f"{year}-01-02" for year in range(1901, 2050))
         self.assertNoHolidayName(name)
 
     def test_epiphany(self):
         self.assertHolidayName(
-            "Heilige Drei Könige", (f"{year}-01-06" for year in range(1900, 2050))
+            "Heilige Drei Könige", (f"{year}-01-06" for year in range(1901, 2050))
         )
 
     def test_candlemas(self):
-        self.assertHolidayName("Mariä Lichtmess", (f"{year}-02-02" for year in range(1900, 2050)))
+        self.assertHolidayName("Mariä Lichtmess", (f"{year}-02-02" for year in range(1901, 2050)))
 
     def test_shrove_tuesday(self):
         name = "Fasnachtsdienstag"
         dt = (
-            "1900-02-27",
             "1901-02-19",
             "1902-02-11",
             "1999-02-16",
@@ -65,12 +64,11 @@ class TestLiechtenstein(CommonCountryTests, TestCase):
         self.assertNoHolidayName(name)
 
     def test_saint_josephs_day(self):
-        self.assertHolidayName("Josefstag", (f"{year}-03-19" for year in range(1900, 2050)))
+        self.assertHolidayName("Josefstag", (f"{year}-03-19" for year in range(1901, 2050)))
 
     def test_good_friday(self):
         name = "Karfreitag"
         dt = (
-            "1900-04-13",
             "1901-04-05",
             "1902-03-28",
             "1999-04-02",
@@ -88,7 +86,6 @@ class TestLiechtenstein(CommonCountryTests, TestCase):
     def test_easter(self):
         self.assertHolidayName(
             "Ostersonntag",
-            "1900-04-15",
             "1901-04-07",
             "1902-03-30",
             "1999-04-04",
@@ -103,7 +100,6 @@ class TestLiechtenstein(CommonCountryTests, TestCase):
     def test_easter_monday(self):
         self.assertHolidayName(
             "Ostermontag",
-            "1900-04-16",
             "1901-04-08",
             "1902-03-31",
             "1999-04-05",
@@ -116,12 +112,11 @@ class TestLiechtenstein(CommonCountryTests, TestCase):
         )
 
     def test_labor_day(self):
-        self.assertHolidayName("Tag der Arbeit", (f"{year}-05-01" for year in range(1900, 2050)))
+        self.assertHolidayName("Tag der Arbeit", (f"{year}-05-01" for year in range(1901, 2050)))
 
     def test_ascension_day(self):
         self.assertHolidayName(
             "Auffahrt",
-            "1900-05-24",
             "1901-05-16",
             "1902-05-08",
             "1999-05-13",
@@ -136,7 +131,6 @@ class TestLiechtenstein(CommonCountryTests, TestCase):
     def test_whit_sunday(self):
         self.assertHolidayName(
             "Pfingstsonntag",
-            "1900-06-03",
             "1901-05-26",
             "1902-05-18",
             "1999-05-23",
@@ -151,7 +145,6 @@ class TestLiechtenstein(CommonCountryTests, TestCase):
     def test_whit_monday(self):
         self.assertHolidayName(
             "Pfingstmontag",
-            "1900-06-04",
             "1901-05-27",
             "1902-05-19",
             "1999-05-24",
@@ -166,7 +159,6 @@ class TestLiechtenstein(CommonCountryTests, TestCase):
     def test_corpus_christi(self):
         self.assertHolidayName(
             "Fronleichnam",
-            "1900-06-14",
             "1901-06-06",
             "1902-05-29",
             "1999-06-03",
@@ -179,37 +171,37 @@ class TestLiechtenstein(CommonCountryTests, TestCase):
         )
 
     def test_national_day(self):
-        self.assertHolidayName("Staatsfeiertag", (f"{year}-08-15" for year in range(1900, 2050)))
+        self.assertHolidayName("Staatsfeiertag", (f"{year}-08-15" for year in range(1901, 2050)))
 
     def test_nativity_of_mary(self):
-        self.assertHolidayName("Mariä Geburt", (f"{year}-09-08" for year in range(1900, 2050)))
+        self.assertHolidayName("Mariä Geburt", (f"{year}-09-08" for year in range(1901, 2050)))
 
     def test_all_saints_day(self):
-        self.assertHolidayName("Allerheiligen", (f"{year}-11-01" for year in range(1900, 2050)))
+        self.assertHolidayName("Allerheiligen", (f"{year}-11-01" for year in range(1901, 2050)))
 
     def test_immaculate_conception(self):
-        self.assertHolidayName("Mariä Empfängnis", (f"{year}-12-08" for year in range(1900, 2050)))
+        self.assertHolidayName("Mariä Empfängnis", (f"{year}-12-08" for year in range(1901, 2050)))
 
     def test_christmas_eve(self):
         name = "Heiligabend"
         self.assertHolidayName(
-            name, self.bank_holidays, (f"{year}-12-24" for year in range(1900, 2050))
+            name, self.bank_holidays, (f"{year}-12-24" for year in range(1901, 2050))
         )
-        self.assertNoHoliday(f"{year}-12-24" for year in range(1900, 2050))
+        self.assertNoHoliday(f"{year}-12-24" for year in range(1901, 2050))
         self.assertNoHolidayName(name)
 
     def test_christmas_day(self):
-        self.assertHolidayName("Weihnachten", (f"{year}-12-25" for year in range(1900, 2050)))
+        self.assertHolidayName("Weihnachten", (f"{year}-12-25" for year in range(1901, 2050)))
 
     def test_st_stephens_day(self):
-        self.assertHolidayName("Stephanstag", (f"{year}-12-26" for year in range(1900, 2050)))
+        self.assertHolidayName("Stephanstag", (f"{year}-12-26" for year in range(1901, 2050)))
 
     def test_new_years_eve(self):
         name = "Silvester"
         self.assertHolidayName(
-            name, self.bank_holidays, (f"{year}-12-31" for year in range(1900, 2050))
+            name, self.bank_holidays, (f"{year}-12-31" for year in range(1901, 2050))
         )
-        self.assertNoHoliday(f"{year}-12-31" for year in range(1900, 2050))
+        self.assertNoHoliday(f"{year}-12-31" for year in range(1901, 2050))
         self.assertNoHolidayName(name)
 
     def test_2022(self):
diff --git a/tests/countries/test_mexico.py b/tests/countries/test_mexico.py
index 74368cca..d61f694c 100644
--- a/tests/countries/test_mexico.py
+++ b/tests/countries/test_mexico.py
@@ -19,18 +19,18 @@ from tests.common import CommonCountryTests
 class TestMexico(CommonCountryTests, TestCase):
     @classmethod
     def setUpClass(cls):
-        super().setUpClass(Mexico, years=range(1900, 2050))
+        super().setUpClass(Mexico, years=range(1901, 2050))
 
     def test_country_aliases(self):
         self.assertAliases(Mexico, MX, MEX)
 
     def test_new_years_day(self):
-        self.assertHoliday(f"{year}-01-01" for year in range(1900, 2050))
+        self.assertHoliday(f"{year}-01-01" for year in range(1901, 2050))
 
     def test_constitution_day(self):
         self.assertHoliday(f"{year}-02-05" for year in range(1917, 2006))
-        self.assertNoHoliday(f"{year}-02-05" for year in range(1900, 1917))
-        self.assertNoHolidayName("Día de la Constitución", range(1900, 1917))
+        self.assertNoHoliday(f"{year}-02-05" for year in range(1901, 1917))
+        self.assertNoHolidayName("Día de la Constitución", range(1901, 1917))
         self.assertHoliday(
             "2006-02-06",
             "2007-02-05",
@@ -54,8 +54,8 @@ class TestMexico(CommonCountryTests, TestCase):
 
     def test_benito_juarez(self):
         self.assertHoliday(f"{year}-03-21" for year in range(1917, 2007))
-        self.assertNoHoliday(f"{year}-03-21" for year in range(1900, 1917))
-        self.assertNoHolidayName("Natalicio de Benito Juárez", range(1900, 1917))
+        self.assertNoHoliday(f"{year}-03-21" for year in range(1901, 1917))
+        self.assertNoHolidayName("Natalicio de Benito Juárez", range(1901, 1917))
         self.assertHoliday(
             "2007-03-19",
             "2008-03-17",
@@ -78,16 +78,16 @@ class TestMexico(CommonCountryTests, TestCase):
 
     def test_labour_day(self):
         self.assertHoliday(f"{year}-05-01" for year in range(1923, 2050))
-        self.assertNoHoliday(f"{year}-05-01" for year in range(1900, 1923))
-        self.assertNoHolidayName("Día del Trabajo", range(1900, 1923))
+        self.assertNoHoliday(f"{year}-05-01" for year in range(1901, 1923))
+        self.assertNoHolidayName("Día del Trabajo", range(1901, 1923))
 
     def test_independence_day(self):
-        self.assertHoliday(f"{year}-09-16" for year in range(1900, 2050))
+        self.assertHoliday(f"{year}-09-16" for year in range(1901, 2050))
 
     def test_revolution_day(self):
         self.assertHoliday(f"{year}-11-20" for year in range(1917, 2006))
-        self.assertNoHoliday(f"{year}-11-20" for year in range(1900, 1917))
-        self.assertNoHolidayName("Día de la Revolución", range(1900, 1917))
+        self.assertNoHoliday(f"{year}-11-20" for year in range(1901, 1917))
+        self.assertNoHolidayName("Día de la Revolución", range(1901, 1917))
         self.assertHoliday(
             "2006-11-20",
             "2007-11-19",
@@ -126,14 +126,14 @@ class TestMexico(CommonCountryTests, TestCase):
             f"{year}-12-01" for year in range(1970, 2050) if (year - 1970) % 6 > 0
         )
         name = "Transmisión del Poder Ejecutivo Federal"
-        self.assertNoHolidayName(name, range(1900, 1970))
+        self.assertNoHolidayName(name, range(1901, 1970))
         self.assertNoHolidayName(
             name, (year for year in range(1970, 2050) if (year - 1970) % 6 > 0)
         )
         self.assertNoHoliday("2024-12-01")
 
     def test_christmas_day(self):
-        self.assertHoliday(f"{year}-12-25" for year in range(1900, 2050))
+        self.assertHoliday(f"{year}-12-25" for year in range(1901, 2050))
 
     def test_l10n_default(self):
         self.assertLocalizedHolidays(
diff --git a/tests/countries/test_norway.py b/tests/countries/test_norway.py
index fb9ed86a..d0fd203f 100644
--- a/tests/countries/test_norway.py
+++ b/tests/countries/test_norway.py
@@ -25,7 +25,7 @@ class TestNorway(CommonCountryTests, SundayHolidays, TestCase):
         self.assertAliases(Norway, NO, NOR)
 
     def test_new_years(self):
-        self.assertHoliday("1900-01-01", "2017-01-01", "2023-01-01")
+        self.assertHoliday("1901-01-01", "2017-01-01", "2023-01-01")
 
     def test_easter(self):
         self.assertHoliday(
diff --git a/tests/countries/test_paraguay.py b/tests/countries/test_paraguay.py
index c3db7716..057091e3 100644
--- a/tests/countries/test_paraguay.py
+++ b/tests/countries/test_paraguay.py
@@ -12,7 +12,7 @@
 
 from unittest import TestCase
 
-from holidays.constants import GOVERNMENT
+from holidays.constants import GOVERNMENT, PUBLIC
 from holidays.countries.paraguay import Paraguay, PY, PRY
 from tests.common import CommonCountryTests
 
@@ -20,36 +20,32 @@ from tests.common import CommonCountryTests
 class TestParaguay(CommonCountryTests, TestCase):
     @classmethod
     def setUpClass(cls):
-        super().setUpClass(Paraguay, years=range(1990, 2050), years_non_observed=range(2000, 2025))
+        super().setUpClass(Paraguay, years=range(1991, 2050))
 
     def test_country_aliases(self):
         self.assertAliases(Paraguay, PY, PRY)
 
+    def test_no_holidays(self):
+        self.assertNoHolidays(Paraguay(categories=(GOVERNMENT, PUBLIC), years=1990))
+
     def test_new_years_day(self):
-        self.assertHolidayName("Año Nuevo", (f"{year}-01-01" for year in range(1990, 2050)))
-        self.assertNoNonObservedHoliday(
-            "2005-01-01",
-            "2006-01-01",
-            "2011-01-01",
-            "2012-01-01",
-            "2017-01-01",
-            "2022-01-01",
-            "2023-01-01",
-        )
+        self.assertHolidayName("Año Nuevo", (f"{year}-01-01" for year in range(1991, 2050)))
 
     def test_patriots_day(self):
         name = "Día de los Héroes de la Patria"
-        years_excluded = {2013, 2016, 2018, 2022}
+        years_excluded = {2013, 2016, 2018, 2019, 2022, 2023}
         self.assertHolidayName(
-            name, (f"{year}-03-01" for year in set(range(1990, 2050)).difference(years_excluded))
+            name, (f"{year}-03-01" for year in set(range(1991, 2050)).difference(years_excluded))
         )
-        self.assertNoHolidayName(name, (f"{year}-03-01" for year in years_excluded))
+        self.assertNoHoliday(f"{year}-03-01" for year in years_excluded)
         self.assertHolidayName(
             name,
             "2013-03-04",
             "2016-02-29",
             "2018-02-26",
+            "2019-03-04",
             "2022-02-28",
+            "2023-02-27",
         )
 
     def test_easter(self):
@@ -71,91 +67,61 @@ class TestParaguay(CommonCountryTests, TestCase):
             "2023-04-07",
         )
 
-        dt = (
+        self.assertHolidayName(
+            "Domingo de Resurrección",
             "2019-04-21",
             "2020-04-12",
             "2021-04-04",
             "2022-04-17",
             "2023-04-09",
         )
-        self.assertHolidayName("Domingo de Resurrección", dt)
-        self.assertNoNonObservedHoliday(dt)
 
     def test_labor_day(self):
         self.assertHolidayName(
-            "Día del Trabajador", (f"{year}-05-01" for year in range(1990, 2050))
-        )
-        self.assertNoNonObservedHoliday(
-            "2004-05-01",
-            "2005-05-01",
-            "2010-05-01",
-            "2011-05-01",
-            "2016-05-01",
-            "2021-05-01",
-            "2022-05-01",
+            "Día de los Trabajadores", (f"{year}-05-01" for year in range(1991, 2050))
         )
 
-    def test_independence_day(self):
-        name = "Día de la Independencia Nacional"
-        self.assertHolidayName(name, (f"{year}-05-15" for year in range(1990, 2050)))
+    def test_national_holiday(self):
+        name = "Feriado Nacional"
         self.assertHolidayName(name, (f"{year}-05-14" for year in range(2012, 2050)))
-        self.assertNoHolidayName(name, (f"{year}-05-14" for year in range(1990, 2012)))
-        self.assertNoNonObservedHoliday(
-            "2004-05-15",
-            "2005-05-15",
-            "2010-05-15",
-            "2011-05-15",
-            "2016-05-14",
-            "2016-05-15",
-            "2017-05-14",
-            "2022-05-14",
-            "2022-05-15",
-            "2023-05-14",
+        # 2011 - special holiday
+        self.assertNoHoliday(f"{year}-05-14" for year in range(1991, 2011))
+        self.assertNoHolidayName(name, range(1991, 2012))
+
+    def test_independence_day(self):
+        self.assertHolidayName(
+            "Día de la Independencia Nacional", (f"{year}-05-15" for year in range(1991, 2050))
         )
 
     def test_chaco_armistice_day(self):
         name = "Día de la Paz del Chaco"
-        years_excluded = {2014, 2018}
+        years_excluded = {2014, 2018, 2019, 2024}
         self.assertHolidayName(
-            name, (f"{year}-06-12" for year in set(range(1990, 2050)).difference(years_excluded))
+            name, (f"{year}-06-12" for year in set(range(1991, 2050)).difference(years_excluded))
         )
-        self.assertNoHolidayName(name, (f"{year}-06-12" for year in years_excluded))
+        self.assertNoHoliday(f"{year}-06-12" for year in years_excluded)
         self.assertHolidayName(
             name,
             "2014-06-16",
             "2018-06-11",
-        )
-        self.assertNoNonObservedHoliday(
-            "2004-06-12",
-            "2005-06-12",
-            "2010-06-12",
-            "2011-06-12",
-            "2016-06-12",
-            "2021-06-12",
-            "2022-06-12",
+            "2019-06-17",
+            "2024-06-10",
         )
 
     def test_asuncion_foundations_day(self):
         self.assertHolidayName(
-            "Día de la Fundación de Asunción", (f"{year}-08-15" for year in range(1990, 2050))
-        )
-        self.assertNoNonObservedHoliday(
-            "2004-08-15",
-            "2009-08-15",
-            "2010-08-15",
-            "2015-08-15",
-            "2020-08-15",
-            "2021-08-15",
+            "Día de la Fundación de Asunción", (f"{year}-08-15" for year in range(1991, 2050))
         )
 
     def test_boqueron_battle_day(self):
         name = "Día de la Batalla de Boquerón"
-        years_excluded = {2015, 2016, 2017, 2021, 2022}
+        years_excluded = {2015, 2016, 2017, 2021, 2022, 2024}
         self.assertHolidayName(
-            name, (f"{year}-09-29" for year in set(range(2000, 2050)).difference(years_excluded))
+            name, (f"{year}-09-29" for year in set(range(1995, 2050)).difference(years_excluded))
         )
-        self.assertNoHolidayName(name, (f"{year}-09-29" for year in years_excluded))
-        self.assertNoHolidayName(name, (f"{year}-09-29" for year in range(1990, 2000)))
+        self.assertNoHoliday(f"{year}-09-29" for year in years_excluded)
+        self.assertNoHoliday(f"{year}-09-29" for year in range(1991, 1995))
+        self.assertNoHolidayName(name, range(1991, 1995))
         self.assertHolidayName(
             name,
             "2015-09-28",
@@ -163,31 +129,12 @@ class TestParaguay(CommonCountryTests, TestCase):
             "2017-10-02",
             "2021-09-27",
             "2022-10-03",
-        )
-        self.assertNoNonObservedHoliday(
-            "2001-09-29",
-            "2002-09-29",
-            "2007-09-29",
-            "2012-09-29",
-            "2013-09-29",
-            "2018-09-29",
-            "2019-09-29",
-            "2024-09-29",
+            "2024-09-30",
         )
 
     def test_caacupe_virgin_day(self):
         self.assertHolidayName(
-            "Día de la Virgen de Caacupé", (f"{year}-12-08" for year in range(1990, 2050))
-        )
-        self.assertNoNonObservedHoliday(
-            "2001-12-08",
-            "2002-12-08",
-            "2007-12-08",
-            "2012-12-08",
-            "2013-12-08",
-            "2018-12-08",
-            "2019-12-08",
-            "2024-12-08",
+            "Día de la Virgen de Caacupé", (f"{year}-12-08" for year in range(1991, 2050))
         )
 
     def test_special_public_holidays(self):
@@ -242,15 +189,15 @@ class TestParaguay(CommonCountryTests, TestCase):
             ("2022-04-14", "Jueves Santo"),
             ("2022-04-15", "Viernes Santo"),
             ("2022-04-17", "Domingo de Resurrección"),
-            ("2022-05-01", "Día del Trabajador"),
+            ("2022-05-01", "Día de los Trabajadores"),
             ("2022-05-02", "Asueto de la Administración Pública"),
-            ("2022-05-14", "Día de la Independencia Nacional"),
+            ("2022-05-14", "Feriado Nacional"),
             ("2022-05-15", "Día de la Independencia Nacional"),
             ("2022-06-12", "Día de la Paz del Chaco"),
             ("2022-08-15", "Día de la Fundación de Asunción"),
             ("2022-10-03", "Día de la Batalla de Boquerón"),
             ("2022-12-08", "Día de la Virgen de Caacupé"),
-            ("2022-12-25", "Navidad"),
+            ("2022-12-25", "Día de la Navidad"),
         )
 
     def test_l10n_en_us(self):
@@ -262,9 +209,9 @@ class TestParaguay(CommonCountryTests, TestCase):
             ("2022-04-14", "Maundy Thursday"),
             ("2022-04-15", "Good Friday"),
             ("2022-04-17", "Easter Sunday"),
-            ("2022-05-01", "Labor Day"),
+            ("2022-05-01", "Workers' Day"),
             ("2022-05-02", "Public sector holiday"),
-            ("2022-05-14", "Independence Day"),
+            ("2022-05-14", "National Holiday"),
             ("2022-05-15", "Independence Day"),
             ("2022-06-12", "Chaco Armistice Day"),
             ("2022-08-15", "Asuncion Foundation's Day"),
@@ -284,11 +231,11 @@ class TestParaguay(CommonCountryTests, TestCase):
             ("2022-04-17", "Великдень"),
             ("2022-05-01", "День трудящих"),
             ("2022-05-02", "Вихідний державних установ"),
-            ("2022-05-14", "День незалежності"),
+            ("2022-05-14", "Національне свято"),
             ("2022-05-15", "День незалежності"),
             ("2022-06-12", "День мирного договору в Чако"),
             ("2022-08-15", "День заснування Асунсьйона"),
             ("2022-10-03", "День битви за Бокерон"),
-            ("2022-12-08", "Успіння Пресвятої Богородиці"),
+            ("2022-12-08", "День Богоматері Каакупе"),
             ("2022-12-25", "Різдво Христове"),
         )
diff --git a/tests/countries/test_saint_kitts_and_nevis.py b/tests/countries/test_saint_kitts_and_nevis.py
index 2e430c69..9dd4abbd 100644
--- a/tests/countries/test_saint_kitts_and_nevis.py
+++ b/tests/countries/test_saint_kitts_and_nevis.py
@@ -143,7 +143,7 @@ class TestSaintKittsAndNevis(CommonCountryTests, TestCase):
         )
 
     def test_kim_collins_day(self):
-        self.assertNoHoliday(SaintKittsAndNevis(categories=WORKDAY), 2002)
+        self.assertNoHoliday(SaintKittsAndNevis(categories=WORKDAY), "2002-08-25")
         self.assertHoliday(
             SaintKittsAndNevis(categories=WORKDAY),
             (f"{year}-08-25" for year in range(2003, 2051)),
diff --git a/tests/countries/test_sweden.py b/tests/countries/test_sweden.py
index c30890d6..86cdea23 100644
--- a/tests/countries/test_sweden.py
+++ b/tests/countries/test_sweden.py
@@ -30,7 +30,7 @@ class TestSweden(CommonCountryTests, SundayHolidays, TestCase):
 
     def test_new_years(self):
         self.assertHoliday(
-            "1900-01-01",
+            "1901-01-01",
             "2017-01-01",
             "2023-01-01",
         )
@@ -80,7 +80,6 @@ class TestSweden(CommonCountryTests, SundayHolidays, TestCase):
         self.assertHoliday(
             "2005-06-06",
             "2017-06-06",
-            "2999-06-06",
         )
         self.assertNoHoliday("2004-06-06")
         self.assertNoHolidayName("Sveriges nationaldag", Sweden(years=2004))
diff --git a/tests/countries/test_timor_leste.py b/tests/countries/test_timor_leste.py
index 48c3d311..850891bb 100644
--- a/tests/countries/test_timor_leste.py
+++ b/tests/countries/test_timor_leste.py
@@ -147,6 +147,7 @@ class TestTimorLeste(CommonCountryTests, TestCase):
             "2024-09-10",
             "2024-09-11",
             "2024-10-31",
+            "2024-11-29",
         )
 
     def test_2011_public(self):
diff --git a/tests/financial/test_ny_stock_exchange.py b/tests/financial/test_ny_stock_exchange.py
index dba564fb..e9a16ce7 100644
--- a/tests/financial/test_ny_stock_exchange.py
+++ b/tests/financial/test_ny_stock_exchange.py
@@ -43,6 +43,9 @@ class TestNewYorkStockExchange(CommonFinancialTests, TestCase):
     def test_market_aliases(self):
         self.assertAliases(NewYorkStockExchange, NYSE, XNYS)
 
+    def test_no_holidays(self):
+        self.assertNoHolidays(NewYorkStockExchange(years=1862))
+
     def test_new_years(self):
         for dt in (
             date(1900, JAN, 1),
diff --git a/tests/test_holiday_base.py b/tests/test_holiday_base.py
index 9a00fceb..4291dad8 100644
--- a/tests/test_holiday_base.py
+++ b/tests/test_holiday_base.py
@@ -74,6 +74,8 @@ class CountryStub1(EntityStub, StaticHolidays):
         "S_3": "3",
     }
     supported_categories = (PUBLIC, SCHOOL)
+    start_year = 1000
+    end_year = 3400
 
     def __init__(self, *args, **kwargs) -> None:
         StaticHolidays.__init__(self, cls=EntityStubStaticHolidays)
diff --git a/tests/test_holiday_groups.py b/tests/test_holiday_groups.py
index 7c3e0ce0..d96d8922 100644
--- a/tests/test_holiday_groups.py
+++ b/tests/test_holiday_groups.py
@@ -13,7 +13,12 @@
 from unittest import TestCase
 
 from holidays.calendars.thai import KHMER_CALENDAR
-from holidays.groups import ChristianHolidays, InternationalHolidays, ThaiCalendarHolidays
+from holidays.groups import (
+    ChristianHolidays,
+    InternationalHolidays,
+    PersianCalendarHolidays,
+    ThaiCalendarHolidays,
+)
 from holidays.holiday_base import HolidayBase
 
 
@@ -60,10 +65,35 @@ class TestInternationalHolidays(TestCase):
         )
 
 
+class TestPersianCalendarHolidays(TestCase):
+    def test_add_persian_calendar_holiday(self):
+        # Check for out-of-range dates.
+        class TestHolidays(HolidayBase, PersianCalendarHolidays):
+            end_year = 2102
+
+            def __init__(self, *args, **kwargs):
+                PersianCalendarHolidays.__init__(self)
+                super().__init__(*args, **kwargs)
+
+        test_holidays = TestHolidays()
+
+        test_holidays._populate(2102)
+        test_holidays._add_nowruz_day("Persian New Year")
+        test_holidays._add_islamic_republic_day("Islamic Republic Day")
+        test_holidays._add_natures_day("Nature's Day")
+        test_holidays._add_death_of_khomeini_day("Death of Khomeini")
+        test_holidays._add_khordad_uprising_day("Khordad National Uprising")
+        test_holidays._add_islamic_revolution_day("Islamic Revolution Day")
+        test_holidays._add_oil_nationalization_day("Iranian Oil Industry Nationalization Day")
+        self.assertEqual(0, len(test_holidays))
+
+
 class TestThaiCalendarHolidays(TestCase):
     def test_add_thai_calendar_holiday(self):
         # Check for out-of-range dates.
         class TestHolidays(HolidayBase, ThaiCalendarHolidays):
+            end_year = 2158
+
             def __init__(self, *args, **kwargs):
                 ThaiCalendarHolidays.__init__(self)
                 super().__init__(*args, **kwargs)
diff --git a/tests/test_package.py b/tests/test_package.py
index 009f03f9..352dadd7 100644
--- a/tests/test_package.py
+++ b/tests/test_package.py
@@ -23,7 +23,7 @@ class TestPackage(TestCase):
 
         for attr_name, attr_value in {
             "name": "holidays",
-            "summary": "World Holidays Framework",
+            "summary": "Open World Holidays Framework",
             "version": holidays.__version__,
         }.items():
             self.assertIn(attr_name, ph_metadata)