Repository: vacanza/holidays
Pull request #2082 (2024-10-26 12:22:43)

Update Australia holidays: remove `Adelaide Cup Day` holiday pre-1973 for South Australia
<!--
  Thanks for contributing to holidays!
-->

## Proposed change

<!--
  Describe the big picture of your changes.
  Don't forget to link your PR to an existing issue if any.
-->

According to [Racing SA](https://racingsa.com.au/blog/2020/03/06/2380/a-little-adelaide-cup-history), Adelaide Cup Day has only gained its public holiday status in 1973.

## Type of change

<!--
  Type of change you want to introduce. Please, check one (1) box only!
  If your PR requires multiple boxes to be checked, most likely it needs to
  be split into multiple PRs.
-->

- [ ] New country/market holidays support (thank you!)
- [x] Supported country/market holidays update (calendar discrepancy fix, localization)
- [ ] Existing code/documentation/test/process quality improvement (best practice, cleanup, refactoring, optimization)
- [ ] Dependency update (version deprecation/pin/upgrade)
- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] Breaking change (a code change causing existing functionality to break)
- [ ] New feature (new `holidays` functionality in general)

## Checklist

<!--
  Put an `x` in the boxes that apply. You can change them after PR is created.
-->

- [x] I've followed the [contributing guidelines][contributing-guidelines]
- [x] I've run `make pre-commit`, it didn't generate any changes
- [x] I've run `make test`, all tests passed locally

<!--
  Thanks again for your contribution!
-->

[contributing-guidelines]: https://github.com/vacanza/holidays/blob/dev/CONTRIBUTING.rst
[docs]: https://github.com/vacanza/holidays/tree/dev/docs/source


sonarcloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2082) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2082&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2082&issueStatuses=ACCEPTED)

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


codecov[bot]: ## [Codecov](https://app.codecov.io/gh/vacanza/holidays/pull/2082?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 100.00%. Comparing base [(`0adc4be`)](https://app.codecov.io/gh/vacanza/holidays/commit/0adc4beb89bed5e08e94fb845cae9da41b3ebd23?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza) to head [(`5ba3afd`)](https://app.codecov.io/gh/vacanza/holidays/commit/5ba3afd7a694439ebb86acfd6400ec87f1a0bfb4?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza).

<details><summary>Additional details and impacted files</summary>


```diff
@@            Coverage Diff            @@
##               dev     #2082   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          191       191           
  Lines        11546     11547    +1     
  Branches      1743      1744    +1     
=========================================
+ Hits         11546     11547    +1     
```

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/vacanza/holidays/pull/2082?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza).


Patch:
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 879a0c63..afa8b009 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -11,9 +11,10 @@ Basics
 
 When contributing with fixes and new features, please start forking/branching
 from the `dev branch`_ to work on the latest code and reduce merging issues.
-If you add/change holiday official dates or names you must include references to
+If you add/change holiday official dates or names your code must include references to
 all sources (government sites, archived web pages, wiki pages, etc) you've used
-while working on this PR. Contributed PRs_ are required to include valid test
+while working on this PR. That could be done either as a ``References`` section update or 
+as a comment on the relevant part of the code. Contributed PRs_ are required to include valid test
 coverage in order to be merged. Please don't hesitate to ask for help if you
 need one with the tests.
 
diff --git a/holidays/countries/australia.py b/holidays/countries/australia.py
index a5f12126..2de0cf21 100644
--- a/holidays/countries/australia.py
+++ b/holidays/countries/australia.py
@@ -601,6 +601,7 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
                 self._add_holiday_jan_26(name)
 
         # Adelaide Cup Day.
+        # First observed as Public Holidays in 1973: https://racingsa.com.au/blog/2020/03/06/2380/a-little-adelaide-cup-history
         # 2006-2023: changed each year by SA Government Proclamation from the 3rd Monday in May
         # to the 2nd Monday in March.
         # from 2024: changed to the 2nd Monday in March officially.
@@ -609,7 +610,7 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
         name = tr("Adelaide Cup Day")
         if self._year >= 2006:
             self._add_holiday_2nd_mon_of_mar(name)
