Skip to content

Commit

Permalink
Update Liechtenstein holidays: specify bank holidays (#1462)
Browse files Browse the repository at this point in the history
  • Loading branch information
KJhellico committed Sep 15, 2023
1 parent 02aa5d6 commit 1f03de3
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 30 deletions.
36 changes: 19 additions & 17 deletions holidays/countries/liechtenstein.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,50 +12,42 @@

from gettext import gettext as tr

from holidays.constants import BANK, PUBLIC
from holidays.groups import ChristianHolidays, InternationalHolidays
from holidays.holiday_base import HolidayBase


class Liechtenstein(HolidayBase, ChristianHolidays, InternationalHolidays):
"""
Liechtenstein holidays.
See https://en.wikipedia.org/wiki/Public_holidays_in_Liechtenstein
for details.
References:
- https://en.wikipedia.org/wiki/Public_holidays_in_Liechtenstein
- https://www.llb.li/en/contact/bank-holidays
"""

country = "LI"
default_language = "de"
supported_categories = {BANK, PUBLIC}
supported_languages = ("de", "en_US", "uk")

def __init__(self, *args, **kwargs) -> None:
ChristianHolidays.__init__(self)
InternationalHolidays.__init__(self)
super().__init__(*args, **kwargs)

def _populate(self, year):
super()._populate(year)

def _populate_public_holidays(self):
# New Year's Day.
self._add_new_years_day(tr("Neujahr"))

# Saint Berchtold's Day.
self._add_new_years_day_two(tr("Berchtoldstag"))

# Epiphany.
self._add_epiphany_day(tr("Heilige Drei Könige"))

# Candlemas.
self._add_candlemas(tr("Mariä Lichtmess"))

# Shrove Tuesday.
self._add_carnival_tuesday(tr("Fasnachtsdienstag"))

# Saint Joseph's Day.
self._add_saint_josephs_day(tr("Josefstag"))

# Good Friday.
self._add_good_friday(tr("Karfreitag"))

# Easter Sunday.
self._add_easter_sunday(tr("Ostersonntag"))

Expand Down Expand Up @@ -89,15 +81,25 @@ def _populate(self, year):
# Immaculate Conception.
self._add_immaculate_conception_day(tr("Mariä Empfängnis"))

# Christmas Eve.
self._add_christmas_eve(tr("Heiligabend"))

# Christmas Day.
self._add_christmas_day(tr("Weihnachten"))

# St. Stephen's Day.
self._add_christmas_day_two(tr("Stefanstag"))

def _populate_bank_holidays(self):
# Saint Berchtold's Day.
self._add_new_years_day_two(tr("Berchtoldstag"))

# Shrove Tuesday.
self._add_carnival_tuesday(tr("Fasnachtsdienstag"))

# Good Friday.
self._add_good_friday(tr("Karfreitag"))

# Christmas Eve.
self._add_christmas_eve(tr("Heiligabend"))

# New Year's Eve.
self._add_new_years_eve(tr("Silvester"))

Expand Down
55 changes: 42 additions & 13 deletions tests/countries/test_liechtenstein.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,17 @@
# License: MIT (see LICENSE file)
# Copyright: Kateryna Golovanova <kate@kgthreads.com>, 2022

from holidays.constants import BANK
from holidays.countries.liechtenstein import Liechtenstein, LI, LIE
from tests.common import TestCase


class TestLI(TestCase):
class TestLiechtenstein(TestCase):
@classmethod
def setUpClass(cls):
super().setUpClass(Liechtenstein, years=range(1900, 2050))
years = range(1900, 2050)
super().setUpClass(Liechtenstein, years=years)
cls.bank_holidays = Liechtenstein(categories=(BANK,), years=years)

def test_country_aliases(self):
self.assertCountryAliases(Liechtenstein, LI, LIE)
Expand All @@ -26,7 +29,12 @@ def test_new_years(self):
self.assertHolidayName("Neujahr", (f"{year}-01-01" for year in range(1900, 2050)))

def test_saint_berchtolds_day(self):
self.assertHolidayName("Berchtoldstag", (f"{year}-01-02" for year in range(1900, 2050)))
name = "Berchtoldstag"
self.assertHolidayName(
name, self.bank_holidays, (f"{year}-01-02" for year in range(1900, 2050))
)
self.assertNoHoliday(f"{year}-01-02" for year in range(1900, 2050))
self.assertNoHolidayName(name)

def test_epiphany(self):
self.assertHolidayName(
Expand All @@ -37,8 +45,8 @@ def test_candlemas(self):
self.assertHolidayName("Mariä Lichtmess", (f"{year}-02-02" for year in range(1900, 2050)))

def test_shrove_tuesday(self):
self.assertHolidayName(
"Fasnachtsdienstag",
name = "Fasnachtsdienstag"
dt = (
"1900-02-27",
"1901-02-19",
"1902-02-11",
Expand All @@ -50,13 +58,16 @@ def test_shrove_tuesday(self):
"2021-02-16",
"2022-03-01",
)
self.assertHolidayName(name, self.bank_holidays, dt)
self.assertNoHoliday(dt)
self.assertNoHolidayName(name)

def test_saint_josephs_day(self):
self.assertHolidayName("Josefstag", (f"{year}-03-19" for year in range(1900, 2050)))

def test_good_friday(self):
self.assertHolidayName(
"Karfreitag",
name = "Karfreitag"
dt = (
"1900-04-13",
"1901-04-05",
"1902-03-28",
Expand All @@ -68,6 +79,9 @@ def test_good_friday(self):
"2021-04-02",
"2022-04-15",
)
self.assertHolidayName(name, self.bank_holidays, dt)
self.assertNoHoliday(dt)
self.assertNoHolidayName(name)

def test_easter(self):
self.assertHolidayName(
Expand Down Expand Up @@ -175,7 +189,12 @@ def test_immaculate_conception(self):
self.assertHolidayName("Mariä Empfängnis", (f"{year}-12-08" for year in range(1900, 2050)))

def test_christmas_eve(self):
self.assertHolidayName("Heiligabend", (f"{year}-12-24" for year in range(1900, 2050)))
name = "Heiligabend"
self.assertHolidayName(
name, self.bank_holidays, (f"{year}-12-24" for year in range(1900, 2050))
)
self.assertNoHoliday(f"{year}-12-24" for year in range(1900, 2050))
self.assertNoHolidayName(name)

def test_christmas_day(self):
self.assertHolidayName("Weihnachten", (f"{year}-12-25" for year in range(1900, 2050)))
Expand All @@ -184,18 +203,20 @@ def test_st_stephens_day(self):
self.assertHolidayName("Stefanstag", (f"{year}-12-26" for year in range(1900, 2050)))

def test_new_years_eve(self):
self.assertHolidayName("Silvester", (f"{year}-12-31" for year in range(1900, 2050)))
name = "Silvester"
self.assertHolidayName(
name, self.bank_holidays, (f"{year}-12-31" for year in range(1900, 2050))
)
self.assertNoHoliday(f"{year}-12-31" for year in range(1900, 2050))
self.assertNoHolidayName(name)

def test_2022(self):
self.assertHolidays(
Liechtenstein(years=2022),
("2022-01-01", "Neujahr"),
("2022-01-02", "Berchtoldstag"),
("2022-01-06", "Heilige Drei Könige"),
("2022-02-02", "Mariä Lichtmess"),
("2022-03-01", "Fasnachtsdienstag"),
("2022-03-19", "Josefstag"),
("2022-04-15", "Karfreitag"),
("2022-04-17", "Ostersonntag"),
("2022-04-18", "Ostermontag"),
("2022-05-01", "Tag der Arbeit"),
Expand All @@ -207,9 +228,17 @@ def test_2022(self):
("2022-09-08", "Mariä Geburt"),
("2022-11-01", "Allerheiligen"),
("2022-12-08", "Mariä Empfängnis"),
("2022-12-24", "Heiligabend"),
("2022-12-25", "Weihnachten"),
("2022-12-26", "Stefanstag"),
)

def test_2022_bank(self):
self.assertHolidays(
Liechtenstein(categories=(BANK,), years=2022),
("2022-01-02", "Berchtoldstag"),
("2022-03-01", "Fasnachtsdienstag"),
("2022-04-15", "Karfreitag"),
("2022-12-24", "Heiligabend"),
("2022-12-31", "Silvester"),
)

Expand Down

0 comments on commit 1f03de3

Please sign in to comment.