1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
# 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 holidays.calendars.gregorian import SEP, DEC
from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
from holidays.observed_holiday_base import (
ObservedHolidayBase,
TUE_TO_PREV_MON,
WED_THU_TO_NEXT_FRI,
SAT_SUN_TO_NEXT_MON,
SUN_TO_NEXT_MON,
SUN_TO_NEXT_TUE,
)
class Bahamas(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
"""Bahamas holidays.
References:
* <https://en.wikipedia.org/wiki/Public_holidays_in_the_Bahamas>
* <https://web.archive.org/web/20250421024112/http://laws.bahamas.gov.bs/cms/images/LEGISLATION/PRINCIPAL/1938/1938-0015/PublicHolidaysAct_1.pdf>
* <https://archive.org/details/majority-rule-public-holiday-act-2013>
* <https://archive.org/details/randol-fawkes-labour-day-act-2013>
* <https://web.archive.org/web/20210922210604/http://www.tribune242.com/news/2013/oct/12/national-heroes-day-formally-established/>
* <https://web.archive.org/web/20190905051207/http://eleutheranews.com/?p=3594>
Checked With:
* <https://web.archive.org/web/20250218064125/https://www.bahamashclondon.net/consular-information/public-holidays/>
* <https://web.archive.org/web/20250427182357/https://bisxbahamas.com/wp-content/uploads/2020/12/Trading-Calendar-2021.pdf>
* <https://web.archive.org/web/20231210053149/https://publicholidays.la/the-bahamas/2022-dates/>
"""
country = "BS"
observed_label = "%s (observed)"
# Gained Independence on Jul 10, 1973.
start_year = 1974
def __init__(self, *args, **kwargs):
ChristianHolidays.__init__(self)
InternationalHolidays.__init__(self)
StaticHolidays.__init__(self, BahamasStaticHolidays)
kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_MON)
super().__init__(*args, **kwargs)
def _populate_public_holidays(self):
# New Year's Day.
# Pre-2012 Observance:
# - If TUE, New Year's Day (observed) prev MON.
# - If WED or THU, New Year's Day (observed) next FRI.
# 2012 and beyond Observance: If SUN, New Year's Day (observed) next MON (not for SAT).
self._add_observed(
self._add_new_years_day("New Year's Day"),
rule=SUN_TO_NEXT_MON
if self._year >= 2012
else SAT_SUN_TO_NEXT_MON + TUE_TO_PREV_MON + WED_THU_TO_NEXT_FRI,
)
# Majority Rule Day.
# Officially made a holiday on Oct 11, 2013 under Majority Rule (Public Holiday) Act 2013.
if self._year >= 2014:
self._add_observed(self._add_holiday_jan_10("Majority Rule Day"))
# Good Friday.
self._add_good_friday("Good Friday")
# Easter Monday.
self._add_easter_monday("Easter Monday")
# Whit Monday.
self._add_whit_monday("Whit Monday")
# Randol Fawkes Labour Day.
# This was simply known as "Labour Day" prior to Randol Fawkes Labour Day Act 2013.
self._add_holiday_1st_fri_of_jun(
"Randol Fawkes Labour Day" if self._year >= 2013 else "Labour Day"
)
# Independence Day.
self._add_observed(self._add_holiday_jul_10("Independence Day"))
# Emancipation Day.
self._add_holiday_1st_mon_of_aug("Emancipation Day")
# National Heroes Day.
# Known as "Discovery Day" prior to 2013, with its date fixed as Oct 12 annually.
# Got its name changed on Oct 11, 2013 under Majority Rule (Public Holiday) Act 2013.
# Pre-2013 Observance:
# - If TUE, Discovery Day (observed) prev MON.
# - If WED or THU, Discovery Day (observed) next FRI.
if self._year >= 2013:
self._add_holiday_2nd_mon_of_oct("National Heroes Day")
else:
self._add_observed(
self._add_columbus_day("Discovery Day"),
rule=SAT_SUN_TO_NEXT_MON + TUE_TO_PREV_MON + WED_THU_TO_NEXT_FRI,
)
# Christmas Holidays Exception Rules.
# Observance Exception:
# FRI-SAT -> Boxing Day (observed) next MON.
# SAT-SUN -> Boxing Day (observed) next MON.
# SUN-MON -> Christmas Day (observed) next TUE.
# Christmas Day.
self._add_observed(self._add_christmas_day("Christmas Day"), rule=SUN_TO_NEXT_TUE)
# Boxing Day.
self._add_observed(self._add_christmas_day_two("Boxing Day"))
class BS(Bahamas):
pass
class BHS(Bahamas):
pass
class BahamasStaticHolidays:
special_public_holidays = {
# https://web.archive.org/web/20250122110613/https://www.bahamas.gov.bs/wps/portal/public/gov/government/notices/national%20holiday%2019th%20september/
2022: (SEP, 19, "State Funeral of Queen Elizabeth II"),
}
special_public_holidays_observed = {
# New Year's Day observance overflow.
# This only applies to Pre-2012 observance.
1979: (DEC, 31, "New Year's Day"),
1984: (DEC, 31, "New Year's Day"),
1990: (DEC, 31, "New Year's Day"),
2001: (DEC, 31, "New Year's Day"),
2007: (DEC, 31, "New Year's Day"),
}
|