-        else:
+        elif self._year >= 1973:
             self._add_holiday_3rd_mon_of_may(name)
 
         # Easter Saturday.
diff --git a/snapshots/countries/AU_SA.json b/snapshots/countries/AU_SA.json
index f94b8a08..2722e080 100644
--- a/snapshots/countries/AU_SA.json
+++ b/snapshots/countries/AU_SA.json
@@ -5,7 +5,6 @@
     "1950-04-08": "Easter Saturday",
     "1950-04-10": "Easter Monday",
     "1950-04-25": "ANZAC Day",
-    "1950-05-15": "Adelaide Cup Day",
     "1950-06-12": "King's Birthday",
     "1950-10-02": "Labor Day",
     "1950-12-25": "Christmas Day",
@@ -16,7 +15,6 @@
     "1951-03-24": "Easter Saturday",
     "1951-03-26": "Easter Monday",
     "1951-04-25": "ANZAC Day",
-    "1951-05-21": "Adelaide Cup Day",
     "1951-06-11": "King's Birthday",
     "1951-10-01": "Labor Day",
     "1951-12-25": "Christmas Day",
@@ -27,7 +25,6 @@
     "1952-04-12": "Easter Saturday",
     "1952-04-14": "Easter Monday",
     "1952-04-25": "ANZAC Day",
-    "1952-05-19": "Adelaide Cup Day",
     "1952-06-09": "Queen's Birthday",
     "1952-10-06": "Labor Day",
     "1952-12-25": "Christmas Day",
@@ -38,7 +35,6 @@
     "1953-04-04": "Easter Saturday",
     "1953-04-06": "Easter Monday",
     "1953-04-25": "ANZAC Day",
-    "1953-05-18": "Adelaide Cup Day",
     "1953-06-08": "Queen's Birthday",
     "1953-10-05": "Labor Day",
     "1953-12-25": "Christmas Day",
@@ -50,7 +46,6 @@
     "1954-04-19": "Easter Monday",
     "1954-04-25": "ANZAC Day",
     "1954-04-26": "ANZAC Day (observed)",
-    "1954-05-17": "Adelaide Cup Day",
     "1954-06-14": "Queen's Birthday",
     "1954-10-04": "Labor Day",
     "1954-12-25": "Christmas Day",
@@ -61,7 +56,6 @@
     "1955-04-09": "Easter Saturday",
     "1955-04-11": "Easter Monday",
     "1955-04-25": "ANZAC Day",
-    "1955-05-16": "Adelaide Cup Day",
     "1955-06-13": "Queen's Birthday",
     "1955-10-03": "Labor Day",
     "1955-12-25": "Christmas Day",
@@ -72,7 +66,6 @@
     "1956-03-31": "Easter Saturday",
     "1956-04-02": "Easter Monday",
     "1956-04-25": "ANZAC Day",
-    "1956-05-21": "Adelaide Cup Day",
     "1956-06-11": "Queen's Birthday",
     "1956-10-01": "Labor Day",
     "1956-12-25": "Christmas Day",
@@ -83,7 +76,6 @@
     "1957-04-20": "Easter Saturday",
     "1957-04-22": "Easter Monday",
     "1957-04-25": "ANZAC Day",
-    "1957-05-20": "Adelaide Cup Day",
     "1957-06-10": "Queen's Birthday",
     "1957-10-07": "Labor Day",
     "1957-12-25": "Christmas Day",
@@ -94,7 +86,6 @@
     "1958-04-05": "Easter Saturday",
     "1958-04-07": "Easter Monday",
     "1958-04-25": "ANZAC Day",
-    "1958-05-19": "Adelaide Cup Day",
     "1958-06-09": "Queen's Birthday",
     "1958-10-06": "Labor Day",
     "1958-12-25": "Christmas Day",
@@ -105,7 +96,6 @@
     "1959-03-28": "Easter Saturday",
     "1959-03-30": "Easter Monday",
     "1959-04-25": "ANZAC Day",
