Files
Time-Series-Analysis/.venv/lib/python3.12/site-packages/holidays/countries/isle_of_man.py
2025-07-30 18:53:50 +03:00

70 lines
2.5 KiB
Python

# 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 <dr.prodigy.github@gmail.com> (c) 2017-2023
# ryanss <ryanssdev@icloud.com> (c) 2014-2017
# Website: https://github.com/vacanza/holidays
# License: MIT (see LICENSE file)
from gettext import gettext as tr
from holidays.countries.united_kingdom import UnitedKingdom, UnitedKingdomStaticHolidays
from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
from holidays.observed_holiday_base import ObservedHolidayBase, SAT_SUN_TO_NEXT_MON
class IsleOfMan(UnitedKingdom):
"""Isle Of Man holidays."""
country = "IM"
# The Isle of Man (IM) is not a subdivision of the United Kingdom (GB)
# entity, so the `IsleOfMan` class does not inherit from the `ChildEntity`
# mixin. The `parent_entity` is specified below solely to maintain
# consistency in holiday name localization.
parent_entity = UnitedKingdom
subdivisions = () # Override UnitedKingdom subdivisions.
subdivisions_aliases = {} # Override UnitedKingdom subdivisions aliases.
def __init__(self, *args, **kwargs): # Override UnitedKingdom __init__().
ChristianHolidays.__init__(self)
InternationalHolidays.__init__(self)
StaticHolidays.__init__(self, UnitedKingdomStaticHolidays)
kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_MON)
ObservedHolidayBase.__init__(self, *args, **kwargs)
def _populate_public_holidays(self) -> None:
super()._populate_public_holidays()
# Easter Monday.
self._add_easter_monday(tr("Easter Monday"))
if self._year <= 1970:
# Whit Monday.
self._add_whit_monday(tr("Whit Monday"))
if self._year >= 1971:
# Late Summer Bank Holiday.
self._add_holiday_last_mon_of_aug(tr("Late Summer Bank Holiday"))
# Isle of Man exclusive holidays
# TT Bank Holiday.
self._add_holiday_1st_fri_of_jun(tr("TT Bank Holiday"))
# Tynwald Day.
jul_5 = self._add_holiday_jul_5(tr("Tynwald Day"))
if self._year >= 1992:
# Move to the next Monday if falls on a weekend.
self._move_holiday(jul_5, show_observed_label=False)
class IM(IsleOfMan):
pass
class IMN(IsleOfMan):
pass