some new features
This commit is contained in:
@ -0,0 +1,219 @@
|
||||
# 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 King’s Coronation Bank Holiday.
|
||||
2023: (MAY, 8, tr("Special King's Coronation Bank Holiday")),
|
||||
}
|
||||
Reference in New Issue
Block a user