-    "1959-05-18": "Adelaide Cup Day",
     "1959-06-08": "Queen's Birthday",
     "1959-10-05": "Labor Day",
     "1959-12-25": "Christmas Day",
@@ -116,7 +106,6 @@
     "1960-04-16": "Easter Saturday",
     "1960-04-18": "Easter Monday",
     "1960-04-25": "ANZAC Day",
-    "1960-05-16": "Adelaide Cup Day",
     "1960-06-13": "Queen's Birthday",
     "1960-10-03": "Labor Day",
     "1960-12-25": "Christmas Day",
@@ -127,7 +116,6 @@
     "1961-04-01": "Easter Saturday",
     "1961-04-03": "Easter Monday",
     "1961-04-25": "ANZAC Day",
-    "1961-05-15": "Adelaide Cup Day",
     "1961-06-12": "Queen's Birthday",
     "1961-10-02": "Labor Day",
     "1961-12-25": "Christmas Day",
@@ -138,7 +126,6 @@
     "1962-04-21": "Easter Saturday",
     "1962-04-23": "Easter Monday",
     "1962-04-25": "ANZAC Day",
-    "1962-05-21": "Adelaide Cup Day",
     "1962-06-11": "Queen's Birthday",
     "1962-10-01": "Labor Day",
     "1962-12-25": "Christmas Day",
@@ -149,7 +136,6 @@
     "1963-04-13": "Easter Saturday",
     "1963-04-15": "Easter Monday",
     "1963-04-25": "ANZAC Day",
-    "1963-05-20": "Adelaide Cup Day",
     "1963-06-10": "Queen's Birthday",
     "1963-10-07": "Labor Day",
     "1963-12-25": "Christmas Day",
@@ -160,7 +146,6 @@
     "1964-03-28": "Easter Saturday",
     "1964-03-30": "Easter Monday",
     "1964-04-25": "ANZAC Day",
-    "1964-05-18": "Adelaide Cup Day",
     "1964-06-08": "Queen's Birthday",
     "1964-10-05": "Labor Day",
     "1964-12-25": "Christmas Day",
@@ -172,7 +157,6 @@
     "1965-04-19": "Easter Monday",
     "1965-04-25": "ANZAC Day",
     "1965-04-26": "ANZAC Day (observed)",
-    "1965-05-17": "Adelaide Cup Day",
     "1965-06-14": "Queen's Birthday",
     "1965-10-04": "Labor Day",
     "1965-12-25": "Christmas Day",
@@ -183,7 +167,6 @@
     "1966-04-09": "Easter Saturday",
     "1966-04-11": "Easter Monday",
     "1966-04-25": "ANZAC Day",
-    "1966-05-16": "Adelaide Cup Day",
     "1966-06-13": "Queen's Birthday",
     "1966-10-03": "Labor Day",
     "1966-12-25": "Christmas Day",
@@ -194,7 +177,6 @@
     "1967-03-25": "Easter Saturday",
     "1967-03-27": "Easter Monday",
     "1967-04-25": "ANZAC Day",
-    "1967-05-15": "Adelaide Cup Day",
     "1967-06-12": "Queen's Birthday",
     "1967-10-02": "Labor Day",
     "1967-12-25": "Christmas Day",
@@ -205,7 +187,6 @@
     "1968-04-13": "Easter Saturday",
     "1968-04-15": "Easter Monday",
     "1968-04-25": "ANZAC Day",
-    "1968-05-20": "Adelaide Cup Day",
     "1968-06-10": "Queen's Birthday",
     "1968-10-07": "Labor Day",
     "1968-12-25": "Christmas Day",
@@ -216,7 +197,6 @@
     "1969-04-05": "Easter Saturday",
     "1969-04-07": "Easter Monday",
     "1969-04-25": "ANZAC Day",
-    "1969-05-19": "Adelaide Cup Day",
     "1969-06-09": "Queen's Birthday",
     "1969-10-06": "Labor Day",
     "1969-12-25": "Christmas Day",
@@ -227,7 +207,6 @@
     "1970-03-28": "Easter Saturday",
     "1970-03-30": "Easter Monday",
     "1970-04-25": "ANZAC Day",
