Files
Time-Series-Analysis/venv/lib/python3.11/site-packages/holidays/countries/gibraltar.py
2025-08-01 04:33:03 -04:00

220 lines
10 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.calendars.gregorian import JAN, FEB, APR, MAY, JUN, AUG, SEP
from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
from holidays.observed_holiday_base import (
ObservedHolidayBase,
SAT_SUN_TO_NEXT_MON,
SAT_SUN_TO_NEXT_MON_TUE,
)
class Gibraltar(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
"""Gibraltar holidays.
References:
* <https://en.wikipedia.org/wiki/Public_holidays_in_Gibraltar>
* [2000](https://web.archive.org/web/20250714134510/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/1999s073.pdf)
* [2001](https://web.archive.org/web/20250714134609/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2000s041.pdf)
* [2003](https://web.archive.org/web/20250713064759/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2002s094.pdf)
* [2004](https://web.archive.org/web/20250713065008/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2003s105.pdf)
* [2005](https://web.archive.org/web/20250713071914/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2004s069.pdf)
* [2006](https://web.archive.org/web/20250713072021/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2005s111.pdf)
* [2007](https://web.archive.org/web/20250713072021/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2006s122.pdf)
* [2008](https://web.archive.org/web/20250713072026/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2007s113.pdf)
* [2009](https://web.archive.org/web/20250713072221/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2008s073.pdf)
* [2010](https://web.archive.org/web/20250713072222/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2009s049.pdf)
* [2011](https://web.archive.org/web/20250713072228/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2010s149.pdf)
* [2012](https://web.archive.org/web/20250713073334/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2011s189.pdf)
* [2013](https://web.archive.org/web/20250713162959/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2012s146.pdf)
* [2014](https://web.archive.org/web/20250713103345/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2013s149.pdf)
* [2015](https://web.archive.org/web/20250713163521/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2014s203.pdf)
* [2016](https://web.archive.org/web/20250713164519/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2015s196.pdf)
* [2017](https://web.archive.org/web/20250713073752/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2016s217.pdf)
* [2018](https://web.archive.org/web/20250714135250/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2017s224.pdf)
* [2019](https://web.archive.org/web/20250713071343/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2018s229.pdf)
* [2020](https://web.archive.org/web/20250714135425/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2019s217.pdf)
* [2021](https://web.archive.org/web/20250421063152/https://www.gibraltarlaws.gov.gi/legislations/bank-and-public-holidays-order-2020-5593/download)
* [2022](https://web.archive.org/web/20250414134257/https://www.gibraltarlaws.gov.gi/legislations/bank-and-public-holidays-order-2021-6286/version/21-10-2021/download)
* [2023](https://web.archive.org/web/20240831014104/https://www.gibraltarlaws.gov.gi/legislations/bank-and-public-holidays-order-2022-6735/version/22-02-2023/download)
* [2024](https://web.archive.org/web/20250502030403/https://www.gibraltarlaws.gov.gi/legislations/bank-and-public-holidays-order-2023-7215/version/06-11-2023/download)
* [2025](https://web.archive.org/web/20250714135600/https://www.gibraltarlaws.gov.gi/legislations/bank-and-public-holidays-order-2024-7456/download)
"""
country = "GI"
default_language = "en_GB"
# %s (observed).
observed_label = tr("%s (observed)")
# First holiday info available from 2000.
start_year = 2000
supported_languages = ("en_GB", "en_US")
def __init__(self, *args, **kwargs):
ChristianHolidays.__init__(self)
InternationalHolidays.__init__(self)
StaticHolidays.__init__(self, GibraltarStaticHolidays)
kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_MON)
super().__init__(*args, **kwargs)
def _populate_public_holidays(self):
# New Year's Day.
self._add_observed(self._add_new_years_day(tr("New Year's Day")))
name = (
# Winter Midterm Bank Holiday.
tr("Winter Midterm Bank Holiday")
if self._year >= 2023
# Commonwealth Day.
else tr("Commonwealth Day")
)
winter_midterm_dts = {
2024: (FEB, 12),
}
if dt := winter_midterm_dts.get(self._year):
self._add_holiday(name, dt)
elif self._year >= 2021:
self._add_holiday_3rd_mon_of_feb(name)
else:
self._add_holiday_2nd_mon_of_mar(name)
# Good Friday.
self._add_good_friday(tr("Good Friday"))
# Easter Monday.
self._add_easter_monday(tr("Easter Monday"))
if self._year >= 2013:
# Workers' Memorial Day.
name = tr("Workers' Memorial Day")
workers_memorial_dts = {
2013: (APR, 26),
2015: (APR, 27),
}
if dt := workers_memorial_dts.get(self._year):
self._add_holiday(name, dt)
else:
self._add_observed(self._add_holiday_apr_28(name))
# May Day.
name = tr("May Day")
may_day_dts = {
2007: (MAY, 7),
2008: (MAY, 5),
2009: (MAY, 4),
}
if dt := may_day_dts.get(self._year):
self._add_holiday(name, dt)
else:
self._add_observed(self._add_holiday_may_1(name))
# Spring Bank Holiday.
name = tr("Spring Bank Holiday")
spring_bank_dts = {
2012: (JUN, 4),
2022: (JUN, 2),
}
if dt := spring_bank_dts.get(self._year):
self._add_holiday(name, dt)
else:
self._add_holiday_last_mon_of_may(name)
name = (
# King's Birthday.
tr("King's Birthday")
if self._year >= 2023
# Queen's Birthday.
else tr("Queen's Birthday")
)
sovereign_birthday_dts = {
2000: (JUN, 19),
2001: (JUN, 18),
2006: (JUN, 19),
2007: (JUN, 18),
2012: (JUN, 18),
2013: (JUN, 17),
2017: (JUN, 19),
2019: (JUN, 17),
2023: (JUN, 19),
2024: (JUN, 17),
}
if dt := sovereign_birthday_dts.get(self._year):
self._add_holiday(name, dt)
else:
self._add_holiday_2_days_past_2nd_sat_of_jun(name)
self._add_holiday_last_mon_of_aug(
# Summer Bank Holiday.
tr("Summer Bank Holiday")
if 2002 <= self._year <= 2007
# Late Summer Bank Holiday.
else tr("Late Summer Bank Holiday")
)
# Gibraltar National Day.
name = tr("Gibraltar National Day")
national_day_dts = {
2016: (SEP, 5),
2017: (SEP, 4),
}
if dt := national_day_dts.get(self._year):
self._add_holiday(name, dt)
else:
self._add_observed(self._add_holiday_sep_10(name))
self._add_observed(
# Christmas Day.
self._add_christmas_day(tr("Christmas Day")),
rule=SAT_SUN_TO_NEXT_MON_TUE,
)
self._add_observed(
# Boxing Day.
self._add_christmas_day_two(tr("Boxing Day")),
rule=SAT_SUN_TO_NEXT_MON_TUE,
)
class GI(Gibraltar):
pass
class GIB(Gibraltar):
pass
class GibraltarStaticHolidays(StaticHolidays):
"""Gibraltar special holidays.
References:
* [Evacuation Commemoration Day, 2015](https://web.archive.org/web/20250714174537/https://www.gibraltarlaws.gov.gi/uploads/legislations/banking-and-financial-dealings/B&P%20Holidays/2015s112.pdf)
"""
special_public_holidays = {
# Tercentenary Holiday.
2004: (AUG, 4, tr("Tercentenary Holiday")),
# Bank Holiday.
2009: (JAN, 12, tr("Bank Holiday")),
# Queen's Diamond Jubilee.
2012: (JUN, 5, tr("Queen's Diamond Jubilee")),
# Evacuation Commemoration Day.
2015: (SEP, 7, tr("Evacuation Commemoration Day")),
# 75th Anniversary of VE Day.
2020: (MAY, 8, tr("75th Anniversary of VE Day")),
# Queen's Platinum Jubilee.
2022: (JUN, 3, tr("Platinum Jubilee")),
# Special Kings Coronation Bank Holiday.
2023: (MAY, 8, tr("Special King's Coronation Bank Holiday")),
}