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

230 lines
11 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.constants import GOVERNMENT, PUBLIC
from holidays.groups import ChristianHolidays, InternationalHolidays
from holidays.holiday_base import HolidayBase
class Andorra(HolidayBase, ChristianHolidays, InternationalHolidays):
"""Andorra holidays.
References:
* <https://en.wikipedia.org/wiki/Public_holidays_in_Andorra>
* [Andorra's Constitution](https://web.archive.org/web/20250506145838/https://www.bopa.ad/Legislacio/Detall?doc=7586)
* [Government holidays source](https://web.archive.org/web/20241005040546/https://seu.consellgeneral.ad/calendariPublic/show)
* [2025](https://web.archive.org/web/20250506142149/https://www.bopa.ad/Documents/Detall?doc=GD_2024_10_24_14_36_16)
Subdivisions holidays:
* Canillo:
* [2020](https://web.archive.org/web/20250506143618/https://www.bopa.ad/Documents/Detall?doc=QCH20191209_09_01_14)
* [2021](https://web.archive.org/web/20250506143707/https://www.bopa.ad/Documents/Detall?doc=QCH20201130_11_52_35)
* [2022](https://web.archive.org/web/20250506143404/https://www.bopa.ad/Documents/Detall?doc=QCD20211126_12_16_57)
* [2023](https://web.archive.org/web/20250506143725/https://www.bopa.ad/Documents/Detall?doc=QCH20221010_11_26_39)
* [2024](https://web.archive.org/web/20250506143740/https://www.bopa.ad/Documents/Detall?doc=QCH_2023_12_06_16_16_52)
* [2025](https://web.archive.org/web/20250506144017/https://www.bopa.ad/Documents/Detall?doc=QCH_2024_10_10_11_42_15)
* Encamp:
* [2024](https://web.archive.org/web/20241201165207/https://www.bopa.ad/Documents/Detall?doc=QEH_2023_12_15_13_03_32)
* [2025](https://web.archive.org/web/20241212121414/https://www.bopa.ad/Documents/Detall?doc=QEH_2024_11_27_10_29_49)
* La Massana:
* [2020](https://web.archive.org/web/20250506144157/https://www.bopa.ad/Documents/Detall?doc=QMH20191209_09_08_10)
* [2021](https://web.archive.org/web/20250506144241/https://www.bopa.ad/Documents/Detall?doc=QMH20201218_11_52_59)
* [2022](https://web.archive.org/web/20250506144526/https://www.bopa.ad/Documents/Detall?doc=QMH20211116_12_23_19)
* [2023](https://web.archive.org/web/20250506144455/https://www.bopa.ad/Documents/Detall?doc=QMH20221216_12_41_13)
* [2024](https://web.archive.org/web/20250506144500/https://www.bopa.ad/Documents/Detall?doc=QMH_2023_12_11_10_54_27)
* [2025](https://web.archive.org/web/20250506144645/https://www.bopa.ad/Documents/Detall?doc=QMH_2024_11_19_09_10_48)
* Ordino:
* [2020](https://web.archive.org/web/20250506144555/https://www.bopa.ad/Documents/Detall?doc=QOH20191127_11_43_45)
* [2021](https://web.archive.org/web/20250506144713/https://www.bopa.ad/Documents/Detall?doc=QOH20201229_12_24_42)
* [2022](https://web.archive.org/web/20250506144715/https://www.bopa.ad/Documents/Detall?doc=QOH20211125_15_57_33)
* [2023](https://web.archive.org/web/20250506144738/https://www.bopa.ad/Documents/Detall?doc=QOH20221228_10_02_52)
* [2024](https://web.archive.org/web/20250506144729/https://www.bopa.ad/Documents/Detall?doc=QOH_2023_12_28_09_52_56)
* [2025](https://web.archive.org/web/20250506144815/https://www.bopa.ad/Documents/Detall?doc=QOH_2024_11_28_13_42_34)
* Sant Julià de Lòria:
* [2020](https://web.archive.org/web/20250506144715/https://www.bopa.ad/Documents/Detall?doc=QSH20191122_11_45_30)
* [2021](https://web.archive.org/web/20250506144827/https://www.bopa.ad/Documents/Detall?doc=QSH20201223_14_47_40)
* [2022](https://web.archive.org/web/20250506144843/https://www.bopa.ad/Documents/Detall?doc=QSH20211217_08_48_18)
* [2023](https://web.archive.org/web/20250506144859/https://www.bopa.ad/Documents/Detall?doc=QSH20221216_10_26_20)
* [2024](https://web.archive.org/web/20250506145411/https://www.bopa.ad/Documents/Detall?doc=QSH_2023_12_07_11_20_16)
* [2025](https://web.archive.org/web/20250506145311/https://www.bopa.ad/Documents/Detall?doc=QSH_2024_12_17_17_06_23)
* Andorra la Vella:
* [2020](https://web.archive.org/web/20250506142322/https://www.bopa.ad/Documents/Detall?doc=QAH20191128_08_58_08)
* [2021](https://web.archive.org/web/20250506142457/https://www.bopa.ad/Documents/Detall?doc=QAH20201210_11_13_19)
* [2022](https://web.archive.org/web/20250506142545/https://www.bopa.ad/Documents/Detall?doc=QAH20211111_16_06_47)
* [2023](https://web.archive.org/web/20250506142748/https://www.bopa.ad/Documents/Detall?doc=QAH20221117_10_31_45)
* [2024](https://web.archive.org/web/20250506142903/https://www.bopa.ad/Documents/Detall?doc=QAH_2023_11_17_12_40_42)
* [2025](https://web.archive.org/web/20250506143036/https://www.bopa.ad/Documents/Detall?doc=QAH_2024_11_21_09_44_47)
* Escaldes-Engordany:
* [Parish foundation](https://web.archive.org/web/20130409081302/http://www.andorra.ad/ca-ES/Andorra/Pagines/comu_escaldes.aspx)
* [2020](https://web.archive.org/web/20250506145337/https://www.bopa.ad/Documents/Detall?doc=QXH20200113_11_32_08)
* [2021](https://web.archive.org/web/20250506145439/https://www.bopa.ad/Documents/Detall?doc=QXH20210127_13_33_13)
* [2022](https://web.archive.org/web/20250506145442/https://www.bopa.ad/Documents/Detall?doc=QXH20220103_09_55_00)
* [2023](https://web.archive.org/web/20250506145436/https://www.bopa.ad/Documents/Detall?doc=QXH20230102_11_21_25)
* [2024](https://web.archive.org/web/20250506145940/https://www.bopa.ad/Documents/Detall?doc=QXH_2024_01_05_14_43_32)
* [2025](https://web.archive.org/web/20250506145955/https://www.bopa.ad/Documents/Detall?doc=QXH_2024_12_23_11_47_04)
"""
country = "AD"
default_language = "ca"
# The 1933 Revolution in Andorra
start_year = 1934
subdivisions = (
"02", # Canillo.
"03", # Encamp.
"04", # La Massana.
"05", # Ordino.
"06", # Sant Julià de Lòria.
"07", # Andorra la Vella.
"08", # Escaldes-Engordany.
)
subdivisions_aliases = {
"Canillo": "02",
"Encamp": "03",
"La Massana": "04",
"Ordino": "05",
"Sant Julià de Lòria": "06",
"Andorra la Vella": "07",
"Escaldes-Engordany": "08",
}
supported_categories = (GOVERNMENT, PUBLIC)
supported_languages = ("ca", "en_US", "uk")
def __init__(self, *args, **kwargs) -> None:
ChristianHolidays.__init__(self)
InternationalHolidays.__init__(self)
super().__init__(*args, **kwargs)
def _populate_public_holidays(self) -> None:
# New Year's Day.
self._add_new_years_day(tr("Cap d'Any"))
# Epiphany.
self._add_epiphany_day(tr("Reis"))
# Carnival.
self._add_carnival_monday(tr("Carnaval"))
if self._year >= 1994:
# Constitution Day.
self._add_holiday_mar_14(tr("Dia de la Constitució"))
# Good Friday.
self._add_good_friday(tr("Divendres Sant"))
# Easter Monday.
self._add_easter_monday(tr("Dilluns de Pasqua"))
# Labor Day.
self._add_labor_day(tr("Festa del treball"))
# Whit Monday.
self._add_whit_monday(tr("Dilluns de Pentecosta"))
# Assumption Day.
self._add_assumption_of_mary_day(tr("Assumpció"))
# Our Lady of Meritxell.
self._add_holiday_sep_8(tr("Nostra Senyora de Meritxell"))
# All Saints' Day.
self._add_all_saints_day(tr("Tots Sants"))
# Immaculate Conception.
self._add_immaculate_conception_day(tr("Immaculada Concepció"))
# Christmas Day.
self._add_christmas_day(tr("Nadal"))
# Saint Stephen's Day.
self._add_christmas_day_two(tr("Sant Esteve"))
def _populate_subdiv_02_public_holidays(self):
# Saint Roch's Day.
self._add_holiday_aug_16(tr("Sant Roc"))
def _populate_subdiv_03_public_holidays(self):
# There are no holidays common to the whole parish.
pass
def _populate_subdiv_04_public_holidays(self):
# Saint Anthony's Day.
self._add_holiday_jan_17(tr("Sant Antoni"))
def _populate_subdiv_05_public_holidays(self):
# Saint Peter's Day.
self._add_saints_peter_and_paul_day(tr("Sant Pere"))
def _populate_subdiv_06_public_holidays(self):
# Saint Julian's Day.
self._add_holiday_jan_7(tr("Sant Julià"))
# Virgin Mary of Canòlich.
self._add_holiday_last_sat_of_may(tr("Diada de Canòlich"))
# Sant Julià de Lòria Festival.
name = tr("Festa Major de Sant Julià de Lòria")
self._add_holiday_2_days_past_last_sat_of_jul(name)
self._add_holiday_3_days_past_last_sat_of_jul(name)
def _populate_subdiv_07_public_holidays(self):
# Andorra la Vella Festival.
name = tr("Festa Major d'Andorra la Vella")
self._add_holiday_1st_sat_of_aug(name)
self._add_holiday_1_day_past_1st_sat_of_aug(name)
self._add_holiday_2_days_past_1st_sat_of_aug(name)
def _populate_subdiv_08_public_holidays(self):
# The parish of Escaldes-Engordany created on June 14, 1978.
if self._year <= 1978:
return None
# Saint Michael of Engolasters' Day.
self._add_holiday_may_7(tr("Sant Miquel d'Engolasters"))
# Parish foundation day.
name = tr("Diada de la creació de la parròquia")
if self._year >= 1997:
self._add_holiday_1st_sun_from_jun_14(name)
else:
self._add_holiday_jun_14(name)
# Escaldes-Engordany Festival.
name = tr("Festa Major d'Escaldes-Engordany")
self._add_holiday_jul_25(name)
self._add_holiday_jul_26(name)
def _populate_government_holidays(self):
# %s (from 1pm).
begin_time_label = self.tr("%s (a partir de les 13h)")
# Epiphany Eve.
self._add_holiday_jan_5(begin_time_label % self.tr("Vigília de Reis"))
# Maundy Thursday.
self._add_holy_thursday(begin_time_label % self.tr("Dijous Sant"))
# Christmas Eve.
self._add_christmas_eve(begin_time_label % self.tr("Vigília de Nadal"))
# New Year's Eve.
self._add_new_years_eve(begin_time_label % self.tr("Vigília de Cap d'Any"))
class AD(Andorra):
pass
class AND(Andorra):
pass