-    "1970-05-18": "Adelaide Cup Day",
     "1970-06-08": "Queen's Birthday",
     "1970-10-05": "Labor Day",
     "1970-12-25": "Christmas Day",
@@ -239,7 +218,6 @@
     "1971-04-12": "Easter Monday",
     "1971-04-25": "ANZAC Day",
     "1971-04-26": "ANZAC Day (observed)",
-    "1971-05-17": "Adelaide Cup Day",
     "1971-06-14": "Queen's Birthday",
     "1971-10-04": "Labor Day",
     "1971-12-25": "Christmas Day",
@@ -250,7 +228,6 @@
     "1972-04-01": "Easter Saturday",
     "1972-04-03": "Easter Monday",
     "1972-04-25": "ANZAC Day",
-    "1972-05-15": "Adelaide Cup Day",
     "1972-06-12": "Queen's Birthday",
     "1972-10-02": "Labor Day",
     "1972-12-25": "Christmas Day",


Test patch:
diff --git a/tests/countries/test_australia.py b/tests/countries/test_australia.py
index 545fd3ef..f7a3455f 100644
--- a/tests/countries/test_australia.py
+++ b/tests/countries/test_australia.py
@@ -369,7 +369,8 @@ class TestAustralia(CommonCountryTests, TestCase):
             "2024-03-11",
         )
         self.assertHolidayName(name, sa_holidays, dt)
-        self.assertHolidayName(name, sa_holidays, range(1900, 2050))
+        self.assertHolidayName(name, sa_holidays, range(1973, 2050))
+        self.assertNoHolidayName(name, sa_holidays, range(1900, 1973))
         for subdiv in set(Australia.subdivisions) - {"SA"}:
             self.assertNoHolidayName(name, self.subdiv_holidays[subdiv])
 
diff --git a/tests/countries/test_canada.py b/tests/countries/test_canada.py
index 7ead2a6a..b49eccb3 100644
--- a/tests/countries/test_canada.py
+++ b/tests/countries/test_canada.py
@@ -12,7 +12,7 @@
 
 from unittest import TestCase
 
-from holidays.constants import GOVERNMENT, OPTIONAL
+from holidays.constants import GOVERNMENT, OPTIONAL, PUBLIC
 from holidays.countries.canada import Canada, CA, CAN
 from tests.common import CommonCountryTests
 
@@ -21,9 +21,15 @@ class TestCanada(CommonCountryTests, TestCase):
     @classmethod
     def setUpClass(cls):
         years = range(1867, 2050)
-        super().setUpClass(Canada, years=years, years_non_observed=(range(2000, 2024)))
+        years_non_observed = range(2000, 2024)
+        super().setUpClass(Canada, years=years, years_non_observed=years_non_observed)
         cls.prov_hols = {prov: CA(subdiv=prov, years=years) for prov in CA.subdivisions}
+        cls.prov_hols_nonobs = {
+            prov: CA(subdiv=prov, years=years_non_observed, observed=False)
+            for prov in CA.subdivisions
+        }
         cls.gov_hols = CA(years=years, categories=GOVERNMENT)
+        cls.opt_hols = CA(years=years, categories=OPTIONAL)
         cls.prov_opt_hols = {
             prov: CA(subdiv=prov, years=years, categories=OPTIONAL) for prov in CA.subdivisions
         }
@@ -32,9 +38,7 @@ class TestCanada(CommonCountryTests, TestCase):
         self.assertAliases(Canada, CA, CAN)
 
     def test_no_holidays(self):
-        self.assertNoHolidays(Canada(years=1866))
-        self.assertNoHolidays(Canada(years=1866, categories=GOVERNMENT))
-        self.assertNoHolidays(Canada(years=1866, categories=OPTIONAL))
+        self.assertNoHolidays(Canada(categories=(GOVERNMENT, OPTIONAL, PUBLIC), years=1866))
 
     def test_new_years_day(self):
         name = "New Year's Day"
