From 4a4d2067d4ac0eee2028687d8eb6277ccb470933 Mon Sep 17 00:00:00 2001
From: PPsyrius <19505219+PPsyrius@users.noreply.github.com>
Date: Sat, 4 Oct 2025 11:57:00 +0700
Subject: [PATCH 1/8] Update Switzerland holidays: add Zurich's `HALF_DAY`
holidays, `th` l10n support
---
README.md | 2 +-
holidays/countries/switzerland.py | 50 ++-
holidays/locale/de/LC_MESSAGES/CH.po | 16 +-
holidays/locale/en_US/LC_MESSAGES/CH.po | 16 +-
holidays/locale/fr/LC_MESSAGES/CH.po | 16 +-
holidays/locale/it/LC_MESSAGES/CH.po | 16 +-
holidays/locale/th/LC_MESSAGES/CH.po | 132 ++++++++
holidays/locale/uk/LC_MESSAGES/CH.po | 16 +-
snapshots/countries/CH_ZH.json | 405 +++++++++++++++++++++++-
tests/countries/test_switzerland.py | 177 ++++++++++-
tests/test_utils.py | 171 +++++-----
11 files changed, 887 insertions(+), 130 deletions(-)
create mode 100644 holidays/locale/th/LC_MESSAGES/CH.po
diff --git a/README.md b/README.md
index 9bcdae2b75..4ccaea5dda 100644
--- a/README.md
+++ b/README.md
@@ -1634,7 +1634,7 @@ any) in brackets, available languages and additional holiday categories. All cou
Switzerland |
CH |
Cantons: AG (Aargau), AI (Appenzell Innerrhoden), AR (Appenzell Ausserrhoden), BE (Bern, Berne), BL (Basel-Landschaft), BS (Basel-Stadt), FR (Freiburg, Fribourg), GE (Genève), GL (Glarus), GR (Graubünden, Grigioni, Grischun), JU (Jura), LU (Luzern), NE (Neuchâtel), NW (Nidwalden), OW (Obwalden), SG (Sankt Gallen), SH (Schaffhausen), SO (Solothurn), SZ (Schwyz), TG (Thurgau), TI (Ticino), UR (Uri), VD (Vaud), VS (Valais, Wallis), ZG (Zug), ZH (Zürich) |
-de, en_US, fr, it, uk |
+de, en_US, fr, it, th, uk |
HALF_DAY, OPTIONAL |
diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py
index ef476f08a6..959d183929 100644
--- a/holidays/countries/switzerland.py
+++ b/holidays/countries/switzerland.py
@@ -12,10 +12,16 @@
from gettext import gettext as tr
-from holidays.calendars.gregorian import APR, THU, _timedelta, _get_nth_weekday_of_month
+from holidays.calendars.gregorian import MAR, APR, MON, THU, _timedelta, _get_nth_weekday_of_month
from holidays.constants import HALF_DAY, OPTIONAL, PUBLIC
from holidays.groups import ChristianHolidays, InternationalHolidays
-from holidays.observed_holiday_base import ObservedHolidayBase, MON_ONLY, TUE_TO_NONE, SAT_TO_NONE
+from holidays.observed_holiday_base import (
+ ObservedHolidayBase,
+ MON_ONLY,
+ TUE_TO_NONE,
+ SAT_TO_NONE,
+ ALL_TO_NEXT_MON,
+)
class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
@@ -23,6 +29,8 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays)
References:
*
+ *
+ *
*
*
"""
@@ -92,7 +100,7 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays)
"Zürich": "ZH",
}
supported_categories = (HALF_DAY, OPTIONAL, PUBLIC)
- supported_languages = ("de", "en_US", "fr", "it", "uk")
+ supported_languages = ("de", "en_US", "fr", "it", "th", "uk")
def __init__(self, *args, **kwargs):
ChristianHolidays.__init__(self)
@@ -713,9 +721,45 @@ def _populate_subdiv_zh_public_holidays(self):
# Whit Monday.
self._add_whit_monday(tr("Pfingstmontag"))
+ if self._year >= 1899:
+ # Knabenschiessen.
+ name = tr("Knabenschiessen")
+ self._add_holiday_2nd_sun_of_sep(name)
+ self._add_holiday_1_day_prior_2nd_sun_of_sep(name)
+
# Saint Stephen's Day.
self._add_christmas_day_two(tr("Stephanstag"))
+ def _populate_subdiv_zh_half_day_holidays(self):
+ if self._year >= 1902:
+ # Sechseläuten.
+ name = tr("Sechseläuten")
+ # Third Monday in April but not in Holy Week.
+ if self._year >= 1952:
+ dt = _get_nth_weekday_of_month(3, MON, APR, self._year)
+ self._add_holiday(
+ name, _timedelta(dt, +7) if dt == _timedelta(self._easter_sunday, +1) else dt
+ )
+ # From 1902-1951 this was the First Monday following the Vernal Equinox.
+ else:
+ self._move_holiday(
+ self._add_holiday(name, self._vernal_equinox_date),
+ rule=ALL_TO_NEXT_MON,
+ show_observed_label=False,
+ )
+
+ if self._year >= 1899:
+ # Knabenschiessen.
+ self._add_holiday_1_day_past_2nd_sun_of_sep(tr("Knabenschiessen"))
+
+ @property
+ def _vernal_equinox_date(self) -> tuple[int, int]:
+ """Return the Vernal Equinox date for Zurich (1902–1951)."""
+ day = 21
+ if (self._year >= 1916 and self._year % 4 == 0) or self._year == 1949:
+ day = 20
+ return MAR, day
+
class CH(Switzerland):
pass
diff --git a/holidays/locale/de/LC_MESSAGES/CH.po b/holidays/locale/de/LC_MESSAGES/CH.po
index 2a582330df..16af391e77 100644
--- a/holidays/locale/de/LC_MESSAGES/CH.po
+++ b/holidays/locale/de/LC_MESSAGES/CH.po
@@ -13,17 +13,17 @@
# Switzerland holidays.
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.42\n"
+"Project-Id-Version: Holidays 0.82\n"
"POT-Creation-Date: 2023-04-10 15:41+0300\n"
-"PO-Revision-Date: 2024-01-21 14:46+0200\n"
-"Last-Translator: ~Jhellico \n"
+"PO-Revision-Date: 2025-10-04 11:30+0700\n"
+"Last-Translator: PPsyrius \n"
"Language-Team: Holidays Localization Team\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
-"X-Generator: Poedit 3.4\n"
+"X-Generator: Poedit 3.7\n"
"X-Source-Language: de\n"
#. New Year's Day.
@@ -121,3 +121,11 @@ msgstr ""
#. Prayer Monday.
msgid "Bettagsmontag"
msgstr ""
+
+#. Knabenschiessen.
+msgid "Knabenschiessen"
+msgstr ""
+
+#. Sechseläuten.
+msgid "Sechseläuten"
+msgstr ""
diff --git a/holidays/locale/en_US/LC_MESSAGES/CH.po b/holidays/locale/en_US/LC_MESSAGES/CH.po
index bd73d69c7e..b8cd1ef39b 100644
--- a/holidays/locale/en_US/LC_MESSAGES/CH.po
+++ b/holidays/locale/en_US/LC_MESSAGES/CH.po
@@ -14,17 +14,17 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.56\n"
+"Project-Id-Version: Holidays 0.82\n"
"POT-Creation-Date: 2023-04-10 15:41+0300\n"
-"PO-Revision-Date: 2024-08-31 18:20+0300\n"
-"Last-Translator: ~Jhellico \n"
+"PO-Revision-Date: 2025-10-04 11:31+0700\n"
+"Last-Translator: PPsyrius \n"
"Language-Team: Holidays Localization Team\n"
"Language: en_US\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
-"X-Generator: Poedit 3.4\n"
+"X-Generator: Poedit 3.7\n"
"X-Source-Language: de\n"
#. New Year's Day.
@@ -122,3 +122,11 @@ msgstr "Saints Peter and Paul"
#. Prayer Monday.
msgid "Bettagsmontag"
msgstr "Prayer Monday"
+
+#. Knabenschiessen.
+msgid "Knabenschiessen"
+msgstr "Knabenschiessen"
+
+#. Sechseläuten.
+msgid "Sechseläuten"
+msgstr "Sechseläuten"
diff --git a/holidays/locale/fr/LC_MESSAGES/CH.po b/holidays/locale/fr/LC_MESSAGES/CH.po
index ae0d3ac143..90606f33d1 100644
--- a/holidays/locale/fr/LC_MESSAGES/CH.po
+++ b/holidays/locale/fr/LC_MESSAGES/CH.po
@@ -13,17 +13,17 @@
# Switzerland holidays fr localization.
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.42\n"
+"Project-Id-Version: Holidays 0.82\n"
"POT-Creation-Date: 2023-04-10 15:41+0300\n"
-"PO-Revision-Date: 2024-01-21 14:48+0200\n"
-"Last-Translator: ~Jhellico \n"
+"PO-Revision-Date: 2025-10-04 11:31+0700\n"
+"Last-Translator: PPsyrius \n"
"Language-Team: Holidays Localization Team\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
-"X-Generator: Poedit 3.4\n"
+"X-Generator: Poedit 3.7\n"
"X-Source-Language: de\n"
#. New Year's Day.
@@ -121,3 +121,11 @@ msgstr "Saint-Pierre et Paul"
#. Prayer Monday.
msgid "Bettagsmontag"
msgstr "Lundi du Jeûne fédéral"
+
+#. Knabenschiessen.
+msgid "Knabenschiessen"
+msgstr "Knabenschiessen"
+
+#. Sechseläuten.
+msgid "Sechseläuten"
+msgstr "Sechseläuten"
diff --git a/holidays/locale/it/LC_MESSAGES/CH.po b/holidays/locale/it/LC_MESSAGES/CH.po
index 9406c0bf08..bdac4ce6a2 100644
--- a/holidays/locale/it/LC_MESSAGES/CH.po
+++ b/holidays/locale/it/LC_MESSAGES/CH.po
@@ -13,17 +13,17 @@
# Switzerland holidays it localization.
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.42\n"
+"Project-Id-Version: Holidays 0.82\n"
"POT-Creation-Date: 2023-04-10 15:41+0300\n"
-"PO-Revision-Date: 2024-01-21 14:48+0200\n"
-"Last-Translator: ~Jhellico \n"
+"PO-Revision-Date: 2025-10-04 11:31+0700\n"
+"Last-Translator: PPsyrius \n"
"Language-Team: Holidays Localization Team\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
-"X-Generator: Poedit 3.4\n"
+"X-Generator: Poedit 3.7\n"
"X-Source-Language: de\n"
#. New Year's Day.
@@ -121,3 +121,11 @@ msgstr "Santi Pietro e Paolo"
#. Prayer Monday.
msgid "Bettagsmontag"
msgstr "Digiuno Ginevrino"
+
+#. Knabenschiessen.
+msgid "Knabenschiessen"
+msgstr "Knabenschiessen"
+
+#. Sechseläuten.
+msgid "Sechseläuten"
+msgstr "Sechseläuten"
diff --git a/holidays/locale/th/LC_MESSAGES/CH.po b/holidays/locale/th/LC_MESSAGES/CH.po
new file mode 100644
index 0000000000..2bd5bf3673
--- /dev/null
+++ b/holidays/locale/th/LC_MESSAGES/CH.po
@@ -0,0 +1,132 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# Switzerland holidays th localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.82\n"
+"POT-Creation-Date: 2025-10-02 15:36+0700\n"
+"PO-Revision-Date: 2025-10-04 11:31+0700\n"
+"Last-Translator: PPsyrius \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: th\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Generator: Poedit 3.7\n"
+"X-Source-Language: de\n"
+
+#. New Year's Day.
+msgid "Neujahrstag"
+msgstr "วันขึ้นปีใหม่"
+
+#. Ascension Day.
+msgid "Auffahrt"
+msgstr "วันสมโภชพระเยซูเจ้าเสด็จขึ้นสวรรค์"
+
+#. National Day.
+msgid "Nationalfeiertag"
+msgstr "วันชาติสวิตเซอร์แลนด์"
+
+#. Christmas Day.
+msgid "Weihnachten"
+msgstr "วันคริสต์มาส"
+
+#. Saint Berchtold's Day.
+msgid "Berchtoldstag"
+msgstr "วันสมโภชนักบุญแบร์กโทลด์"
+
+#. Good Friday.
+msgid "Karfreitag"
+msgstr "วันศุกร์ประเสริฐ"
+
+#. Easter Monday.
+msgid "Ostermontag"
+msgstr "วันจันทร์อีสเตอร์"
+
+#. Labor Day.
+msgid "Tag der Arbeit"
+msgstr "วันแรงงาน"
+
+#. Whit Monday.
+msgid "Pfingstmontag"
+msgstr "วันจันทร์หลังวันสมโภชพระจิตเจ้า"
+
+#. Corpus Christi.
+msgid "Fronleichnam"
+msgstr "วันสมโภชพระคริสตวรกาย"
+
+#. Assumption Day.
+msgid "Mariä Himmelfahrt"
+msgstr "วันสมโภชแม่พระรับเกียรติยกขึ้นสวรรค์"
+
+#. All Saints' Day.
+msgid "Allerheiligen"
+msgstr "วันสมโภชนักบุญทั้งหลาย"
+
+#. Immaculate Conception.
+msgid "Mariä Empfängnis"
+msgstr "วันสมโภชแม่พระผู้ปฏิสนธินิรมล"
+
+#. Saint Stephen's Day.
+msgid "Stephanstag"
+msgstr "วันสมโภชนักบุญสเตเฟน"
+
+#. Genevan Fast.
+msgid "Genfer Bettag"
+msgstr "วันถือศีลอดเจนีวา"
+
+#. Restoration Day.
+msgid "Wiederherstellung der Republik"
+msgstr "วันกอบกู้เอกราชสาธารณรัฐเจนีวา"
+
+#. Battle of Naefels Victory Day.
+msgid "Näfelser Fahrt"
+msgstr "วันรำลึกชัยชนะยุทธการเนเฟลส์"
+
+#. Independence Day.
+msgid "Fest der Unabhängigkeit"
+msgstr "วันประกาศเอกราชจูรา"
+
+#. Republic Day.
+msgid "Jahrestag der Ausrufung der Republik"
+msgstr "วันครบรอบการสถาปนาสาธารณรัฐนอยชาแตล"
+
+#. Saint Joseph's Day.
+msgid "Josefstag"
+msgstr "วันสมโภชนักบุญโยเซฟ"
+
+#. Saint Nicholas of Flüe.
+msgid "Bruder Klaus"
+msgstr "วันสมโภชนักบุญนิโคลัสแห่งฟลือเออ"
+
+#. Epiphany.
+msgid "Heilige Drei Könige"
+msgstr "วันสมโภชพระคริสต์แสดงองค์"
+
+#. Saints Peter and Paul.
+msgid "Peter und Paul"
+msgstr "วันสมโภชนักบุญเปโตรและเปาโล"
+
+#. Prayer Monday.
+msgid "Bettagsmontag"
+msgstr "วันจันทร์แห่งการอธิษฐาน"
+
+#. Knabenschiessen.
+msgid "Knabenschiessen"
+msgstr "คนาเบนชิสเซน"
+
+#. Sechseläuten.
+msgid "Sechseläuten"
+msgstr "เซ็กเซ่ะเล๊าเท่น"
diff --git a/holidays/locale/uk/LC_MESSAGES/CH.po b/holidays/locale/uk/LC_MESSAGES/CH.po
index 543a6764ac..303164a29f 100644
--- a/holidays/locale/uk/LC_MESSAGES/CH.po
+++ b/holidays/locale/uk/LC_MESSAGES/CH.po
@@ -13,17 +13,17 @@
# Switzerland holidays uk localization.
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.42\n"
+"Project-Id-Version: Holidays 0.82\n"
"POT-Creation-Date: 2023-04-10 15:41+0300\n"
-"PO-Revision-Date: 2024-01-21 14:49+0200\n"
-"Last-Translator: ~Jhellico \n"
+"PO-Revision-Date: 2025-10-04 11:31+0700\n"
+"Last-Translator: PPsyrius \n"
"Language-Team: Holidays Localization Team\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
-"X-Generator: Poedit 3.4\n"
+"X-Generator: Poedit 3.7\n"
"X-Source-Language: de\n"
#. New Year's Day.
@@ -121,3 +121,11 @@ msgstr "День Святих Петра і Павла"
#. Prayer Monday.
msgid "Bettagsmontag"
msgstr "Молитовний понеділок"
+
+#. Knabenschiessen.
+msgid "Knabenschiessen"
+msgstr "Кнабеншісен"
+
+#. Sechseläuten.
+msgid "Sechseläuten"
+msgstr "Зексельйотен"
diff --git a/snapshots/countries/CH_ZH.json b/snapshots/countries/CH_ZH.json
index 97f39759e6..78a2656e31 100644
--- a/snapshots/countries/CH_ZH.json
+++ b/snapshots/countries/CH_ZH.json
@@ -1,1011 +1,1414 @@
{
"1950-01-01": "New Year's Day",
"1950-01-02": "Saint Berchtold's Day",
+ "1950-03-27": "Sechsel\u00e4uten",
"1950-04-07": "Good Friday",
"1950-04-10": "Easter Monday",
"1950-05-01": "Labor Day",
"1950-05-18": "Ascension Day",
"1950-05-29": "Whit Monday",
"1950-08-01": "National Day",
+ "1950-09-09": "Knabenschiessen",
+ "1950-09-10": "Knabenschiessen",
+ "1950-09-11": "Knabenschiessen",
"1950-12-25": "Christmas Day",
"1950-12-26": "Saint Stephen's Day",
"1951-01-01": "New Year's Day",
"1951-01-02": "Saint Berchtold's Day",
"1951-03-23": "Good Friday",
- "1951-03-26": "Easter Monday",
+ "1951-03-26": "Easter Monday; Sechsel\u00e4uten",
"1951-05-01": "Labor Day",
"1951-05-03": "Ascension Day",
"1951-05-14": "Whit Monday",
"1951-08-01": "National Day",
+ "1951-09-08": "Knabenschiessen",
+ "1951-09-09": "Knabenschiessen",
+ "1951-09-10": "Knabenschiessen",
"1951-12-25": "Christmas Day",
"1951-12-26": "Saint Stephen's Day",
"1952-01-01": "New Year's Day",
"1952-01-02": "Saint Berchtold's Day",
"1952-04-11": "Good Friday",
"1952-04-14": "Easter Monday",
+ "1952-04-21": "Sechsel\u00e4uten",
"1952-05-01": "Labor Day",
"1952-05-22": "Ascension Day",
"1952-06-02": "Whit Monday",
"1952-08-01": "National Day",
+ "1952-09-13": "Knabenschiessen",
+ "1952-09-14": "Knabenschiessen",
+ "1952-09-15": "Knabenschiessen",
"1952-12-25": "Christmas Day",
"1952-12-26": "Saint Stephen's Day",
"1953-01-01": "New Year's Day",
"1953-01-02": "Saint Berchtold's Day",
"1953-04-03": "Good Friday",
"1953-04-06": "Easter Monday",
+ "1953-04-20": "Sechsel\u00e4uten",
"1953-05-01": "Labor Day",
"1953-05-14": "Ascension Day",
"1953-05-25": "Whit Monday",
"1953-08-01": "National Day",
+ "1953-09-12": "Knabenschiessen",
+ "1953-09-13": "Knabenschiessen",
+ "1953-09-14": "Knabenschiessen",
"1953-12-25": "Christmas Day",
"1953-12-26": "Saint Stephen's Day",
"1954-01-01": "New Year's Day",
"1954-01-02": "Saint Berchtold's Day",
"1954-04-16": "Good Friday",
"1954-04-19": "Easter Monday",
+ "1954-04-26": "Sechsel\u00e4uten",
"1954-05-01": "Labor Day",
"1954-05-27": "Ascension Day",
"1954-06-07": "Whit Monday",
"1954-08-01": "National Day",
+ "1954-09-11": "Knabenschiessen",
+ "1954-09-12": "Knabenschiessen",
+ "1954-09-13": "Knabenschiessen",
"1954-12-25": "Christmas Day",
"1954-12-26": "Saint Stephen's Day",
"1955-01-01": "New Year's Day",
"1955-01-02": "Saint Berchtold's Day",
"1955-04-08": "Good Friday",
"1955-04-11": "Easter Monday",
+ "1955-04-18": "Sechsel\u00e4uten",
"1955-05-01": "Labor Day",
"1955-05-19": "Ascension Day",
"1955-05-30": "Whit Monday",
"1955-08-01": "National Day",
+ "1955-09-10": "Knabenschiessen",
+ "1955-09-11": "Knabenschiessen",
+ "1955-09-12": "Knabenschiessen",
"1955-12-25": "Christmas Day",
"1955-12-26": "Saint Stephen's Day",
"1956-01-01": "New Year's Day",
"1956-01-02": "Saint Berchtold's Day",
"1956-03-30": "Good Friday",
"1956-04-02": "Easter Monday",
+ "1956-04-16": "Sechsel\u00e4uten",
"1956-05-01": "Labor Day",
"1956-05-10": "Ascension Day",
"1956-05-21": "Whit Monday",
"1956-08-01": "National Day",
+ "1956-09-08": "Knabenschiessen",
+ "1956-09-09": "Knabenschiessen",
+ "1956-09-10": "Knabenschiessen",
"1956-12-25": "Christmas Day",
"1956-12-26": "Saint Stephen's Day",
"1957-01-01": "New Year's Day",
"1957-01-02": "Saint Berchtold's Day",
+ "1957-04-15": "Sechsel\u00e4uten",
"1957-04-19": "Good Friday",
"1957-04-22": "Easter Monday",
"1957-05-01": "Labor Day",
"1957-05-30": "Ascension Day",
"1957-06-10": "Whit Monday",
"1957-08-01": "National Day",
+ "1957-09-07": "Knabenschiessen",
+ "1957-09-08": "Knabenschiessen",
+ "1957-09-09": "Knabenschiessen",
"1957-12-25": "Christmas Day",
"1957-12-26": "Saint Stephen's Day",
"1958-01-01": "New Year's Day",
"1958-01-02": "Saint Berchtold's Day",
"1958-04-04": "Good Friday",
"1958-04-07": "Easter Monday",
+ "1958-04-21": "Sechsel\u00e4uten",
"1958-05-01": "Labor Day",
"1958-05-15": "Ascension Day",
"1958-05-26": "Whit Monday",
"1958-08-01": "National Day",
+ "1958-09-13": "Knabenschiessen",
+ "1958-09-14": "Knabenschiessen",
+ "1958-09-15": "Knabenschiessen",
"1958-12-25": "Christmas Day",
"1958-12-26": "Saint Stephen's Day",
"1959-01-01": "New Year's Day",
"1959-01-02": "Saint Berchtold's Day",
"1959-03-27": "Good Friday",
"1959-03-30": "Easter Monday",
+ "1959-04-20": "Sechsel\u00e4uten",
"1959-05-01": "Labor Day",
"1959-05-07": "Ascension Day",
"1959-05-18": "Whit Monday",
"1959-08-01": "National Day",
+ "1959-09-12": "Knabenschiessen",
+ "1959-09-13": "Knabenschiessen",
+ "1959-09-14": "Knabenschiessen",
"1959-12-25": "Christmas Day",
"1959-12-26": "Saint Stephen's Day",
"1960-01-01": "New Year's Day",
"1960-01-02": "Saint Berchtold's Day",
"1960-04-15": "Good Friday",
"1960-04-18": "Easter Monday",
+ "1960-04-25": "Sechsel\u00e4uten",
"1960-05-01": "Labor Day",
"1960-05-26": "Ascension Day",
"1960-06-06": "Whit Monday",
"1960-08-01": "National Day",
+ "1960-09-10": "Knabenschiessen",
+ "1960-09-11": "Knabenschiessen",
+ "1960-09-12": "Knabenschiessen",
"1960-12-25": "Christmas Day",
"1960-12-26": "Saint Stephen's Day",
"1961-01-01": "New Year's Day",
"1961-01-02": "Saint Berchtold's Day",
"1961-03-31": "Good Friday",
"1961-04-03": "Easter Monday",
+ "1961-04-17": "Sechsel\u00e4uten",
"1961-05-01": "Labor Day",
"1961-05-11": "Ascension Day",
"1961-05-22": "Whit Monday",
"1961-08-01": "National Day",
+ "1961-09-09": "Knabenschiessen",
+ "1961-09-10": "Knabenschiessen",
+ "1961-09-11": "Knabenschiessen",
"1961-12-25": "Christmas Day",
"1961-12-26": "Saint Stephen's Day",
"1962-01-01": "New Year's Day",
"1962-01-02": "Saint Berchtold's Day",
+ "1962-04-16": "Sechsel\u00e4uten",
"1962-04-20": "Good Friday",
"1962-04-23": "Easter Monday",
"1962-05-01": "Labor Day",
"1962-05-31": "Ascension Day",
"1962-06-11": "Whit Monday",
"1962-08-01": "National Day",
+ "1962-09-08": "Knabenschiessen",
+ "1962-09-09": "Knabenschiessen",
+ "1962-09-10": "Knabenschiessen",
"1962-12-25": "Christmas Day",
"1962-12-26": "Saint Stephen's Day",
"1963-01-01": "New Year's Day",
"1963-01-02": "Saint Berchtold's Day",
"1963-04-12": "Good Friday",
"1963-04-15": "Easter Monday",
+ "1963-04-22": "Sechsel\u00e4uten",
"1963-05-01": "Labor Day",
"1963-05-23": "Ascension Day",
"1963-06-03": "Whit Monday",
"1963-08-01": "National Day",
+ "1963-09-07": "Knabenschiessen",
+ "1963-09-08": "Knabenschiessen",
+ "1963-09-09": "Knabenschiessen",
"1963-12-25": "Christmas Day",
"1963-12-26": "Saint Stephen's Day",
"1964-01-01": "New Year's Day",
"1964-01-02": "Saint Berchtold's Day",
"1964-03-27": "Good Friday",
"1964-03-30": "Easter Monday",
+ "1964-04-20": "Sechsel\u00e4uten",
"1964-05-01": "Labor Day",
"1964-05-07": "Ascension Day",
"1964-05-18": "Whit Monday",
"1964-08-01": "National Day",
+ "1964-09-12": "Knabenschiessen",
+ "1964-09-13": "Knabenschiessen",
+ "1964-09-14": "Knabenschiessen",
"1964-12-25": "Christmas Day",
"1964-12-26": "Saint Stephen's Day",
"1965-01-01": "New Year's Day",
"1965-01-02": "Saint Berchtold's Day",
"1965-04-16": "Good Friday",
"1965-04-19": "Easter Monday",
+ "1965-04-26": "Sechsel\u00e4uten",
"1965-05-01": "Labor Day",
"1965-05-27": "Ascension Day",
"1965-06-07": "Whit Monday",
"1965-08-01": "National Day",
+ "1965-09-11": "Knabenschiessen",
+ "1965-09-12": "Knabenschiessen",
+ "1965-09-13": "Knabenschiessen",
"1965-12-25": "Christmas Day",
"1965-12-26": "Saint Stephen's Day",
"1966-01-01": "New Year's Day",
"1966-01-02": "Saint Berchtold's Day",
"1966-04-08": "Good Friday",
"1966-04-11": "Easter Monday",
+ "1966-04-18": "Sechsel\u00e4uten",
"1966-05-01": "Labor Day",
"1966-05-19": "Ascension Day",
"1966-05-30": "Whit Monday",
"1966-08-01": "National Day",
+ "1966-09-10": "Knabenschiessen",
+ "1966-09-11": "Knabenschiessen",
+ "1966-09-12": "Knabenschiessen",
"1966-12-25": "Christmas Day",
"1966-12-26": "Saint Stephen's Day",
"1967-01-01": "New Year's Day",
"1967-01-02": "Saint Berchtold's Day",
"1967-03-24": "Good Friday",
"1967-03-27": "Easter Monday",
+ "1967-04-17": "Sechsel\u00e4uten",
"1967-05-01": "Labor Day",
"1967-05-04": "Ascension Day",
"1967-05-15": "Whit Monday",
"1967-08-01": "National Day",
+ "1967-09-09": "Knabenschiessen",
+ "1967-09-10": "Knabenschiessen",
+ "1967-09-11": "Knabenschiessen",
"1967-12-25": "Christmas Day",
"1967-12-26": "Saint Stephen's Day",
"1968-01-01": "New Year's Day",
"1968-01-02": "Saint Berchtold's Day",
"1968-04-12": "Good Friday",
"1968-04-15": "Easter Monday",
+ "1968-04-22": "Sechsel\u00e4uten",
"1968-05-01": "Labor Day",
"1968-05-23": "Ascension Day",
"1968-06-03": "Whit Monday",
"1968-08-01": "National Day",
+ "1968-09-07": "Knabenschiessen",
+ "1968-09-08": "Knabenschiessen",
+ "1968-09-09": "Knabenschiessen",
"1968-12-25": "Christmas Day",
"1968-12-26": "Saint Stephen's Day",
"1969-01-01": "New Year's Day",
"1969-01-02": "Saint Berchtold's Day",
"1969-04-04": "Good Friday",
"1969-04-07": "Easter Monday",
+ "1969-04-21": "Sechsel\u00e4uten",
"1969-05-01": "Labor Day",
"1969-05-15": "Ascension Day",
"1969-05-26": "Whit Monday",
"1969-08-01": "National Day",
+ "1969-09-13": "Knabenschiessen",
+ "1969-09-14": "Knabenschiessen",
+ "1969-09-15": "Knabenschiessen",
"1969-12-25": "Christmas Day",
"1969-12-26": "Saint Stephen's Day",
"1970-01-01": "New Year's Day",
"1970-01-02": "Saint Berchtold's Day",
"1970-03-27": "Good Friday",
"1970-03-30": "Easter Monday",
+ "1970-04-20": "Sechsel\u00e4uten",
"1970-05-01": "Labor Day",
"1970-05-07": "Ascension Day",
"1970-05-18": "Whit Monday",
"1970-08-01": "National Day",
+ "1970-09-12": "Knabenschiessen",
+ "1970-09-13": "Knabenschiessen",
+ "1970-09-14": "Knabenschiessen",
"1970-12-25": "Christmas Day",
"1970-12-26": "Saint Stephen's Day",
"1971-01-01": "New Year's Day",
"1971-01-02": "Saint Berchtold's Day",
"1971-04-09": "Good Friday",
"1971-04-12": "Easter Monday",
+ "1971-04-19": "Sechsel\u00e4uten",
"1971-05-01": "Labor Day",
"1971-05-20": "Ascension Day",
"1971-05-31": "Whit Monday",
"1971-08-01": "National Day",
+ "1971-09-11": "Knabenschiessen",
+ "1971-09-12": "Knabenschiessen",
+ "1971-09-13": "Knabenschiessen",
"1971-12-25": "Christmas Day",
"1971-12-26": "Saint Stephen's Day",
"1972-01-01": "New Year's Day",
"1972-01-02": "Saint Berchtold's Day",
"1972-03-31": "Good Friday",
"1972-04-03": "Easter Monday",
+ "1972-04-17": "Sechsel\u00e4uten",
"1972-05-01": "Labor Day",
"1972-05-11": "Ascension Day",
"1972-05-22": "Whit Monday",
"1972-08-01": "National Day",
+ "1972-09-09": "Knabenschiessen",
+ "1972-09-10": "Knabenschiessen",
+ "1972-09-11": "Knabenschiessen",
"1972-12-25": "Christmas Day",
"1972-12-26": "Saint Stephen's Day",
"1973-01-01": "New Year's Day",
"1973-01-02": "Saint Berchtold's Day",
+ "1973-04-16": "Sechsel\u00e4uten",
"1973-04-20": "Good Friday",
"1973-04-23": "Easter Monday",
"1973-05-01": "Labor Day",
"1973-05-31": "Ascension Day",
"1973-06-11": "Whit Monday",
"1973-08-01": "National Day",
+ "1973-09-08": "Knabenschiessen",
+ "1973-09-09": "Knabenschiessen",
+ "1973-09-10": "Knabenschiessen",
"1973-12-25": "Christmas Day",
"1973-12-26": "Saint Stephen's Day",
"1974-01-01": "New Year's Day",
"1974-01-02": "Saint Berchtold's Day",
"1974-04-12": "Good Friday",
"1974-04-15": "Easter Monday",
+ "1974-04-22": "Sechsel\u00e4uten",
"1974-05-01": "Labor Day",
"1974-05-23": "Ascension Day",
"1974-06-03": "Whit Monday",
"1974-08-01": "National Day",
+ "1974-09-07": "Knabenschiessen",
+ "1974-09-08": "Knabenschiessen",
+ "1974-09-09": "Knabenschiessen",
"1974-12-25": "Christmas Day",
"1974-12-26": "Saint Stephen's Day",
"1975-01-01": "New Year's Day",
"1975-01-02": "Saint Berchtold's Day",
"1975-03-28": "Good Friday",
"1975-03-31": "Easter Monday",
+ "1975-04-21": "Sechsel\u00e4uten",
"1975-05-01": "Labor Day",
"1975-05-08": "Ascension Day",
"1975-05-19": "Whit Monday",
"1975-08-01": "National Day",
+ "1975-09-13": "Knabenschiessen",
+ "1975-09-14": "Knabenschiessen",
+ "1975-09-15": "Knabenschiessen",
"1975-12-25": "Christmas Day",
"1975-12-26": "Saint Stephen's Day",
"1976-01-01": "New Year's Day",
"1976-01-02": "Saint Berchtold's Day",
"1976-04-16": "Good Friday",
"1976-04-19": "Easter Monday",
+ "1976-04-26": "Sechsel\u00e4uten",
"1976-05-01": "Labor Day",
"1976-05-27": "Ascension Day",
"1976-06-07": "Whit Monday",
"1976-08-01": "National Day",
+ "1976-09-11": "Knabenschiessen",
+ "1976-09-12": "Knabenschiessen",
+ "1976-09-13": "Knabenschiessen",
"1976-12-25": "Christmas Day",
"1976-12-26": "Saint Stephen's Day",
"1977-01-01": "New Year's Day",
"1977-01-02": "Saint Berchtold's Day",
"1977-04-08": "Good Friday",
"1977-04-11": "Easter Monday",
+ "1977-04-18": "Sechsel\u00e4uten",
"1977-05-01": "Labor Day",
"1977-05-19": "Ascension Day",
"1977-05-30": "Whit Monday",
"1977-08-01": "National Day",
+ "1977-09-10": "Knabenschiessen",
+ "1977-09-11": "Knabenschiessen",
+ "1977-09-12": "Knabenschiessen",
"1977-12-25": "Christmas Day",
"1977-12-26": "Saint Stephen's Day",
"1978-01-01": "New Year's Day",
"1978-01-02": "Saint Berchtold's Day",
"1978-03-24": "Good Friday",
"1978-03-27": "Easter Monday",
+ "1978-04-17": "Sechsel\u00e4uten",
"1978-05-01": "Labor Day",
"1978-05-04": "Ascension Day",
"1978-05-15": "Whit Monday",
"1978-08-01": "National Day",
+ "1978-09-09": "Knabenschiessen",
+ "1978-09-10": "Knabenschiessen",
+ "1978-09-11": "Knabenschiessen",
"1978-12-25": "Christmas Day",
"1978-12-26": "Saint Stephen's Day",
"1979-01-01": "New Year's Day",
"1979-01-02": "Saint Berchtold's Day",
"1979-04-13": "Good Friday",
"1979-04-16": "Easter Monday",
+ "1979-04-23": "Sechsel\u00e4uten",
"1979-05-01": "Labor Day",
"1979-05-24": "Ascension Day",
"1979-06-04": "Whit Monday",
"1979-08-01": "National Day",
+ "1979-09-08": "Knabenschiessen",
+ "1979-09-09": "Knabenschiessen",
+ "1979-09-10": "Knabenschiessen",
"1979-12-25": "Christmas Day",
"1979-12-26": "Saint Stephen's Day",
"1980-01-01": "New Year's Day",
"1980-01-02": "Saint Berchtold's Day",
"1980-04-04": "Good Friday",
"1980-04-07": "Easter Monday",
+ "1980-04-21": "Sechsel\u00e4uten",
"1980-05-01": "Labor Day",
"1980-05-15": "Ascension Day",
"1980-05-26": "Whit Monday",
"1980-08-01": "National Day",
+ "1980-09-13": "Knabenschiessen",
+ "1980-09-14": "Knabenschiessen",
+ "1980-09-15": "Knabenschiessen",
"1980-12-25": "Christmas Day",
"1980-12-26": "Saint Stephen's Day",
"1981-01-01": "New Year's Day",
"1981-01-02": "Saint Berchtold's Day",
"1981-04-17": "Good Friday",
"1981-04-20": "Easter Monday",
+ "1981-04-27": "Sechsel\u00e4uten",
"1981-05-01": "Labor Day",
"1981-05-28": "Ascension Day",
"1981-06-08": "Whit Monday",
"1981-08-01": "National Day",
+ "1981-09-12": "Knabenschiessen",
+ "1981-09-13": "Knabenschiessen",
+ "1981-09-14": "Knabenschiessen",
"1981-12-25": "Christmas Day",
"1981-12-26": "Saint Stephen's Day",
"1982-01-01": "New Year's Day",
"1982-01-02": "Saint Berchtold's Day",
"1982-04-09": "Good Friday",
"1982-04-12": "Easter Monday",
+ "1982-04-19": "Sechsel\u00e4uten",
"1982-05-01": "Labor Day",
"1982-05-20": "Ascension Day",
"1982-05-31": "Whit Monday",
"1982-08-01": "National Day",
+ "1982-09-11": "Knabenschiessen",
+ "1982-09-12": "Knabenschiessen",
+ "1982-09-13": "Knabenschiessen",
"1982-12-25": "Christmas Day",
"1982-12-26": "Saint Stephen's Day",
"1983-01-01": "New Year's Day",
"1983-01-02": "Saint Berchtold's Day",
"1983-04-01": "Good Friday",
"1983-04-04": "Easter Monday",
+ "1983-04-18": "Sechsel\u00e4uten",
"1983-05-01": "Labor Day",
"1983-05-12": "Ascension Day",
"1983-05-23": "Whit Monday",
"1983-08-01": "National Day",
+ "1983-09-10": "Knabenschiessen",
+ "1983-09-11": "Knabenschiessen",
+ "1983-09-12": "Knabenschiessen",
"1983-12-25": "Christmas Day",
"1983-12-26": "Saint Stephen's Day",
"1984-01-01": "New Year's Day",
"1984-01-02": "Saint Berchtold's Day",
+ "1984-04-16": "Sechsel\u00e4uten",
"1984-04-20": "Good Friday",
"1984-04-23": "Easter Monday",
"1984-05-01": "Labor Day",
"1984-05-31": "Ascension Day",
"1984-06-11": "Whit Monday",
"1984-08-01": "National Day",
+ "1984-09-08": "Knabenschiessen",
+ "1984-09-09": "Knabenschiessen",
+ "1984-09-10": "Knabenschiessen",
"1984-12-25": "Christmas Day",
"1984-12-26": "Saint Stephen's Day",
"1985-01-01": "New Year's Day",
"1985-01-02": "Saint Berchtold's Day",
"1985-04-05": "Good Friday",
"1985-04-08": "Easter Monday",
+ "1985-04-15": "Sechsel\u00e4uten",
"1985-05-01": "Labor Day",
"1985-05-16": "Ascension Day",
"1985-05-27": "Whit Monday",
"1985-08-01": "National Day",
+ "1985-09-07": "Knabenschiessen",
+ "1985-09-08": "Knabenschiessen",
+ "1985-09-09": "Knabenschiessen",
"1985-12-25": "Christmas Day",
"1985-12-26": "Saint Stephen's Day",
"1986-01-01": "New Year's Day",
"1986-01-02": "Saint Berchtold's Day",
"1986-03-28": "Good Friday",
"1986-03-31": "Easter Monday",
+ "1986-04-21": "Sechsel\u00e4uten",
"1986-05-01": "Labor Day",
"1986-05-08": "Ascension Day",
"1986-05-19": "Whit Monday",
"1986-08-01": "National Day",
+ "1986-09-13": "Knabenschiessen",
+ "1986-09-14": "Knabenschiessen",
+ "1986-09-15": "Knabenschiessen",
"1986-12-25": "Christmas Day",
"1986-12-26": "Saint Stephen's Day",
"1987-01-01": "New Year's Day",
"1987-01-02": "Saint Berchtold's Day",
"1987-04-17": "Good Friday",
"1987-04-20": "Easter Monday",
+ "1987-04-27": "Sechsel\u00e4uten",
"1987-05-01": "Labor Day",
"1987-05-28": "Ascension Day",
"1987-06-08": "Whit Monday",
"1987-08-01": "National Day",
+ "1987-09-12": "Knabenschiessen",
+ "1987-09-13": "Knabenschiessen",
+ "1987-09-14": "Knabenschiessen",
"1987-12-25": "Christmas Day",
"1987-12-26": "Saint Stephen's Day",
"1988-01-01": "New Year's Day",
"1988-01-02": "Saint Berchtold's Day",
"1988-04-01": "Good Friday",
"1988-04-04": "Easter Monday",
+ "1988-04-18": "Sechsel\u00e4uten",
"1988-05-01": "Labor Day",
"1988-05-12": "Ascension Day",
"1988-05-23": "Whit Monday",
"1988-08-01": "National Day",
+ "1988-09-10": "Knabenschiessen",
+ "1988-09-11": "Knabenschiessen",
+ "1988-09-12": "Knabenschiessen",
"1988-12-25": "Christmas Day",
"1988-12-26": "Saint Stephen's Day",
"1989-01-01": "New Year's Day",
"1989-01-02": "Saint Berchtold's Day",
"1989-03-24": "Good Friday",
"1989-03-27": "Easter Monday",
+ "1989-04-17": "Sechsel\u00e4uten",
"1989-05-01": "Labor Day",
"1989-05-04": "Ascension Day",
"1989-05-15": "Whit Monday",
"1989-08-01": "National Day",
+ "1989-09-09": "Knabenschiessen",
+ "1989-09-10": "Knabenschiessen",
+ "1989-09-11": "Knabenschiessen",
"1989-12-25": "Christmas Day",
"1989-12-26": "Saint Stephen's Day",
"1990-01-01": "New Year's Day",
"1990-01-02": "Saint Berchtold's Day",
"1990-04-13": "Good Friday",
"1990-04-16": "Easter Monday",
+ "1990-04-23": "Sechsel\u00e4uten",
"1990-05-01": "Labor Day",
"1990-05-24": "Ascension Day",
"1990-06-04": "Whit Monday",
"1990-08-01": "National Day",
+ "1990-09-08": "Knabenschiessen",
+ "1990-09-09": "Knabenschiessen",
+ "1990-09-10": "Knabenschiessen",
"1990-12-25": "Christmas Day",
"1990-12-26": "Saint Stephen's Day",
"1991-01-01": "New Year's Day",
"1991-01-02": "Saint Berchtold's Day",
"1991-03-29": "Good Friday",
"1991-04-01": "Easter Monday",
+ "1991-04-15": "Sechsel\u00e4uten",
"1991-05-01": "Labor Day",
"1991-05-09": "Ascension Day",
"1991-05-20": "Whit Monday",
"1991-08-01": "National Day",
+ "1991-09-07": "Knabenschiessen",
+ "1991-09-08": "Knabenschiessen",
+ "1991-09-09": "Knabenschiessen",
"1991-12-25": "Christmas Day",
"1991-12-26": "Saint Stephen's Day",
"1992-01-01": "New Year's Day",
"1992-01-02": "Saint Berchtold's Day",
"1992-04-17": "Good Friday",
"1992-04-20": "Easter Monday",
+ "1992-04-27": "Sechsel\u00e4uten",
"1992-05-01": "Labor Day",
"1992-05-28": "Ascension Day",
"1992-06-08": "Whit Monday",
"1992-08-01": "National Day",
+ "1992-09-12": "Knabenschiessen",
+ "1992-09-13": "Knabenschiessen",
+ "1992-09-14": "Knabenschiessen",
"1992-12-25": "Christmas Day",
"1992-12-26": "Saint Stephen's Day",
"1993-01-01": "New Year's Day",
"1993-01-02": "Saint Berchtold's Day",
"1993-04-09": "Good Friday",
"1993-04-12": "Easter Monday",
+ "1993-04-19": "Sechsel\u00e4uten",
"1993-05-01": "Labor Day",
"1993-05-20": "Ascension Day",
"1993-05-31": "Whit Monday",
"1993-08-01": "National Day",
+ "1993-09-11": "Knabenschiessen",
+ "1993-09-12": "Knabenschiessen",
+ "1993-09-13": "Knabenschiessen",
"1993-12-25": "Christmas Day",
"1993-12-26": "Saint Stephen's Day",
"1994-01-01": "New Year's Day",
"1994-01-02": "Saint Berchtold's Day",
"1994-04-01": "Good Friday",
"1994-04-04": "Easter Monday",
+ "1994-04-18": "Sechsel\u00e4uten",
"1994-05-01": "Labor Day",
"1994-05-12": "Ascension Day",
"1994-05-23": "Whit Monday",
"1994-08-01": "National Day",
+ "1994-09-10": "Knabenschiessen",
+ "1994-09-11": "Knabenschiessen",
+ "1994-09-12": "Knabenschiessen",
"1994-12-25": "Christmas Day",
"1994-12-26": "Saint Stephen's Day",
"1995-01-01": "New Year's Day",
"1995-01-02": "Saint Berchtold's Day",
"1995-04-14": "Good Friday",
"1995-04-17": "Easter Monday",
+ "1995-04-24": "Sechsel\u00e4uten",
"1995-05-01": "Labor Day",
"1995-05-25": "Ascension Day",
"1995-06-05": "Whit Monday",
"1995-08-01": "National Day",
+ "1995-09-09": "Knabenschiessen",
+ "1995-09-10": "Knabenschiessen",
+ "1995-09-11": "Knabenschiessen",
"1995-12-25": "Christmas Day",
"1995-12-26": "Saint Stephen's Day",
"1996-01-01": "New Year's Day",
"1996-01-02": "Saint Berchtold's Day",
"1996-04-05": "Good Friday",
"1996-04-08": "Easter Monday",
+ "1996-04-15": "Sechsel\u00e4uten",
"1996-05-01": "Labor Day",
"1996-05-16": "Ascension Day",
"1996-05-27": "Whit Monday",
"1996-08-01": "National Day",
+ "1996-09-07": "Knabenschiessen",
+ "1996-09-08": "Knabenschiessen",
+ "1996-09-09": "Knabenschiessen",
"1996-12-25": "Christmas Day",
"1996-12-26": "Saint Stephen's Day",
"1997-01-01": "New Year's Day",
"1997-01-02": "Saint Berchtold's Day",
"1997-03-28": "Good Friday",
"1997-03-31": "Easter Monday",
+ "1997-04-21": "Sechsel\u00e4uten",
"1997-05-01": "Labor Day",
"1997-05-08": "Ascension Day",
"1997-05-19": "Whit Monday",
"1997-08-01": "National Day",
+ "1997-09-13": "Knabenschiessen",
+ "1997-09-14": "Knabenschiessen",
+ "1997-09-15": "Knabenschiessen",
"1997-12-25": "Christmas Day",
"1997-12-26": "Saint Stephen's Day",
"1998-01-01": "New Year's Day",
"1998-01-02": "Saint Berchtold's Day",
"1998-04-10": "Good Friday",
"1998-04-13": "Easter Monday",
+ "1998-04-20": "Sechsel\u00e4uten",
"1998-05-01": "Labor Day",
"1998-05-21": "Ascension Day",
"1998-06-01": "Whit Monday",
"1998-08-01": "National Day",
+ "1998-09-12": "Knabenschiessen",
+ "1998-09-13": "Knabenschiessen",
+ "1998-09-14": "Knabenschiessen",
"1998-12-25": "Christmas Day",
"1998-12-26": "Saint Stephen's Day",
"1999-01-01": "New Year's Day",
"1999-01-02": "Saint Berchtold's Day",
"1999-04-02": "Good Friday",
"1999-04-05": "Easter Monday",
+ "1999-04-19": "Sechsel\u00e4uten",
"1999-05-01": "Labor Day",
"1999-05-13": "Ascension Day",
"1999-05-24": "Whit Monday",
"1999-08-01": "National Day",
+ "1999-09-11": "Knabenschiessen",
+ "1999-09-12": "Knabenschiessen",
+ "1999-09-13": "Knabenschiessen",
"1999-12-25": "Christmas Day",
"1999-12-26": "Saint Stephen's Day",
"2000-01-01": "New Year's Day",
"2000-01-02": "Saint Berchtold's Day",
+ "2000-04-17": "Sechsel\u00e4uten",
"2000-04-21": "Good Friday",
"2000-04-24": "Easter Monday",
"2000-05-01": "Labor Day",
"2000-06-01": "Ascension Day",
"2000-06-12": "Whit Monday",
"2000-08-01": "National Day",
+ "2000-09-09": "Knabenschiessen",
+ "2000-09-10": "Knabenschiessen",
+ "2000-09-11": "Knabenschiessen",
"2000-12-25": "Christmas Day",
"2000-12-26": "Saint Stephen's Day",
"2001-01-01": "New Year's Day",
"2001-01-02": "Saint Berchtold's Day",
"2001-04-13": "Good Friday",
"2001-04-16": "Easter Monday",
+ "2001-04-23": "Sechsel\u00e4uten",
"2001-05-01": "Labor Day",
"2001-05-24": "Ascension Day",
"2001-06-04": "Whit Monday",
"2001-08-01": "National Day",
+ "2001-09-08": "Knabenschiessen",
+ "2001-09-09": "Knabenschiessen",
+ "2001-09-10": "Knabenschiessen",
"2001-12-25": "Christmas Day",
"2001-12-26": "Saint Stephen's Day",
"2002-01-01": "New Year's Day",
"2002-01-02": "Saint Berchtold's Day",
"2002-03-29": "Good Friday",
"2002-04-01": "Easter Monday",
+ "2002-04-15": "Sechsel\u00e4uten",
"2002-05-01": "Labor Day",
"2002-05-09": "Ascension Day",
"2002-05-20": "Whit Monday",
"2002-08-01": "National Day",
+ "2002-09-07": "Knabenschiessen",
+ "2002-09-08": "Knabenschiessen",
+ "2002-09-09": "Knabenschiessen",
"2002-12-25": "Christmas Day",
"2002-12-26": "Saint Stephen's Day",
"2003-01-01": "New Year's Day",
"2003-01-02": "Saint Berchtold's Day",
"2003-04-18": "Good Friday",
"2003-04-21": "Easter Monday",
+ "2003-04-28": "Sechsel\u00e4uten",
"2003-05-01": "Labor Day",
"2003-05-29": "Ascension Day",
"2003-06-09": "Whit Monday",
"2003-08-01": "National Day",
+ "2003-09-13": "Knabenschiessen",
+ "2003-09-14": "Knabenschiessen",
+ "2003-09-15": "Knabenschiessen",
"2003-12-25": "Christmas Day",
"2003-12-26": "Saint Stephen's Day",
"2004-01-01": "New Year's Day",
"2004-01-02": "Saint Berchtold's Day",
"2004-04-09": "Good Friday",
"2004-04-12": "Easter Monday",
+ "2004-04-19": "Sechsel\u00e4uten",
"2004-05-01": "Labor Day",
"2004-05-20": "Ascension Day",
"2004-05-31": "Whit Monday",
"2004-08-01": "National Day",
+ "2004-09-11": "Knabenschiessen",
+ "2004-09-12": "Knabenschiessen",
+ "2004-09-13": "Knabenschiessen",
"2004-12-25": "Christmas Day",
"2004-12-26": "Saint Stephen's Day",
"2005-01-01": "New Year's Day",
"2005-01-02": "Saint Berchtold's Day",
"2005-03-25": "Good Friday",
"2005-03-28": "Easter Monday",
+ "2005-04-18": "Sechsel\u00e4uten",
"2005-05-01": "Labor Day",
"2005-05-05": "Ascension Day",
"2005-05-16": "Whit Monday",
"2005-08-01": "National Day",
+ "2005-09-10": "Knabenschiessen",
+ "2005-09-11": "Knabenschiessen",
+ "2005-09-12": "Knabenschiessen",
"2005-12-25": "Christmas Day",
"2005-12-26": "Saint Stephen's Day",
"2006-01-01": "New Year's Day",
"2006-01-02": "Saint Berchtold's Day",
"2006-04-14": "Good Friday",
"2006-04-17": "Easter Monday",
+ "2006-04-24": "Sechsel\u00e4uten",
"2006-05-01": "Labor Day",
"2006-05-25": "Ascension Day",
"2006-06-05": "Whit Monday",
"2006-08-01": "National Day",
+ "2006-09-09": "Knabenschiessen",
+ "2006-09-10": "Knabenschiessen",
+ "2006-09-11": "Knabenschiessen",
"2006-12-25": "Christmas Day",
"2006-12-26": "Saint Stephen's Day",
"2007-01-01": "New Year's Day",
"2007-01-02": "Saint Berchtold's Day",
"2007-04-06": "Good Friday",
"2007-04-09": "Easter Monday",
+ "2007-04-16": "Sechsel\u00e4uten",
"2007-05-01": "Labor Day",
"2007-05-17": "Ascension Day",
"2007-05-28": "Whit Monday",
"2007-08-01": "National Day",
+ "2007-09-08": "Knabenschiessen",
+ "2007-09-09": "Knabenschiessen",
+ "2007-09-10": "Knabenschiessen",
"2007-12-25": "Christmas Day",
"2007-12-26": "Saint Stephen's Day",
"2008-01-01": "New Year's Day",
"2008-01-02": "Saint Berchtold's Day",
"2008-03-21": "Good Friday",
"2008-03-24": "Easter Monday",
+ "2008-04-21": "Sechsel\u00e4uten",
"2008-05-01": "Ascension Day; Labor Day",
"2008-05-12": "Whit Monday",
"2008-08-01": "National Day",
+ "2008-09-13": "Knabenschiessen",
+ "2008-09-14": "Knabenschiessen",
+ "2008-09-15": "Knabenschiessen",
"2008-12-25": "Christmas Day",
"2008-12-26": "Saint Stephen's Day",
"2009-01-01": "New Year's Day",
"2009-01-02": "Saint Berchtold's Day",
"2009-04-10": "Good Friday",
"2009-04-13": "Easter Monday",
+ "2009-04-20": "Sechsel\u00e4uten",
"2009-05-01": "Labor Day",
"2009-05-21": "Ascension Day",
"2009-06-01": "Whit Monday",
"2009-08-01": "National Day",
+ "2009-09-12": "Knabenschiessen",
+ "2009-09-13": "Knabenschiessen",
+ "2009-09-14": "Knabenschiessen",
"2009-12-25": "Christmas Day",
"2009-12-26": "Saint Stephen's Day",
"2010-01-01": "New Year's Day",
"2010-01-02": "Saint Berchtold's Day",
"2010-04-02": "Good Friday",
"2010-04-05": "Easter Monday",
+ "2010-04-19": "Sechsel\u00e4uten",
"2010-05-01": "Labor Day",
"2010-05-13": "Ascension Day",
"2010-05-24": "Whit Monday",
"2010-08-01": "National Day",
+ "2010-09-11": "Knabenschiessen",
+ "2010-09-12": "Knabenschiessen",
+ "2010-09-13": "Knabenschiessen",
"2010-12-25": "Christmas Day",
"2010-12-26": "Saint Stephen's Day",
"2011-01-01": "New Year's Day",
"2011-01-02": "Saint Berchtold's Day",
+ "2011-04-18": "Sechsel\u00e4uten",
"2011-04-22": "Good Friday",
"2011-04-25": "Easter Monday",
"2011-05-01": "Labor Day",
"2011-06-02": "Ascension Day",
"2011-06-13": "Whit Monday",
"2011-08-01": "National Day",
+ "2011-09-10": "Knabenschiessen",
+ "2011-09-11": "Knabenschiessen",
+ "2011-09-12": "Knabenschiessen",
"2011-12-25": "Christmas Day",
"2011-12-26": "Saint Stephen's Day",
"2012-01-01": "New Year's Day",
"2012-01-02": "Saint Berchtold's Day",
"2012-04-06": "Good Friday",
"2012-04-09": "Easter Monday",
+ "2012-04-16": "Sechsel\u00e4uten",
"2012-05-01": "Labor Day",
"2012-05-17": "Ascension Day",
"2012-05-28": "Whit Monday",
"2012-08-01": "National Day",
+ "2012-09-08": "Knabenschiessen",
+ "2012-09-09": "Knabenschiessen",
+ "2012-09-10": "Knabenschiessen",
"2012-12-25": "Christmas Day",
"2012-12-26": "Saint Stephen's Day",
"2013-01-01": "New Year's Day",
"2013-01-02": "Saint Berchtold's Day",
"2013-03-29": "Good Friday",
"2013-04-01": "Easter Monday",
+ "2013-04-15": "Sechsel\u00e4uten",
"2013-05-01": "Labor Day",
"2013-05-09": "Ascension Day",
"2013-05-20": "Whit Monday",
"2013-08-01": "National Day",
+ "2013-09-07": "Knabenschiessen",
+ "2013-09-08": "Knabenschiessen",
+ "2013-09-09": "Knabenschiessen",
"2013-12-25": "Christmas Day",
"2013-12-26": "Saint Stephen's Day",
"2014-01-01": "New Year's Day",
"2014-01-02": "Saint Berchtold's Day",
"2014-04-18": "Good Friday",
"2014-04-21": "Easter Monday",
+ "2014-04-28": "Sechsel\u00e4uten",
"2014-05-01": "Labor Day",
"2014-05-29": "Ascension Day",
"2014-06-09": "Whit Monday",
"2014-08-01": "National Day",
+ "2014-09-13": "Knabenschiessen",
+ "2014-09-14": "Knabenschiessen",
+ "2014-09-15": "Knabenschiessen",
"2014-12-25": "Christmas Day",
"2014-12-26": "Saint Stephen's Day",
"2015-01-01": "New Year's Day",
"2015-01-02": "Saint Berchtold's Day",
"2015-04-03": "Good Friday",
"2015-04-06": "Easter Monday",
+ "2015-04-20": "Sechsel\u00e4uten",
"2015-05-01": "Labor Day",
"2015-05-14": "Ascension Day",
"2015-05-25": "Whit Monday",
"2015-08-01": "National Day",
+ "2015-09-12": "Knabenschiessen",
+ "2015-09-13": "Knabenschiessen",
+ "2015-09-14": "Knabenschiessen",
"2015-12-25": "Christmas Day",
"2015-12-26": "Saint Stephen's Day",
"2016-01-01": "New Year's Day",
"2016-01-02": "Saint Berchtold's Day",
"2016-03-25": "Good Friday",
"2016-03-28": "Easter Monday",
+ "2016-04-18": "Sechsel\u00e4uten",
"2016-05-01": "Labor Day",
"2016-05-05": "Ascension Day",
"2016-05-16": "Whit Monday",
"2016-08-01": "National Day",
+ "2016-09-10": "Knabenschiessen",
+ "2016-09-11": "Knabenschiessen",
+ "2016-09-12": "Knabenschiessen",
"2016-12-25": "Christmas Day",
"2016-12-26": "Saint Stephen's Day",
"2017-01-01": "New Year's Day",
"2017-01-02": "Saint Berchtold's Day",
"2017-04-14": "Good Friday",
"2017-04-17": "Easter Monday",
+ "2017-04-24": "Sechsel\u00e4uten",
"2017-05-01": "Labor Day",
"2017-05-25": "Ascension Day",
"2017-06-05": "Whit Monday",
"2017-08-01": "National Day",
+ "2017-09-09": "Knabenschiessen",
+ "2017-09-10": "Knabenschiessen",
+ "2017-09-11": "Knabenschiessen",
"2017-12-25": "Christmas Day",
"2017-12-26": "Saint Stephen's Day",
"2018-01-01": "New Year's Day",
"2018-01-02": "Saint Berchtold's Day",
"2018-03-30": "Good Friday",
"2018-04-02": "Easter Monday",
+ "2018-04-16": "Sechsel\u00e4uten",
"2018-05-01": "Labor Day",
"2018-05-10": "Ascension Day",
"2018-05-21": "Whit Monday",
"2018-08-01": "National Day",
+ "2018-09-08": "Knabenschiessen",
+ "2018-09-09": "Knabenschiessen",
+ "2018-09-10": "Knabenschiessen",
"2018-12-25": "Christmas Day",
"2018-12-26": "Saint Stephen's Day",
"2019-01-01": "New Year's Day",
"2019-01-02": "Saint Berchtold's Day",
+ "2019-04-15": "Sechsel\u00e4uten",
"2019-04-19": "Good Friday",
"2019-04-22": "Easter Monday",
"2019-05-01": "Labor Day",
"2019-05-30": "Ascension Day",
"2019-06-10": "Whit Monday",
"2019-08-01": "National Day",
+ "2019-09-07": "Knabenschiessen",
+ "2019-09-08": "Knabenschiessen",
+ "2019-09-09": "Knabenschiessen",
"2019-12-25": "Christmas Day",
"2019-12-26": "Saint Stephen's Day",
"2020-01-01": "New Year's Day",
"2020-01-02": "Saint Berchtold's Day",
"2020-04-10": "Good Friday",
"2020-04-13": "Easter Monday",
+ "2020-04-20": "Sechsel\u00e4uten",
"2020-05-01": "Labor Day",
"2020-05-21": "Ascension Day",
"2020-06-01": "Whit Monday",
"2020-08-01": "National Day",
+ "2020-09-12": "Knabenschiessen",
+ "2020-09-13": "Knabenschiessen",
+ "2020-09-14": "Knabenschiessen",
"2020-12-25": "Christmas Day",
"2020-12-26": "Saint Stephen's Day",
"2021-01-01": "New Year's Day",
"2021-01-02": "Saint Berchtold's Day",
"2021-04-02": "Good Friday",
"2021-04-05": "Easter Monday",
+ "2021-04-19": "Sechsel\u00e4uten",
"2021-05-01": "Labor Day",
"2021-05-13": "Ascension Day",
"2021-05-24": "Whit Monday",
"2021-08-01": "National Day",
+ "2021-09-11": "Knabenschiessen",
+ "2021-09-12": "Knabenschiessen",
+ "2021-09-13": "Knabenschiessen",
"2021-12-25": "Christmas Day",
"2021-12-26": "Saint Stephen's Day",
"2022-01-01": "New Year's Day",
"2022-01-02": "Saint Berchtold's Day",
"2022-04-15": "Good Friday",
"2022-04-18": "Easter Monday",
+ "2022-04-25": "Sechsel\u00e4uten",
"2022-05-01": "Labor Day",
"2022-05-26": "Ascension Day",
"2022-06-06": "Whit Monday",
"2022-08-01": "National Day",
+ "2022-09-10": "Knabenschiessen",
+ "2022-09-11": "Knabenschiessen",
+ "2022-09-12": "Knabenschiessen",
"2022-12-25": "Christmas Day",
"2022-12-26": "Saint Stephen's Day",
"2023-01-01": "New Year's Day",
"2023-01-02": "Saint Berchtold's Day",
"2023-04-07": "Good Friday",
"2023-04-10": "Easter Monday",
+ "2023-04-17": "Sechsel\u00e4uten",
"2023-05-01": "Labor Day",
"2023-05-18": "Ascension Day",
"2023-05-29": "Whit Monday",
"2023-08-01": "National Day",
+ "2023-09-09": "Knabenschiessen",
+ "2023-09-10": "Knabenschiessen",
+ "2023-09-11": "Knabenschiessen",
"2023-12-25": "Christmas Day",
"2023-12-26": "Saint Stephen's Day",
"2024-01-01": "New Year's Day",
"2024-01-02": "Saint Berchtold's Day",
"2024-03-29": "Good Friday",
"2024-04-01": "Easter Monday",
+ "2024-04-15": "Sechsel\u00e4uten",
"2024-05-01": "Labor Day",
"2024-05-09": "Ascension Day",
"2024-05-20": "Whit Monday",
"2024-08-01": "National Day",
+ "2024-09-07": "Knabenschiessen",
+ "2024-09-08": "Knabenschiessen",
+ "2024-09-09": "Knabenschiessen",
"2024-12-25": "Christmas Day",
"2024-12-26": "Saint Stephen's Day",
"2025-01-01": "New Year's Day",
"2025-01-02": "Saint Berchtold's Day",
"2025-04-18": "Good Friday",
"2025-04-21": "Easter Monday",
+ "2025-04-28": "Sechsel\u00e4uten",
"2025-05-01": "Labor Day",
"2025-05-29": "Ascension Day",
"2025-06-09": "Whit Monday",
"2025-08-01": "National Day",
+ "2025-09-13": "Knabenschiessen",
+ "2025-09-14": "Knabenschiessen",
+ "2025-09-15": "Knabenschiessen",
"2025-12-25": "Christmas Day",
"2025-12-26": "Saint Stephen's Day",
"2026-01-01": "New Year's Day",
"2026-01-02": "Saint Berchtold's Day",
"2026-04-03": "Good Friday",
"2026-04-06": "Easter Monday",
+ "2026-04-20": "Sechsel\u00e4uten",
"2026-05-01": "Labor Day",
"2026-05-14": "Ascension Day",
"2026-05-25": "Whit Monday",
"2026-08-01": "National Day",
+ "2026-09-12": "Knabenschiessen",
+ "2026-09-13": "Knabenschiessen",
+ "2026-09-14": "Knabenschiessen",
"2026-12-25": "Christmas Day",
"2026-12-26": "Saint Stephen's Day",
"2027-01-01": "New Year's Day",
"2027-01-02": "Saint Berchtold's Day",
"2027-03-26": "Good Friday",
"2027-03-29": "Easter Monday",
+ "2027-04-19": "Sechsel\u00e4uten",
"2027-05-01": "Labor Day",
"2027-05-06": "Ascension Day",
"2027-05-17": "Whit Monday",
"2027-08-01": "National Day",
+ "2027-09-11": "Knabenschiessen",
+ "2027-09-12": "Knabenschiessen",
+ "2027-09-13": "Knabenschiessen",
"2027-12-25": "Christmas Day",
"2027-12-26": "Saint Stephen's Day",
"2028-01-01": "New Year's Day",
"2028-01-02": "Saint Berchtold's Day",
"2028-04-14": "Good Friday",
"2028-04-17": "Easter Monday",
+ "2028-04-24": "Sechsel\u00e4uten",
"2028-05-01": "Labor Day",
"2028-05-25": "Ascension Day",
"2028-06-05": "Whit Monday",
"2028-08-01": "National Day",
+ "2028-09-09": "Knabenschiessen",
+ "2028-09-10": "Knabenschiessen",
+ "2028-09-11": "Knabenschiessen",
"2028-12-25": "Christmas Day",
"2028-12-26": "Saint Stephen's Day",
"2029-01-01": "New Year's Day",
"2029-01-02": "Saint Berchtold's Day",
"2029-03-30": "Good Friday",
"2029-04-02": "Easter Monday",
+ "2029-04-16": "Sechsel\u00e4uten",
"2029-05-01": "Labor Day",
"2029-05-10": "Ascension Day",
"2029-05-21": "Whit Monday",
"2029-08-01": "National Day",
+ "2029-09-08": "Knabenschiessen",
+ "2029-09-09": "Knabenschiessen",
+ "2029-09-10": "Knabenschiessen",
"2029-12-25": "Christmas Day",
"2029-12-26": "Saint Stephen's Day",
"2030-01-01": "New Year's Day",
"2030-01-02": "Saint Berchtold's Day",
+ "2030-04-15": "Sechsel\u00e4uten",
"2030-04-19": "Good Friday",
"2030-04-22": "Easter Monday",
"2030-05-01": "Labor Day",
"2030-05-30": "Ascension Day",
"2030-06-10": "Whit Monday",
"2030-08-01": "National Day",
+ "2030-09-07": "Knabenschiessen",
+ "2030-09-08": "Knabenschiessen",
+ "2030-09-09": "Knabenschiessen",
"2030-12-25": "Christmas Day",
"2030-12-26": "Saint Stephen's Day",
"2031-01-01": "New Year's Day",
"2031-01-02": "Saint Berchtold's Day",
"2031-04-11": "Good Friday",
"2031-04-14": "Easter Monday",
+ "2031-04-21": "Sechsel\u00e4uten",
"2031-05-01": "Labor Day",
"2031-05-22": "Ascension Day",
"2031-06-02": "Whit Monday",
"2031-08-01": "National Day",
+ "2031-09-13": "Knabenschiessen",
+ "2031-09-14": "Knabenschiessen",
+ "2031-09-15": "Knabenschiessen",
"2031-12-25": "Christmas Day",
"2031-12-26": "Saint Stephen's Day",
"2032-01-01": "New Year's Day",
"2032-01-02": "Saint Berchtold's Day",
"2032-03-26": "Good Friday",
"2032-03-29": "Easter Monday",
+ "2032-04-19": "Sechsel\u00e4uten",
"2032-05-01": "Labor Day",
"2032-05-06": "Ascension Day",
"2032-05-17": "Whit Monday",
"2032-08-01": "National Day",
+ "2032-09-11": "Knabenschiessen",
+ "2032-09-12": "Knabenschiessen",
+ "2032-09-13": "Knabenschiessen",
"2032-12-25": "Christmas Day",
"2032-12-26": "Saint Stephen's Day",
"2033-01-01": "New Year's Day",
"2033-01-02": "Saint Berchtold's Day",
"2033-04-15": "Good Friday",
"2033-04-18": "Easter Monday",
+ "2033-04-25": "Sechsel\u00e4uten",
"2033-05-01": "Labor Day",
"2033-05-26": "Ascension Day",
"2033-06-06": "Whit Monday",
"2033-08-01": "National Day",
+ "2033-09-10": "Knabenschiessen",
+ "2033-09-11": "Knabenschiessen",
+ "2033-09-12": "Knabenschiessen",
"2033-12-25": "Christmas Day",
"2033-12-26": "Saint Stephen's Day",
"2034-01-01": "New Year's Day",
"2034-01-02": "Saint Berchtold's Day",
"2034-04-07": "Good Friday",
"2034-04-10": "Easter Monday",
+ "2034-04-17": "Sechsel\u00e4uten",
"2034-05-01": "Labor Day",
"2034-05-18": "Ascension Day",
"2034-05-29": "Whit Monday",
"2034-08-01": "National Day",
+ "2034-09-09": "Knabenschiessen",
+ "2034-09-10": "Knabenschiessen",
+ "2034-09-11": "Knabenschiessen",
"2034-12-25": "Christmas Day",
"2034-12-26": "Saint Stephen's Day",
"2035-01-01": "New Year's Day",
"2035-01-02": "Saint Berchtold's Day",
"2035-03-23": "Good Friday",
"2035-03-26": "Easter Monday",
+ "2035-04-16": "Sechsel\u00e4uten",
"2035-05-01": "Labor Day",
"2035-05-03": "Ascension Day",
"2035-05-14": "Whit Monday",
"2035-08-01": "National Day",
+ "2035-09-08": "Knabenschiessen",
+ "2035-09-09": "Knabenschiessen",
+ "2035-09-10": "Knabenschiessen",
"2035-12-25": "Christmas Day",
"2035-12-26": "Saint Stephen's Day",
"2036-01-01": "New Year's Day",
"2036-01-02": "Saint Berchtold's Day",
"2036-04-11": "Good Friday",
"2036-04-14": "Easter Monday",
+ "2036-04-21": "Sechsel\u00e4uten",
"2036-05-01": "Labor Day",
"2036-05-22": "Ascension Day",
"2036-06-02": "Whit Monday",
"2036-08-01": "National Day",
+ "2036-09-13": "Knabenschiessen",
+ "2036-09-14": "Knabenschiessen",
+ "2036-09-15": "Knabenschiessen",
"2036-12-25": "Christmas Day",
"2036-12-26": "Saint Stephen's Day",
"2037-01-01": "New Year's Day",
"2037-01-02": "Saint Berchtold's Day",
"2037-04-03": "Good Friday",
"2037-04-06": "Easter Monday",
+ "2037-04-20": "Sechsel\u00e4uten",
"2037-05-01": "Labor Day",
"2037-05-14": "Ascension Day",
"2037-05-25": "Whit Monday",
"2037-08-01": "National Day",
+ "2037-09-12": "Knabenschiessen",
+ "2037-09-13": "Knabenschiessen",
+ "2037-09-14": "Knabenschiessen",
"2037-12-25": "Christmas Day",
"2037-12-26": "Saint Stephen's Day",
"2038-01-01": "New Year's Day",
"2038-01-02": "Saint Berchtold's Day",
+ "2038-04-19": "Sechsel\u00e4uten",
"2038-04-23": "Good Friday",
"2038-04-26": "Easter Monday",
"2038-05-01": "Labor Day",
"2038-06-03": "Ascension Day",
"2038-06-14": "Whit Monday",
"2038-08-01": "National Day",
+ "2038-09-11": "Knabenschiessen",
+ "2038-09-12": "Knabenschiessen",
+ "2038-09-13": "Knabenschiessen",
"2038-12-25": "Christmas Day",
"2038-12-26": "Saint Stephen's Day",
"2039-01-01": "New Year's Day",
"2039-01-02": "Saint Berchtold's Day",
"2039-04-08": "Good Friday",
"2039-04-11": "Easter Monday",
+ "2039-04-18": "Sechsel\u00e4uten",
"2039-05-01": "Labor Day",
"2039-05-19": "Ascension Day",
"2039-05-30": "Whit Monday",
"2039-08-01": "National Day",
+ "2039-09-10": "Knabenschiessen",
+ "2039-09-11": "Knabenschiessen",
+ "2039-09-12": "Knabenschiessen",
"2039-12-25": "Christmas Day",
"2039-12-26": "Saint Stephen's Day",
"2040-01-01": "New Year's Day",
"2040-01-02": "Saint Berchtold's Day",
"2040-03-30": "Good Friday",
"2040-04-02": "Easter Monday",
+ "2040-04-16": "Sechsel\u00e4uten",
"2040-05-01": "Labor Day",
"2040-05-10": "Ascension Day",
"2040-05-21": "Whit Monday",
"2040-08-01": "National Day",
+ "2040-09-08": "Knabenschiessen",
+ "2040-09-09": "Knabenschiessen",
+ "2040-09-10": "Knabenschiessen",
"2040-12-25": "Christmas Day",
"2040-12-26": "Saint Stephen's Day",
"2041-01-01": "New Year's Day",
"2041-01-02": "Saint Berchtold's Day",
+ "2041-04-15": "Sechsel\u00e4uten",
"2041-04-19": "Good Friday",
"2041-04-22": "Easter Monday",
"2041-05-01": "Labor Day",
"2041-05-30": "Ascension Day",
"2041-06-10": "Whit Monday",
"2041-08-01": "National Day",
+ "2041-09-07": "Knabenschiessen",
+ "2041-09-08": "Knabenschiessen",
+ "2041-09-09": "Knabenschiessen",
"2041-12-25": "Christmas Day",
"2041-12-26": "Saint Stephen's Day",
"2042-01-01": "New Year's Day",
"2042-01-02": "Saint Berchtold's Day",
"2042-04-04": "Good Friday",
"2042-04-07": "Easter Monday",
+ "2042-04-21": "Sechsel\u00e4uten",
"2042-05-01": "Labor Day",
"2042-05-15": "Ascension Day",
"2042-05-26": "Whit Monday",
"2042-08-01": "National Day",
+ "2042-09-13": "Knabenschiessen",
+ "2042-09-14": "Knabenschiessen",
+ "2042-09-15": "Knabenschiessen",
"2042-12-25": "Christmas Day",
"2042-12-26": "Saint Stephen's Day",
"2043-01-01": "New Year's Day",
"2043-01-02": "Saint Berchtold's Day",
"2043-03-27": "Good Friday",
"2043-03-30": "Easter Monday",
+ "2043-04-20": "Sechsel\u00e4uten",
"2043-05-01": "Labor Day",
"2043-05-07": "Ascension Day",
"2043-05-18": "Whit Monday",
"2043-08-01": "National Day",
+ "2043-09-12": "Knabenschiessen",
+ "2043-09-13": "Knabenschiessen",
+ "2043-09-14": "Knabenschiessen",
"2043-12-25": "Christmas Day",
"2043-12-26": "Saint Stephen's Day",
"2044-01-01": "New Year's Day",
"2044-01-02": "Saint Berchtold's Day",
"2044-04-15": "Good Friday",
"2044-04-18": "Easter Monday",
+ "2044-04-25": "Sechsel\u00e4uten",
"2044-05-01": "Labor Day",
"2044-05-26": "Ascension Day",
"2044-06-06": "Whit Monday",
"2044-08-01": "National Day",
+ "2044-09-10": "Knabenschiessen",
+ "2044-09-11": "Knabenschiessen",
+ "2044-09-12": "Knabenschiessen",
"2044-12-25": "Christmas Day",
"2044-12-26": "Saint Stephen's Day",
"2045-01-01": "New Year's Day",
"2045-01-02": "Saint Berchtold's Day",
"2045-04-07": "Good Friday",
"2045-04-10": "Easter Monday",
+ "2045-04-17": "Sechsel\u00e4uten",
"2045-05-01": "Labor Day",
"2045-05-18": "Ascension Day",
"2045-05-29": "Whit Monday",
"2045-08-01": "National Day",
+ "2045-09-09": "Knabenschiessen",
+ "2045-09-10": "Knabenschiessen",
+ "2045-09-11": "Knabenschiessen",
"2045-12-25": "Christmas Day",
"2045-12-26": "Saint Stephen's Day",
"2046-01-01": "New Year's Day",
"2046-01-02": "Saint Berchtold's Day",
"2046-03-23": "Good Friday",
"2046-03-26": "Easter Monday",
+ "2046-04-16": "Sechsel\u00e4uten",
"2046-05-01": "Labor Day",
"2046-05-03": "Ascension Day",
"2046-05-14": "Whit Monday",
"2046-08-01": "National Day",
+ "2046-09-08": "Knabenschiessen",
+ "2046-09-09": "Knabenschiessen",
+ "2046-09-10": "Knabenschiessen",
"2046-12-25": "Christmas Day",
"2046-12-26": "Saint Stephen's Day",
"2047-01-01": "New Year's Day",
"2047-01-02": "Saint Berchtold's Day",
"2047-04-12": "Good Friday",
"2047-04-15": "Easter Monday",
+ "2047-04-22": "Sechsel\u00e4uten",
"2047-05-01": "Labor Day",
"2047-05-23": "Ascension Day",
"2047-06-03": "Whit Monday",
"2047-08-01": "National Day",
+ "2047-09-07": "Knabenschiessen",
+ "2047-09-08": "Knabenschiessen",
+ "2047-09-09": "Knabenschiessen",
"2047-12-25": "Christmas Day",
"2047-12-26": "Saint Stephen's Day",
"2048-01-01": "New Year's Day",
"2048-01-02": "Saint Berchtold's Day",
"2048-04-03": "Good Friday",
"2048-04-06": "Easter Monday",
+ "2048-04-20": "Sechsel\u00e4uten",
"2048-05-01": "Labor Day",
"2048-05-14": "Ascension Day",
"2048-05-25": "Whit Monday",
"2048-08-01": "National Day",
+ "2048-09-12": "Knabenschiessen",
+ "2048-09-13": "Knabenschiessen",
+ "2048-09-14": "Knabenschiessen",
"2048-12-25": "Christmas Day",
"2048-12-26": "Saint Stephen's Day",
"2049-01-01": "New Year's Day",
"2049-01-02": "Saint Berchtold's Day",
"2049-04-16": "Good Friday",
"2049-04-19": "Easter Monday",
+ "2049-04-26": "Sechsel\u00e4uten",
"2049-05-01": "Labor Day",
"2049-05-27": "Ascension Day",
"2049-06-07": "Whit Monday",
"2049-08-01": "National Day",
+ "2049-09-11": "Knabenschiessen",
+ "2049-09-12": "Knabenschiessen",
+ "2049-09-13": "Knabenschiessen",
"2049-12-25": "Christmas Day",
"2049-12-26": "Saint Stephen's Day",
"2050-01-01": "New Year's Day",
"2050-01-02": "Saint Berchtold's Day",
"2050-04-08": "Good Friday",
"2050-04-11": "Easter Monday",
+ "2050-04-18": "Sechsel\u00e4uten",
"2050-05-01": "Labor Day",
"2050-05-19": "Ascension Day",
"2050-05-30": "Whit Monday",
"2050-08-01": "National Day",
+ "2050-09-10": "Knabenschiessen",
+ "2050-09-11": "Knabenschiessen",
+ "2050-09-12": "Knabenschiessen",
"2050-12-25": "Christmas Day",
"2050-12-26": "Saint Stephen's Day"
}
diff --git a/tests/countries/test_switzerland.py b/tests/countries/test_switzerland.py
index cbe8aac727..3ae3e1eed7 100644
--- a/tests/countries/test_switzerland.py
+++ b/tests/countries/test_switzerland.py
@@ -23,10 +23,14 @@ def setUpClass(cls):
years = range(1970, 2050)
super().setUpClass(Switzerland, years=years)
cls.subdiv_holidays = {
- subdiv: CH(subdiv=subdiv, years=years) for subdiv in CH.subdivisions
+ subdiv: Switzerland(subdiv=subdiv, years=years) for subdiv in CH.subdivisions
}
- cls.subdiv_holidays_optional = {
- subdiv: CH(categories=OPTIONAL, subdiv=subdiv, years=years)
+ cls.subdiv_half_day_holidays = {
+ subdiv: Switzerland(categories=HALF_DAY, subdiv=subdiv, years=years)
+ for subdiv in CH.subdivisions
+ }
+ cls.subdiv_optional_holidays = {
+ subdiv: Switzerland(categories=OPTIONAL, subdiv=subdiv, years=years)
for subdiv in CH.subdivisions
}
@@ -37,7 +41,7 @@ def test_all_holidays_present(self):
y_2018 = set()
for p in CH.subdivisions:
y_2018.update(
- CH(categories=(HALF_DAY, OPTIONAL, PUBLIC), years=2018, subdiv=p).values()
+ Switzerland(categories=(HALF_DAY, OPTIONAL, PUBLIC), years=2018, subdiv=p).values()
)
all_h = { # Holidays names in their chronological order.
"Neujahrstag",
@@ -48,6 +52,7 @@ def test_all_holidays_present(self):
"Näfelser Fahrt",
"Karfreitag",
"Ostermontag",
+ "Sechseläuten",
"Tag der Arbeit",
"Auffahrt",
"Pfingstmontag",
@@ -56,6 +61,7 @@ def test_all_holidays_present(self):
"Peter und Paul",
"Nationalfeiertag",
"Mariä Himmelfahrt",
+ "Knabenschiessen",
"Bettagsmontag",
"Bruder Klaus",
"Allerheiligen",
@@ -96,7 +102,7 @@ def test_berchtolds_day(self):
self.assertNoHoliday(holidays, (f"{year}-01-02" for year in range(1970, 2050)))
self.assertNoHolidayName(name, holidays)
- for subdiv, holidays in self.subdiv_holidays_optional.items():
+ for subdiv, holidays in self.subdiv_optional_holidays.items():
if subdiv in subdivs_optional:
self.assertHolidayName(
name, holidays, (f"{year}-01-02" for year in range(1970, 2050))
@@ -191,7 +197,7 @@ def test_nafels_ride(self):
self.assertNoHoliday(holidays, known_good)
self.assertNoHolidayName(name, holidays)
- self.assertNoHolidayName(name, CH(subdiv="GL", years=1834))
+ self.assertNoHolidayName(name, Switzerland(subdiv="GL", years=1834))
def test_good_friday(self):
name = "Karfreitag"
@@ -228,7 +234,7 @@ def test_good_friday(self):
self.assertNoHoliday(holidays, known_good)
self.assertNoHolidayName(name, holidays)
- for subdiv, holidays in self.subdiv_holidays_optional.items():
+ for subdiv, holidays in self.subdiv_optional_holidays.items():
if subdiv in subdivs_optional:
self.assertHolidayName(name, holidays, known_good)
else:
@@ -270,7 +276,7 @@ def test_easter_monday(self):
self.assertNoHoliday(holidays, known_good)
self.assertNoHolidayName(name, holidays)
- for subdiv, holidays in self.subdiv_holidays_optional.items():
+ for subdiv, holidays in self.subdiv_optional_holidays.items():
if subdiv in subdivs_optional:
self.assertHolidayName(name, holidays, known_good)
else:
@@ -294,11 +300,16 @@ def test_labor_day(self):
)
self.assertNoHolidayName(name, holidays)
- self.assertHolidayName(
- name,
- CH(categories=HALF_DAY, subdiv="SO", years=range(1970, 2050)),
- (f"{year}-05-01" for year in range(1970, 2050)),
- )
+ for subdiv, holidays in self.subdiv_half_day_holidays.items():
+ if subdiv == "SO":
+ self.assertHolidayName(
+ name, holidays, (f"{year}-05-01" for year in range(1970, 2050))
+ )
+ else:
+ self.assertNoHolidayName(
+ name, holidays, (f"{year}-05-01" for year in range(1970, 2050))
+ )
+ self.assertNoHolidayName(name, holidays)
def test_ascension_day(self):
name = "Auffahrt"
@@ -364,7 +375,7 @@ def test_whit_monday(self):
self.assertNoHoliday(holidays, known_good)
self.assertNoHolidayName(name, holidays)
- for subdiv, holidays in self.subdiv_holidays_optional.items():
+ for subdiv, holidays in self.subdiv_optional_holidays.items():
if subdiv in subdivs_optional:
self.assertHolidayName(name, holidays, known_good)
else:
@@ -597,7 +608,7 @@ def test_saint_stephens_day(self):
self.assertNoHoliday(holidays, (f"{year}-12-26" for year in range(1970, 2050)))
self.assertNoHolidayName(name, holidays)
- for subdiv, holidays in self.subdiv_holidays_optional.items():
+ for subdiv, holidays in self.subdiv_optional_holidays.items():
if subdiv in subdivs_optional:
self.assertHolidayName(
name, holidays, (f"{year}-12-26" for year in range(1970, 2050))
@@ -667,6 +678,89 @@ def test_restoration_day(self):
self.assertNoHoliday(holidays, (f"{year}-12-31" for year in range(1970, 2050)))
self.assertNoHolidayName(name, holidays)
+ def test_knabenschiessen(self):
+ name = "Knabenschiessen"
+
+ self.assertNoHolidayName(name)
+
+ for subdiv, holidays in self.subdiv_holidays.items():
+ if subdiv == "ZH":
+ self.assertHolidayName(
+ name,
+ holidays,
+ "2020-09-12",
+ "2020-09-13",
+ "2021-09-11",
+ "2021-09-12",
+ "2022-09-10",
+ "2022-09-11",
+ "2023-09-09",
+ "2023-09-10",
+ "2024-09-07",
+ "2024-09-08",
+ "2025-09-13",
+ "2025-09-14",
+ )
+ self.assertHolidayNameCount(name, 2, holidays, range(1970, 2050))
+ else:
+ self.assertNoHolidayName(name, holidays)
+
+ for subdiv, holidays in self.subdiv_half_day_holidays.items():
+ if subdiv == "ZH":
+ self.assertHolidayName(
+ name,
+ holidays,
+ "2020-09-14",
+ "2021-09-13",
+ "2022-09-12",
+ "2023-09-11",
+ "2024-09-09",
+ "2025-09-15",
+ )
+ self.assertHolidayName(name, holidays, range(1970, 2050))
+ else:
+ self.assertNoHolidayName(name, holidays)
+
+ self.assertNoHolidayName(name, Switzerland(subdiv="ZH", years=1898))
+
+ def test_sechselauten(self):
+ name = "Sechseläuten"
+
+ self.assertNoHolidayName(name)
+
+ for subdiv, holidays in self.subdiv_half_day_holidays.items():
+ if subdiv == "ZH":
+ self.assertHolidayName(
+ name,
+ holidays,
+ "2020-04-20",
+ "2021-04-19",
+ "2022-04-25",
+ "2023-04-17",
+ "2024-04-15",
+ "2025-04-28",
+ )
+ self.assertHolidayName(name, holidays, range(1970, 2050))
+ else:
+ self.assertNoHolidayName(name, holidays)
+
+ subdiv_zh_half_day_holidays = Switzerland(
+ categories=HALF_DAY, subdiv="ZH", years=range(1901, 1952)
+ )
+
+ self.assertHolidayName(
+ name,
+ subdiv_zh_half_day_holidays,
+ "1902-03-24",
+ "1903-03-23",
+ "1904-03-21",
+ "1949-03-21",
+ "1950-03-27",
+ "1951-03-26",
+ )
+ self.assertHolidayName(name, subdiv_zh_half_day_holidays, range(1902, 1952))
+ self.assertNoHolidayName(name, subdiv_zh_half_day_holidays, 1901)
+
def test_l10n_default(self):
self.assertLocalizedHolidays(
("2023-01-01", "Neujahrstag"),
@@ -677,6 +771,7 @@ def test_l10n_default(self):
("2023-04-07", "Karfreitag"),
("2023-04-10", "Ostermontag"),
("2023-04-13", "Näfelser Fahrt"),
+ ("2023-04-17", "Sechseläuten"),
("2023-05-01", "Tag der Arbeit"),
("2023-05-18", "Auffahrt"),
("2023-05-29", "Pfingstmontag"),
@@ -686,6 +781,9 @@ def test_l10n_default(self):
("2023-08-01", "Nationalfeiertag"),
("2023-08-15", "Mariä Himmelfahrt"),
("2023-09-07", "Genfer Bettag"),
+ ("2023-09-09", "Knabenschiessen"),
+ ("2023-09-10", "Knabenschiessen"),
+ ("2023-09-11", "Knabenschiessen"),
("2023-09-18", "Bettagsmontag"),
("2023-09-25", "Bruder Klaus"),
("2023-11-01", "Allerheiligen"),
@@ -706,6 +804,7 @@ def test_l10n_en_us(self):
("2023-04-07", "Good Friday"),
("2023-04-10", "Easter Monday"),
("2023-04-13", "Battle of Naefels Victory Day"),
+ ("2023-04-17", "Sechseläuten"),
("2023-05-01", "Labor Day"),
("2023-05-18", "Ascension Day"),
("2023-05-29", "Whit Monday"),
@@ -715,6 +814,9 @@ def test_l10n_en_us(self):
("2023-08-01", "National Day"),
("2023-08-15", "Assumption Day"),
("2023-09-07", "Genevan Fast"),
+ ("2023-09-09", "Knabenschiessen"),
+ ("2023-09-10", "Knabenschiessen"),
+ ("2023-09-11", "Knabenschiessen"),
("2023-09-18", "Prayer Monday"),
("2023-09-25", "Saint Nicholas of Flüe"),
("2023-11-01", "All Saints' Day"),
@@ -735,6 +837,7 @@ def test_l10n_fr(self):
("2023-04-07", "Vendredi saint"),
("2023-04-10", "Lundi de Pâques"),
("2023-04-13", "Fahrtsfest"),
+ ("2023-04-17", "Sechseläuten"),
("2023-05-01", "Fête du Travail"),
("2023-05-18", "Ascension"),
("2023-05-29", "Lundi de Pentecôte"),
@@ -744,6 +847,9 @@ def test_l10n_fr(self):
("2023-08-01", "Fête nationale"),
("2023-08-15", "Assomption"),
("2023-09-07", "Jeûne genevois"),
+ ("2023-09-09", "Knabenschiessen"),
+ ("2023-09-10", "Knabenschiessen"),
+ ("2023-09-11", "Knabenschiessen"),
("2023-09-18", "Lundi du Jeûne fédéral"),
("2023-09-25", "Fête de Saint-Nicolas-de-Flüe"),
("2023-11-01", "Toussaint"),
@@ -764,6 +870,7 @@ def test_l10n_it(self):
("2023-04-07", "Venerdì Santo"),
("2023-04-10", "Lunedì dell'Angelo"),
("2023-04-13", "Battaglia di Näfels"),
+ ("2023-04-17", "Sechseläuten"),
("2023-05-01", "Festa del lavoro"),
("2023-05-18", "Ascensione di Gesù"),
("2023-05-29", "Lunedì di Pentecoste"),
@@ -773,6 +880,9 @@ def test_l10n_it(self):
("2023-08-01", "Festa nazionale"),
("2023-08-15", "Assunzione di Maria"),
("2023-09-07", "Jeûne genevois"),
+ ("2023-09-09", "Knabenschiessen"),
+ ("2023-09-10", "Knabenschiessen"),
+ ("2023-09-11", "Knabenschiessen"),
("2023-09-18", "Digiuno Ginevrino"),
("2023-09-25", "Nicolao della Flüe"),
("2023-11-01", "Ognissanti"),
@@ -782,6 +892,39 @@ def test_l10n_it(self):
("2023-12-31", "Restauration genevoise"),
)
+ def test_l10n_th(self):
+ self.assertLocalizedHolidays(
+ "th",
+ ("2023-01-01", "วันขึ้นปีใหม่"),
+ ("2023-01-02", "วันสมโภชนักบุญแบร์กโทลด์"),
+ ("2023-01-06", "วันสมโภชพระคริสต์แสดงองค์"),
+ ("2023-03-01", "วันครบรอบการสถาปนาสาธารณรัฐนอยชาแตล"),
+ ("2023-03-19", "วันสมโภชนักบุญโยเซฟ"),
+ ("2023-04-07", "วันศุกร์ประเสริฐ"),
+ ("2023-04-10", "วันจันทร์อีสเตอร์"),
+ ("2023-04-13", "วันรำลึกชัยชนะยุทธการเนเฟลส์"),
+ ("2023-04-17", "เซ็กเซ่ะเล๊าเท่น"),
+ ("2023-05-01", "วันแรงงาน"),
+ ("2023-05-18", "วันสมโภชพระเยซูเจ้าเสด็จขึ้นสวรรค์"),
+ ("2023-05-29", "วันจันทร์หลังวันสมโภชพระจิตเจ้า"),
+ ("2023-06-08", "วันสมโภชพระคริสตวรกาย"),
+ ("2023-06-23", "วันประกาศเอกราชจูรา"),
+ ("2023-06-29", "วันสมโภชนักบุญเปโตรและเปาโล"),
+ ("2023-08-01", "วันชาติสวิตเซอร์แลนด์"),
+ ("2023-08-15", "วันสมโภชแม่พระรับเกียรติยกขึ้นสวรรค์"),
+ ("2023-09-07", "วันถือศีลอดเจนีวา"),
+ ("2023-09-09", "คนาเบนชิสเซน"),
+ ("2023-09-10", "คนาเบนชิสเซน"),
+ ("2023-09-11", "คนาเบนชิสเซน"),
+ ("2023-09-18", "วันจันทร์แห่งการอธิษฐาน"),
+ ("2023-09-25", "วันสมโภชนักบุญนิโคลัสแห่งฟลือเออ"),
+ ("2023-11-01", "วันสมโภชนักบุญทั้งหลาย"),
+ ("2023-12-08", "วันสมโภชแม่พระผู้ปฏิสนธินิรมล"),
+ ("2023-12-25", "วันคริสต์มาส"),
+ ("2023-12-26", "วันสมโภชนักบุญสเตเฟน"),
+ ("2023-12-31", "วันกอบกู้เอกราชสาธารณรัฐเจนีวา"),
+ )
+
def test_l10n_uk(self):
self.assertLocalizedHolidays(
"uk",
@@ -793,6 +936,7 @@ def test_l10n_uk(self):
("2023-04-07", "Страсна пʼятниця"),
("2023-04-10", "Великодній понеділок"),
("2023-04-13", "Свято перемоги під Нефельсом"),
+ ("2023-04-17", "Зексельйотен"),
("2023-05-01", "День праці"),
("2023-05-18", "Вознесіння Господнє"),
("2023-05-29", "День Святого Духа"),
@@ -802,6 +946,9 @@ def test_l10n_uk(self):
("2023-08-01", "Національне свято"),
("2023-08-15", "Внебовзяття Пресвятої Діви Марії"),
("2023-09-07", "Женевський піст"),
+ ("2023-09-09", "Кнабеншісен"),
+ ("2023-09-10", "Кнабеншісен"),
+ ("2023-09-11", "Кнабеншісен"),
("2023-09-18", "Молитовний понеділок"),
("2023-09-25", "День Святого Ніклауса з Флюе"),
("2023-11-01", "День усіх святих"),
diff --git a/tests/test_utils.py b/tests/test_utils.py
index 2b20cc098b..fde41d4ec6 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -12,6 +12,7 @@
import unittest
import warnings
+from collections import defaultdict
from datetime import date
from pathlib import Path
from unittest import mock
@@ -39,33 +40,33 @@ def test_country(self):
self.assertEqual(self.holidays.country, "US")
def test_country_single_year(self):
- h = country_holidays("US", years=2021)
- self.assertEqual(h.years, {2021})
+ test_holidays = country_holidays("US", years=2021)
+ self.assertEqual(test_holidays.years, {2021})
- def test_country_years(self):
- h = country_holidays("US", years=(2015, 2016))
- self.assertEqual(h.years, {2015, 2016})
+ def test_country_multiple_years(self):
+ test_holidays = country_holidays("US", years=(2015, 2021))
+ self.assertEqual(test_holidays.years, {2015, 2021})
- def test_country_state(self):
- h = country_holidays("US", subdiv="NY")
- self.assertEqual(h.subdiv, "NY")
+ def test_country_range_years(self):
+ test_holidays = country_holidays("US", years=range(2010, 2015))
+ self.assertEqual(test_holidays.years, set(range(2010, 2015)))
- def test_country_province(self):
- h = country_holidays("AU", subdiv="NT")
- self.assertEqual(h.subdiv, "NT")
+ def test_country_subdivision(self):
+ test_holidays = country_holidays("US", subdiv="NY")
+ self.assertEqual(test_holidays.subdiv, "NY")
- def test_exceptions(self):
- self.assertRaises(NotImplementedError, lambda: country_holidays("XXXX"))
- self.assertRaises(NotImplementedError, lambda: country_holidays("US", subdiv="XXXX"))
- self.assertRaises(NotImplementedError, lambda: country_holidays("US", subdiv="XXXX"))
+ def test_invalid_country_raises_not_implemented(self):
+ with self.assertRaises(NotImplementedError):
+ country_holidays("XXXX")
+
+ def test_invalid_country_subdivision_raises_not_implemented(self):
+ with self.assertRaises(NotImplementedError):
+ country_holidays("US", subdiv="XXXX")
def test_country_holiday_class_deprecation(self):
- with warnings.catch_warnings(record=True) as ctx:
- warnings.simplefilter("always")
+ with self.assertWarns(DeprecationWarning) as ctx:
CountryHoliday("IT")
- warning = ctx[0]
- self.assertTrue(issubclass(warning.category, DeprecationWarning))
- self.assertIn("CountryHoliday is deprecated", str(warning.message))
+ self.assertIn("CountryHoliday is deprecated", str(ctx.warning))
class TestFinancialHolidays(unittest.TestCase):
@@ -76,29 +77,32 @@ def test_market(self):
self.assertEqual(self.holidays.market, "XNYS")
def test_market_single_year(self):
- h = financial_holidays("XNYS", years=2021)
- self.assertEqual(h.years, {2021})
+ test_holidays = financial_holidays("XNYS", years=2021)
+ self.assertEqual(test_holidays.years, {2021})
+
+ def test_market_multiple_years(self):
+ test_holidays = financial_holidays("XNYS", years=(2015, 2021))
+ self.assertEqual(test_holidays.years, {2015, 2021})
+
+ def test_market_range_years(self):
+ test_holidays = financial_holidays("XNYS", years=range(2010, 2015))
+ self.assertEqual(test_holidays.years, set(range(2010, 2015)))
- def test_market_years(self):
- h = financial_holidays("XNYS", years=(2015, 2016))
- self.assertEqual(h.years, {2015, 2016})
+ def test_invalid_market_raises_not_implemented(self):
+ with self.assertRaises(NotImplementedError):
+ financial_holidays("XXXX")
- def test_exceptions(self):
- self.assertRaises(NotImplementedError, lambda: financial_holidays("XXXX"))
- self.assertRaises(NotImplementedError, lambda: financial_holidays("XNYS", subdiv="XXXX"))
+ def test_invalid_market_subdivision_raises_not_implemented(self):
+ with self.assertRaises(NotImplementedError):
+ financial_holidays("XNYS", subdiv="XXXX")
class TestAllInSameYear(unittest.TestCase):
- """Test that only holidays in the year(s) requested are returned."""
+ """Ensure only holidays in the year(s) requested are returned."""
years = set(range(1950, 2051))
- @pytest.mark.skipif(
- PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION,
- reason="Run once on the latest Python version only",
- )
- @mock.patch("pathlib.Path.rglob", return_value=())
- def test_all_countries(self, unused_rglob_mock):
+ def _check_holidays_years(self, entity_func, entity_list):
"""
Only holidays in the year(s) requested should be returned. This
ensures that we avoid triggering a "RuntimeError: dictionary changed
@@ -108,36 +112,33 @@ def test_all_countries(self, unused_rglob_mock):
we only run it once on the latest Python version.
"""
warnings.simplefilter("ignore")
-
- for country in list_supported_countries():
- for year in self.years:
- for dt in country_holidays(country, years=year):
- self.assertEqual(dt.year, year)
- self.assertEqual(type(dt), date)
- self.assertEqual(self.years, country_holidays(country, years=self.years).years)
+ for entity in entity_list:
+ with self.subTest(entity=entity):
+ # Check each year individually
+ for year in self.years:
+ for dt in entity_func(entity, years=year):
+ self.assertEqual(dt.year, year)
+ self.assertIsInstance(dt, date)
+
+ # Check full range at once
+ all_holidays = entity_func(entity, years=self.years)
+ self.assertEqual(all_holidays.years, self.years)
@pytest.mark.skipif(
PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION,
reason="Run once on the latest Python version only",
)
@mock.patch("pathlib.Path.rglob", return_value=())
- def test_all_financial(self, unused_rglob_mock):
- """
- Only holidays in the year(s) requested should be returned. This
- ensures that we avoid triggering a "RuntimeError: dictionary changed
- size during iteration" error.
-
- This is logic test and not a code compatibility test, so for expediency
- we only run it once on the latest Python version.
- """
- warnings.simplefilter("ignore")
+ def test_all_countries(self, _unused_mock):
+ self._check_holidays_years(country_holidays, list_supported_countries())
- for market in list_supported_financial():
- for year in self.years:
- for dt in financial_holidays(market, years=year):
- self.assertEqual(dt.year, year)
- self.assertEqual(type(dt), date)
- self.assertEqual(self.years, financial_holidays(market, years=self.years).years)
+ @pytest.mark.skipif(
+ PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION,
+ reason="Run once on the latest Python version only",
+ )
+ @mock.patch("pathlib.Path.rglob", return_value=())
+ def test_all_financial(self, _unused_mock):
+ self._check_holidays_years(financial_holidays, list_supported_financial())
class TestListLocalizedEntities(unittest.TestCase):
@@ -145,40 +146,32 @@ def assertLocalizedEntities(self, localized_entities, supported_entities): # no
tests_dir = Path(__file__).parent
locale_dir = tests_dir.parent / "holidays" / "locale"
+ # Collect `` part from
+ # holidays/locale//LC_MESSAGES/.mo.
+ entity_to_languages = defaultdict(list)
+ for path in locale_dir.rglob("*.mo"):
+ entity_to_languages[path.stem].append(path.parts[-3])
+
for entity_code in supported_entities.keys():
- actual_languages = sorted(
- # Collect `` part from
- # holidays/locale//LC_MESSAGES/.mo.
- path.parts[-3]
- for path in Path(locale_dir).rglob(f"{entity_code}.mo")
- )
+ actual_languages = sorted(entity_to_languages.get(entity_code, []))
expected_languages = localized_entities.get(entity_code, [])
self.assertEqual(
actual_languages,
expected_languages,
- f"The supported languages for {entity_code} don't match "
- f"its actual languages: "
+ f"The supported languages for {entity_code} don't match its actual languages: "
f"{set(actual_languages).difference(set(expected_languages))}",
)
entity = getattr(holidays, entity_code)
-
self.assertEqual(
list(entity.supported_languages),
expected_languages,
f"The supported languages for {entity_code} don't match "
"its `supported_languages`.",
)
- self.assertEqual(
- actual_languages,
- expected_languages,
- f"Actual and expected locales differ for {entity_code}: "
- f"{set(actual_languages).difference(set(expected_languages))}",
- )
if expected_languages:
- self.assertIsInstance(expected_languages, list, entity_code)
self.assertIn(
entity.default_language,
expected_languages,
@@ -201,30 +194,28 @@ class TestListSupportedEntities(unittest.TestCase):
def test_list_supported_countries(self):
supported_countries = list_supported_countries(include_aliases=False)
- self.assertIn("AR", supported_countries)
- self.assertIn("CA", supported_countries["US"])
- self.assertIn("IM", supported_countries)
- self.assertIn("ZA", supported_countries)
+ for country in ("AR", "IM", "ZA"):
+ self.assertIn(country, supported_countries)
us_subdivisions = supported_countries["US"]
self.assertIn("CA", us_subdivisions)
self.assertIsInstance(us_subdivisions, list)
- countries_files = [
- path for path in Path("holidays/countries").glob("*.py") if path.stem != "__init__"
- ]
- self.assertEqual(len(countries_files), len(supported_countries))
+ countries_count = sum(
+ 1 for path in Path("holidays/countries").glob("*.py") if path.stem != "__init__"
+ )
+ self.assertEqual(countries_count, len(supported_countries))
def test_list_supported_financial(self):
supported_financial = list_supported_financial(include_aliases=False)
- for code in ("BVMF", "IFEU", "XECB", "XNYS"):
- self.assertIn(code, supported_financial)
+ for market in ("BVMF", "IFEU", "XECB", "XNYS"):
+ self.assertIn(market, supported_financial)
- xnys = supported_financial["XNYS"]
- self.assertIsInstance(xnys, list)
+ xnys_subdivisions = supported_financial.get("XNYS", [])
+ self.assertIsInstance(xnys_subdivisions, list)
- financial_files = [
- path for path in Path("holidays/financial").glob("*.py") if path.stem != "__init__"
- ]
- self.assertEqual(len(financial_files), len(supported_financial))
+ financial_count = sum(
+ 1 for path in Path("holidays/financial").glob("*.py") if path.stem != "__init__"
+ )
+ self.assertEqual(financial_count, len(supported_financial))
From 83a1c8b7746a0b92ca93d1c34dfdb9f33fb508fd Mon Sep 17 00:00:00 2001
From: PPsyrius <19505219+PPsyrius@users.noreply.github.com>
Date: Sat, 4 Oct 2025 12:17:48 +0700
Subject: [PATCH 2/8] =?UTF-8?q?Remove=20unrelated=20changes,=20fill=20in?=
=?UTF-8?q?=20Sechsel=C3=A4uten's=20test=20year=20gaps?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
tests/countries/test_switzerland.py | 5 +-
tests/test_utils.py | 171 +++++++++++++++-------------
2 files changed, 93 insertions(+), 83 deletions(-)
diff --git a/tests/countries/test_switzerland.py b/tests/countries/test_switzerland.py
index 3ae3e1eed7..3c961ed7e8 100644
--- a/tests/countries/test_switzerland.py
+++ b/tests/countries/test_switzerland.py
@@ -745,7 +745,7 @@ def test_sechselauten(self):
self.assertNoHolidayName(name, holidays)
subdiv_zh_half_day_holidays = Switzerland(
- categories=HALF_DAY, subdiv="ZH", years=range(1901, 1952)
+ categories=HALF_DAY, subdiv="ZH", years=range(1901, 1970)
)
self.assertHolidayName(
@@ -757,8 +757,9 @@ def test_sechselauten(self):
"1949-03-21",
"1950-03-27",
"1951-03-26",
+ "1952-04-21",
)
- self.assertHolidayName(name, subdiv_zh_half_day_holidays, range(1902, 1952))
+ self.assertHolidayName(name, subdiv_zh_half_day_holidays, range(1902, 1970))
self.assertNoHolidayName(name, subdiv_zh_half_day_holidays, 1901)
def test_l10n_default(self):
diff --git a/tests/test_utils.py b/tests/test_utils.py
index fde41d4ec6..b01adda0a8 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -12,7 +12,6 @@
import unittest
import warnings
-from collections import defaultdict
from datetime import date
from pathlib import Path
from unittest import mock
@@ -40,33 +39,33 @@ def test_country(self):
self.assertEqual(self.holidays.country, "US")
def test_country_single_year(self):
- test_holidays = country_holidays("US", years=2021)
- self.assertEqual(test_holidays.years, {2021})
+ h = country_holidays("US", years=2021)
+ self.assertEqual(h.years, {2021})
- def test_country_multiple_years(self):
- test_holidays = country_holidays("US", years=(2015, 2021))
- self.assertEqual(test_holidays.years, {2015, 2021})
+ def test_country_years(self):
+ h = country_holidays("US", years=(2015, 2016))
+ self.assertEqual(h.years, {2015, 2016})
- def test_country_range_years(self):
- test_holidays = country_holidays("US", years=range(2010, 2015))
- self.assertEqual(test_holidays.years, set(range(2010, 2015)))
+ def test_country_state(self):
+ h = country_holidays("US", subdiv="NY")
+ self.assertEqual(h.subdiv, "NY")
- def test_country_subdivision(self):
- test_holidays = country_holidays("US", subdiv="NY")
- self.assertEqual(test_holidays.subdiv, "NY")
+ def test_country_province(self):
+ h = country_holidays("AU", subdiv="NT")
+ self.assertEqual(h.subdiv, "NT")
- def test_invalid_country_raises_not_implemented(self):
- with self.assertRaises(NotImplementedError):
- country_holidays("XXXX")
-
- def test_invalid_country_subdivision_raises_not_implemented(self):
- with self.assertRaises(NotImplementedError):
- country_holidays("US", subdiv="XXXX")
+ def test_exceptions(self):
+ self.assertRaises(NotImplementedError, lambda: country_holidays("XXXX"))
+ self.assertRaises(NotImplementedError, lambda: country_holidays("US", subdiv="XXXX"))
+ self.assertRaises(NotImplementedError, lambda: country_holidays("US", subdiv="XXXX"))
def test_country_holiday_class_deprecation(self):
- with self.assertWarns(DeprecationWarning) as ctx:
+ with warnings.catch_warnings(record=True) as ctx:
+ warnings.simplefilter("always")
CountryHoliday("IT")
- self.assertIn("CountryHoliday is deprecated", str(ctx.warning))
+ warning = ctx[0]
+ self.assertTrue(issubclass(warning.category, DeprecationWarning))
+ self.assertIn("CountryHoliday is deprecated", str(warning.message))
class TestFinancialHolidays(unittest.TestCase):
@@ -77,32 +76,29 @@ def test_market(self):
self.assertEqual(self.holidays.market, "XNYS")
def test_market_single_year(self):
- test_holidays = financial_holidays("XNYS", years=2021)
- self.assertEqual(test_holidays.years, {2021})
-
- def test_market_multiple_years(self):
- test_holidays = financial_holidays("XNYS", years=(2015, 2021))
- self.assertEqual(test_holidays.years, {2015, 2021})
-
- def test_market_range_years(self):
- test_holidays = financial_holidays("XNYS", years=range(2010, 2015))
- self.assertEqual(test_holidays.years, set(range(2010, 2015)))
+ h = financial_holidays("XNYS", years=2021)
+ self.assertEqual(h.years, {2021})
- def test_invalid_market_raises_not_implemented(self):
- with self.assertRaises(NotImplementedError):
- financial_holidays("XXXX")
+ def test_market_years(self):
+ h = financial_holidays("XNYS", years=(2015, 2016))
+ self.assertEqual(h.years, {2015, 2016})
- def test_invalid_market_subdivision_raises_not_implemented(self):
- with self.assertRaises(NotImplementedError):
- financial_holidays("XNYS", subdiv="XXXX")
+ def test_exceptions(self):
+ self.assertRaises(NotImplementedError, lambda: financial_holidays("XXXX"))
+ self.assertRaises(NotImplementedError, lambda: financial_holidays("XNYS", subdiv="XXXX"))
class TestAllInSameYear(unittest.TestCase):
- """Ensure only holidays in the year(s) requested are returned."""
+ """Test that only holidays in the year(s) requested are returned."""
years = set(range(1950, 2051))
- def _check_holidays_years(self, entity_func, entity_list):
+ @pytest.mark.skipif(
+ PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION,
+ reason="Run once on the latest Python version only",
+ )
+ @mock.patch("pathlib.Path.rglob", return_value=())
+ def test_all_countries(self, unused_rglob_mock):
"""
Only holidays in the year(s) requested should be returned. This
ensures that we avoid triggering a "RuntimeError: dictionary changed
@@ -112,33 +108,36 @@ def _check_holidays_years(self, entity_func, entity_list):
we only run it once on the latest Python version.
"""
warnings.simplefilter("ignore")
- for entity in entity_list:
- with self.subTest(entity=entity):
- # Check each year individually
- for year in self.years:
- for dt in entity_func(entity, years=year):
- self.assertEqual(dt.year, year)
- self.assertIsInstance(dt, date)
-
- # Check full range at once
- all_holidays = entity_func(entity, years=self.years)
- self.assertEqual(all_holidays.years, self.years)
- @pytest.mark.skipif(
- PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION,
- reason="Run once on the latest Python version only",
- )
- @mock.patch("pathlib.Path.rglob", return_value=())
- def test_all_countries(self, _unused_mock):
- self._check_holidays_years(country_holidays, list_supported_countries())
+ for country in list_supported_countries():
+ for year in self.years:
+ for dt in country_holidays(country, years=year):
+ self.assertEqual(dt.year, year)
+ self.assertEqual(type(dt), date)
+ self.assertEqual(self.years, country_holidays(country, years=self.years).years)
@pytest.mark.skipif(
PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION,
reason="Run once on the latest Python version only",
)
@mock.patch("pathlib.Path.rglob", return_value=())
- def test_all_financial(self, _unused_mock):
- self._check_holidays_years(financial_holidays, list_supported_financial())
+ def test_all_financial(self, unused_rglob_mock):
+ """
+ Only holidays in the year(s) requested should be returned. This
+ ensures that we avoid triggering a "RuntimeError: dictionary changed
+ size during iteration" error.
+
+ This is logic test and not a code compatibility test, so for expediency
+ we only run it once on the latest Python version.
+ """
+ warnings.simplefilter("ignore")
+
+ for market in list_supported_financial():
+ for year in self.years:
+ for dt in financial_holidays(market, years=year):
+ self.assertEqual(dt.year, year)
+ self.assertEqual(type(dt), date)
+ self.assertEqual(self.years, financial_holidays(market, years=self.years).years)
class TestListLocalizedEntities(unittest.TestCase):
@@ -146,32 +145,40 @@ def assertLocalizedEntities(self, localized_entities, supported_entities): # no
tests_dir = Path(__file__).parent
locale_dir = tests_dir.parent / "holidays" / "locale"
- # Collect `` part from
- # holidays/locale//LC_MESSAGES/.mo.
- entity_to_languages = defaultdict(list)
- for path in locale_dir.rglob("*.mo"):
- entity_to_languages[path.stem].append(path.parts[-3])
-
for entity_code in supported_entities.keys():
- actual_languages = sorted(entity_to_languages.get(entity_code, []))
+ actual_languages = sorted(
+ # Collect `` part from
+ # holidays/locale//LC_MESSAGES/.mo.
+ path.parts[-3]
+ for path in Path(locale_dir).rglob(f"{entity_code}.mo")
+ )
expected_languages = localized_entities.get(entity_code, [])
self.assertEqual(
actual_languages,
expected_languages,
- f"The supported languages for {entity_code} don't match its actual languages: "
+ f"The supported languages for {entity_code} don't match "
+ f"its actual languages: "
f"{set(actual_languages).difference(set(expected_languages))}",
)
entity = getattr(holidays, entity_code)
+
self.assertEqual(
list(entity.supported_languages),
expected_languages,
f"The supported languages for {entity_code} don't match "
"its `supported_languages`.",
)
+ self.assertEqual(
+ actual_languages,
+ expected_languages,
+ f"Actual and expected locales differ for {entity_code}: "
+ f"{set(actual_languages).difference(set(expected_languages))}",
+ )
if expected_languages:
+ self.assertIsInstance(expected_languages, list, entity_code)
self.assertIn(
entity.default_language,
expected_languages,
@@ -194,28 +201,30 @@ class TestListSupportedEntities(unittest.TestCase):
def test_list_supported_countries(self):
supported_countries = list_supported_countries(include_aliases=False)
- for country in ("AR", "IM", "ZA"):
- self.assertIn(country, supported_countries)
+ self.assertIn("AR", supported_countries)
+ self.assertIn("CA", supported_countries["US"])
+ self.assertIn("IM", supported_countries)
+ self.assertIn("ZA", supported_countries)
us_subdivisions = supported_countries["US"]
self.assertIn("CA", us_subdivisions)
self.assertIsInstance(us_subdivisions, list)
- countries_count = sum(
- 1 for path in Path("holidays/countries").glob("*.py") if path.stem != "__init__"
- )
- self.assertEqual(countries_count, len(supported_countries))
+ countries_files = [
+ path for path in Path("holidays/countries").glob("*.py") if path.stem != "__init__"
+ ]
+ self.assertEqual(len(countries_files), len(supported_countries))
def test_list_supported_financial(self):
supported_financial = list_supported_financial(include_aliases=False)
- for market in ("BVMF", "IFEU", "XECB", "XNYS"):
- self.assertIn(market, supported_financial)
+ for code in ("BVMF", "IFEU", "XECB", "XNYS"):
+ self.assertIn(code, supported_financial)
- xnys_subdivisions = supported_financial.get("XNYS", [])
- self.assertIsInstance(xnys_subdivisions, list)
+ xnys = supported_financial["XNYS"]
+ self.assertIsInstance(xnys, list)
- financial_count = sum(
- 1 for path in Path("holidays/financial").glob("*.py") if path.stem != "__init__"
- )
- self.assertEqual(financial_count, len(supported_financial))
+ financial_files = [
+ path for path in Path("holidays/financial").glob("*.py") if path.stem != "__init__"
+ ]
+ self.assertEqual(len(financial_files), len(supported_financial))
From 6d2a8b67c6615eec832cecd07c79c01a5101ea3a Mon Sep 17 00:00:00 2001
From: PPsyrius <19505219+PPsyrius@users.noreply.github.com>
Date: Sat, 4 Oct 2025 13:11:01 +0700
Subject: [PATCH 3/8] Add 1898 no `HALF_DAY` check for Knabenschiessen
---
tests/countries/test_switzerland.py | 1 +
tests/test_utils.py | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/tests/countries/test_switzerland.py b/tests/countries/test_switzerland.py
index 3c961ed7e8..a8b6c8a007 100644
--- a/tests/countries/test_switzerland.py
+++ b/tests/countries/test_switzerland.py
@@ -722,6 +722,7 @@ def test_knabenschiessen(self):
self.assertNoHolidayName(name, holidays)
self.assertNoHolidayName(name, Switzerland(subdiv="ZH", years=1898))
+ self.assertNoHolidayName(name, Switzerland(categories=HALF_DAY, subdiv="ZH", years=1898))
def test_sechselauten(self):
name = "Sechseläuten"
diff --git a/tests/test_utils.py b/tests/test_utils.py
index b01adda0a8..2b20cc098b 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -114,7 +114,7 @@ def test_all_countries(self, unused_rglob_mock):
for dt in country_holidays(country, years=year):
self.assertEqual(dt.year, year)
self.assertEqual(type(dt), date)
- self.assertEqual(self.years, country_holidays(country, years=self.years).years)
+ self.assertEqual(self.years, country_holidays(country, years=self.years).years)
@pytest.mark.skipif(
PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION,
@@ -137,7 +137,7 @@ def test_all_financial(self, unused_rglob_mock):
for dt in financial_holidays(market, years=year):
self.assertEqual(dt.year, year)
self.assertEqual(type(dt), date)
- self.assertEqual(self.years, financial_holidays(market, years=self.years).years)
+ self.assertEqual(self.years, financial_holidays(market, years=self.years).years)
class TestListLocalizedEntities(unittest.TestCase):
From 0d9f6e72c89c18226630b3f5152f49d88ce79622 Mon Sep 17 00:00:00 2001
From: PPsyrius <19505219+PPsyrius@users.noreply.github.com>
Date: Wed, 8 Oct 2025 13:20:03 +0700
Subject: [PATCH 4/8] Add Betriebsferientage (BFT) as `OPTIONAL` holidays,
other `HALF_DAY` holidays
---
holidays/countries/switzerland.py | 48 +-
holidays/locale/de/LC_MESSAGES/CH.po | 29 +-
holidays/locale/en_US/LC_MESSAGES/CH.po | 28 +-
holidays/locale/fr/LC_MESSAGES/CH.po | 29 +-
holidays/locale/it/LC_MESSAGES/CH.po | 37 +-
holidays/locale/th/LC_MESSAGES/CH.po | 28 +-
holidays/locale/uk/LC_MESSAGES/CH.po | 29 +-
snapshots/countries/CH_ZH.json | 738 +++++++++++++++++++++++-
tests/countries/test_switzerland.py | 342 +++++++++--
9 files changed, 1226 insertions(+), 82 deletions(-)
diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py
index 959d183929..c1f7bca57e 100644
--- a/holidays/countries/switzerland.py
+++ b/holidays/countries/switzerland.py
@@ -20,6 +20,7 @@
MON_ONLY,
TUE_TO_NONE,
SAT_TO_NONE,
+ SUN_TO_NONE,
ALL_TO_NEXT_MON,
)
@@ -30,6 +31,9 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays)
References:
*
*
+ *
+ *
+ *
*
*
*
@@ -730,7 +734,11 @@ def _populate_subdiv_zh_public_holidays(self):
# Saint Stephen's Day.
self._add_christmas_day_two(tr("Stephanstag"))
- def _populate_subdiv_zh_half_day_holidays(self):
+ def _populate_subdiv_zh_common_holidays(self):
+ """Populate list of holidays observed by both `HALF_DAY` and `OPTIONAL` categories."""
+ # Day before Good Friday.
+ self._add_holy_thursday(tr("Vortag vor Karfreitag"))
+
if self._year >= 1902:
# Sechseläuten.
name = tr("Sechseläuten")
@@ -748,10 +756,48 @@ def _populate_subdiv_zh_half_day_holidays(self):
show_observed_label=False,
)
+ # Christmas Eve.
+ self._add_christmas_eve(tr("Heiligabend"))
+
+ # New Year's Eve.
+ self._add_new_years_eve(tr("Vortag vor Neujahr"))
+
+ def _populate_subdiv_zh_half_day_holidays(self):
+ self._populate_subdiv_zh_common_holidays()
+
if self._year >= 1899:
# Knabenschiessen.
self._add_holiday_1_day_past_2nd_sun_of_sep(tr("Knabenschiessen"))
+ # Day before Ascension Day.
+ self._add_holiday_38_days_past_easter(tr("Vortag vor Auffahrt"))
+
+ def _populate_subdiv_zh_optional_holidays(self):
+ self._populate_subdiv_zh_common_holidays()
+
+ # This is only granted if end-year bridge holidays <= 2.
+ if (
+ self._is_tuesday(self._christmas_day)
+ or self._is_wednesday(self._christmas_day)
+ or self._is_thursday(self._christmas_day)
+ ):
+ # Bridge Holiday for Ascension Day.
+ self._add_holiday_40_days_past_easter(tr("Brückentag nach Auffahrt"))
+
+ # This is only granted if end-year bridge holidays <= 3.
+ if self._year >= 1899 and not (
+ self._is_saturday(self._christmas_day) or self._is_sunday(self._christmas_day)
+ ):
+ # Knabenschiessen.
+ self._add_holiday_1_day_past_2nd_sun_of_sep(tr("Knabenschiessen"))
+
+ # Bridge Holiday.
+ name = tr("Brückentag")
+ self._add_observed(self._add_holiday_dec_27(name), rule=SAT_TO_NONE + SUN_TO_NONE)
+ self._add_observed(self._add_holiday_dec_28(name), rule=SAT_TO_NONE + SUN_TO_NONE)
+ self._add_observed(self._add_holiday_dec_29(name), rule=SAT_TO_NONE + SUN_TO_NONE)
+ self._add_observed(self._add_holiday_dec_30(name), rule=SAT_TO_NONE + SUN_TO_NONE)
+
@property
def _vernal_equinox_date(self) -> tuple[int, int]:
"""Return the Vernal Equinox date for Zurich (1902–1951)."""
diff --git a/holidays/locale/de/LC_MESSAGES/CH.po b/holidays/locale/de/LC_MESSAGES/CH.po
index 16af391e77..e8c9cbcd79 100644
--- a/holidays/locale/de/LC_MESSAGES/CH.po
+++ b/holidays/locale/de/LC_MESSAGES/CH.po
@@ -11,11 +11,12 @@
# License: MIT (see LICENSE file)
#
# Switzerland holidays.
+#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.82\n"
+"Project-Id-Version: Holidays 0.83\n"
"POT-Creation-Date: 2023-04-10 15:41+0300\n"
-"PO-Revision-Date: 2025-10-04 11:30+0700\n"
+"PO-Revision-Date: 2025-10-08 13:09+0700\n"
"Last-Translator: PPsyrius \n"
"Language-Team: Holidays Localization Team\n"
"Language: de\n"
@@ -126,6 +127,30 @@ msgstr ""
msgid "Knabenschiessen"
msgstr ""
+#. Day before Good Friday.
+msgid "Vortag vor Karfreitag"
+msgstr ""
+
#. Sechseläuten.
msgid "Sechseläuten"
msgstr ""
+
+#. Christmas Eve.
+msgid "Heiligabend"
+msgstr ""
+
+#. New Year's Eve.
+msgid "Vortag vor Neujahr"
+msgstr ""
+
+#. Day before Ascension Day.
+msgid "Vortag vor Auffahrt"
+msgstr ""
+
+#. Bridge Holiday for Ascension Day.
+msgid "Brückentag nach Auffahrt"
+msgstr ""
+
+#. Bridge Holiday.
+msgid "Brückentag"
+msgstr ""
diff --git a/holidays/locale/en_US/LC_MESSAGES/CH.po b/holidays/locale/en_US/LC_MESSAGES/CH.po
index b8cd1ef39b..7ed87ff50b 100644
--- a/holidays/locale/en_US/LC_MESSAGES/CH.po
+++ b/holidays/locale/en_US/LC_MESSAGES/CH.po
@@ -14,9 +14,9 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.82\n"
+"Project-Id-Version: Holidays 0.83\n"
"POT-Creation-Date: 2023-04-10 15:41+0300\n"
-"PO-Revision-Date: 2025-10-04 11:31+0700\n"
+"PO-Revision-Date: 2025-10-08 13:09+0700\n"
"Last-Translator: PPsyrius \n"
"Language-Team: Holidays Localization Team\n"
"Language: en_US\n"
@@ -127,6 +127,30 @@ msgstr "Prayer Monday"
msgid "Knabenschiessen"
msgstr "Knabenschiessen"
+#. Day before Good Friday.
+msgid "Vortag vor Karfreitag"
+msgstr "Day before Good Friday"
+
#. Sechseläuten.
msgid "Sechseläuten"
msgstr "Sechseläuten"
+
+#. Christmas Eve.
+msgid "Heiligabend"
+msgstr "Christmas Eve"
+
+#. New Year's Eve.
+msgid "Vortag vor Neujahr"
+msgstr "New Year's Eve"
+
+#. Day before Ascension Day.
+msgid "Vortag vor Auffahrt"
+msgstr "Day before Ascension Day"
+
+#. Bridge Holiday for Ascension Day.
+msgid "Brückentag nach Auffahrt"
+msgstr "Bridge Holiday for Ascension Day"
+
+#. Bridge Holiday.
+msgid "Brückentag"
+msgstr "Bridge Holiday"
diff --git a/holidays/locale/fr/LC_MESSAGES/CH.po b/holidays/locale/fr/LC_MESSAGES/CH.po
index 90606f33d1..d0bbef752b 100644
--- a/holidays/locale/fr/LC_MESSAGES/CH.po
+++ b/holidays/locale/fr/LC_MESSAGES/CH.po
@@ -11,11 +11,12 @@
# License: MIT (see LICENSE file)
#
# Switzerland holidays fr localization.
+#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.82\n"
+"Project-Id-Version: Holidays 0.83\n"
"POT-Creation-Date: 2023-04-10 15:41+0300\n"
-"PO-Revision-Date: 2025-10-04 11:31+0700\n"
+"PO-Revision-Date: 2025-10-08 13:09+0700\n"
"Last-Translator: PPsyrius \n"
"Language-Team: Holidays Localization Team\n"
"Language: fr\n"
@@ -126,6 +127,30 @@ msgstr "Lundi du Jeûne fédéral"
msgid "Knabenschiessen"
msgstr "Knabenschiessen"
+#. Day before Good Friday.
+msgid "Vortag vor Karfreitag"
+msgstr "Veille du Vendredi saint"
+
#. Sechseläuten.
msgid "Sechseläuten"
msgstr "Sechseläuten"
+
+#. Christmas Eve.
+msgid "Heiligabend"
+msgstr "Veille de Noël"
+
+#. New Year's Eve.
+msgid "Vortag vor Neujahr"
+msgstr "Réveillon du Nouvel An"
+
+#. Day before Ascension Day.
+msgid "Vortag vor Auffahrt"
+msgstr "Veille de l'Ascension"
+
+#. Bridge Holiday for Ascension Day.
+msgid "Brückentag nach Auffahrt"
+msgstr "Jour pont après l'Ascension"
+
+#. Bridge Holiday.
+msgid "Brückentag"
+msgstr "Jour pont"
diff --git a/holidays/locale/it/LC_MESSAGES/CH.po b/holidays/locale/it/LC_MESSAGES/CH.po
index bdac4ce6a2..b0514eaf66 100644
--- a/holidays/locale/it/LC_MESSAGES/CH.po
+++ b/holidays/locale/it/LC_MESSAGES/CH.po
@@ -11,11 +11,12 @@
# License: MIT (see LICENSE file)
#
# Switzerland holidays it localization.
+#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.82\n"
+"Project-Id-Version: Holidays 0.83\n"
"POT-Creation-Date: 2023-04-10 15:41+0300\n"
-"PO-Revision-Date: 2025-10-04 11:31+0700\n"
+"PO-Revision-Date: 2025-10-08 13:09+0700\n"
"Last-Translator: PPsyrius \n"
"Language-Team: Holidays Localization Team\n"
"Language: it\n"
@@ -84,11 +85,11 @@ msgstr "Giorno di Santo Stefano"
#. Genevan Fast.
msgid "Genfer Bettag"
-msgstr "Jeûne genevois"
+msgstr "Digiuno ginevrino"
#. Restoration Day.
msgid "Wiederherstellung der Republik"
-msgstr "Restauration genevoise"
+msgstr "Restaurazione della Repubblica"
#. Battle of Naefels Victory Day.
msgid "Näfelser Fahrt"
@@ -108,7 +109,7 @@ msgstr "San Giuseppe"
#. Saint Nicholas of Flüe.
msgid "Bruder Klaus"
-msgstr "Nicolao della Flüe"
+msgstr "San Nicolao della Flue"
#. Epiphany.
msgid "Heilige Drei Könige"
@@ -120,12 +121,36 @@ msgstr "Santi Pietro e Paolo"
#. Prayer Monday.
msgid "Bettagsmontag"
-msgstr "Digiuno Ginevrino"
+msgstr "Lunedì del digiuno federal"
#. Knabenschiessen.
msgid "Knabenschiessen"
msgstr "Knabenschiessen"
+#. Day before Good Friday.
+msgid "Vortag vor Karfreitag"
+msgstr "Vigilia del Venerdì Santo"
+
#. Sechseläuten.
msgid "Sechseläuten"
msgstr "Sechseläuten"
+
+#. Christmas Eve.
+msgid "Heiligabend"
+msgstr "Vigilia di Natale"
+
+#. New Year's Eve.
+msgid "Vortag vor Neujahr"
+msgstr "Vigilia di Capodanno"
+
+#. Day before Ascension Day.
+msgid "Vortag vor Auffahrt"
+msgstr "Vigilia dell'Ascensione di Gesù"
+
+#. Bridge Holiday for Ascension Day.
+msgid "Brückentag nach Auffahrt"
+msgstr "Giorno ponte dopo l'Ascensione di Gesù"
+
+#. Bridge Holiday.
+msgid "Brückentag"
+msgstr "Giorno ponte"
diff --git a/holidays/locale/th/LC_MESSAGES/CH.po b/holidays/locale/th/LC_MESSAGES/CH.po
index 2bd5bf3673..bf916b092a 100644
--- a/holidays/locale/th/LC_MESSAGES/CH.po
+++ b/holidays/locale/th/LC_MESSAGES/CH.po
@@ -14,9 +14,9 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.82\n"
+"Project-Id-Version: Holidays 0.83\n"
"POT-Creation-Date: 2025-10-02 15:36+0700\n"
-"PO-Revision-Date: 2025-10-04 11:31+0700\n"
+"PO-Revision-Date: 2025-10-08 13:09+0700\n"
"Last-Translator: PPsyrius \n"
"Language-Team: Holidays Localization Team\n"
"Language: th\n"
@@ -127,6 +127,30 @@ msgstr "วันจันทร์แห่งการอธิษฐาน"
msgid "Knabenschiessen"
msgstr "คนาเบนชิสเซน"
+#. Day before Good Friday.
+msgid "Vortag vor Karfreitag"
+msgstr "วันก่อนวันศุกร์ประเสริฐ"
+
#. Sechseläuten.
msgid "Sechseläuten"
msgstr "เซ็กเซ่ะเล๊าเท่น"
+
+#. Christmas Eve.
+msgid "Heiligabend"
+msgstr "วันคริสต์มาสอีฟ"
+
+#. New Year's Eve.
+msgid "Vortag vor Neujahr"
+msgstr "วันสิ้นปี"
+
+#. Day before Ascension Day.
+msgid "Vortag vor Auffahrt"
+msgstr "วันก่อนวันสมโภชพระเยซูเจ้าเสด็จขึ้นสวรรค์"
+
+#. Bridge Holiday for Ascension Day.
+msgid "Brückentag nach Auffahrt"
+msgstr "วันหยุดเพิ่มเติมสำหรับวันสมโภชพระเยซูเจ้าเสด็จขึ้นสวรรค์"
+
+#. Bridge Holiday.
+msgid "Brückentag"
+msgstr "วันหยุดเพิ่มเติม"
diff --git a/holidays/locale/uk/LC_MESSAGES/CH.po b/holidays/locale/uk/LC_MESSAGES/CH.po
index 303164a29f..0d8241b026 100644
--- a/holidays/locale/uk/LC_MESSAGES/CH.po
+++ b/holidays/locale/uk/LC_MESSAGES/CH.po
@@ -11,11 +11,12 @@
# License: MIT (see LICENSE file)
#
# Switzerland holidays uk localization.
+#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.82\n"
+"Project-Id-Version: Holidays 0.83\n"
"POT-Creation-Date: 2023-04-10 15:41+0300\n"
-"PO-Revision-Date: 2025-10-04 11:31+0700\n"
+"PO-Revision-Date: 2025-10-08 13:09+0700\n"
"Last-Translator: PPsyrius \n"
"Language-Team: Holidays Localization Team\n"
"Language: uk\n"
@@ -126,6 +127,30 @@ msgstr "Молитовний понеділок"
msgid "Knabenschiessen"
msgstr "Кнабеншісен"
+#. Day before Good Friday.
+msgid "Vortag vor Karfreitag"
+msgstr "Переддень Страсної п’ятниці"
+
#. Sechseläuten.
msgid "Sechseläuten"
msgstr "Зексельйотен"
+
+#. Christmas Eve.
+msgid "Heiligabend"
+msgstr "Святий вечір"
+
+#. New Year's Eve.
+msgid "Vortag vor Neujahr"
+msgstr "Переддень Нового року"
+
+#. Day before Ascension Day.
+msgid "Vortag vor Auffahrt"
+msgstr "Переддень Вознесіння Господнього"
+
+#. Bridge Holiday for Ascension Day.
+msgid "Brückentag nach Auffahrt"
+msgstr "День-понт після Вознесіння Господа"
+
+#. Bridge Holiday.
+msgid "Brückentag"
+msgstr "Проміжний вихідний"
diff --git a/snapshots/countries/CH_ZH.json b/snapshots/countries/CH_ZH.json
index 78a2656e31..301a907d19 100644
--- a/snapshots/countries/CH_ZH.json
+++ b/snapshots/countries/CH_ZH.json
@@ -2,1413 +2,2149 @@
"1950-01-01": "New Year's Day",
"1950-01-02": "Saint Berchtold's Day",
"1950-03-27": "Sechsel\u00e4uten",
+ "1950-04-06": "Day before Good Friday",
"1950-04-07": "Good Friday",
"1950-04-10": "Easter Monday",
"1950-05-01": "Labor Day",
+ "1950-05-17": "Day before Ascension Day",
"1950-05-18": "Ascension Day",
"1950-05-29": "Whit Monday",
"1950-08-01": "National Day",
"1950-09-09": "Knabenschiessen",
"1950-09-10": "Knabenschiessen",
"1950-09-11": "Knabenschiessen",
+ "1950-12-24": "Christmas Eve",
"1950-12-25": "Christmas Day",
"1950-12-26": "Saint Stephen's Day",
+ "1950-12-27": "Bridge Holiday",
+ "1950-12-28": "Bridge Holiday",
+ "1950-12-29": "Bridge Holiday",
+ "1950-12-31": "New Year's Eve",
"1951-01-01": "New Year's Day",
"1951-01-02": "Saint Berchtold's Day",
+ "1951-03-22": "Day before Good Friday",
"1951-03-23": "Good Friday",
"1951-03-26": "Easter Monday; Sechsel\u00e4uten",
"1951-05-01": "Labor Day",
+ "1951-05-02": "Day before Ascension Day",
"1951-05-03": "Ascension Day",
+ "1951-05-04": "Bridge Holiday for Ascension Day",
"1951-05-14": "Whit Monday",
"1951-08-01": "National Day",
"1951-09-08": "Knabenschiessen",
"1951-09-09": "Knabenschiessen",
"1951-09-10": "Knabenschiessen",
+ "1951-12-24": "Christmas Eve",
"1951-12-25": "Christmas Day",
"1951-12-26": "Saint Stephen's Day",
+ "1951-12-27": "Bridge Holiday",
+ "1951-12-28": "Bridge Holiday",
+ "1951-12-31": "New Year's Eve",
"1952-01-01": "New Year's Day",
"1952-01-02": "Saint Berchtold's Day",
+ "1952-04-10": "Day before Good Friday",
"1952-04-11": "Good Friday",
"1952-04-14": "Easter Monday",
"1952-04-21": "Sechsel\u00e4uten",
"1952-05-01": "Labor Day",
+ "1952-05-21": "Day before Ascension Day",
"1952-05-22": "Ascension Day",
+ "1952-05-23": "Bridge Holiday for Ascension Day",
"1952-06-02": "Whit Monday",
"1952-08-01": "National Day",
"1952-09-13": "Knabenschiessen",
"1952-09-14": "Knabenschiessen",
"1952-09-15": "Knabenschiessen",
+ "1952-12-24": "Christmas Eve",
"1952-12-25": "Christmas Day",
"1952-12-26": "Saint Stephen's Day",
+ "1952-12-29": "Bridge Holiday",
+ "1952-12-30": "Bridge Holiday",
+ "1952-12-31": "New Year's Eve",
"1953-01-01": "New Year's Day",
"1953-01-02": "Saint Berchtold's Day",
+ "1953-04-02": "Day before Good Friday",
"1953-04-03": "Good Friday",
"1953-04-06": "Easter Monday",
"1953-04-20": "Sechsel\u00e4uten",
"1953-05-01": "Labor Day",
+ "1953-05-13": "Day before Ascension Day",
"1953-05-14": "Ascension Day",
"1953-05-25": "Whit Monday",
"1953-08-01": "National Day",
"1953-09-12": "Knabenschiessen",
"1953-09-13": "Knabenschiessen",
"1953-09-14": "Knabenschiessen",
+ "1953-12-24": "Christmas Eve",
"1953-12-25": "Christmas Day",
"1953-12-26": "Saint Stephen's Day",
+ "1953-12-28": "Bridge Holiday",
+ "1953-12-29": "Bridge Holiday",
+ "1953-12-30": "Bridge Holiday",
+ "1953-12-31": "New Year's Eve",
"1954-01-01": "New Year's Day",
"1954-01-02": "Saint Berchtold's Day",
+ "1954-04-15": "Day before Good Friday",
"1954-04-16": "Good Friday",
"1954-04-19": "Easter Monday",
"1954-04-26": "Sechsel\u00e4uten",
"1954-05-01": "Labor Day",
+ "1954-05-26": "Day before Ascension Day",
"1954-05-27": "Ascension Day",
"1954-06-07": "Whit Monday",
"1954-08-01": "National Day",
"1954-09-11": "Knabenschiessen",
"1954-09-12": "Knabenschiessen",
"1954-09-13": "Knabenschiessen",
+ "1954-12-24": "Christmas Eve",
"1954-12-25": "Christmas Day",
"1954-12-26": "Saint Stephen's Day",
+ "1954-12-27": "Bridge Holiday",
+ "1954-12-28": "Bridge Holiday",
+ "1954-12-29": "Bridge Holiday",
+ "1954-12-30": "Bridge Holiday",
+ "1954-12-31": "New Year's Eve",
"1955-01-01": "New Year's Day",
"1955-01-02": "Saint Berchtold's Day",
+ "1955-04-07": "Day before Good Friday",
"1955-04-08": "Good Friday",
"1955-04-11": "Easter Monday",
"1955-04-18": "Sechsel\u00e4uten",
"1955-05-01": "Labor Day",
+ "1955-05-18": "Day before Ascension Day",
"1955-05-19": "Ascension Day",
"1955-05-30": "Whit Monday",
"1955-08-01": "National Day",
"1955-09-10": "Knabenschiessen",
"1955-09-11": "Knabenschiessen",
"1955-09-12": "Knabenschiessen",
+ "1955-12-24": "Christmas Eve",
"1955-12-25": "Christmas Day",
"1955-12-26": "Saint Stephen's Day",
+ "1955-12-27": "Bridge Holiday",
+ "1955-12-28": "Bridge Holiday",
+ "1955-12-29": "Bridge Holiday",
+ "1955-12-30": "Bridge Holiday",
+ "1955-12-31": "New Year's Eve",
"1956-01-01": "New Year's Day",
"1956-01-02": "Saint Berchtold's Day",
+ "1956-03-29": "Day before Good Friday",
"1956-03-30": "Good Friday",
"1956-04-02": "Easter Monday",
"1956-04-16": "Sechsel\u00e4uten",
"1956-05-01": "Labor Day",
+ "1956-05-09": "Day before Ascension Day",
"1956-05-10": "Ascension Day",
+ "1956-05-11": "Bridge Holiday for Ascension Day",
"1956-05-21": "Whit Monday",
"1956-08-01": "National Day",
"1956-09-08": "Knabenschiessen",
"1956-09-09": "Knabenschiessen",
"1956-09-10": "Knabenschiessen",
+ "1956-12-24": "Christmas Eve",
"1956-12-25": "Christmas Day",
"1956-12-26": "Saint Stephen's Day",
+ "1956-12-27": "Bridge Holiday",
+ "1956-12-28": "Bridge Holiday",
+ "1956-12-31": "New Year's Eve",
"1957-01-01": "New Year's Day",
"1957-01-02": "Saint Berchtold's Day",
"1957-04-15": "Sechsel\u00e4uten",
+ "1957-04-18": "Day before Good Friday",
"1957-04-19": "Good Friday",
"1957-04-22": "Easter Monday",
"1957-05-01": "Labor Day",
+ "1957-05-29": "Day before Ascension Day",
"1957-05-30": "Ascension Day",
+ "1957-05-31": "Bridge Holiday for Ascension Day",
"1957-06-10": "Whit Monday",
"1957-08-01": "National Day",
"1957-09-07": "Knabenschiessen",
"1957-09-08": "Knabenschiessen",
"1957-09-09": "Knabenschiessen",
+ "1957-12-24": "Christmas Eve",
"1957-12-25": "Christmas Day",
"1957-12-26": "Saint Stephen's Day",
+ "1957-12-27": "Bridge Holiday",
+ "1957-12-30": "Bridge Holiday",
+ "1957-12-31": "New Year's Eve",
"1958-01-01": "New Year's Day",
"1958-01-02": "Saint Berchtold's Day",
+ "1958-04-03": "Day before Good Friday",
"1958-04-04": "Good Friday",
"1958-04-07": "Easter Monday",
"1958-04-21": "Sechsel\u00e4uten",
"1958-05-01": "Labor Day",
+ "1958-05-14": "Day before Ascension Day",
"1958-05-15": "Ascension Day",
+ "1958-05-16": "Bridge Holiday for Ascension Day",
"1958-05-26": "Whit Monday",
"1958-08-01": "National Day",
"1958-09-13": "Knabenschiessen",
"1958-09-14": "Knabenschiessen",
"1958-09-15": "Knabenschiessen",
+ "1958-12-24": "Christmas Eve",
"1958-12-25": "Christmas Day",
"1958-12-26": "Saint Stephen's Day",
+ "1958-12-29": "Bridge Holiday",
+ "1958-12-30": "Bridge Holiday",
+ "1958-12-31": "New Year's Eve",
"1959-01-01": "New Year's Day",
"1959-01-02": "Saint Berchtold's Day",
+ "1959-03-26": "Day before Good Friday",
"1959-03-27": "Good Friday",
"1959-03-30": "Easter Monday",
"1959-04-20": "Sechsel\u00e4uten",
"1959-05-01": "Labor Day",
+ "1959-05-06": "Day before Ascension Day",
"1959-05-07": "Ascension Day",
"1959-05-18": "Whit Monday",
"1959-08-01": "National Day",
"1959-09-12": "Knabenschiessen",
"1959-09-13": "Knabenschiessen",
"1959-09-14": "Knabenschiessen",
+ "1959-12-24": "Christmas Eve",
"1959-12-25": "Christmas Day",
"1959-12-26": "Saint Stephen's Day",
+ "1959-12-28": "Bridge Holiday",
+ "1959-12-29": "Bridge Holiday",
+ "1959-12-30": "Bridge Holiday",
+ "1959-12-31": "New Year's Eve",
"1960-01-01": "New Year's Day",
"1960-01-02": "Saint Berchtold's Day",
+ "1960-04-14": "Day before Good Friday",
"1960-04-15": "Good Friday",
"1960-04-18": "Easter Monday",
"1960-04-25": "Sechsel\u00e4uten",
"1960-05-01": "Labor Day",
+ "1960-05-25": "Day before Ascension Day",
"1960-05-26": "Ascension Day",
"1960-06-06": "Whit Monday",
"1960-08-01": "National Day",
"1960-09-10": "Knabenschiessen",
"1960-09-11": "Knabenschiessen",
"1960-09-12": "Knabenschiessen",
+ "1960-12-24": "Christmas Eve",
"1960-12-25": "Christmas Day",
"1960-12-26": "Saint Stephen's Day",
+ "1960-12-27": "Bridge Holiday",
+ "1960-12-28": "Bridge Holiday",
+ "1960-12-29": "Bridge Holiday",
+ "1960-12-30": "Bridge Holiday",
+ "1960-12-31": "New Year's Eve",
"1961-01-01": "New Year's Day",
"1961-01-02": "Saint Berchtold's Day",
+ "1961-03-30": "Day before Good Friday",
"1961-03-31": "Good Friday",
"1961-04-03": "Easter Monday",
"1961-04-17": "Sechsel\u00e4uten",
"1961-05-01": "Labor Day",
+ "1961-05-10": "Day before Ascension Day",
"1961-05-11": "Ascension Day",
"1961-05-22": "Whit Monday",
"1961-08-01": "National Day",
"1961-09-09": "Knabenschiessen",
"1961-09-10": "Knabenschiessen",
"1961-09-11": "Knabenschiessen",
+ "1961-12-24": "Christmas Eve",
"1961-12-25": "Christmas Day",
"1961-12-26": "Saint Stephen's Day",
+ "1961-12-27": "Bridge Holiday",
+ "1961-12-28": "Bridge Holiday",
+ "1961-12-29": "Bridge Holiday",
+ "1961-12-31": "New Year's Eve",
"1962-01-01": "New Year's Day",
"1962-01-02": "Saint Berchtold's Day",
"1962-04-16": "Sechsel\u00e4uten",
+ "1962-04-19": "Day before Good Friday",
"1962-04-20": "Good Friday",
"1962-04-23": "Easter Monday",
"1962-05-01": "Labor Day",
+ "1962-05-30": "Day before Ascension Day",
"1962-05-31": "Ascension Day",
+ "1962-06-01": "Bridge Holiday for Ascension Day",
"1962-06-11": "Whit Monday",
"1962-08-01": "National Day",
"1962-09-08": "Knabenschiessen",
"1962-09-09": "Knabenschiessen",
"1962-09-10": "Knabenschiessen",
+ "1962-12-24": "Christmas Eve",
"1962-12-25": "Christmas Day",
"1962-12-26": "Saint Stephen's Day",
+ "1962-12-27": "Bridge Holiday",
+ "1962-12-28": "Bridge Holiday",
+ "1962-12-31": "New Year's Eve",
"1963-01-01": "New Year's Day",
"1963-01-02": "Saint Berchtold's Day",
+ "1963-04-11": "Day before Good Friday",
"1963-04-12": "Good Friday",
"1963-04-15": "Easter Monday",
"1963-04-22": "Sechsel\u00e4uten",
"1963-05-01": "Labor Day",
+ "1963-05-22": "Day before Ascension Day",
"1963-05-23": "Ascension Day",
+ "1963-05-24": "Bridge Holiday for Ascension Day",
"1963-06-03": "Whit Monday",
"1963-08-01": "National Day",
"1963-09-07": "Knabenschiessen",
"1963-09-08": "Knabenschiessen",
"1963-09-09": "Knabenschiessen",
+ "1963-12-24": "Christmas Eve",
"1963-12-25": "Christmas Day",
"1963-12-26": "Saint Stephen's Day",
+ "1963-12-27": "Bridge Holiday",
+ "1963-12-30": "Bridge Holiday",
+ "1963-12-31": "New Year's Eve",
"1964-01-01": "New Year's Day",
"1964-01-02": "Saint Berchtold's Day",
+ "1964-03-26": "Day before Good Friday",
"1964-03-27": "Good Friday",
"1964-03-30": "Easter Monday",
"1964-04-20": "Sechsel\u00e4uten",
"1964-05-01": "Labor Day",
+ "1964-05-06": "Day before Ascension Day",
"1964-05-07": "Ascension Day",
"1964-05-18": "Whit Monday",
"1964-08-01": "National Day",
"1964-09-12": "Knabenschiessen",
"1964-09-13": "Knabenschiessen",
"1964-09-14": "Knabenschiessen",
+ "1964-12-24": "Christmas Eve",
"1964-12-25": "Christmas Day",
"1964-12-26": "Saint Stephen's Day",
+ "1964-12-28": "Bridge Holiday",
+ "1964-12-29": "Bridge Holiday",
+ "1964-12-30": "Bridge Holiday",
+ "1964-12-31": "New Year's Eve",
"1965-01-01": "New Year's Day",
"1965-01-02": "Saint Berchtold's Day",
+ "1965-04-15": "Day before Good Friday",
"1965-04-16": "Good Friday",
"1965-04-19": "Easter Monday",
"1965-04-26": "Sechsel\u00e4uten",
"1965-05-01": "Labor Day",
+ "1965-05-26": "Day before Ascension Day",
"1965-05-27": "Ascension Day",
"1965-06-07": "Whit Monday",
"1965-08-01": "National Day",
"1965-09-11": "Knabenschiessen",
"1965-09-12": "Knabenschiessen",
"1965-09-13": "Knabenschiessen",
+ "1965-12-24": "Christmas Eve",
"1965-12-25": "Christmas Day",
"1965-12-26": "Saint Stephen's Day",
+ "1965-12-27": "Bridge Holiday",
+ "1965-12-28": "Bridge Holiday",
+ "1965-12-29": "Bridge Holiday",
+ "1965-12-30": "Bridge Holiday",
+ "1965-12-31": "New Year's Eve",
"1966-01-01": "New Year's Day",
"1966-01-02": "Saint Berchtold's Day",
+ "1966-04-07": "Day before Good Friday",
"1966-04-08": "Good Friday",
"1966-04-11": "Easter Monday",
"1966-04-18": "Sechsel\u00e4uten",
"1966-05-01": "Labor Day",
+ "1966-05-18": "Day before Ascension Day",
"1966-05-19": "Ascension Day",
"1966-05-30": "Whit Monday",
"1966-08-01": "National Day",
"1966-09-10": "Knabenschiessen",
"1966-09-11": "Knabenschiessen",
"1966-09-12": "Knabenschiessen",
+ "1966-12-24": "Christmas Eve",
"1966-12-25": "Christmas Day",
"1966-12-26": "Saint Stephen's Day",
+ "1966-12-27": "Bridge Holiday",
+ "1966-12-28": "Bridge Holiday",
+ "1966-12-29": "Bridge Holiday",
+ "1966-12-30": "Bridge Holiday",
+ "1966-12-31": "New Year's Eve",
"1967-01-01": "New Year's Day",
"1967-01-02": "Saint Berchtold's Day",
+ "1967-03-23": "Day before Good Friday",
"1967-03-24": "Good Friday",
"1967-03-27": "Easter Monday",
"1967-04-17": "Sechsel\u00e4uten",
"1967-05-01": "Labor Day",
+ "1967-05-03": "Day before Ascension Day",
"1967-05-04": "Ascension Day",
"1967-05-15": "Whit Monday",
"1967-08-01": "National Day",
"1967-09-09": "Knabenschiessen",
"1967-09-10": "Knabenschiessen",
"1967-09-11": "Knabenschiessen",
+ "1967-12-24": "Christmas Eve",
"1967-12-25": "Christmas Day",
"1967-12-26": "Saint Stephen's Day",
+ "1967-12-27": "Bridge Holiday",
+ "1967-12-28": "Bridge Holiday",
+ "1967-12-29": "Bridge Holiday",
+ "1967-12-31": "New Year's Eve",
"1968-01-01": "New Year's Day",
"1968-01-02": "Saint Berchtold's Day",
+ "1968-04-11": "Day before Good Friday",
"1968-04-12": "Good Friday",
"1968-04-15": "Easter Monday",
"1968-04-22": "Sechsel\u00e4uten",
"1968-05-01": "Labor Day",
+ "1968-05-22": "Day before Ascension Day",
"1968-05-23": "Ascension Day",
+ "1968-05-24": "Bridge Holiday for Ascension Day",
"1968-06-03": "Whit Monday",
"1968-08-01": "National Day",
"1968-09-07": "Knabenschiessen",
"1968-09-08": "Knabenschiessen",
"1968-09-09": "Knabenschiessen",
+ "1968-12-24": "Christmas Eve",
"1968-12-25": "Christmas Day",
"1968-12-26": "Saint Stephen's Day",
+ "1968-12-27": "Bridge Holiday",
+ "1968-12-30": "Bridge Holiday",
+ "1968-12-31": "New Year's Eve",
"1969-01-01": "New Year's Day",
"1969-01-02": "Saint Berchtold's Day",
+ "1969-04-03": "Day before Good Friday",
"1969-04-04": "Good Friday",
"1969-04-07": "Easter Monday",
"1969-04-21": "Sechsel\u00e4uten",
"1969-05-01": "Labor Day",
+ "1969-05-14": "Day before Ascension Day",
"1969-05-15": "Ascension Day",
+ "1969-05-16": "Bridge Holiday for Ascension Day",
"1969-05-26": "Whit Monday",
"1969-08-01": "National Day",
"1969-09-13": "Knabenschiessen",
"1969-09-14": "Knabenschiessen",
"1969-09-15": "Knabenschiessen",
+ "1969-12-24": "Christmas Eve",
"1969-12-25": "Christmas Day",
"1969-12-26": "Saint Stephen's Day",
+ "1969-12-29": "Bridge Holiday",
+ "1969-12-30": "Bridge Holiday",
+ "1969-12-31": "New Year's Eve",
"1970-01-01": "New Year's Day",
"1970-01-02": "Saint Berchtold's Day",
+ "1970-03-26": "Day before Good Friday",
"1970-03-27": "Good Friday",
"1970-03-30": "Easter Monday",
"1970-04-20": "Sechsel\u00e4uten",
"1970-05-01": "Labor Day",
+ "1970-05-06": "Day before Ascension Day",
"1970-05-07": "Ascension Day",
"1970-05-18": "Whit Monday",
"1970-08-01": "National Day",
"1970-09-12": "Knabenschiessen",
"1970-09-13": "Knabenschiessen",
"1970-09-14": "Knabenschiessen",
+ "1970-12-24": "Christmas Eve",
"1970-12-25": "Christmas Day",
"1970-12-26": "Saint Stephen's Day",
+ "1970-12-28": "Bridge Holiday",
+ "1970-12-29": "Bridge Holiday",
+ "1970-12-30": "Bridge Holiday",
+ "1970-12-31": "New Year's Eve",
"1971-01-01": "New Year's Day",
"1971-01-02": "Saint Berchtold's Day",
+ "1971-04-08": "Day before Good Friday",
"1971-04-09": "Good Friday",
"1971-04-12": "Easter Monday",
"1971-04-19": "Sechsel\u00e4uten",
"1971-05-01": "Labor Day",
+ "1971-05-19": "Day before Ascension Day",
"1971-05-20": "Ascension Day",
"1971-05-31": "Whit Monday",
"1971-08-01": "National Day",
"1971-09-11": "Knabenschiessen",
"1971-09-12": "Knabenschiessen",
"1971-09-13": "Knabenschiessen",
+ "1971-12-24": "Christmas Eve",
"1971-12-25": "Christmas Day",
"1971-12-26": "Saint Stephen's Day",
+ "1971-12-27": "Bridge Holiday",
+ "1971-12-28": "Bridge Holiday",
+ "1971-12-29": "Bridge Holiday",
+ "1971-12-30": "Bridge Holiday",
+ "1971-12-31": "New Year's Eve",
"1972-01-01": "New Year's Day",
"1972-01-02": "Saint Berchtold's Day",
+ "1972-03-30": "Day before Good Friday",
"1972-03-31": "Good Friday",
"1972-04-03": "Easter Monday",
"1972-04-17": "Sechsel\u00e4uten",
"1972-05-01": "Labor Day",
+ "1972-05-10": "Day before Ascension Day",
"1972-05-11": "Ascension Day",
"1972-05-22": "Whit Monday",
"1972-08-01": "National Day",
"1972-09-09": "Knabenschiessen",
"1972-09-10": "Knabenschiessen",
"1972-09-11": "Knabenschiessen",
+ "1972-12-24": "Christmas Eve",
"1972-12-25": "Christmas Day",
"1972-12-26": "Saint Stephen's Day",
+ "1972-12-27": "Bridge Holiday",
+ "1972-12-28": "Bridge Holiday",
+ "1972-12-29": "Bridge Holiday",
+ "1972-12-31": "New Year's Eve",
"1973-01-01": "New Year's Day",
"1973-01-02": "Saint Berchtold's Day",
"1973-04-16": "Sechsel\u00e4uten",
+ "1973-04-19": "Day before Good Friday",
"1973-04-20": "Good Friday",
"1973-04-23": "Easter Monday",
"1973-05-01": "Labor Day",
+ "1973-05-30": "Day before Ascension Day",
"1973-05-31": "Ascension Day",
+ "1973-06-01": "Bridge Holiday for Ascension Day",
"1973-06-11": "Whit Monday",
"1973-08-01": "National Day",
"1973-09-08": "Knabenschiessen",
"1973-09-09": "Knabenschiessen",
"1973-09-10": "Knabenschiessen",
+ "1973-12-24": "Christmas Eve",
"1973-12-25": "Christmas Day",
"1973-12-26": "Saint Stephen's Day",
+ "1973-12-27": "Bridge Holiday",
+ "1973-12-28": "Bridge Holiday",
+ "1973-12-31": "New Year's Eve",
"1974-01-01": "New Year's Day",
"1974-01-02": "Saint Berchtold's Day",
+ "1974-04-11": "Day before Good Friday",
"1974-04-12": "Good Friday",
"1974-04-15": "Easter Monday",
"1974-04-22": "Sechsel\u00e4uten",
"1974-05-01": "Labor Day",
+ "1974-05-22": "Day before Ascension Day",
"1974-05-23": "Ascension Day",
+ "1974-05-24": "Bridge Holiday for Ascension Day",
"1974-06-03": "Whit Monday",
"1974-08-01": "National Day",
"1974-09-07": "Knabenschiessen",
"1974-09-08": "Knabenschiessen",
"1974-09-09": "Knabenschiessen",
+ "1974-12-24": "Christmas Eve",
"1974-12-25": "Christmas Day",
"1974-12-26": "Saint Stephen's Day",
+ "1974-12-27": "Bridge Holiday",
+ "1974-12-30": "Bridge Holiday",
+ "1974-12-31": "New Year's Eve",
"1975-01-01": "New Year's Day",
"1975-01-02": "Saint Berchtold's Day",
+ "1975-03-27": "Day before Good Friday",
"1975-03-28": "Good Friday",
"1975-03-31": "Easter Monday",
"1975-04-21": "Sechsel\u00e4uten",
"1975-05-01": "Labor Day",
+ "1975-05-07": "Day before Ascension Day",
"1975-05-08": "Ascension Day",
+ "1975-05-09": "Bridge Holiday for Ascension Day",
"1975-05-19": "Whit Monday",
"1975-08-01": "National Day",
"1975-09-13": "Knabenschiessen",
"1975-09-14": "Knabenschiessen",
"1975-09-15": "Knabenschiessen",
+ "1975-12-24": "Christmas Eve",
"1975-12-25": "Christmas Day",
"1975-12-26": "Saint Stephen's Day",
+ "1975-12-29": "Bridge Holiday",
+ "1975-12-30": "Bridge Holiday",
+ "1975-12-31": "New Year's Eve",
"1976-01-01": "New Year's Day",
"1976-01-02": "Saint Berchtold's Day",
+ "1976-04-15": "Day before Good Friday",
"1976-04-16": "Good Friday",
"1976-04-19": "Easter Monday",
"1976-04-26": "Sechsel\u00e4uten",
"1976-05-01": "Labor Day",
+ "1976-05-26": "Day before Ascension Day",
"1976-05-27": "Ascension Day",
"1976-06-07": "Whit Monday",
"1976-08-01": "National Day",
"1976-09-11": "Knabenschiessen",
"1976-09-12": "Knabenschiessen",
"1976-09-13": "Knabenschiessen",
+ "1976-12-24": "Christmas Eve",
"1976-12-25": "Christmas Day",
"1976-12-26": "Saint Stephen's Day",
+ "1976-12-27": "Bridge Holiday",
+ "1976-12-28": "Bridge Holiday",
+ "1976-12-29": "Bridge Holiday",
+ "1976-12-30": "Bridge Holiday",
+ "1976-12-31": "New Year's Eve",
"1977-01-01": "New Year's Day",
"1977-01-02": "Saint Berchtold's Day",
+ "1977-04-07": "Day before Good Friday",
"1977-04-08": "Good Friday",
"1977-04-11": "Easter Monday",
"1977-04-18": "Sechsel\u00e4uten",
"1977-05-01": "Labor Day",
+ "1977-05-18": "Day before Ascension Day",
"1977-05-19": "Ascension Day",
"1977-05-30": "Whit Monday",
"1977-08-01": "National Day",
"1977-09-10": "Knabenschiessen",
"1977-09-11": "Knabenschiessen",
"1977-09-12": "Knabenschiessen",
+ "1977-12-24": "Christmas Eve",
"1977-12-25": "Christmas Day",
"1977-12-26": "Saint Stephen's Day",
+ "1977-12-27": "Bridge Holiday",
+ "1977-12-28": "Bridge Holiday",
+ "1977-12-29": "Bridge Holiday",
+ "1977-12-30": "Bridge Holiday",
+ "1977-12-31": "New Year's Eve",
"1978-01-01": "New Year's Day",
"1978-01-02": "Saint Berchtold's Day",
+ "1978-03-23": "Day before Good Friday",
"1978-03-24": "Good Friday",
"1978-03-27": "Easter Monday",
"1978-04-17": "Sechsel\u00e4uten",
"1978-05-01": "Labor Day",
+ "1978-05-03": "Day before Ascension Day",
"1978-05-04": "Ascension Day",
"1978-05-15": "Whit Monday",
"1978-08-01": "National Day",
"1978-09-09": "Knabenschiessen",
"1978-09-10": "Knabenschiessen",
"1978-09-11": "Knabenschiessen",
+ "1978-12-24": "Christmas Eve",
"1978-12-25": "Christmas Day",
"1978-12-26": "Saint Stephen's Day",
+ "1978-12-27": "Bridge Holiday",
+ "1978-12-28": "Bridge Holiday",
+ "1978-12-29": "Bridge Holiday",
+ "1978-12-31": "New Year's Eve",
"1979-01-01": "New Year's Day",
"1979-01-02": "Saint Berchtold's Day",
+ "1979-04-12": "Day before Good Friday",
"1979-04-13": "Good Friday",
"1979-04-16": "Easter Monday",
"1979-04-23": "Sechsel\u00e4uten",
"1979-05-01": "Labor Day",
+ "1979-05-23": "Day before Ascension Day",
"1979-05-24": "Ascension Day",
+ "1979-05-25": "Bridge Holiday for Ascension Day",
"1979-06-04": "Whit Monday",
"1979-08-01": "National Day",
"1979-09-08": "Knabenschiessen",
"1979-09-09": "Knabenschiessen",
"1979-09-10": "Knabenschiessen",
+ "1979-12-24": "Christmas Eve",
"1979-12-25": "Christmas Day",
"1979-12-26": "Saint Stephen's Day",
+ "1979-12-27": "Bridge Holiday",
+ "1979-12-28": "Bridge Holiday",
+ "1979-12-31": "New Year's Eve",
"1980-01-01": "New Year's Day",
"1980-01-02": "Saint Berchtold's Day",
+ "1980-04-03": "Day before Good Friday",
"1980-04-04": "Good Friday",
"1980-04-07": "Easter Monday",
"1980-04-21": "Sechsel\u00e4uten",
"1980-05-01": "Labor Day",
+ "1980-05-14": "Day before Ascension Day",
"1980-05-15": "Ascension Day",
+ "1980-05-16": "Bridge Holiday for Ascension Day",
"1980-05-26": "Whit Monday",
"1980-08-01": "National Day",
"1980-09-13": "Knabenschiessen",
"1980-09-14": "Knabenschiessen",
"1980-09-15": "Knabenschiessen",
+ "1980-12-24": "Christmas Eve",
"1980-12-25": "Christmas Day",
"1980-12-26": "Saint Stephen's Day",
+ "1980-12-29": "Bridge Holiday",
+ "1980-12-30": "Bridge Holiday",
+ "1980-12-31": "New Year's Eve",
"1981-01-01": "New Year's Day",
"1981-01-02": "Saint Berchtold's Day",
+ "1981-04-16": "Day before Good Friday",
"1981-04-17": "Good Friday",
"1981-04-20": "Easter Monday",
"1981-04-27": "Sechsel\u00e4uten",
"1981-05-01": "Labor Day",
+ "1981-05-27": "Day before Ascension Day",
"1981-05-28": "Ascension Day",
"1981-06-08": "Whit Monday",
"1981-08-01": "National Day",
"1981-09-12": "Knabenschiessen",
"1981-09-13": "Knabenschiessen",
"1981-09-14": "Knabenschiessen",
+ "1981-12-24": "Christmas Eve",
"1981-12-25": "Christmas Day",
"1981-12-26": "Saint Stephen's Day",
+ "1981-12-28": "Bridge Holiday",
+ "1981-12-29": "Bridge Holiday",
+ "1981-12-30": "Bridge Holiday",
+ "1981-12-31": "New Year's Eve",
"1982-01-01": "New Year's Day",
"1982-01-02": "Saint Berchtold's Day",
+ "1982-04-08": "Day before Good Friday",
"1982-04-09": "Good Friday",
"1982-04-12": "Easter Monday",
"1982-04-19": "Sechsel\u00e4uten",
"1982-05-01": "Labor Day",
+ "1982-05-19": "Day before Ascension Day",
"1982-05-20": "Ascension Day",
"1982-05-31": "Whit Monday",
"1982-08-01": "National Day",
"1982-09-11": "Knabenschiessen",
"1982-09-12": "Knabenschiessen",
"1982-09-13": "Knabenschiessen",
+ "1982-12-24": "Christmas Eve",
"1982-12-25": "Christmas Day",
"1982-12-26": "Saint Stephen's Day",
+ "1982-12-27": "Bridge Holiday",
+ "1982-12-28": "Bridge Holiday",
+ "1982-12-29": "Bridge Holiday",
+ "1982-12-30": "Bridge Holiday",
+ "1982-12-31": "New Year's Eve",
"1983-01-01": "New Year's Day",
"1983-01-02": "Saint Berchtold's Day",
+ "1983-03-31": "Day before Good Friday",
"1983-04-01": "Good Friday",
"1983-04-04": "Easter Monday",
"1983-04-18": "Sechsel\u00e4uten",
"1983-05-01": "Labor Day",
+ "1983-05-11": "Day before Ascension Day",
"1983-05-12": "Ascension Day",
"1983-05-23": "Whit Monday",
"1983-08-01": "National Day",
"1983-09-10": "Knabenschiessen",
"1983-09-11": "Knabenschiessen",
"1983-09-12": "Knabenschiessen",
+ "1983-12-24": "Christmas Eve",
"1983-12-25": "Christmas Day",
"1983-12-26": "Saint Stephen's Day",
+ "1983-12-27": "Bridge Holiday",
+ "1983-12-28": "Bridge Holiday",
+ "1983-12-29": "Bridge Holiday",
+ "1983-12-30": "Bridge Holiday",
+ "1983-12-31": "New Year's Eve",
"1984-01-01": "New Year's Day",
"1984-01-02": "Saint Berchtold's Day",
"1984-04-16": "Sechsel\u00e4uten",
+ "1984-04-19": "Day before Good Friday",
"1984-04-20": "Good Friday",
"1984-04-23": "Easter Monday",
"1984-05-01": "Labor Day",
+ "1984-05-30": "Day before Ascension Day",
"1984-05-31": "Ascension Day",
+ "1984-06-01": "Bridge Holiday for Ascension Day",
"1984-06-11": "Whit Monday",
"1984-08-01": "National Day",
"1984-09-08": "Knabenschiessen",
"1984-09-09": "Knabenschiessen",
"1984-09-10": "Knabenschiessen",
+ "1984-12-24": "Christmas Eve",
"1984-12-25": "Christmas Day",
"1984-12-26": "Saint Stephen's Day",
+ "1984-12-27": "Bridge Holiday",
+ "1984-12-28": "Bridge Holiday",
+ "1984-12-31": "New Year's Eve",
"1985-01-01": "New Year's Day",
"1985-01-02": "Saint Berchtold's Day",
+ "1985-04-04": "Day before Good Friday",
"1985-04-05": "Good Friday",
"1985-04-08": "Easter Monday",
"1985-04-15": "Sechsel\u00e4uten",
"1985-05-01": "Labor Day",
+ "1985-05-15": "Day before Ascension Day",
"1985-05-16": "Ascension Day",
+ "1985-05-17": "Bridge Holiday for Ascension Day",
"1985-05-27": "Whit Monday",
"1985-08-01": "National Day",
"1985-09-07": "Knabenschiessen",
"1985-09-08": "Knabenschiessen",
"1985-09-09": "Knabenschiessen",
+ "1985-12-24": "Christmas Eve",
"1985-12-25": "Christmas Day",
"1985-12-26": "Saint Stephen's Day",
+ "1985-12-27": "Bridge Holiday",
+ "1985-12-30": "Bridge Holiday",
+ "1985-12-31": "New Year's Eve",
"1986-01-01": "New Year's Day",
"1986-01-02": "Saint Berchtold's Day",
+ "1986-03-27": "Day before Good Friday",
"1986-03-28": "Good Friday",
"1986-03-31": "Easter Monday",
"1986-04-21": "Sechsel\u00e4uten",
"1986-05-01": "Labor Day",
+ "1986-05-07": "Day before Ascension Day",
"1986-05-08": "Ascension Day",
+ "1986-05-09": "Bridge Holiday for Ascension Day",
"1986-05-19": "Whit Monday",
"1986-08-01": "National Day",
"1986-09-13": "Knabenschiessen",
"1986-09-14": "Knabenschiessen",
"1986-09-15": "Knabenschiessen",
+ "1986-12-24": "Christmas Eve",
"1986-12-25": "Christmas Day",
"1986-12-26": "Saint Stephen's Day",
+ "1986-12-29": "Bridge Holiday",
+ "1986-12-30": "Bridge Holiday",
+ "1986-12-31": "New Year's Eve",
"1987-01-01": "New Year's Day",
"1987-01-02": "Saint Berchtold's Day",
+ "1987-04-16": "Day before Good Friday",
"1987-04-17": "Good Friday",
"1987-04-20": "Easter Monday",
"1987-04-27": "Sechsel\u00e4uten",
"1987-05-01": "Labor Day",
+ "1987-05-27": "Day before Ascension Day",
"1987-05-28": "Ascension Day",
"1987-06-08": "Whit Monday",
"1987-08-01": "National Day",
"1987-09-12": "Knabenschiessen",
"1987-09-13": "Knabenschiessen",
"1987-09-14": "Knabenschiessen",
+ "1987-12-24": "Christmas Eve",
"1987-12-25": "Christmas Day",
"1987-12-26": "Saint Stephen's Day",
+ "1987-12-28": "Bridge Holiday",
+ "1987-12-29": "Bridge Holiday",
+ "1987-12-30": "Bridge Holiday",
+ "1987-12-31": "New Year's Eve",
"1988-01-01": "New Year's Day",
"1988-01-02": "Saint Berchtold's Day",
+ "1988-03-31": "Day before Good Friday",
"1988-04-01": "Good Friday",
"1988-04-04": "Easter Monday",
"1988-04-18": "Sechsel\u00e4uten",
"1988-05-01": "Labor Day",
+ "1988-05-11": "Day before Ascension Day",
"1988-05-12": "Ascension Day",
"1988-05-23": "Whit Monday",
"1988-08-01": "National Day",
"1988-09-10": "Knabenschiessen",
"1988-09-11": "Knabenschiessen",
"1988-09-12": "Knabenschiessen",
+ "1988-12-24": "Christmas Eve",
"1988-12-25": "Christmas Day",
"1988-12-26": "Saint Stephen's Day",
+ "1988-12-27": "Bridge Holiday",
+ "1988-12-28": "Bridge Holiday",
+ "1988-12-29": "Bridge Holiday",
+ "1988-12-30": "Bridge Holiday",
+ "1988-12-31": "New Year's Eve",
"1989-01-01": "New Year's Day",
"1989-01-02": "Saint Berchtold's Day",
+ "1989-03-23": "Day before Good Friday",
"1989-03-24": "Good Friday",
"1989-03-27": "Easter Monday",
"1989-04-17": "Sechsel\u00e4uten",
"1989-05-01": "Labor Day",
+ "1989-05-03": "Day before Ascension Day",
"1989-05-04": "Ascension Day",
"1989-05-15": "Whit Monday",
"1989-08-01": "National Day",
"1989-09-09": "Knabenschiessen",
"1989-09-10": "Knabenschiessen",
"1989-09-11": "Knabenschiessen",
+ "1989-12-24": "Christmas Eve",
"1989-12-25": "Christmas Day",
"1989-12-26": "Saint Stephen's Day",
+ "1989-12-27": "Bridge Holiday",
+ "1989-12-28": "Bridge Holiday",
+ "1989-12-29": "Bridge Holiday",
+ "1989-12-31": "New Year's Eve",
"1990-01-01": "New Year's Day",
"1990-01-02": "Saint Berchtold's Day",
+ "1990-04-12": "Day before Good Friday",
"1990-04-13": "Good Friday",
"1990-04-16": "Easter Monday",
"1990-04-23": "Sechsel\u00e4uten",
"1990-05-01": "Labor Day",
+ "1990-05-23": "Day before Ascension Day",
"1990-05-24": "Ascension Day",
+ "1990-05-25": "Bridge Holiday for Ascension Day",
"1990-06-04": "Whit Monday",
"1990-08-01": "National Day",
"1990-09-08": "Knabenschiessen",
"1990-09-09": "Knabenschiessen",
"1990-09-10": "Knabenschiessen",
+ "1990-12-24": "Christmas Eve",
"1990-12-25": "Christmas Day",
"1990-12-26": "Saint Stephen's Day",
+ "1990-12-27": "Bridge Holiday",
+ "1990-12-28": "Bridge Holiday",
+ "1990-12-31": "New Year's Eve",
"1991-01-01": "New Year's Day",
"1991-01-02": "Saint Berchtold's Day",
+ "1991-03-28": "Day before Good Friday",
"1991-03-29": "Good Friday",
"1991-04-01": "Easter Monday",
"1991-04-15": "Sechsel\u00e4uten",
"1991-05-01": "Labor Day",
+ "1991-05-08": "Day before Ascension Day",
"1991-05-09": "Ascension Day",
+ "1991-05-10": "Bridge Holiday for Ascension Day",
"1991-05-20": "Whit Monday",
"1991-08-01": "National Day",
"1991-09-07": "Knabenschiessen",
"1991-09-08": "Knabenschiessen",
"1991-09-09": "Knabenschiessen",
+ "1991-12-24": "Christmas Eve",
"1991-12-25": "Christmas Day",
"1991-12-26": "Saint Stephen's Day",
+ "1991-12-27": "Bridge Holiday",
+ "1991-12-30": "Bridge Holiday",
+ "1991-12-31": "New Year's Eve",
"1992-01-01": "New Year's Day",
"1992-01-02": "Saint Berchtold's Day",
+ "1992-04-16": "Day before Good Friday",
"1992-04-17": "Good Friday",
"1992-04-20": "Easter Monday",
"1992-04-27": "Sechsel\u00e4uten",
"1992-05-01": "Labor Day",
+ "1992-05-27": "Day before Ascension Day",
"1992-05-28": "Ascension Day",
"1992-06-08": "Whit Monday",
"1992-08-01": "National Day",
"1992-09-12": "Knabenschiessen",
"1992-09-13": "Knabenschiessen",
"1992-09-14": "Knabenschiessen",
+ "1992-12-24": "Christmas Eve",
"1992-12-25": "Christmas Day",
"1992-12-26": "Saint Stephen's Day",
+ "1992-12-28": "Bridge Holiday",
+ "1992-12-29": "Bridge Holiday",
+ "1992-12-30": "Bridge Holiday",
+ "1992-12-31": "New Year's Eve",
"1993-01-01": "New Year's Day",
"1993-01-02": "Saint Berchtold's Day",
+ "1993-04-08": "Day before Good Friday",
"1993-04-09": "Good Friday",
"1993-04-12": "Easter Monday",
"1993-04-19": "Sechsel\u00e4uten",
"1993-05-01": "Labor Day",
+ "1993-05-19": "Day before Ascension Day",
"1993-05-20": "Ascension Day",
"1993-05-31": "Whit Monday",
"1993-08-01": "National Day",
"1993-09-11": "Knabenschiessen",
"1993-09-12": "Knabenschiessen",
"1993-09-13": "Knabenschiessen",
+ "1993-12-24": "Christmas Eve",
"1993-12-25": "Christmas Day",
"1993-12-26": "Saint Stephen's Day",
+ "1993-12-27": "Bridge Holiday",
+ "1993-12-28": "Bridge Holiday",
+ "1993-12-29": "Bridge Holiday",
+ "1993-12-30": "Bridge Holiday",
+ "1993-12-31": "New Year's Eve",
"1994-01-01": "New Year's Day",
"1994-01-02": "Saint Berchtold's Day",
+ "1994-03-31": "Day before Good Friday",
"1994-04-01": "Good Friday",
"1994-04-04": "Easter Monday",
"1994-04-18": "Sechsel\u00e4uten",
"1994-05-01": "Labor Day",
+ "1994-05-11": "Day before Ascension Day",
"1994-05-12": "Ascension Day",
"1994-05-23": "Whit Monday",
"1994-08-01": "National Day",
"1994-09-10": "Knabenschiessen",
"1994-09-11": "Knabenschiessen",
"1994-09-12": "Knabenschiessen",
+ "1994-12-24": "Christmas Eve",
"1994-12-25": "Christmas Day",
"1994-12-26": "Saint Stephen's Day",
+ "1994-12-27": "Bridge Holiday",
+ "1994-12-28": "Bridge Holiday",
+ "1994-12-29": "Bridge Holiday",
+ "1994-12-30": "Bridge Holiday",
+ "1994-12-31": "New Year's Eve",
"1995-01-01": "New Year's Day",
"1995-01-02": "Saint Berchtold's Day",
+ "1995-04-13": "Day before Good Friday",
"1995-04-14": "Good Friday",
"1995-04-17": "Easter Monday",
"1995-04-24": "Sechsel\u00e4uten",
"1995-05-01": "Labor Day",
+ "1995-05-24": "Day before Ascension Day",
"1995-05-25": "Ascension Day",
"1995-06-05": "Whit Monday",
"1995-08-01": "National Day",
"1995-09-09": "Knabenschiessen",
"1995-09-10": "Knabenschiessen",
"1995-09-11": "Knabenschiessen",
+ "1995-12-24": "Christmas Eve",
"1995-12-25": "Christmas Day",
"1995-12-26": "Saint Stephen's Day",
+ "1995-12-27": "Bridge Holiday",
+ "1995-12-28": "Bridge Holiday",
+ "1995-12-29": "Bridge Holiday",
+ "1995-12-31": "New Year's Eve",
"1996-01-01": "New Year's Day",
"1996-01-02": "Saint Berchtold's Day",
+ "1996-04-04": "Day before Good Friday",
"1996-04-05": "Good Friday",
"1996-04-08": "Easter Monday",
"1996-04-15": "Sechsel\u00e4uten",
"1996-05-01": "Labor Day",
+ "1996-05-15": "Day before Ascension Day",
"1996-05-16": "Ascension Day",
+ "1996-05-17": "Bridge Holiday for Ascension Day",
"1996-05-27": "Whit Monday",
"1996-08-01": "National Day",
"1996-09-07": "Knabenschiessen",
"1996-09-08": "Knabenschiessen",
"1996-09-09": "Knabenschiessen",
+ "1996-12-24": "Christmas Eve",
"1996-12-25": "Christmas Day",
"1996-12-26": "Saint Stephen's Day",
+ "1996-12-27": "Bridge Holiday",
+ "1996-12-30": "Bridge Holiday",
+ "1996-12-31": "New Year's Eve",
"1997-01-01": "New Year's Day",
"1997-01-02": "Saint Berchtold's Day",
+ "1997-03-27": "Day before Good Friday",
"1997-03-28": "Good Friday",
"1997-03-31": "Easter Monday",
"1997-04-21": "Sechsel\u00e4uten",
"1997-05-01": "Labor Day",
+ "1997-05-07": "Day before Ascension Day",
"1997-05-08": "Ascension Day",
+ "1997-05-09": "Bridge Holiday for Ascension Day",
"1997-05-19": "Whit Monday",
"1997-08-01": "National Day",
"1997-09-13": "Knabenschiessen",
"1997-09-14": "Knabenschiessen",
"1997-09-15": "Knabenschiessen",
+ "1997-12-24": "Christmas Eve",
"1997-12-25": "Christmas Day",
"1997-12-26": "Saint Stephen's Day",
+ "1997-12-29": "Bridge Holiday",
+ "1997-12-30": "Bridge Holiday",
+ "1997-12-31": "New Year's Eve",
"1998-01-01": "New Year's Day",
"1998-01-02": "Saint Berchtold's Day",
+ "1998-04-09": "Day before Good Friday",
"1998-04-10": "Good Friday",
"1998-04-13": "Easter Monday",
"1998-04-20": "Sechsel\u00e4uten",
"1998-05-01": "Labor Day",
+ "1998-05-20": "Day before Ascension Day",
"1998-05-21": "Ascension Day",
"1998-06-01": "Whit Monday",
"1998-08-01": "National Day",
"1998-09-12": "Knabenschiessen",
"1998-09-13": "Knabenschiessen",
"1998-09-14": "Knabenschiessen",
+ "1998-12-24": "Christmas Eve",
"1998-12-25": "Christmas Day",
"1998-12-26": "Saint Stephen's Day",
+ "1998-12-28": "Bridge Holiday",
+ "1998-12-29": "Bridge Holiday",
+ "1998-12-30": "Bridge Holiday",
+ "1998-12-31": "New Year's Eve",
"1999-01-01": "New Year's Day",
"1999-01-02": "Saint Berchtold's Day",
+ "1999-04-01": "Day before Good Friday",
"1999-04-02": "Good Friday",
"1999-04-05": "Easter Monday",
"1999-04-19": "Sechsel\u00e4uten",
"1999-05-01": "Labor Day",
+ "1999-05-12": "Day before Ascension Day",
"1999-05-13": "Ascension Day",
"1999-05-24": "Whit Monday",
"1999-08-01": "National Day",
"1999-09-11": "Knabenschiessen",
"1999-09-12": "Knabenschiessen",
"1999-09-13": "Knabenschiessen",
+ "1999-12-24": "Christmas Eve",
"1999-12-25": "Christmas Day",
"1999-12-26": "Saint Stephen's Day",
+ "1999-12-27": "Bridge Holiday",
+ "1999-12-28": "Bridge Holiday",
+ "1999-12-29": "Bridge Holiday",
+ "1999-12-30": "Bridge Holiday",
+ "1999-12-31": "New Year's Eve",
"2000-01-01": "New Year's Day",
"2000-01-02": "Saint Berchtold's Day",
"2000-04-17": "Sechsel\u00e4uten",
+ "2000-04-20": "Day before Good Friday",
"2000-04-21": "Good Friday",
"2000-04-24": "Easter Monday",
"2000-05-01": "Labor Day",
+ "2000-05-31": "Day before Ascension Day",
"2000-06-01": "Ascension Day",
"2000-06-12": "Whit Monday",
"2000-08-01": "National Day",
"2000-09-09": "Knabenschiessen",
"2000-09-10": "Knabenschiessen",
"2000-09-11": "Knabenschiessen",
+ "2000-12-24": "Christmas Eve",
"2000-12-25": "Christmas Day",
"2000-12-26": "Saint Stephen's Day",
+ "2000-12-27": "Bridge Holiday",
+ "2000-12-28": "Bridge Holiday",
+ "2000-12-29": "Bridge Holiday",
+ "2000-12-31": "New Year's Eve",
"2001-01-01": "New Year's Day",
"2001-01-02": "Saint Berchtold's Day",
+ "2001-04-12": "Day before Good Friday",
"2001-04-13": "Good Friday",
"2001-04-16": "Easter Monday",
"2001-04-23": "Sechsel\u00e4uten",
"2001-05-01": "Labor Day",
+ "2001-05-23": "Day before Ascension Day",
"2001-05-24": "Ascension Day",
+ "2001-05-25": "Bridge Holiday for Ascension Day",
"2001-06-04": "Whit Monday",
"2001-08-01": "National Day",
"2001-09-08": "Knabenschiessen",
"2001-09-09": "Knabenschiessen",
"2001-09-10": "Knabenschiessen",
+ "2001-12-24": "Christmas Eve",
"2001-12-25": "Christmas Day",
"2001-12-26": "Saint Stephen's Day",
+ "2001-12-27": "Bridge Holiday",
+ "2001-12-28": "Bridge Holiday",
+ "2001-12-31": "New Year's Eve",
"2002-01-01": "New Year's Day",
"2002-01-02": "Saint Berchtold's Day",
+ "2002-03-28": "Day before Good Friday",
"2002-03-29": "Good Friday",
"2002-04-01": "Easter Monday",
"2002-04-15": "Sechsel\u00e4uten",
"2002-05-01": "Labor Day",
+ "2002-05-08": "Day before Ascension Day",
"2002-05-09": "Ascension Day",
+ "2002-05-10": "Bridge Holiday for Ascension Day",
"2002-05-20": "Whit Monday",
"2002-08-01": "National Day",
"2002-09-07": "Knabenschiessen",
"2002-09-08": "Knabenschiessen",
"2002-09-09": "Knabenschiessen",
+ "2002-12-24": "Christmas Eve",
"2002-12-25": "Christmas Day",
"2002-12-26": "Saint Stephen's Day",
+ "2002-12-27": "Bridge Holiday",
+ "2002-12-30": "Bridge Holiday",
+ "2002-12-31": "New Year's Eve",
"2003-01-01": "New Year's Day",
"2003-01-02": "Saint Berchtold's Day",
+ "2003-04-17": "Day before Good Friday",
"2003-04-18": "Good Friday",
"2003-04-21": "Easter Monday",
"2003-04-28": "Sechsel\u00e4uten",
"2003-05-01": "Labor Day",
+ "2003-05-28": "Day before Ascension Day",
"2003-05-29": "Ascension Day",
+ "2003-05-30": "Bridge Holiday for Ascension Day",
"2003-06-09": "Whit Monday",
"2003-08-01": "National Day",
"2003-09-13": "Knabenschiessen",
"2003-09-14": "Knabenschiessen",
"2003-09-15": "Knabenschiessen",
+ "2003-12-24": "Christmas Eve",
"2003-12-25": "Christmas Day",
"2003-12-26": "Saint Stephen's Day",
+ "2003-12-29": "Bridge Holiday",
+ "2003-12-30": "Bridge Holiday",
+ "2003-12-31": "New Year's Eve",
"2004-01-01": "New Year's Day",
"2004-01-02": "Saint Berchtold's Day",
+ "2004-04-08": "Day before Good Friday",
"2004-04-09": "Good Friday",
"2004-04-12": "Easter Monday",
"2004-04-19": "Sechsel\u00e4uten",
"2004-05-01": "Labor Day",
+ "2004-05-19": "Day before Ascension Day",
"2004-05-20": "Ascension Day",
"2004-05-31": "Whit Monday",
"2004-08-01": "National Day",
"2004-09-11": "Knabenschiessen",
"2004-09-12": "Knabenschiessen",
"2004-09-13": "Knabenschiessen",
+ "2004-12-24": "Christmas Eve",
"2004-12-25": "Christmas Day",
"2004-12-26": "Saint Stephen's Day",
+ "2004-12-27": "Bridge Holiday",
+ "2004-12-28": "Bridge Holiday",
+ "2004-12-29": "Bridge Holiday",
+ "2004-12-30": "Bridge Holiday",
+ "2004-12-31": "New Year's Eve",
"2005-01-01": "New Year's Day",
"2005-01-02": "Saint Berchtold's Day",
+ "2005-03-24": "Day before Good Friday",
"2005-03-25": "Good Friday",
"2005-03-28": "Easter Monday",
"2005-04-18": "Sechsel\u00e4uten",
"2005-05-01": "Labor Day",
+ "2005-05-04": "Day before Ascension Day",
"2005-05-05": "Ascension Day",
"2005-05-16": "Whit Monday",
"2005-08-01": "National Day",
"2005-09-10": "Knabenschiessen",
"2005-09-11": "Knabenschiessen",
"2005-09-12": "Knabenschiessen",
+ "2005-12-24": "Christmas Eve",
"2005-12-25": "Christmas Day",
"2005-12-26": "Saint Stephen's Day",
+ "2005-12-27": "Bridge Holiday",
+ "2005-12-28": "Bridge Holiday",
+ "2005-12-29": "Bridge Holiday",
+ "2005-12-30": "Bridge Holiday",
+ "2005-12-31": "New Year's Eve",
"2006-01-01": "New Year's Day",
"2006-01-02": "Saint Berchtold's Day",
+ "2006-04-13": "Day before Good Friday",
"2006-04-14": "Good Friday",
"2006-04-17": "Easter Monday",
"2006-04-24": "Sechsel\u00e4uten",
"2006-05-01": "Labor Day",
+ "2006-05-24": "Day before Ascension Day",
"2006-05-25": "Ascension Day",
"2006-06-05": "Whit Monday",
"2006-08-01": "National Day",
"2006-09-09": "Knabenschiessen",
"2006-09-10": "Knabenschiessen",
"2006-09-11": "Knabenschiessen",
+ "2006-12-24": "Christmas Eve",
"2006-12-25": "Christmas Day",
"2006-12-26": "Saint Stephen's Day",
+ "2006-12-27": "Bridge Holiday",
+ "2006-12-28": "Bridge Holiday",
+ "2006-12-29": "Bridge Holiday",
+ "2006-12-31": "New Year's Eve",
"2007-01-01": "New Year's Day",
"2007-01-02": "Saint Berchtold's Day",
+ "2007-04-05": "Day before Good Friday",
"2007-04-06": "Good Friday",
"2007-04-09": "Easter Monday",
"2007-04-16": "Sechsel\u00e4uten",
"2007-05-01": "Labor Day",
+ "2007-05-16": "Day before Ascension Day",
"2007-05-17": "Ascension Day",
+ "2007-05-18": "Bridge Holiday for Ascension Day",
"2007-05-28": "Whit Monday",
"2007-08-01": "National Day",
"2007-09-08": "Knabenschiessen",
"2007-09-09": "Knabenschiessen",
"2007-09-10": "Knabenschiessen",
+ "2007-12-24": "Christmas Eve",
"2007-12-25": "Christmas Day",
"2007-12-26": "Saint Stephen's Day",
+ "2007-12-27": "Bridge Holiday",
+ "2007-12-28": "Bridge Holiday",
+ "2007-12-31": "New Year's Eve",
"2008-01-01": "New Year's Day",
"2008-01-02": "Saint Berchtold's Day",
+ "2008-03-20": "Day before Good Friday",
"2008-03-21": "Good Friday",
"2008-03-24": "Easter Monday",
"2008-04-21": "Sechsel\u00e4uten",
+ "2008-04-30": "Day before Ascension Day",
"2008-05-01": "Ascension Day; Labor Day",
+ "2008-05-02": "Bridge Holiday for Ascension Day",
"2008-05-12": "Whit Monday",
"2008-08-01": "National Day",
"2008-09-13": "Knabenschiessen",
"2008-09-14": "Knabenschiessen",
"2008-09-15": "Knabenschiessen",
+ "2008-12-24": "Christmas Eve",
"2008-12-25": "Christmas Day",
"2008-12-26": "Saint Stephen's Day",
+ "2008-12-29": "Bridge Holiday",
+ "2008-12-30": "Bridge Holiday",
+ "2008-12-31": "New Year's Eve",
"2009-01-01": "New Year's Day",
"2009-01-02": "Saint Berchtold's Day",
+ "2009-04-09": "Day before Good Friday",
"2009-04-10": "Good Friday",
"2009-04-13": "Easter Monday",
"2009-04-20": "Sechsel\u00e4uten",
"2009-05-01": "Labor Day",
+ "2009-05-20": "Day before Ascension Day",
"2009-05-21": "Ascension Day",
"2009-06-01": "Whit Monday",
"2009-08-01": "National Day",
"2009-09-12": "Knabenschiessen",
"2009-09-13": "Knabenschiessen",
"2009-09-14": "Knabenschiessen",
+ "2009-12-24": "Christmas Eve",
"2009-12-25": "Christmas Day",
"2009-12-26": "Saint Stephen's Day",
+ "2009-12-28": "Bridge Holiday",
+ "2009-12-29": "Bridge Holiday",
+ "2009-12-30": "Bridge Holiday",
+ "2009-12-31": "New Year's Eve",
"2010-01-01": "New Year's Day",
"2010-01-02": "Saint Berchtold's Day",
+ "2010-04-01": "Day before Good Friday",
"2010-04-02": "Good Friday",
"2010-04-05": "Easter Monday",
"2010-04-19": "Sechsel\u00e4uten",
"2010-05-01": "Labor Day",
+ "2010-05-12": "Day before Ascension Day",
"2010-05-13": "Ascension Day",
"2010-05-24": "Whit Monday",
"2010-08-01": "National Day",
"2010-09-11": "Knabenschiessen",
"2010-09-12": "Knabenschiessen",
"2010-09-13": "Knabenschiessen",
+ "2010-12-24": "Christmas Eve",
"2010-12-25": "Christmas Day",
"2010-12-26": "Saint Stephen's Day",
+ "2010-12-27": "Bridge Holiday",
+ "2010-12-28": "Bridge Holiday",
+ "2010-12-29": "Bridge Holiday",
+ "2010-12-30": "Bridge Holiday",
+ "2010-12-31": "New Year's Eve",
"2011-01-01": "New Year's Day",
"2011-01-02": "Saint Berchtold's Day",
"2011-04-18": "Sechsel\u00e4uten",
+ "2011-04-21": "Day before Good Friday",
"2011-04-22": "Good Friday",
"2011-04-25": "Easter Monday",
"2011-05-01": "Labor Day",
+ "2011-06-01": "Day before Ascension Day",
"2011-06-02": "Ascension Day",
"2011-06-13": "Whit Monday",
"2011-08-01": "National Day",
"2011-09-10": "Knabenschiessen",
"2011-09-11": "Knabenschiessen",
"2011-09-12": "Knabenschiessen",
+ "2011-12-24": "Christmas Eve",
"2011-12-25": "Christmas Day",
"2011-12-26": "Saint Stephen's Day",
+ "2011-12-27": "Bridge Holiday",
+ "2011-12-28": "Bridge Holiday",
+ "2011-12-29": "Bridge Holiday",
+ "2011-12-30": "Bridge Holiday",
+ "2011-12-31": "New Year's Eve",
"2012-01-01": "New Year's Day",
"2012-01-02": "Saint Berchtold's Day",
+ "2012-04-05": "Day before Good Friday",
"2012-04-06": "Good Friday",
"2012-04-09": "Easter Monday",
"2012-04-16": "Sechsel\u00e4uten",
"2012-05-01": "Labor Day",
+ "2012-05-16": "Day before Ascension Day",
"2012-05-17": "Ascension Day",
+ "2012-05-18": "Bridge Holiday for Ascension Day",
"2012-05-28": "Whit Monday",
"2012-08-01": "National Day",
"2012-09-08": "Knabenschiessen",
"2012-09-09": "Knabenschiessen",
"2012-09-10": "Knabenschiessen",
+ "2012-12-24": "Christmas Eve",
"2012-12-25": "Christmas Day",
"2012-12-26": "Saint Stephen's Day",
+ "2012-12-27": "Bridge Holiday",
+ "2012-12-28": "Bridge Holiday",
+ "2012-12-31": "New Year's Eve",
"2013-01-01": "New Year's Day",
"2013-01-02": "Saint Berchtold's Day",
+ "2013-03-28": "Day before Good Friday",
"2013-03-29": "Good Friday",
"2013-04-01": "Easter Monday",
"2013-04-15": "Sechsel\u00e4uten",
"2013-05-01": "Labor Day",
+ "2013-05-08": "Day before Ascension Day",
"2013-05-09": "Ascension Day",
+ "2013-05-10": "Bridge Holiday for Ascension Day",
"2013-05-20": "Whit Monday",
"2013-08-01": "National Day",
"2013-09-07": "Knabenschiessen",
"2013-09-08": "Knabenschiessen",
"2013-09-09": "Knabenschiessen",
+ "2013-12-24": "Christmas Eve",
"2013-12-25": "Christmas Day",
"2013-12-26": "Saint Stephen's Day",
+ "2013-12-27": "Bridge Holiday",
+ "2013-12-30": "Bridge Holiday",
+ "2013-12-31": "New Year's Eve",
"2014-01-01": "New Year's Day",
"2014-01-02": "Saint Berchtold's Day",
+ "2014-04-17": "Day before Good Friday",
"2014-04-18": "Good Friday",
"2014-04-21": "Easter Monday",
"2014-04-28": "Sechsel\u00e4uten",
"2014-05-01": "Labor Day",
+ "2014-05-28": "Day before Ascension Day",
"2014-05-29": "Ascension Day",
+ "2014-05-30": "Bridge Holiday for Ascension Day",
"2014-06-09": "Whit Monday",
"2014-08-01": "National Day",
"2014-09-13": "Knabenschiessen",
"2014-09-14": "Knabenschiessen",
"2014-09-15": "Knabenschiessen",
+ "2014-12-24": "Christmas Eve",
"2014-12-25": "Christmas Day",
"2014-12-26": "Saint Stephen's Day",
+ "2014-12-29": "Bridge Holiday",
+ "2014-12-30": "Bridge Holiday",
+ "2014-12-31": "New Year's Eve",
"2015-01-01": "New Year's Day",
"2015-01-02": "Saint Berchtold's Day",
+ "2015-04-02": "Day before Good Friday",
"2015-04-03": "Good Friday",
"2015-04-06": "Easter Monday",
"2015-04-20": "Sechsel\u00e4uten",
"2015-05-01": "Labor Day",
+ "2015-05-13": "Day before Ascension Day",
"2015-05-14": "Ascension Day",
"2015-05-25": "Whit Monday",
"2015-08-01": "National Day",
"2015-09-12": "Knabenschiessen",
"2015-09-13": "Knabenschiessen",
"2015-09-14": "Knabenschiessen",
+ "2015-12-24": "Christmas Eve",
"2015-12-25": "Christmas Day",
"2015-12-26": "Saint Stephen's Day",
+ "2015-12-28": "Bridge Holiday",
+ "2015-12-29": "Bridge Holiday",
+ "2015-12-30": "Bridge Holiday",
+ "2015-12-31": "New Year's Eve",
"2016-01-01": "New Year's Day",
"2016-01-02": "Saint Berchtold's Day",
+ "2016-03-24": "Day before Good Friday",
"2016-03-25": "Good Friday",
"2016-03-28": "Easter Monday",
"2016-04-18": "Sechsel\u00e4uten",
"2016-05-01": "Labor Day",
+ "2016-05-04": "Day before Ascension Day",
"2016-05-05": "Ascension Day",
"2016-05-16": "Whit Monday",
"2016-08-01": "National Day",
"2016-09-10": "Knabenschiessen",
"2016-09-11": "Knabenschiessen",
"2016-09-12": "Knabenschiessen",
+ "2016-12-24": "Christmas Eve",
"2016-12-25": "Christmas Day",
"2016-12-26": "Saint Stephen's Day",
+ "2016-12-27": "Bridge Holiday",
+ "2016-12-28": "Bridge Holiday",
+ "2016-12-29": "Bridge Holiday",
+ "2016-12-30": "Bridge Holiday",
+ "2016-12-31": "New Year's Eve",
"2017-01-01": "New Year's Day",
"2017-01-02": "Saint Berchtold's Day",
+ "2017-04-13": "Day before Good Friday",
"2017-04-14": "Good Friday",
"2017-04-17": "Easter Monday",
"2017-04-24": "Sechsel\u00e4uten",
"2017-05-01": "Labor Day",
+ "2017-05-24": "Day before Ascension Day",
"2017-05-25": "Ascension Day",
"2017-06-05": "Whit Monday",
"2017-08-01": "National Day",
"2017-09-09": "Knabenschiessen",
"2017-09-10": "Knabenschiessen",
"2017-09-11": "Knabenschiessen",
+ "2017-12-24": "Christmas Eve",
"2017-12-25": "Christmas Day",
"2017-12-26": "Saint Stephen's Day",
+ "2017-12-27": "Bridge Holiday",
+ "2017-12-28": "Bridge Holiday",
+ "2017-12-29": "Bridge Holiday",
+ "2017-12-31": "New Year's Eve",
"2018-01-01": "New Year's Day",
"2018-01-02": "Saint Berchtold's Day",
+ "2018-03-29": "Day before Good Friday",
"2018-03-30": "Good Friday",
"2018-04-02": "Easter Monday",
"2018-04-16": "Sechsel\u00e4uten",
"2018-05-01": "Labor Day",
+ "2018-05-09": "Day before Ascension Day",
"2018-05-10": "Ascension Day",
+ "2018-05-11": "Bridge Holiday for Ascension Day",
"2018-05-21": "Whit Monday",
"2018-08-01": "National Day",
"2018-09-08": "Knabenschiessen",
"2018-09-09": "Knabenschiessen",
"2018-09-10": "Knabenschiessen",
+ "2018-12-24": "Christmas Eve",
"2018-12-25": "Christmas Day",
"2018-12-26": "Saint Stephen's Day",
+ "2018-12-27": "Bridge Holiday",
+ "2018-12-28": "Bridge Holiday",
+ "2018-12-31": "New Year's Eve",
"2019-01-01": "New Year's Day",
"2019-01-02": "Saint Berchtold's Day",
"2019-04-15": "Sechsel\u00e4uten",
+ "2019-04-18": "Day before Good Friday",
"2019-04-19": "Good Friday",
"2019-04-22": "Easter Monday",
"2019-05-01": "Labor Day",
+ "2019-05-29": "Day before Ascension Day",
"2019-05-30": "Ascension Day",
+ "2019-05-31": "Bridge Holiday for Ascension Day",
"2019-06-10": "Whit Monday",
"2019-08-01": "National Day",
"2019-09-07": "Knabenschiessen",
"2019-09-08": "Knabenschiessen",
"2019-09-09": "Knabenschiessen",
+ "2019-12-24": "Christmas Eve",
"2019-12-25": "Christmas Day",
"2019-12-26": "Saint Stephen's Day",
+ "2019-12-27": "Bridge Holiday",
+ "2019-12-30": "Bridge Holiday",
+ "2019-12-31": "New Year's Eve",
"2020-01-01": "New Year's Day",
"2020-01-02": "Saint Berchtold's Day",
+ "2020-04-09": "Day before Good Friday",
"2020-04-10": "Good Friday",
"2020-04-13": "Easter Monday",
"2020-04-20": "Sechsel\u00e4uten",
"2020-05-01": "Labor Day",
+ "2020-05-20": "Day before Ascension Day",
"2020-05-21": "Ascension Day",
"2020-06-01": "Whit Monday",
"2020-08-01": "National Day",
"2020-09-12": "Knabenschiessen",
"2020-09-13": "Knabenschiessen",
"2020-09-14": "Knabenschiessen",
+ "2020-12-24": "Christmas Eve",
"2020-12-25": "Christmas Day",
"2020-12-26": "Saint Stephen's Day",
+ "2020-12-28": "Bridge Holiday",
+ "2020-12-29": "Bridge Holiday",
+ "2020-12-30": "Bridge Holiday",
+ "2020-12-31": "New Year's Eve",
"2021-01-01": "New Year's Day",
"2021-01-02": "Saint Berchtold's Day",
+ "2021-04-01": "Day before Good Friday",
"2021-04-02": "Good Friday",
"2021-04-05": "Easter Monday",
"2021-04-19": "Sechsel\u00e4uten",
"2021-05-01": "Labor Day",
+ "2021-05-12": "Day before Ascension Day",
"2021-05-13": "Ascension Day",
"2021-05-24": "Whit Monday",
"2021-08-01": "National Day",
"2021-09-11": "Knabenschiessen",
"2021-09-12": "Knabenschiessen",
"2021-09-13": "Knabenschiessen",
+ "2021-12-24": "Christmas Eve",
"2021-12-25": "Christmas Day",
"2021-12-26": "Saint Stephen's Day",
+ "2021-12-27": "Bridge Holiday",
+ "2021-12-28": "Bridge Holiday",
+ "2021-12-29": "Bridge Holiday",
+ "2021-12-30": "Bridge Holiday",
+ "2021-12-31": "New Year's Eve",
"2022-01-01": "New Year's Day",
"2022-01-02": "Saint Berchtold's Day",
+ "2022-04-14": "Day before Good Friday",
"2022-04-15": "Good Friday",
"2022-04-18": "Easter Monday",
"2022-04-25": "Sechsel\u00e4uten",
"2022-05-01": "Labor Day",
+ "2022-05-25": "Day before Ascension Day",
"2022-05-26": "Ascension Day",
"2022-06-06": "Whit Monday",
"2022-08-01": "National Day",
"2022-09-10": "Knabenschiessen",
"2022-09-11": "Knabenschiessen",
"2022-09-12": "Knabenschiessen",
+ "2022-12-24": "Christmas Eve",
"2022-12-25": "Christmas Day",
"2022-12-26": "Saint Stephen's Day",
+ "2022-12-27": "Bridge Holiday",
+ "2022-12-28": "Bridge Holiday",
+ "2022-12-29": "Bridge Holiday",
+ "2022-12-30": "Bridge Holiday",
+ "2022-12-31": "New Year's Eve",
"2023-01-01": "New Year's Day",
"2023-01-02": "Saint Berchtold's Day",
+ "2023-04-06": "Day before Good Friday",
"2023-04-07": "Good Friday",
"2023-04-10": "Easter Monday",
"2023-04-17": "Sechsel\u00e4uten",
"2023-05-01": "Labor Day",
+ "2023-05-17": "Day before Ascension Day",
"2023-05-18": "Ascension Day",
"2023-05-29": "Whit Monday",
"2023-08-01": "National Day",
"2023-09-09": "Knabenschiessen",
"2023-09-10": "Knabenschiessen",
"2023-09-11": "Knabenschiessen",
+ "2023-12-24": "Christmas Eve",
"2023-12-25": "Christmas Day",
"2023-12-26": "Saint Stephen's Day",
+ "2023-12-27": "Bridge Holiday",
+ "2023-12-28": "Bridge Holiday",
+ "2023-12-29": "Bridge Holiday",
+ "2023-12-31": "New Year's Eve",
"2024-01-01": "New Year's Day",
"2024-01-02": "Saint Berchtold's Day",
+ "2024-03-28": "Day before Good Friday",
"2024-03-29": "Good Friday",
"2024-04-01": "Easter Monday",
"2024-04-15": "Sechsel\u00e4uten",
"2024-05-01": "Labor Day",
+ "2024-05-08": "Day before Ascension Day",
"2024-05-09": "Ascension Day",
+ "2024-05-10": "Bridge Holiday for Ascension Day",
"2024-05-20": "Whit Monday",
"2024-08-01": "National Day",
"2024-09-07": "Knabenschiessen",
"2024-09-08": "Knabenschiessen",
"2024-09-09": "Knabenschiessen",
+ "2024-12-24": "Christmas Eve",
"2024-12-25": "Christmas Day",
"2024-12-26": "Saint Stephen's Day",
+ "2024-12-27": "Bridge Holiday",
+ "2024-12-30": "Bridge Holiday",
+ "2024-12-31": "New Year's Eve",
"2025-01-01": "New Year's Day",
"2025-01-02": "Saint Berchtold's Day",
+ "2025-04-17": "Day before Good Friday",
"2025-04-18": "Good Friday",
"2025-04-21": "Easter Monday",
"2025-04-28": "Sechsel\u00e4uten",
"2025-05-01": "Labor Day",
+ "2025-05-28": "Day before Ascension Day",
"2025-05-29": "Ascension Day",
+ "2025-05-30": "Bridge Holiday for Ascension Day",
"2025-06-09": "Whit Monday",
"2025-08-01": "National Day",
"2025-09-13": "Knabenschiessen",
"2025-09-14": "Knabenschiessen",
"2025-09-15": "Knabenschiessen",
+ "2025-12-24": "Christmas Eve",
"2025-12-25": "Christmas Day",
"2025-12-26": "Saint Stephen's Day",
+ "2025-12-29": "Bridge Holiday",
+ "2025-12-30": "Bridge Holiday",
+ "2025-12-31": "New Year's Eve",
"2026-01-01": "New Year's Day",
"2026-01-02": "Saint Berchtold's Day",
+ "2026-04-02": "Day before Good Friday",
"2026-04-03": "Good Friday",
"2026-04-06": "Easter Monday",
"2026-04-20": "Sechsel\u00e4uten",
"2026-05-01": "Labor Day",
+ "2026-05-13": "Day before Ascension Day",
"2026-05-14": "Ascension Day",
"2026-05-25": "Whit Monday",
"2026-08-01": "National Day",
"2026-09-12": "Knabenschiessen",
"2026-09-13": "Knabenschiessen",
"2026-09-14": "Knabenschiessen",
+ "2026-12-24": "Christmas Eve",
"2026-12-25": "Christmas Day",
"2026-12-26": "Saint Stephen's Day",
+ "2026-12-28": "Bridge Holiday",
+ "2026-12-29": "Bridge Holiday",
+ "2026-12-30": "Bridge Holiday",
+ "2026-12-31": "New Year's Eve",
"2027-01-01": "New Year's Day",
"2027-01-02": "Saint Berchtold's Day",
+ "2027-03-25": "Day before Good Friday",
"2027-03-26": "Good Friday",
"2027-03-29": "Easter Monday",
"2027-04-19": "Sechsel\u00e4uten",
"2027-05-01": "Labor Day",
+ "2027-05-05": "Day before Ascension Day",
"2027-05-06": "Ascension Day",
"2027-05-17": "Whit Monday",
"2027-08-01": "National Day",
"2027-09-11": "Knabenschiessen",
"2027-09-12": "Knabenschiessen",
"2027-09-13": "Knabenschiessen",
+ "2027-12-24": "Christmas Eve",
"2027-12-25": "Christmas Day",
"2027-12-26": "Saint Stephen's Day",
+ "2027-12-27": "Bridge Holiday",
+ "2027-12-28": "Bridge Holiday",
+ "2027-12-29": "Bridge Holiday",
+ "2027-12-30": "Bridge Holiday",
+ "2027-12-31": "New Year's Eve",
"2028-01-01": "New Year's Day",
"2028-01-02": "Saint Berchtold's Day",
+ "2028-04-13": "Day before Good Friday",
"2028-04-14": "Good Friday",
"2028-04-17": "Easter Monday",
"2028-04-24": "Sechsel\u00e4uten",
"2028-05-01": "Labor Day",
+ "2028-05-24": "Day before Ascension Day",
"2028-05-25": "Ascension Day",
"2028-06-05": "Whit Monday",
"2028-08-01": "National Day",
"2028-09-09": "Knabenschiessen",
"2028-09-10": "Knabenschiessen",
"2028-09-11": "Knabenschiessen",
+ "2028-12-24": "Christmas Eve",
"2028-12-25": "Christmas Day",
"2028-12-26": "Saint Stephen's Day",
+ "2028-12-27": "Bridge Holiday",
+ "2028-12-28": "Bridge Holiday",
+ "2028-12-29": "Bridge Holiday",
+ "2028-12-31": "New Year's Eve",
"2029-01-01": "New Year's Day",
"2029-01-02": "Saint Berchtold's Day",
+ "2029-03-29": "Day before Good Friday",
"2029-03-30": "Good Friday",
"2029-04-02": "Easter Monday",
"2029-04-16": "Sechsel\u00e4uten",
"2029-05-01": "Labor Day",
+ "2029-05-09": "Day before Ascension Day",
"2029-05-10": "Ascension Day",
+ "2029-05-11": "Bridge Holiday for Ascension Day",
"2029-05-21": "Whit Monday",
"2029-08-01": "National Day",
"2029-09-08": "Knabenschiessen",
"2029-09-09": "Knabenschiessen",
"2029-09-10": "Knabenschiessen",
+ "2029-12-24": "Christmas Eve",
"2029-12-25": "Christmas Day",
"2029-12-26": "Saint Stephen's Day",
+ "2029-12-27": "Bridge Holiday",
+ "2029-12-28": "Bridge Holiday",
+ "2029-12-31": "New Year's Eve",
"2030-01-01": "New Year's Day",
"2030-01-02": "Saint Berchtold's Day",
"2030-04-15": "Sechsel\u00e4uten",
+ "2030-04-18": "Day before Good Friday",
"2030-04-19": "Good Friday",
"2030-04-22": "Easter Monday",
"2030-05-01": "Labor Day",
+ "2030-05-29": "Day before Ascension Day",
"2030-05-30": "Ascension Day",
+ "2030-05-31": "Bridge Holiday for Ascension Day",
"2030-06-10": "Whit Monday",
"2030-08-01": "National Day",
"2030-09-07": "Knabenschiessen",
"2030-09-08": "Knabenschiessen",
"2030-09-09": "Knabenschiessen",
+ "2030-12-24": "Christmas Eve",
"2030-12-25": "Christmas Day",
"2030-12-26": "Saint Stephen's Day",
+ "2030-12-27": "Bridge Holiday",
+ "2030-12-30": "Bridge Holiday",
+ "2030-12-31": "New Year's Eve",
"2031-01-01": "New Year's Day",
"2031-01-02": "Saint Berchtold's Day",
+ "2031-04-10": "Day before Good Friday",
"2031-04-11": "Good Friday",
"2031-04-14": "Easter Monday",
"2031-04-21": "Sechsel\u00e4uten",
"2031-05-01": "Labor Day",
+ "2031-05-21": "Day before Ascension Day",
"2031-05-22": "Ascension Day",
+ "2031-05-23": "Bridge Holiday for Ascension Day",
"2031-06-02": "Whit Monday",
"2031-08-01": "National Day",
"2031-09-13": "Knabenschiessen",
"2031-09-14": "Knabenschiessen",
"2031-09-15": "Knabenschiessen",
+ "2031-12-24": "Christmas Eve",
"2031-12-25": "Christmas Day",
"2031-12-26": "Saint Stephen's Day",
+ "2031-12-29": "Bridge Holiday",
+ "2031-12-30": "Bridge Holiday",
+ "2031-12-31": "New Year's Eve",
"2032-01-01": "New Year's Day",
"2032-01-02": "Saint Berchtold's Day",
+ "2032-03-25": "Day before Good Friday",
"2032-03-26": "Good Friday",
"2032-03-29": "Easter Monday",
"2032-04-19": "Sechsel\u00e4uten",
"2032-05-01": "Labor Day",
+ "2032-05-05": "Day before Ascension Day",
"2032-05-06": "Ascension Day",
"2032-05-17": "Whit Monday",
"2032-08-01": "National Day",
"2032-09-11": "Knabenschiessen",
"2032-09-12": "Knabenschiessen",
"2032-09-13": "Knabenschiessen",
+ "2032-12-24": "Christmas Eve",
"2032-12-25": "Christmas Day",
"2032-12-26": "Saint Stephen's Day",
+ "2032-12-27": "Bridge Holiday",
+ "2032-12-28": "Bridge Holiday",
+ "2032-12-29": "Bridge Holiday",
+ "2032-12-30": "Bridge Holiday",
+ "2032-12-31": "New Year's Eve",
"2033-01-01": "New Year's Day",
"2033-01-02": "Saint Berchtold's Day",
+ "2033-04-14": "Day before Good Friday",
"2033-04-15": "Good Friday",
"2033-04-18": "Easter Monday",
"2033-04-25": "Sechsel\u00e4uten",
"2033-05-01": "Labor Day",
+ "2033-05-25": "Day before Ascension Day",
"2033-05-26": "Ascension Day",
"2033-06-06": "Whit Monday",
"2033-08-01": "National Day",
"2033-09-10": "Knabenschiessen",
"2033-09-11": "Knabenschiessen",
"2033-09-12": "Knabenschiessen",
+ "2033-12-24": "Christmas Eve",
"2033-12-25": "Christmas Day",
"2033-12-26": "Saint Stephen's Day",
+ "2033-12-27": "Bridge Holiday",
+ "2033-12-28": "Bridge Holiday",
+ "2033-12-29": "Bridge Holiday",
+ "2033-12-30": "Bridge Holiday",
+ "2033-12-31": "New Year's Eve",
"2034-01-01": "New Year's Day",
"2034-01-02": "Saint Berchtold's Day",
+ "2034-04-06": "Day before Good Friday",
"2034-04-07": "Good Friday",
"2034-04-10": "Easter Monday",
"2034-04-17": "Sechsel\u00e4uten",
"2034-05-01": "Labor Day",
+ "2034-05-17": "Day before Ascension Day",
"2034-05-18": "Ascension Day",
"2034-05-29": "Whit Monday",
"2034-08-01": "National Day",
"2034-09-09": "Knabenschiessen",
"2034-09-10": "Knabenschiessen",
"2034-09-11": "Knabenschiessen",
+ "2034-12-24": "Christmas Eve",
"2034-12-25": "Christmas Day",
"2034-12-26": "Saint Stephen's Day",
+ "2034-12-27": "Bridge Holiday",
+ "2034-12-28": "Bridge Holiday",
+ "2034-12-29": "Bridge Holiday",
+ "2034-12-31": "New Year's Eve",
"2035-01-01": "New Year's Day",
"2035-01-02": "Saint Berchtold's Day",
+ "2035-03-22": "Day before Good Friday",
"2035-03-23": "Good Friday",
"2035-03-26": "Easter Monday",
"2035-04-16": "Sechsel\u00e4uten",
"2035-05-01": "Labor Day",
+ "2035-05-02": "Day before Ascension Day",
"2035-05-03": "Ascension Day",
+ "2035-05-04": "Bridge Holiday for Ascension Day",
"2035-05-14": "Whit Monday",
"2035-08-01": "National Day",
"2035-09-08": "Knabenschiessen",
"2035-09-09": "Knabenschiessen",
"2035-09-10": "Knabenschiessen",
+ "2035-12-24": "Christmas Eve",
"2035-12-25": "Christmas Day",
"2035-12-26": "Saint Stephen's Day",
+ "2035-12-27": "Bridge Holiday",
+ "2035-12-28": "Bridge Holiday",
+ "2035-12-31": "New Year's Eve",
"2036-01-01": "New Year's Day",
"2036-01-02": "Saint Berchtold's Day",
+ "2036-04-10": "Day before Good Friday",
"2036-04-11": "Good Friday",
"2036-04-14": "Easter Monday",
"2036-04-21": "Sechsel\u00e4uten",
"2036-05-01": "Labor Day",
+ "2036-05-21": "Day before Ascension Day",
"2036-05-22": "Ascension Day",
+ "2036-05-23": "Bridge Holiday for Ascension Day",
"2036-06-02": "Whit Monday",
"2036-08-01": "National Day",
"2036-09-13": "Knabenschiessen",
"2036-09-14": "Knabenschiessen",
"2036-09-15": "Knabenschiessen",
+ "2036-12-24": "Christmas Eve",
"2036-12-25": "Christmas Day",
"2036-12-26": "Saint Stephen's Day",
+ "2036-12-29": "Bridge Holiday",
+ "2036-12-30": "Bridge Holiday",
+ "2036-12-31": "New Year's Eve",
"2037-01-01": "New Year's Day",
"2037-01-02": "Saint Berchtold's Day",
+ "2037-04-02": "Day before Good Friday",
"2037-04-03": "Good Friday",
"2037-04-06": "Easter Monday",
"2037-04-20": "Sechsel\u00e4uten",
"2037-05-01": "Labor Day",
+ "2037-05-13": "Day before Ascension Day",
"2037-05-14": "Ascension Day",
"2037-05-25": "Whit Monday",
"2037-08-01": "National Day",
"2037-09-12": "Knabenschiessen",
"2037-09-13": "Knabenschiessen",
"2037-09-14": "Knabenschiessen",
+ "2037-12-24": "Christmas Eve",
"2037-12-25": "Christmas Day",
"2037-12-26": "Saint Stephen's Day",
+ "2037-12-28": "Bridge Holiday",
+ "2037-12-29": "Bridge Holiday",
+ "2037-12-30": "Bridge Holiday",
+ "2037-12-31": "New Year's Eve",
"2038-01-01": "New Year's Day",
"2038-01-02": "Saint Berchtold's Day",
"2038-04-19": "Sechsel\u00e4uten",
+ "2038-04-22": "Day before Good Friday",
"2038-04-23": "Good Friday",
"2038-04-26": "Easter Monday",
"2038-05-01": "Labor Day",
+ "2038-06-02": "Day before Ascension Day",
"2038-06-03": "Ascension Day",
"2038-06-14": "Whit Monday",
"2038-08-01": "National Day",
"2038-09-11": "Knabenschiessen",
"2038-09-12": "Knabenschiessen",
"2038-09-13": "Knabenschiessen",
+ "2038-12-24": "Christmas Eve",
"2038-12-25": "Christmas Day",
"2038-12-26": "Saint Stephen's Day",
+ "2038-12-27": "Bridge Holiday",
+ "2038-12-28": "Bridge Holiday",
+ "2038-12-29": "Bridge Holiday",
+ "2038-12-30": "Bridge Holiday",
+ "2038-12-31": "New Year's Eve",
"2039-01-01": "New Year's Day",
"2039-01-02": "Saint Berchtold's Day",
+ "2039-04-07": "Day before Good Friday",
"2039-04-08": "Good Friday",
"2039-04-11": "Easter Monday",
"2039-04-18": "Sechsel\u00e4uten",
"2039-05-01": "Labor Day",
+ "2039-05-18": "Day before Ascension Day",
"2039-05-19": "Ascension Day",
"2039-05-30": "Whit Monday",
"2039-08-01": "National Day",
"2039-09-10": "Knabenschiessen",
"2039-09-11": "Knabenschiessen",
"2039-09-12": "Knabenschiessen",
+ "2039-12-24": "Christmas Eve",
"2039-12-25": "Christmas Day",
"2039-12-26": "Saint Stephen's Day",
+ "2039-12-27": "Bridge Holiday",
+ "2039-12-28": "Bridge Holiday",
+ "2039-12-29": "Bridge Holiday",
+ "2039-12-30": "Bridge Holiday",
+ "2039-12-31": "New Year's Eve",
"2040-01-01": "New Year's Day",
"2040-01-02": "Saint Berchtold's Day",
+ "2040-03-29": "Day before Good Friday",
"2040-03-30": "Good Friday",
"2040-04-02": "Easter Monday",
"2040-04-16": "Sechsel\u00e4uten",
"2040-05-01": "Labor Day",
+ "2040-05-09": "Day before Ascension Day",
"2040-05-10": "Ascension Day",
+ "2040-05-11": "Bridge Holiday for Ascension Day",
"2040-05-21": "Whit Monday",
"2040-08-01": "National Day",
"2040-09-08": "Knabenschiessen",
"2040-09-09": "Knabenschiessen",
"2040-09-10": "Knabenschiessen",
+ "2040-12-24": "Christmas Eve",
"2040-12-25": "Christmas Day",
"2040-12-26": "Saint Stephen's Day",
+ "2040-12-27": "Bridge Holiday",
+ "2040-12-28": "Bridge Holiday",
+ "2040-12-31": "New Year's Eve",
"2041-01-01": "New Year's Day",
"2041-01-02": "Saint Berchtold's Day",
"2041-04-15": "Sechsel\u00e4uten",
+ "2041-04-18": "Day before Good Friday",
"2041-04-19": "Good Friday",
"2041-04-22": "Easter Monday",
"2041-05-01": "Labor Day",
+ "2041-05-29": "Day before Ascension Day",
"2041-05-30": "Ascension Day",
+ "2041-05-31": "Bridge Holiday for Ascension Day",
"2041-06-10": "Whit Monday",
"2041-08-01": "National Day",
"2041-09-07": "Knabenschiessen",
"2041-09-08": "Knabenschiessen",
"2041-09-09": "Knabenschiessen",
+ "2041-12-24": "Christmas Eve",
"2041-12-25": "Christmas Day",
"2041-12-26": "Saint Stephen's Day",
+ "2041-12-27": "Bridge Holiday",
+ "2041-12-30": "Bridge Holiday",
+ "2041-12-31": "New Year's Eve",
"2042-01-01": "New Year's Day",
"2042-01-02": "Saint Berchtold's Day",
+ "2042-04-03": "Day before Good Friday",
"2042-04-04": "Good Friday",
"2042-04-07": "Easter Monday",
"2042-04-21": "Sechsel\u00e4uten",
"2042-05-01": "Labor Day",
+ "2042-05-14": "Day before Ascension Day",
"2042-05-15": "Ascension Day",
+ "2042-05-16": "Bridge Holiday for Ascension Day",
"2042-05-26": "Whit Monday",
"2042-08-01": "National Day",
"2042-09-13": "Knabenschiessen",
"2042-09-14": "Knabenschiessen",
"2042-09-15": "Knabenschiessen",
+ "2042-12-24": "Christmas Eve",
"2042-12-25": "Christmas Day",
"2042-12-26": "Saint Stephen's Day",
+ "2042-12-29": "Bridge Holiday",
+ "2042-12-30": "Bridge Holiday",
+ "2042-12-31": "New Year's Eve",
"2043-01-01": "New Year's Day",
"2043-01-02": "Saint Berchtold's Day",
+ "2043-03-26": "Day before Good Friday",
"2043-03-27": "Good Friday",
"2043-03-30": "Easter Monday",
"2043-04-20": "Sechsel\u00e4uten",
"2043-05-01": "Labor Day",
+ "2043-05-06": "Day before Ascension Day",
"2043-05-07": "Ascension Day",
"2043-05-18": "Whit Monday",
"2043-08-01": "National Day",
"2043-09-12": "Knabenschiessen",
"2043-09-13": "Knabenschiessen",
"2043-09-14": "Knabenschiessen",
+ "2043-12-24": "Christmas Eve",
"2043-12-25": "Christmas Day",
"2043-12-26": "Saint Stephen's Day",
+ "2043-12-28": "Bridge Holiday",
+ "2043-12-29": "Bridge Holiday",
+ "2043-12-30": "Bridge Holiday",
+ "2043-12-31": "New Year's Eve",
"2044-01-01": "New Year's Day",
"2044-01-02": "Saint Berchtold's Day",
+ "2044-04-14": "Day before Good Friday",
"2044-04-15": "Good Friday",
"2044-04-18": "Easter Monday",
"2044-04-25": "Sechsel\u00e4uten",
"2044-05-01": "Labor Day",
+ "2044-05-25": "Day before Ascension Day",
"2044-05-26": "Ascension Day",
"2044-06-06": "Whit Monday",
"2044-08-01": "National Day",
"2044-09-10": "Knabenschiessen",
"2044-09-11": "Knabenschiessen",
"2044-09-12": "Knabenschiessen",
+ "2044-12-24": "Christmas Eve",
"2044-12-25": "Christmas Day",
"2044-12-26": "Saint Stephen's Day",
+ "2044-12-27": "Bridge Holiday",
+ "2044-12-28": "Bridge Holiday",
+ "2044-12-29": "Bridge Holiday",
+ "2044-12-30": "Bridge Holiday",
+ "2044-12-31": "New Year's Eve",
"2045-01-01": "New Year's Day",
"2045-01-02": "Saint Berchtold's Day",
+ "2045-04-06": "Day before Good Friday",
"2045-04-07": "Good Friday",
"2045-04-10": "Easter Monday",
"2045-04-17": "Sechsel\u00e4uten",
"2045-05-01": "Labor Day",
+ "2045-05-17": "Day before Ascension Day",
"2045-05-18": "Ascension Day",
"2045-05-29": "Whit Monday",
"2045-08-01": "National Day",
"2045-09-09": "Knabenschiessen",
"2045-09-10": "Knabenschiessen",
"2045-09-11": "Knabenschiessen",
+ "2045-12-24": "Christmas Eve",
"2045-12-25": "Christmas Day",
"2045-12-26": "Saint Stephen's Day",
+ "2045-12-27": "Bridge Holiday",
+ "2045-12-28": "Bridge Holiday",
+ "2045-12-29": "Bridge Holiday",
+ "2045-12-31": "New Year's Eve",
"2046-01-01": "New Year's Day",
"2046-01-02": "Saint Berchtold's Day",
+ "2046-03-22": "Day before Good Friday",
"2046-03-23": "Good Friday",
"2046-03-26": "Easter Monday",
"2046-04-16": "Sechsel\u00e4uten",
"2046-05-01": "Labor Day",
+ "2046-05-02": "Day before Ascension Day",
"2046-05-03": "Ascension Day",
+ "2046-05-04": "Bridge Holiday for Ascension Day",
"2046-05-14": "Whit Monday",
"2046-08-01": "National Day",
"2046-09-08": "Knabenschiessen",
"2046-09-09": "Knabenschiessen",
"2046-09-10": "Knabenschiessen",
+ "2046-12-24": "Christmas Eve",
"2046-12-25": "Christmas Day",
"2046-12-26": "Saint Stephen's Day",
+ "2046-12-27": "Bridge Holiday",
+ "2046-12-28": "Bridge Holiday",
+ "2046-12-31": "New Year's Eve",
"2047-01-01": "New Year's Day",
"2047-01-02": "Saint Berchtold's Day",
+ "2047-04-11": "Day before Good Friday",
"2047-04-12": "Good Friday",
"2047-04-15": "Easter Monday",
"2047-04-22": "Sechsel\u00e4uten",
"2047-05-01": "Labor Day",
+ "2047-05-22": "Day before Ascension Day",
"2047-05-23": "Ascension Day",
+ "2047-05-24": "Bridge Holiday for Ascension Day",
"2047-06-03": "Whit Monday",
"2047-08-01": "National Day",
"2047-09-07": "Knabenschiessen",
"2047-09-08": "Knabenschiessen",
"2047-09-09": "Knabenschiessen",
+ "2047-12-24": "Christmas Eve",
"2047-12-25": "Christmas Day",
"2047-12-26": "Saint Stephen's Day",
+ "2047-12-27": "Bridge Holiday",
+ "2047-12-30": "Bridge Holiday",
+ "2047-12-31": "New Year's Eve",
"2048-01-01": "New Year's Day",
"2048-01-02": "Saint Berchtold's Day",
+ "2048-04-02": "Day before Good Friday",
"2048-04-03": "Good Friday",
"2048-04-06": "Easter Monday",
"2048-04-20": "Sechsel\u00e4uten",
"2048-05-01": "Labor Day",
+ "2048-05-13": "Day before Ascension Day",
"2048-05-14": "Ascension Day",
"2048-05-25": "Whit Monday",
"2048-08-01": "National Day",
"2048-09-12": "Knabenschiessen",
"2048-09-13": "Knabenschiessen",
"2048-09-14": "Knabenschiessen",
+ "2048-12-24": "Christmas Eve",
"2048-12-25": "Christmas Day",
"2048-12-26": "Saint Stephen's Day",
+ "2048-12-28": "Bridge Holiday",
+ "2048-12-29": "Bridge Holiday",
+ "2048-12-30": "Bridge Holiday",
+ "2048-12-31": "New Year's Eve",
"2049-01-01": "New Year's Day",
"2049-01-02": "Saint Berchtold's Day",
+ "2049-04-15": "Day before Good Friday",
"2049-04-16": "Good Friday",
"2049-04-19": "Easter Monday",
"2049-04-26": "Sechsel\u00e4uten",
"2049-05-01": "Labor Day",
+ "2049-05-26": "Day before Ascension Day",
"2049-05-27": "Ascension Day",
"2049-06-07": "Whit Monday",
"2049-08-01": "National Day",
"2049-09-11": "Knabenschiessen",
"2049-09-12": "Knabenschiessen",
"2049-09-13": "Knabenschiessen",
+ "2049-12-24": "Christmas Eve",
"2049-12-25": "Christmas Day",
"2049-12-26": "Saint Stephen's Day",
+ "2049-12-27": "Bridge Holiday",
+ "2049-12-28": "Bridge Holiday",
+ "2049-12-29": "Bridge Holiday",
+ "2049-12-30": "Bridge Holiday",
+ "2049-12-31": "New Year's Eve",
"2050-01-01": "New Year's Day",
"2050-01-02": "Saint Berchtold's Day",
+ "2050-04-07": "Day before Good Friday",
"2050-04-08": "Good Friday",
"2050-04-11": "Easter Monday",
"2050-04-18": "Sechsel\u00e4uten",
"2050-05-01": "Labor Day",
+ "2050-05-18": "Day before Ascension Day",
"2050-05-19": "Ascension Day",
"2050-05-30": "Whit Monday",
"2050-08-01": "National Day",
"2050-09-10": "Knabenschiessen",
"2050-09-11": "Knabenschiessen",
"2050-09-12": "Knabenschiessen",
+ "2050-12-24": "Christmas Eve",
"2050-12-25": "Christmas Day",
- "2050-12-26": "Saint Stephen's Day"
+ "2050-12-26": "Saint Stephen's Day",
+ "2050-12-27": "Bridge Holiday",
+ "2050-12-28": "Bridge Holiday",
+ "2050-12-29": "Bridge Holiday",
+ "2050-12-30": "Bridge Holiday",
+ "2050-12-31": "New Year's Eve"
}
diff --git a/tests/countries/test_switzerland.py b/tests/countries/test_switzerland.py
index a8b6c8a007..8f0f28b089 100644
--- a/tests/countries/test_switzerland.py
+++ b/tests/countries/test_switzerland.py
@@ -20,18 +20,25 @@
class TestSwitzerland(CommonCountryTests, TestCase):
@classmethod
def setUpClass(cls):
- years = range(1970, 2050)
- super().setUpClass(Switzerland, years=years)
+ cls.full_range = range(1970, 2050)
+ super().setUpClass(Switzerland, years=cls.full_range)
cls.subdiv_holidays = {
- subdiv: Switzerland(subdiv=subdiv, years=years) for subdiv in CH.subdivisions
+ subdiv: Switzerland(subdiv=subdiv, years=cls.full_range)
+ for subdiv in Switzerland.subdivisions
}
cls.subdiv_half_day_holidays = {
- subdiv: Switzerland(categories=HALF_DAY, subdiv=subdiv, years=years)
- for subdiv in CH.subdivisions
+ subdiv: Switzerland(categories=HALF_DAY, subdiv=subdiv, years=cls.full_range)
+ for subdiv in Switzerland.subdivisions
}
cls.subdiv_optional_holidays = {
- subdiv: Switzerland(categories=OPTIONAL, subdiv=subdiv, years=years)
- for subdiv in CH.subdivisions
+ subdiv: Switzerland(categories=OPTIONAL, subdiv=subdiv, years=cls.full_range)
+ for subdiv in Switzerland.subdivisions
+ }
+ cls.subdiv_optional_holidays_non_observed = {
+ subdiv: Switzerland(
+ categories=OPTIONAL, observed=False, subdiv=subdiv, years=cls.full_range
+ )
+ for subdiv in Switzerland.subdivisions
}
def test_country_aliases(self):
@@ -39,7 +46,7 @@ def test_country_aliases(self):
def test_all_holidays_present(self):
y_2018 = set()
- for p in CH.subdivisions:
+ for p in Switzerland.subdivisions:
y_2018.update(
Switzerland(categories=(HALF_DAY, OPTIONAL, PUBLIC), years=2018, subdiv=p).values()
)
@@ -50,11 +57,14 @@ def test_all_holidays_present(self):
"Jahrestag der Ausrufung der Republik",
"Josefstag",
"Näfelser Fahrt",
+ "Vortag vor Karfreitag",
"Karfreitag",
"Ostermontag",
"Sechseläuten",
"Tag der Arbeit",
+ "Vortag vor Auffahrt",
"Auffahrt",
+ "Brückentag nach Auffahrt",
"Pfingstmontag",
"Fronleichnam",
"Fest der Unabhängigkeit",
@@ -67,8 +77,11 @@ def test_all_holidays_present(self):
"Allerheiligen",
"Mariä Empfängnis",
"Genfer Bettag",
+ "Heiligabend",
"Weihnachten",
"Stephanstag",
+ "Brückentag",
+ "Vortag vor Neujahr",
"Wiederherstellung der Republik",
}
@@ -80,11 +93,11 @@ def test_all_holidays_present(self):
def test_fixed_holidays(self):
# New Year's Day.
- self.assertHolidayName("Neujahrstag", (f"{year}-01-01" for year in range(1970, 2050)))
+ self.assertHolidayName("Neujahrstag", (f"{year}-01-01" for year in self.full_range))
# National Day.
- self.assertHolidayName("Nationalfeiertag", (f"{year}-08-01" for year in range(1970, 2050)))
+ self.assertHolidayName("Nationalfeiertag", (f"{year}-08-01" for year in self.full_range))
# Christmas Day.
- self.assertHolidayName("Weihnachten", (f"{year}-12-25" for year in range(1970, 2050)))
+ self.assertHolidayName("Weihnachten", (f"{year}-12-25" for year in self.full_range))
def test_berchtolds_day(self):
name = "Berchtoldstag"
@@ -96,19 +109,19 @@ def test_berchtolds_day(self):
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv in subdivs_that_have:
self.assertHolidayName(
- name, holidays, (f"{year}-01-02" for year in range(1970, 2050))
+ name, holidays, (f"{year}-01-02" for year in self.full_range)
)
elif subdiv != "NE":
- self.assertNoHoliday(holidays, (f"{year}-01-02" for year in range(1970, 2050)))
+ self.assertNoHoliday(holidays, (f"{year}-01-02" for year in self.full_range))
self.assertNoHolidayName(name, holidays)
for subdiv, holidays in self.subdiv_optional_holidays.items():
if subdiv in subdivs_optional:
self.assertHolidayName(
- name, holidays, (f"{year}-01-02" for year in range(1970, 2050))
+ name, holidays, (f"{year}-01-02" for year in self.full_range)
)
else:
- self.assertNoHoliday(holidays, (f"{year}-01-02" for year in range(1970, 2050)))
+ self.assertNoHoliday(holidays, (f"{year}-01-02" for year in self.full_range))
self.assertNoHolidayName(name, holidays)
# When holiday present in NE.
@@ -118,7 +131,7 @@ def test_berchtolds_day(self):
)
self.assertNoHoliday(
self.subdiv_holidays["NE"],
- (f"{year}-01-02" for year in set(range(1970, 2050)).difference(ne_years)),
+ (f"{year}-01-02" for year in set(self.full_range).difference(ne_years)),
)
def test_epiphany(self):
@@ -130,10 +143,10 @@ def test_epiphany(self):
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv in subdivs_that_have:
self.assertHolidayName(
- name, holidays, (f"{year}-01-06" for year in range(1970, 2050))
+ name, holidays, (f"{year}-01-06" for year in self.full_range)
)
else:
- self.assertNoHoliday(holidays, (f"{year}-01-06" for year in range(1970, 2050)))
+ self.assertNoHoliday(holidays, (f"{year}-01-06" for year in self.full_range))
self.assertNoHolidayName(name, holidays)
def test_republic_day(self):
@@ -144,10 +157,10 @@ def test_republic_day(self):
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv == "NE":
self.assertHolidayName(
- name, holidays, (f"{year}-03-01" for year in range(1970, 2050))
+ name, holidays, (f"{year}-03-01" for year in self.full_range)
)
else:
- self.assertNoHoliday(holidays, (f"{year}-03-01" for year in range(1970, 2050)))
+ self.assertNoHoliday(holidays, (f"{year}-03-01" for year in self.full_range))
self.assertNoHolidayName(name, holidays)
def test_st_josephs_day(self):
@@ -159,10 +172,10 @@ def test_st_josephs_day(self):
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv in subdivs_that_have:
self.assertHolidayName(
- name, holidays, (f"{year}-03-19" for year in range(1970, 2050))
+ name, holidays, (f"{year}-03-19" for year in self.full_range)
)
else:
- self.assertNoHoliday(holidays, (f"{year}-03-19" for year in range(1970, 2050)))
+ self.assertNoHoliday(holidays, (f"{year}-03-19" for year in self.full_range))
self.assertNoHolidayName(name, holidays)
def test_nafels_ride(self):
@@ -223,7 +236,7 @@ def test_good_friday(self):
)
subdivs_that_dont = {"TI", "VS"}
subdivs_optional = {"GR"}
- subdivs_that_have = set(CH.subdivisions) - subdivs_that_dont - subdivs_optional
+ subdivs_that_have = set(Switzerland.subdivisions) - subdivs_that_dont - subdivs_optional
self.assertNoHolidayName(name)
@@ -265,7 +278,7 @@ def test_easter_monday(self):
)
subdivs_that_dont = {"NE", "SO"}
subdivs_optional = {"FR", "NW", "OW", "VS", "ZG"}
- subdivs_that_have = set(CH.subdivisions) - subdivs_that_dont - subdivs_optional
+ subdivs_that_have = set(Switzerland.subdivisions) - subdivs_that_dont - subdivs_optional
self.assertNoHolidayName(name)
@@ -292,22 +305,22 @@ def test_labor_day(self):
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv in subdivs_that_have:
self.assertHolidayName(
- name, holidays, (f"{year}-05-01" for year in range(1970, 2050))
+ name, holidays, (f"{year}-05-01" for year in self.full_range)
)
else:
self.assertNoHolidayName(
- name, holidays, (f"{year}-05-01" for year in range(1970, 2050))
+ name, holidays, (f"{year}-05-01" for year in self.full_range)
)
self.assertNoHolidayName(name, holidays)
for subdiv, holidays in self.subdiv_half_day_holidays.items():
if subdiv == "SO":
self.assertHolidayName(
- name, holidays, (f"{year}-05-01" for year in range(1970, 2050))
+ name, holidays, (f"{year}-05-01" for year in self.full_range)
)
else:
self.assertNoHolidayName(
- name, holidays, (f"{year}-05-01" for year in range(1970, 2050))
+ name, holidays, (f"{year}-05-01" for year in self.full_range)
)
self.assertNoHolidayName(name, holidays)
@@ -335,7 +348,7 @@ def test_ascension_day(self):
)
self.assertHolidayName(name, known_good)
- self.assertHolidayName(name, range(1970, 2050))
+ self.assertHolidayName(name, self.full_range)
for holidays in self.subdiv_holidays.values():
self.assertHolidayName(name, holidays, known_good)
@@ -364,7 +377,7 @@ def test_whit_monday(self):
subdivs_that_dont = {"NE", "SO"}
subdivs_optional = {"FR", "NW", "OW", "VS", "ZG"}
- subdivs_that_have = set(CH.subdivisions) - subdivs_that_dont - subdivs_optional
+ subdivs_that_have = set(Switzerland.subdivisions) - subdivs_that_dont - subdivs_optional
self.assertNoHolidayName(name)
@@ -429,11 +442,11 @@ def test_independence_day(self):
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv == "JU":
self.assertHolidayName(
- name, holidays, (f"{year}-06-23" for year in range(1970, 2050))
+ name, holidays, (f"{year}-06-23" for year in self.full_range)
)
else:
self.assertNoHolidayName(
- name, holidays, (f"{year}-06-23" for year in range(1970, 2050))
+ name, holidays, (f"{year}-06-23" for year in self.full_range)
)
self.assertNoHolidayName(name, holidays)
@@ -445,10 +458,10 @@ def test_saints_peter_and_paul(self):
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv == "TI":
self.assertHolidayName(
- name, holidays, (f"{year}-06-29" for year in range(1970, 2050))
+ name, holidays, (f"{year}-06-29" for year in self.full_range)
)
else:
- self.assertNoHoliday(holidays, (f"{year}-06-29" for year in range(1970, 2050)))
+ self.assertNoHoliday(holidays, (f"{year}-06-29" for year in self.full_range))
self.assertNoHolidayName(name, holidays)
def test_assumption_day(self):
@@ -460,10 +473,10 @@ def test_assumption_day(self):
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv in subdivs_that_have:
self.assertHolidayName(
- name, holidays, (f"{year}-08-15" for year in range(1970, 2050))
+ name, holidays, (f"{year}-08-15" for year in self.full_range)
)
else:
- self.assertNoHoliday(holidays, (f"{year}-08-15" for year in range(1970, 2050)))
+ self.assertNoHoliday(holidays, (f"{year}-08-15" for year in self.full_range))
self.assertNoHolidayName(name, holidays)
def test_prayer_monday(self):
@@ -499,10 +512,10 @@ def test_saint_nicholas(self):
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv == "OW":
self.assertHolidayName(
- name, holidays, (f"{year}-09-25" for year in range(1970, 2050))
+ name, holidays, (f"{year}-09-25" for year in self.full_range)
)
else:
- self.assertNoHoliday(holidays, (f"{year}-09-25" for year in range(1970, 2050)))
+ self.assertNoHoliday(holidays, (f"{year}-09-25" for year in self.full_range))
self.assertNoHolidayName(name, holidays)
def test_all_saints_day(self):
@@ -528,10 +541,10 @@ def test_all_saints_day(self):
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv in subdivs_that_have:
self.assertHolidayName(
- name, holidays, (f"{year}-11-01" for year in range(1970, 2050))
+ name, holidays, (f"{year}-11-01" for year in self.full_range)
)
else:
- self.assertNoHoliday(holidays, (f"{year}-11-01" for year in range(1970, 2050)))
+ self.assertNoHoliday(holidays, (f"{year}-11-01" for year in self.full_range))
self.assertNoHolidayName(name, holidays)
def test_genevan_fast(self):
@@ -569,10 +582,10 @@ def test_immaculate_conception(self):
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv in subdivs_that_have:
self.assertHolidayName(
- name, holidays, (f"{year}-12-08" for year in range(1970, 2050))
+ name, holidays, (f"{year}-12-08" for year in self.full_range)
)
else:
- self.assertNoHoliday(holidays, (f"{year}-12-08" for year in range(1970, 2050)))
+ self.assertNoHoliday(holidays, (f"{year}-12-08" for year in self.full_range))
self.assertNoHolidayName(name, holidays)
def test_saint_stephens_day(self):
@@ -594,7 +607,10 @@ def test_saint_stephens_day(self):
}
subdivs_optional = {"FR", "NW", "OW", "VS", "ZG"}
subdivs_that_dont = (
- set(CH.subdivisions) - subdivs_that_have - subdivs_optional - {"AI", "AR", "NE", "UR"}
+ set(Switzerland.subdivisions)
+ - subdivs_that_have
+ - subdivs_optional
+ - {"AI", "AR", "NE", "UR"}
)
self.assertNoHolidayName(name)
@@ -602,19 +618,19 @@ def test_saint_stephens_day(self):
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv in subdivs_that_have:
self.assertHolidayName(
- name, holidays, (f"{year}-12-26" for year in range(1970, 2050))
+ name, holidays, (f"{year}-12-26" for year in self.full_range)
)
elif subdiv in subdivs_that_dont:
- self.assertNoHoliday(holidays, (f"{year}-12-26" for year in range(1970, 2050)))
+ self.assertNoHoliday(holidays, (f"{year}-12-26" for year in self.full_range))
self.assertNoHolidayName(name, holidays)
for subdiv, holidays in self.subdiv_optional_holidays.items():
if subdiv in subdivs_optional:
self.assertHolidayName(
- name, holidays, (f"{year}-12-26" for year in range(1970, 2050))
+ name, holidays, (f"{year}-12-26" for year in self.full_range)
)
else:
- self.assertNoHoliday(holidays, (f"{year}-12-26" for year in range(1970, 2050)))
+ self.assertNoHoliday(holidays, (f"{year}-12-26" for year in self.full_range))
self.assertNoHolidayName(name, holidays)
# When holiday present in NE.
@@ -624,7 +640,7 @@ def test_saint_stephens_day(self):
)
self.assertNoHoliday(
self.subdiv_holidays["NE"],
- (f"{year}-12-26" for year in set(range(1970, 2050)).difference(ne_years_have)),
+ (f"{year}-12-26" for year in set(self.full_range).difference(ne_years_have)),
)
# When holiday not present in AI, AR, UR.
@@ -657,7 +673,7 @@ def test_saint_stephens_day(self):
self.assertHolidayName(
name,
self.subdiv_holidays[subdiv],
- set(range(1970, 2050)).difference(ai_ar_ur_years_dont),
+ set(self.full_range).difference(ai_ar_ur_years_dont),
)
self.assertNoHoliday(
self.subdiv_holidays[subdiv],
@@ -672,10 +688,10 @@ def test_restoration_day(self):
for subdiv, holidays in self.subdiv_holidays.items():
if subdiv == "GE":
self.assertHolidayName(
- name, holidays, (f"{year}-12-31" for year in range(1970, 2050))
+ name, holidays, (f"{year}-12-31" for year in self.full_range)
)
else:
- self.assertNoHoliday(holidays, (f"{year}-12-31" for year in range(1970, 2050)))
+ self.assertNoHoliday(holidays, (f"{year}-12-31" for year in self.full_range))
self.assertNoHolidayName(name, holidays)
def test_knabenschiessen(self):
@@ -701,7 +717,7 @@ def test_knabenschiessen(self):
"2025-09-13",
"2025-09-14",
)
- self.assertHolidayNameCount(name, 2, holidays, range(1970, 2050))
+ self.assertHolidayNameCount(name, 2, holidays, self.full_range)
else:
self.assertNoHolidayName(name, holidays)
@@ -717,19 +733,69 @@ def test_knabenschiessen(self):
"2024-09-09",
"2025-09-15",
)
- self.assertHolidayName(name, holidays, range(1970, 2050))
+ self.assertHolidayName(name, holidays, self.full_range)
+ else:
+ self.assertNoHolidayName(name, holidays)
+
+ for subdiv, holidays in self.subdiv_optional_holidays.items():
+ if subdiv == "ZH":
+ self.assertHolidayName(
+ name,
+ holidays,
+ "2020-09-14",
+ "2023-09-11",
+ "2024-09-09",
+ "2025-09-15",
+ )
+ self.assertNoHolidayName(
+ name,
+ holidays,
+ # Not in years where 4 bridge holidays are given out for Christmas-New Year.
+ "2016-09-12",
+ "2021-09-13",
+ "2022-09-12",
+ "2027-09-13",
+ )
else:
self.assertNoHolidayName(name, holidays)
self.assertNoHolidayName(name, Switzerland(subdiv="ZH", years=1898))
self.assertNoHolidayName(name, Switzerland(categories=HALF_DAY, subdiv="ZH", years=1898))
+ self.assertNoHolidayName(name, Switzerland(categories=OPTIONAL, subdiv="ZH", years=1898))
+
+ def test_day_before_good_friday(self):
+ name = "Vortag vor Karfreitag"
+
+ self.assertNoHolidayName(name)
+
+ for subdiv, holidays in {
+ **self.subdiv_half_day_holidays,
+ **self.subdiv_optional_holidays,
+ }.items():
+ if subdiv == "ZH":
+ self.assertHolidayName(
+ name,
+ holidays,
+ "2020-04-09",
+ "2021-04-01",
+ "2022-04-14",
+ "2023-04-06",
+ "2024-03-28",
+ "2025-04-17",
+ )
+ self.assertHolidayName(name, holidays, self.full_range)
+ else:
+ self.assertNoHolidayName(name, holidays)
def test_sechselauten(self):
name = "Sechseläuten"
self.assertNoHolidayName(name)
- for subdiv, holidays in self.subdiv_half_day_holidays.items():
+ for subdiv, holidays in {
+ **self.subdiv_half_day_holidays,
+ **self.subdiv_optional_holidays,
+ }.items():
if subdiv == "ZH":
self.assertHolidayName(
name,
@@ -741,7 +807,7 @@ def test_sechselauten(self):
"2024-04-15",
"2025-04-28",
)
- self.assertHolidayName(name, holidays, range(1970, 2050))
+ self.assertHolidayName(name, holidays, self.full_range)
else:
self.assertNoHolidayName(name, holidays)
@@ -763,6 +829,118 @@ def test_sechselauten(self):
self.assertHolidayName(name, subdiv_zh_half_day_holidays, range(1902, 1970))
self.assertNoHolidayName(name, subdiv_zh_half_day_holidays, 1901)
+ subdiv_zh_optional_holidays = Switzerland(
+ categories=OPTIONAL, subdiv="ZH", years=range(1901, 1970)
+ )
+
+ self.assertHolidayName(
+ name,
+ subdiv_zh_optional_holidays,
+ "1902-03-24",
+ "1903-03-23",
+ "1904-03-21",
+ "1949-03-21",
+ "1950-03-27",
+ "1951-03-26",
+ "1952-04-21",
+ )
+ self.assertHolidayName(name, subdiv_zh_optional_holidays, range(1902, 1970))
+ self.assertNoHolidayName(name, subdiv_zh_optional_holidays, 1901)
+
+ def test_day_before_ascension_day(self):
+ name = "Vortag vor Auffahrt"
+
+ self.assertNoHolidayName(name)
+
+ for subdiv, holidays in self.subdiv_half_day_holidays.items():
+ if subdiv == "ZH":
+ self.assertHolidayName(
+ name,
+ holidays,
+ "2020-05-20",
+ "2021-05-12",
+ "2022-05-25",
+ "2023-05-17",
+ "2024-05-08",
+ "2025-05-28",
+ )
+ self.assertHolidayName(name, holidays, self.full_range)
+ else:
+ self.assertNoHolidayName(name, holidays)
+
+ def test_bridge_holiday_for_ascension_day(self):
+ name = "Brückentag nach Auffahrt"
+
+ for subdiv, holidays in self.subdiv_optional_holidays.items():
+ if subdiv == "ZH":
+ self.assertHolidayName(
+ name,
+ holidays,
+ "2018-05-11",
+ "2019-05-31",
+ "2024-05-10",
+ "2025-05-30",
+ )
+ else:
+ self.assertNoHolidayName(name, holidays)
+
+ def test_christmas_eve(self):
+ name = "Heiligabend"
+
+ self.assertNoHolidayName(name)
+
+ for subdiv, holidays in {
+ **self.subdiv_half_day_holidays,
+ **self.subdiv_optional_holidays,
+ }.items():
+ if subdiv == "ZH":
+ self.assertHolidayName(
+ name, holidays, (f"{year}-12-24" for year in self.full_range)
+ )
+ else:
+ self.assertNoHolidayName(name, holidays)
+
+ def test_bridge_holidays(self):
+ name = "Brückentag"
+
+ self.assertNoHolidayName(name)
+
+ for subdiv, holidays in self.subdiv_optional_holidays_non_observed.items():
+ if subdiv == "ZH":
+ self.assertNonObservedHolidayName(
+ name,
+ holidays,
+ (f"{year}-12-27" for year in self.full_range),
+ (f"{year}-12-28" for year in self.full_range),
+ (f"{year}-12-29" for year in self.full_range),
+ (f"{year}-12-30" for year in self.full_range),
+ )
+ else:
+ self.assertNoNonObservedHolidayName(name, holidays)
+
+ self.assertNoHoliday(
+ self.subdiv_optional_holidays["ZH"],
+ "2025-12-27",
+ "2025-12-28",
+ "2026-12-27",
+ )
+
+ def test_new_years_eve(self):
+ name = "Vortag vor Neujahr"
+
+ self.assertNoHolidayName(name)
+
+ for subdiv, holidays in {
+ **self.subdiv_half_day_holidays,
+ **self.subdiv_optional_holidays,
+ }.items():
+ if subdiv == "ZH":
+ self.assertHolidayName(
+ name, holidays, (f"{year}-12-31" for year in self.full_range)
+ )
+ else:
+ self.assertNoHolidayName(name, holidays)
+
def test_l10n_default(self):
self.assertLocalizedHolidays(
("2023-01-01", "Neujahrstag"),
@@ -770,11 +948,13 @@ def test_l10n_default(self):
("2023-01-06", "Heilige Drei Könige"),
("2023-03-01", "Jahrestag der Ausrufung der Republik"),
("2023-03-19", "Josefstag"),
+ ("2023-04-06", "Vortag vor Karfreitag"),
("2023-04-07", "Karfreitag"),
("2023-04-10", "Ostermontag"),
("2023-04-13", "Näfelser Fahrt"),
("2023-04-17", "Sechseläuten"),
("2023-05-01", "Tag der Arbeit"),
+ ("2023-05-17", "Vortag vor Auffahrt"),
("2023-05-18", "Auffahrt"),
("2023-05-29", "Pfingstmontag"),
("2023-06-08", "Fronleichnam"),
@@ -790,9 +970,13 @@ def test_l10n_default(self):
("2023-09-25", "Bruder Klaus"),
("2023-11-01", "Allerheiligen"),
("2023-12-08", "Mariä Empfängnis"),
+ ("2023-12-24", "Heiligabend"),
("2023-12-25", "Weihnachten"),
("2023-12-26", "Stephanstag"),
- ("2023-12-31", "Wiederherstellung der Republik"),
+ ("2023-12-27", "Brückentag"),
+ ("2023-12-28", "Brückentag"),
+ ("2023-12-29", "Brückentag"),
+ ("2023-12-31", "Vortag vor Neujahr; Wiederherstellung der Republik"),
)
def test_l10n_en_us(self):
@@ -803,11 +987,13 @@ def test_l10n_en_us(self):
("2023-01-06", "Epiphany"),
("2023-03-01", "Republic Day"),
("2023-03-19", "Saint Joseph's Day"),
+ ("2023-04-06", "Day before Good Friday"),
("2023-04-07", "Good Friday"),
("2023-04-10", "Easter Monday"),
("2023-04-13", "Battle of Naefels Victory Day"),
("2023-04-17", "Sechseläuten"),
("2023-05-01", "Labor Day"),
+ ("2023-05-17", "Day before Ascension Day"),
("2023-05-18", "Ascension Day"),
("2023-05-29", "Whit Monday"),
("2023-06-08", "Corpus Christi"),
@@ -823,9 +1009,13 @@ def test_l10n_en_us(self):
("2023-09-25", "Saint Nicholas of Flüe"),
("2023-11-01", "All Saints' Day"),
("2023-12-08", "Immaculate Conception"),
+ ("2023-12-24", "Christmas Eve"),
("2023-12-25", "Christmas Day"),
("2023-12-26", "Saint Stephen's Day"),
- ("2023-12-31", "Restoration Day"),
+ ("2023-12-27", "Bridge Holiday"),
+ ("2023-12-28", "Bridge Holiday"),
+ ("2023-12-29", "Bridge Holiday"),
+ ("2023-12-31", "New Year's Eve; Restoration Day"),
)
def test_l10n_fr(self):
@@ -836,11 +1026,13 @@ def test_l10n_fr(self):
("2023-01-06", "Épiphanie"),
("2023-03-01", "Instauration de la République"),
("2023-03-19", "Saint-Joseph"),
+ ("2023-04-06", "Veille du Vendredi saint"),
("2023-04-07", "Vendredi saint"),
("2023-04-10", "Lundi de Pâques"),
("2023-04-13", "Fahrtsfest"),
("2023-04-17", "Sechseläuten"),
("2023-05-01", "Fête du Travail"),
+ ("2023-05-17", "Veille de l'Ascension"),
("2023-05-18", "Ascension"),
("2023-05-29", "Lundi de Pentecôte"),
("2023-06-08", "Fête-Dieu"),
@@ -856,9 +1048,13 @@ def test_l10n_fr(self):
("2023-09-25", "Fête de Saint-Nicolas-de-Flüe"),
("2023-11-01", "Toussaint"),
("2023-12-08", "Immaculée Conception"),
+ ("2023-12-24", "Veille de Noël"),
("2023-12-25", "Noël"),
("2023-12-26", "Saint-Étienne"),
- ("2023-12-31", "Restauration de la République"),
+ ("2023-12-27", "Jour pont"),
+ ("2023-12-28", "Jour pont"),
+ ("2023-12-29", "Jour pont"),
+ ("2023-12-31", "Restauration de la République; Réveillon du Nouvel An"),
)
def test_l10n_it(self):
@@ -869,11 +1065,13 @@ def test_l10n_it(self):
("2023-01-06", "Epifania"),
("2023-03-01", "Giorno della Repubblica"),
("2023-03-19", "San Giuseppe"),
+ ("2023-04-06", "Vigilia del Venerdì Santo"),
("2023-04-07", "Venerdì Santo"),
("2023-04-10", "Lunedì dell'Angelo"),
("2023-04-13", "Battaglia di Näfels"),
("2023-04-17", "Sechseläuten"),
("2023-05-01", "Festa del lavoro"),
+ ("2023-05-17", "Vigilia dell'Ascensione di Gesù"),
("2023-05-18", "Ascensione di Gesù"),
("2023-05-29", "Lunedì di Pentecoste"),
("2023-06-08", "Corpus Domini"),
@@ -881,17 +1079,21 @@ def test_l10n_it(self):
("2023-06-29", "Santi Pietro e Paolo"),
("2023-08-01", "Festa nazionale"),
("2023-08-15", "Assunzione di Maria"),
- ("2023-09-07", "Jeûne genevois"),
+ ("2023-09-07", "Digiuno ginevrino"),
("2023-09-09", "Knabenschiessen"),
("2023-09-10", "Knabenschiessen"),
("2023-09-11", "Knabenschiessen"),
- ("2023-09-18", "Digiuno Ginevrino"),
- ("2023-09-25", "Nicolao della Flüe"),
+ ("2023-09-18", "Lunedì del digiuno federal"),
+ ("2023-09-25", "San Nicolao della Flue"),
("2023-11-01", "Ognissanti"),
("2023-12-08", "Immacolata Concezione"),
+ ("2023-12-24", "Vigilia di Natale"),
("2023-12-25", "Natale"),
("2023-12-26", "Giorno di Santo Stefano"),
- ("2023-12-31", "Restauration genevoise"),
+ ("2023-12-27", "Giorno ponte"),
+ ("2023-12-28", "Giorno ponte"),
+ ("2023-12-29", "Giorno ponte"),
+ ("2023-12-31", "Restaurazione della Repubblica; Vigilia di Capodanno"),
)
def test_l10n_th(self):
@@ -902,11 +1104,13 @@ def test_l10n_th(self):
("2023-01-06", "วันสมโภชพระคริสต์แสดงองค์"),
("2023-03-01", "วันครบรอบการสถาปนาสาธารณรัฐนอยชาแตล"),
("2023-03-19", "วันสมโภชนักบุญโยเซฟ"),
+ ("2023-04-06", "วันก่อนวันศุกร์ประเสริฐ"),
("2023-04-07", "วันศุกร์ประเสริฐ"),
("2023-04-10", "วันจันทร์อีสเตอร์"),
("2023-04-13", "วันรำลึกชัยชนะยุทธการเนเฟลส์"),
("2023-04-17", "เซ็กเซ่ะเล๊าเท่น"),
("2023-05-01", "วันแรงงาน"),
+ ("2023-05-17", "วันก่อนวันสมโภชพระเยซูเจ้าเสด็จขึ้นสวรรค์"),
("2023-05-18", "วันสมโภชพระเยซูเจ้าเสด็จขึ้นสวรรค์"),
("2023-05-29", "วันจันทร์หลังวันสมโภชพระจิตเจ้า"),
("2023-06-08", "วันสมโภชพระคริสตวรกาย"),
@@ -922,9 +1126,13 @@ def test_l10n_th(self):
("2023-09-25", "วันสมโภชนักบุญนิโคลัสแห่งฟลือเออ"),
("2023-11-01", "วันสมโภชนักบุญทั้งหลาย"),
("2023-12-08", "วันสมโภชแม่พระผู้ปฏิสนธินิรมล"),
+ ("2023-12-24", "วันคริสต์มาสอีฟ"),
("2023-12-25", "วันคริสต์มาส"),
("2023-12-26", "วันสมโภชนักบุญสเตเฟน"),
- ("2023-12-31", "วันกอบกู้เอกราชสาธารณรัฐเจนีวา"),
+ ("2023-12-27", "วันหยุดเพิ่มเติม"),
+ ("2023-12-28", "วันหยุดเพิ่มเติม"),
+ ("2023-12-29", "วันหยุดเพิ่มเติม"),
+ ("2023-12-31", "วันกอบกู้เอกราชสาธารณรัฐเจนีวา; วันสิ้นปี"),
)
def test_l10n_uk(self):
@@ -935,11 +1143,13 @@ def test_l10n_uk(self):
("2023-01-06", "Богоявлення"),
("2023-03-01", "Річниця проголошення Республіки"),
("2023-03-19", "День Святого Йосипа"),
+ ("2023-04-06", "Переддень Страсної п’ятниці"),
("2023-04-07", "Страсна пʼятниця"),
("2023-04-10", "Великодній понеділок"),
("2023-04-13", "Свято перемоги під Нефельсом"),
("2023-04-17", "Зексельйотен"),
("2023-05-01", "День праці"),
+ ("2023-05-17", "Переддень Вознесіння Господнього"),
("2023-05-18", "Вознесіння Господнє"),
("2023-05-29", "День Святого Духа"),
("2023-06-08", "Свято Тіла і Крові Христових"),
@@ -955,7 +1165,11 @@ def test_l10n_uk(self):
("2023-09-25", "День Святого Ніклауса з Флюе"),
("2023-11-01", "День усіх святих"),
("2023-12-08", "Непорочне зачаття Діви Марії"),
+ ("2023-12-24", "Святий вечір"),
("2023-12-25", "Різдво Христове"),
("2023-12-26", "День Святого Стефана"),
- ("2023-12-31", "День відновлення республіки"),
+ ("2023-12-27", "Проміжний вихідний"),
+ ("2023-12-28", "Проміжний вихідний"),
+ ("2023-12-29", "Проміжний вихідний"),
+ ("2023-12-31", "День відновлення республіки; Переддень Нового року"),
)
From 205f1afbf035e31af00831108724d7534a90c673 Mon Sep 17 00:00:00 2001
From: PPsyrius <19505219+PPsyrius@users.noreply.github.com>
Date: Thu, 9 Oct 2025 11:38:42 +0700
Subject: [PATCH 5/8] Correcting `uk` l10n, misc. fixes
Co-authored-by: ~Jhellico
---
holidays/countries/switzerland.py | 4 +---
holidays/locale/uk/LC_MESSAGES/CH.po | 6 +++---
tests/countries/test_switzerland.py | 4 +++-
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py
index c1f7bca57e..ad7399082b 100644
--- a/holidays/countries/switzerland.py
+++ b/holidays/countries/switzerland.py
@@ -785,9 +785,7 @@ def _populate_subdiv_zh_optional_holidays(self):
self._add_holiday_40_days_past_easter(tr("Brückentag nach Auffahrt"))
# This is only granted if end-year bridge holidays <= 3.
- if self._year >= 1899 and not (
- self._is_saturday(self._christmas_day) or self._is_sunday(self._christmas_day)
- ):
+ if self._year >= 1899 and not self._is_weekend(self._christmas_day):
# Knabenschiessen.
self._add_holiday_1_day_past_2nd_sun_of_sep(tr("Knabenschiessen"))
diff --git a/holidays/locale/uk/LC_MESSAGES/CH.po b/holidays/locale/uk/LC_MESSAGES/CH.po
index 0d8241b026..3581840c6d 100644
--- a/holidays/locale/uk/LC_MESSAGES/CH.po
+++ b/holidays/locale/uk/LC_MESSAGES/CH.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Holidays 0.83\n"
"POT-Creation-Date: 2023-04-10 15:41+0300\n"
-"PO-Revision-Date: 2025-10-08 13:09+0700\n"
+"PO-Revision-Date: 2025-10-09 10:44+0700\n"
"Last-Translator: PPsyrius \n"
"Language-Team: Holidays Localization Team\n"
"Language: uk\n"
@@ -129,7 +129,7 @@ msgstr "Кнабеншісен"
#. Day before Good Friday.
msgid "Vortag vor Karfreitag"
-msgstr "Переддень Страсної п’ятниці"
+msgstr "Переддень Страсної пʼятниці"
#. Sechseläuten.
msgid "Sechseläuten"
@@ -149,7 +149,7 @@ msgstr "Переддень Вознесіння Господнього"
#. Bridge Holiday for Ascension Day.
msgid "Brückentag nach Auffahrt"
-msgstr "День-понт після Вознесіння Господа"
+msgstr "Проміжний вихідний після Вознесіння Господнього"
#. Bridge Holiday.
msgid "Brückentag"
diff --git a/tests/countries/test_switzerland.py b/tests/countries/test_switzerland.py
index 8f0f28b089..83f1206c12 100644
--- a/tests/countries/test_switzerland.py
+++ b/tests/countries/test_switzerland.py
@@ -871,6 +871,8 @@ def test_day_before_ascension_day(self):
def test_bridge_holiday_for_ascension_day(self):
name = "Brückentag nach Auffahrt"
+ self.assertNoHolidayName(name)
+
for subdiv, holidays in self.subdiv_optional_holidays.items():
if subdiv == "ZH":
self.assertHolidayName(
@@ -1143,7 +1145,7 @@ def test_l10n_uk(self):
("2023-01-06", "Богоявлення"),
("2023-03-01", "Річниця проголошення Республіки"),
("2023-03-19", "День Святого Йосипа"),
- ("2023-04-06", "Переддень Страсної п’ятниці"),
+ ("2023-04-06", "Переддень Страсної пʼятниці"),
("2023-04-07", "Страсна пʼятниця"),
("2023-04-10", "Великодній понеділок"),
("2023-04-13", "Свято перемоги під Нефельсом"),
From cdcf76b61e038d3986918b73f6f843348b6fb110 Mon Sep 17 00:00:00 2001
From: PPsyrius <19505219+PPsyrius@users.noreply.github.com>
Date: Fri, 10 Oct 2025 11:26:19 +0700
Subject: [PATCH 6/8] =?UTF-8?q?Force=20Sechsel=C3=A4uten=20observance=20pr?=
=?UTF-8?q?e-1952?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
holidays/countries/switzerland.py | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py
index ad7399082b..34d4e3c8fd 100644
--- a/holidays/countries/switzerland.py
+++ b/holidays/countries/switzerland.py
@@ -750,10 +750,8 @@ def _populate_subdiv_zh_common_holidays(self):
)
# From 1902-1951 this was the First Monday following the Vernal Equinox.
else:
- self._move_holiday(
- self._add_holiday(name, self._vernal_equinox_date),
- rule=ALL_TO_NEXT_MON,
- show_observed_label=False,
+ self._move_holiday_forced(
+ self._add_holiday(name, self._vernal_equinox_date), rule=ALL_TO_NEXT_MON
)
# Christmas Eve.
From 5603ded19d93fae81360de7515a5a36f9229f8ef Mon Sep 17 00:00:00 2001
From: PPsyrius <19505219+PPsyrius@users.noreply.github.com>
Date: Fri, 10 Oct 2025 11:54:59 +0700
Subject: [PATCH 7/8] Code Review Suggestions
---
holidays/countries/switzerland.py | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py
index 34d4e3c8fd..c2d9e797b1 100644
--- a/holidays/countries/switzerland.py
+++ b/holidays/countries/switzerland.py
@@ -734,7 +734,7 @@ def _populate_subdiv_zh_public_holidays(self):
# Saint Stephen's Day.
self._add_christmas_day_two(tr("Stephanstag"))
- def _populate_subdiv_zh_common_holidays(self):
+ def _populate_subdiv_zh_common(self):
"""Populate list of holidays observed by both `HALF_DAY` and `OPTIONAL` categories."""
# Day before Good Friday.
self._add_holy_thursday(tr("Vortag vor Karfreitag"))
@@ -761,7 +761,7 @@ def _populate_subdiv_zh_common_holidays(self):
self._add_new_years_eve(tr("Vortag vor Neujahr"))
def _populate_subdiv_zh_half_day_holidays(self):
- self._populate_subdiv_zh_common_holidays()
+ self._populate_subdiv_zh_common()
if self._year >= 1899:
# Knabenschiessen.
@@ -771,19 +771,17 @@ def _populate_subdiv_zh_half_day_holidays(self):
self._add_holiday_38_days_past_easter(tr("Vortag vor Auffahrt"))
def _populate_subdiv_zh_optional_holidays(self):
- self._populate_subdiv_zh_common_holidays()
+ self._populate_subdiv_zh_common()
+
+ dec_25 = self._christmas_day
# This is only granted if end-year bridge holidays <= 2.
- if (
- self._is_tuesday(self._christmas_day)
- or self._is_wednesday(self._christmas_day)
- or self._is_thursday(self._christmas_day)
- ):
+ if self._is_tuesday(dec_25) or self._is_wednesday(dec_25) or self._is_thursday(dec_25):
# Bridge Holiday for Ascension Day.
self._add_holiday_40_days_past_easter(tr("Brückentag nach Auffahrt"))
# This is only granted if end-year bridge holidays <= 3.
- if self._year >= 1899 and not self._is_weekend(self._christmas_day):
+ if self._year >= 1899 and not self._is_weekend(dec_25):
# Knabenschiessen.
self._add_holiday_1_day_past_2nd_sun_of_sep(tr("Knabenschiessen"))
@@ -796,7 +794,7 @@ def _populate_subdiv_zh_optional_holidays(self):
@property
def _vernal_equinox_date(self) -> tuple[int, int]:
- """Return the Vernal Equinox date for Zurich (1902–1951)."""
+ """Return the Vernal Equinox date for Zurich (1902-1951)."""
day = 21
if (self._year >= 1916 and self._year % 4 == 0) or self._year == 1949:
day = 20
From a4a98c5b0d708dcc2602ccedfe24ec32f2d692d4 Mon Sep 17 00:00:00 2001
From: Arkadii Yakovets
Date: Fri, 10 Oct 2025 18:48:54 -0700
Subject: [PATCH 8/8] Update code
---
holidays/countries/switzerland.py | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py
index c2d9e797b1..ce751a7806 100644
--- a/holidays/countries/switzerland.py
+++ b/holidays/countries/switzerland.py
@@ -795,10 +795,9 @@ def _populate_subdiv_zh_optional_holidays(self):
@property
def _vernal_equinox_date(self) -> tuple[int, int]:
"""Return the Vernal Equinox date for Zurich (1902-1951)."""
- day = 21
- if (self._year >= 1916 and self._year % 4 == 0) or self._year == 1949:
- day = 20
- return MAR, day
+ return MAR, 20 if (
+ (self._year >= 1916 and self._year % 4 == 0) or self._year == 1949
+ ) else 21
class CH(Switzerland):