Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions holidays/countries/canada.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
* <https://web.archive.org/web/20250428154427/https://recherche-collection-search.bac-lac.gc.ca/eng/home/record?idnumber=9326&app=diawlmking&ecopy=80003QJW>
* <https://web.archive.org/web/20240915001506/https://www.britannica.com/topic/Victoria-Day>
* [NT National Aboriginal Day](https://web.archive.org/web/20160623071755/http://www.daair.gov.nt.ca/_live/pages/wpPages/National_Aboriginal_Day.aspx)
* [MB National Day for Truth and Reconciliation](https://web.archive.org/web/20240714223654/https://web2.gov.mb.ca/bills/43-1/b004e.php)
"""

country = "CA"
Expand Down Expand Up @@ -277,6 +278,12 @@ def _populate_subdiv_mb_public_holidays(self):

self._add_victoria_day()

if self._year >= 2024:
self._add_observed(
# National Day for Truth and Reconciliation.
self._add_holiday_sep_30(tr("National Day for Truth and Reconciliation"))
)

self._add_thanksgiving_day()

def _populate_subdiv_mb_optional_holidays(self):
Expand Down
23 changes: 15 additions & 8 deletions tests/countries/test_canada.py
Original file line number Diff line number Diff line change
Expand Up @@ -270,29 +270,36 @@ def test_national_day_for_truth_and_reconciliation(self):
self.assertHolidayName(name_observed, self.government_holidays, dts)
self.assertNoNonObservedHoliday(self.government_holidays_non_observed, dts)

start_years = {
"AB": 2021,
subdiv_start_years = {
"BC": 2023,
"MB": 2024,
"NT": 2022,
"NU": 2022,
"PE": 2022,
"YT": 2023,
}
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv in {"BC", "NT", "NU", "PE", "YT"}:
if start_year := subdiv_start_years.get(subdiv):
self.assertHolidayName(
name, holidays, (f"{year}-09-30" for year in range(start_years[subdiv], 2050))
name, holidays, (f"{year}-09-30" for year in range(start_year, 2050))
)
self.assertNoHolidayName(name, holidays, range(1867, start_years[subdiv]))
self.assertNoHolidayName(name, holidays, range(1867, start_year))
else:
self.assertNoHolidayName(name, holidays)
self.assertNoNonObservedHoliday(self.subdiv_holidays_non_observed[subdiv], dts)

self.assertHolidayName(
name,
self.subdiv_optional_holidays["AB"],
(f"{year}-09-30" for year in range(2021, 2050)),
name_observed, self.subdiv_holidays["MB"], "2028-10-02", "2029-10-01"
)
self.assertNoNonObservedHoliday(
self.subdiv_holidays_non_observed["MB"], "2028-10-02", "2029-10-01"
)

ab_optional_holidays = self.subdiv_optional_holidays["AB"]
self.assertHolidayName(
name, ab_optional_holidays, (f"{year}-09-30" for year in range(2021, 2050))
)
self.assertNoHolidayName(name, ab_optional_holidays, range(1867, 2021))

def test_thanksgiving_day(self):
name_1921 = "Armistice Day"
Expand Down
Loading