@@ -57,7 +61,7 @@ class TestCanada(CommonCountryTests, TestCase):
         self.assertHolidayName(name_observed, self.gov_hols, dts)
         for prov, holidays in self.prov_hols.items():
             self.assertHolidayName(name_observed, holidays, dts)
-            self.assertNoNonObservedHoliday(CA(subdiv=prov, observed=False), dts)
+            self.assertNoNonObservedHoliday(self.prov_hols_nonobs[prov], dts)
         self.assertNoNonObservedHoliday(dts)
 
     def test_good_friday(self):
@@ -119,7 +123,7 @@ class TestCanada(CommonCountryTests, TestCase):
                 self.assertHoliday(self.prov_hols[prov], dts_sat, dts_sun)
             else:
                 self.assertNoHoliday(self.prov_hols[prov], dts_sat, dts_sun)
-            self.assertNoNonObservedHoliday(CA(subdiv=prov, observed=False), dts_sat, dts_sun)
+            self.assertNoNonObservedHoliday(self.prov_hols_nonobs[prov], dts_sat, dts_sun)
 
     def test_labour_day(self):
         name = "Labour Day"
@@ -178,25 +182,17 @@ class TestCanada(CommonCountryTests, TestCase):
         self.assertNoNonObservedHoliday(dts_sat, dts_sun_with_boxing, dts_sun_without_boxing)
         self.assertHolidayName(name_observed, self.gov_hols, dts_sat, dts_sun_with_boxing)
         self.assertNoNonObservedHoliday(
-            CA(observed=False, categories=GOVERNMENT),
-            dts_sat,
-            dts_sun_with_boxing,
-        )
-        self.assertHolidayName(
-            name_observed, CA(categories=OPTIONAL), dts_sat, dts_sun_with_boxing
+            CA(observed=False, categories=GOVERNMENT), dts_sat, dts_sun_with_boxing
         )
+        self.assertHolidayName(name_observed, self.opt_hols, dts_sat, dts_sun_with_boxing)
         self.assertNoNonObservedHoliday(
-            CA(observed=False, categories=OPTIONAL),
-            dts_sat,
-            dts_sun_with_boxing,
+            CA(observed=False, categories=OPTIONAL), dts_sat, dts_sun_with_boxing
         )
         for prov, holidays in self.prov_hols.items():
             self.assertHolidayName(name_observed, holidays, dts_sat, dts_sun_without_boxing)
             self.assertNoHoliday(holidays, dts_sun_with_boxing)
             self.assertNoNonObservedHoliday(
-                CA(subdiv=prov, observed=False),
-                dts_sat,
-                dts_sun_with_boxing,
+                self.prov_hols_nonobs[prov], dts_sat, dts_sun_with_boxing
             )
 
     def test_victoria_day(self):
@@ -258,12 +254,10 @@ class TestCanada(CommonCountryTests, TestCase):
                 self.assertNoHolidayName(name, holidays, range(1867, start_years[prov]))
             else:
                 self.assertNoHolidayName(name, holidays)
-            self.assertNoNonObservedHoliday(CA(subdiv=prov, observed=False), dts)
+            self.assertNoNonObservedHoliday(self.prov_hols_nonobs[prov], dts)
 
         self.assertHolidayName(
-            name,
-            CA(subdiv="AB", categories=OPTIONAL),
-            (f"{year}-09-30" for year in range(2021, 2050)),
+            name, self.prov_opt_hols["AB"], (f"{year}-09-30" for year in range(2021, 2050))
         )
 
     def test_thanksgiving_day(self):
@@ -296,7 +290,7 @@ class TestCanada(CommonCountryTests, TestCase):
                 self.assertNoHolidayName(name, holidays, dts)
 
         for prov in ("NB", "NL"):
-            self.assertHolidayName(name, CA(subdiv=prov, categories=OPTIONAL), dts)
+            self.assertHolidayName(name, self.prov_opt_hols[prov], dts)
 
     def test_remembrance_day(self):
         name = "Remembrance Day"
@@ -333,15 +327,13 @@ class TestCanada(CommonCountryTests, TestCase):
                 self.assertNoHolidayName(name, holidays)
 
             if prov in {"AB", "NL", "NS", "PE", "SK", "YT"}:
-                self.assertHolidayName(name_observed, self.prov_hols[prov], dts)
-                self.assertNoNonObservedHoliday(CA(subdiv=prov, observed=False), dts)
+                self.assertHolidayName(name_observed, holidays, dts)
+                self.assertNoNonObservedHoliday(self.prov_hols_nonobs[prov], dts)
             else:
                 self.assertNoHoliday(holidays, dts)
 
         self.assertHolidayName(
-            name,
-            CA(subdiv="MB", categories=OPTIONAL),
-            (f"{year}-11-11" for year in range(1931, 2050)),
+            name, self.prov_opt_hols["MB"], (f"{year}-11-11" for year in range(1931, 2050))
         )
 
     def test_boxing_day(self):
@@ -352,8 +344,9 @@ class TestCanada(CommonCountryTests, TestCase):
             name, self.gov_hols, (f"{year}-12-26" for year in range(1867, 2050))
         )
 
-        opt_holidays = CA(years=range(1867, 2050), categories=OPTIONAL)
-        self.assertHolidayName(name, opt_holidays, (f"{year}-12-26" for year in range(1867, 2050)))
+        self.assertHolidayName(
+            name, self.opt_hols, (f"{year}-12-26" for year in range(1867, 2050))
+        )
 
         dts = (
             "2004-12-28",
@@ -363,7 +356,7 @@ class TestCanada(CommonCountryTests, TestCase):
             "2020-12-28",
             "2021-12-28",
         )
-        self.assertHolidayName(name_observed, opt_holidays, dts)
+        self.assertHolidayName(name_observed, self.opt_hols, dts)
         self.assertNoNonObservedHoliday(CA(observed=False, categories=OPTIONAL), dts)
 
         dts = (
@@ -372,13 +365,11 @@ class TestCanada(CommonCountryTests, TestCase):
             "2021-12-28",
         )
         self.assertHolidayName(name_observed, self.prov_hols["ON"], dts)
-        self.assertNoNonObservedHoliday(CA(subdiv="ON", observed=False), dts)
+        self.assertNoNonObservedHoliday(self.prov_hols_nonobs["ON"], dts)
 
         for prov in ("AB", "NB", "NL"):
             self.assertHolidayName(
-                name,
-                CA(subdiv=prov, categories=OPTIONAL),
-                (f"{year}-12-26" for year in range(1867, 2050)),
+                name, self.prov_opt_hols[prov], (f"{year}-12-26" for year in range(1867, 2050))
             )
 
     def test_family_day(self):
@@ -479,12 +470,12 @@ class TestCanada(CommonCountryTests, TestCase):
             self.assertNoHolidayName(name, holidays)
 
             if prov in {"AB", "QC"}:
-                self.assertHolidayName(name, CA(subdiv=prov, categories=OPTIONAL), dts)
+                self.assertHolidayName(name, self.prov_opt_hols[prov], dts)
 
     def test_civic_holiday_ab(self):
         name = "Heritage Day"
         self.assertNoHolidayName(name, self.prov_hols["AB"])
-        ab_opt_holidays = CA(subdiv="AB", categories=OPTIONAL)
+        ab_opt_holidays = self.prov_opt_hols["AB"]
         dts = (
             "1974-08-05",
             "1999-08-02",
@@ -520,7 +511,7 @@ class TestCanada(CommonCountryTests, TestCase):
         self.assertNoHolidayName(old_name, self.prov_hols["MB"])
         self.assertNoHolidayName(new_name, self.prov_hols["MB"])
 
-        mb_opt_holidays = CA(subdiv="MB", categories=OPTIONAL)
+        mb_opt_holidays = self.prov_opt_hols["MB"]
         dts = (
             "1900-08-06",
             "1999-08-02",
@@ -559,7 +550,7 @@ class TestCanada(CommonCountryTests, TestCase):
     def test_civic_holiday_ns(self):
         name = "Natal Day"
         self.assertNoHolidayName(name, self.prov_hols["NS"])
-        ns_opt_holidays = CA(subdiv="NS", categories=OPTIONAL)
+        ns_opt_holidays = self.prov_opt_hols["NS"]
         dts = (
             "1996-08-05",
             "1999-08-02",
@@ -577,7 +568,7 @@ class TestCanada(CommonCountryTests, TestCase):
         name = "Civic Holiday"
         nt_holidays = self.prov_hols["NT"]
         nu_holidays = self.prov_hols["NU"]
-        on_opt_holidays = CA(subdiv="ON", categories=OPTIONAL)
+        on_opt_holidays = self.prov_opt_hols["ON"]
         sk_holidays = self.prov_hols["SK"]
         dts = (
             "1900-08-06",
@@ -608,7 +599,7 @@ class TestCanada(CommonCountryTests, TestCase):
     def test_st_patricks_day(self):
         name = "Saint Patrick's Day"
         self.assertNoHolidayName(name, self.prov_hols["NL"])
-        nl_opt_holidays = CA(subdiv="NL", categories=OPTIONAL)
+        nl_opt_holidays = self.prov_opt_hols["NL"]
         dts = (
             "1900-03-19",
             "1999-03-15",
@@ -628,7 +619,7 @@ class TestCanada(CommonCountryTests, TestCase):
     def test_st_georges_day(self):
         name = "Saint George's Day"
         self.assertNoHolidayName(name, self.prov_hols["NL"])
-        nl_opt_holidays = CA(subdiv="NL", categories=OPTIONAL)
+        nl_opt_holidays = self.prov_opt_hols["NL"]
         dts = (
             "1990-04-23",
             "1999-04-26",
@@ -644,7 +635,7 @@ class TestCanada(CommonCountryTests, TestCase):
     def test_discovery_day_nl(self):
         name = "Discovery Day"
         self.assertNoHolidayName(name, self.prov_hols["NL"])
-        nl_opt_holidays = CA(subdiv="NL", categories=OPTIONAL)
+        nl_opt_holidays = self.prov_opt_hols["NL"]
         dts = (
             "1997-06-23",
             "1999-06-21",
@@ -661,7 +652,7 @@ class TestCanada(CommonCountryTests, TestCase):
     def test_orangemans_day(self):
         name = "Orangemen's Day"
         self.assertNoHolidayName(name, self.prov_hols["NL"])
-        nl_opt_holidays = CA(subdiv="NL", categories=OPTIONAL)
+        nl_opt_holidays = self.prov_opt_hols["NL"]
         dts = (
             "1900-07-09",
             "1999-07-12",
@@ -707,7 +698,7 @@ class TestCanada(CommonCountryTests, TestCase):
         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 = CA(subdiv="NU", categories=OPTIONAL)
+        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)))
@@ -735,13 +726,12 @@ class TestCanada(CommonCountryTests, TestCase):
         self.assertNoHoliday(qc_holidays, (f"{year}-06-24" for year in range(1867, 1925)))
         self.assertNoHoliday(f"{year}-06-24" for year in range(1925, 2050))
         self.assertHoliday(qc_holidays, "2001-06-25")
-        self.assertNoNonObservedHoliday(Canada(subdiv="QC", observed=False), "2001-06-25")
+        self.assertNoNonObservedHoliday(self.prov_hols_nonobs["QC"], "2001-06-25")
 
     def test_yukon_heritage_day(self):
         name = "Heritage Day"
         self.assertNoHolidayName(name)
         self.assertNoHolidayName(name, self.prov_hols["YT"])
-        yt_opt_holidays = CA(subdiv="YT", categories=OPTIONAL)
         dts = (
             "2017-02-24",
             "2018-02-23",
@@ -750,7 +740,7 @@ class TestCanada(CommonCountryTests, TestCase):
             "2021-02-26",
             "2022-02-25",
         )
-        self.assertHolidayName(name, yt_opt_holidays, dts)
+        self.assertHolidayName(name, self.prov_opt_hols["YT"], dts)
 
     def test_queens_funeral(self):
         for prov, holidays in self.prov_hols.items():