some new features
This commit is contained in:
268
.venv/lib/python3.12/site-packages/holidays/countries/chile.py
Normal file
268
.venv/lib/python3.12/site-packages/holidays/countries/chile.py
Normal file
@ -0,0 +1,268 @@
|
||||
# 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 JUN, SEP, DEC
|
||||
from holidays.constants import BANK, PUBLIC
|
||||
from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
|
||||
from holidays.observed_holiday_base import (
|
||||
ObservedHolidayBase,
|
||||
MON_ONLY,
|
||||
MON_FRI_ONLY,
|
||||
TUE_TO_PREV_FRI,
|
||||
WED_TO_NEXT_FRI,
|
||||
FRI_ONLY,
|
||||
WORKDAY_TO_NEAREST_MON,
|
||||
)
|
||||
|
||||
|
||||
class Chile(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
|
||||
"""Chile holidays.
|
||||
|
||||
References:
|
||||
* <https://web.archive.org/web/20250418020620/https://www.feriados.cl/>
|
||||
* [Excellent history of Chile holidays](https://web.archive.org/web/20250124223839/https://www.feriadoschilenos.cl/)
|
||||
* <https://es.wikipedia.org/wiki/Anexo:Días_feriados_en_Chile>
|
||||
* Law 2.977 (established official Chile holidays in its current form)
|
||||
* Law 20.983 (Day after New Year's Day, if it's a Sunday)
|
||||
* Law 19.668 (floating Monday holiday)
|
||||
* Law 19.668 (Corpus Christi)
|
||||
* Law 2.200, (Labour Day)
|
||||
* Law 18.018 (Labour Day renamed)
|
||||
* Law 16.840, Law 18.432 (Saint Peter and Saint Paul)
|
||||
* Law 20.148 (Day of Virgin of Carmen)
|
||||
* Law 18.026 (Day of National Liberation)
|
||||
* Law 19.588, Law 19.793 (Day of National Unity)
|
||||
* Law 20.983 (National Holiday Friday preceding Independence Day)
|
||||
* Law 20.215 (National Holiday Monday preceding Independence Day)
|
||||
* Law 20.215 (National Holiday Friday following Army Day)
|
||||
* Decree-law 636, Law 8.223
|
||||
* Law 3.810 (Columbus Day)
|
||||
* Law 20.299 (National Day of the Evangelical and Protestant Churches)
|
||||
* Law 20.663 (Región de Arica y Parinacota)
|
||||
* Law 20.678 (Región de Ñuble)
|
||||
* [Law 19.656 (Dec 31, 1999 holiday)](https://web.archive.org/web/20241228005823/https://www.bcn.cl/leychile/navegar?idNorma=149328&idVersion=1999-12-15)
|
||||
* [Law 12.051 (bank holidays Jun 30 and Dec 31)](https://web.archive.org/web/20241227190026/https://www.bcn.cl/leychile/navegar?idNorma=27013&idVersion=1956-07-12)
|
||||
* [Decree-law 1.171 (eliminate Jun 30)](https://web.archive.org/web/20241227191010/https://www.bcn.cl/leychile/navegar?idNorma=6507&idVersion=1975-09-05)
|
||||
* [Law 19.528 (eliminate Dec 31)](https://web.archive.org/web/20241227191452/https://www.bcn.cl/leychile/navegar?idNorma=76630&idVersion=1997-11-04)
|
||||
* [Law 19.559 (restore Dec 31)](https://web.archive.org/web/20241227195811/https://www.bcn.cl/leychile/navegar?idNorma=97758&idVersion=1998-04-16)
|
||||
"""
|
||||
|
||||
country = "CL"
|
||||
default_language = "es"
|
||||
start_year = 1915
|
||||
subdivisions = (
|
||||
"AI", # Aisén del General Carlos Ibañez del Campo.
|
||||
"AN", # Antofagasta.
|
||||
"AP", # Arica y Parinacota.
|
||||
"AR", # La Araucanía.
|
||||
"AT", # Atacama.
|
||||
"BI", # Biobío.
|
||||
"CO", # Coquimbo.
|
||||
"LI", # Libertador General Bernardo O'Higgins.
|
||||
"LL", # Los Lagos.
|
||||
"LR", # Los Ríos.
|
||||
"MA", # Magallanes.
|
||||
"ML", # Maule.
|
||||
"NB", # Ñuble.
|
||||
"RM", # Región Metropolitana de Santiago.
|
||||
"TA", # Tarapacá.
|
||||
"VS", # Valparaíso.
|
||||
)
|
||||
subdivisions_aliases = {
|
||||
"Aisén del General Carlos Ibañez del Campo": "AI",
|
||||
"Antofagasta": "AN",
|
||||
"Arica y Parinacota": "AP",
|
||||
"La Araucanía": "AR",
|
||||
"Atacama": "AT",
|
||||
"Biobío": "BI",
|
||||
"Coquimbo": "CO",
|
||||
"Libertador General Bernardo O'Higgins": "LI",
|
||||
"Los Lagos": "LL",
|
||||
"Los Ríos": "LR",
|
||||
"Magallanes": "MA",
|
||||
"Maule": "ML",
|
||||
"Ñuble": "NB",
|
||||
"Región Metropolitana de Santiago": "RM",
|
||||
"Tarapacá": "TA",
|
||||
"Valparaíso": "VS",
|
||||
}
|
||||
supported_categories = (BANK, PUBLIC)
|
||||
supported_languages = ("en_US", "es", "uk")
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
ChristianHolidays.__init__(self)
|
||||
InternationalHolidays.__init__(self)
|
||||
StaticHolidays.__init__(self, ChileStaticHolidays)
|
||||
kwargs.setdefault("observed_rule", WORKDAY_TO_NEAREST_MON)
|
||||
kwargs.setdefault("observed_since", 2000)
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def _populate_public_holidays(self):
|
||||
# New Year's Day.
|
||||
self._add_new_years_day(tr("Año Nuevo"))
|
||||
if self._year >= 2017:
|
||||
self._add_observed(self._add_new_years_day_two(tr("Feriado nacional")), rule=MON_ONLY)
|
||||
|
||||
# Good Friday.
|
||||
self._add_good_friday(tr("Viernes Santo"))
|
||||
|
||||
# Holy Saturday.
|
||||
self._add_holy_saturday(tr("Sábado Santo"))
|
||||
|
||||
if self._year <= 1967:
|
||||
# Ascension Day.
|
||||
self._add_ascension_thursday(tr("Ascensión del Señor"))
|
||||
|
||||
if self._year <= 1967 or 1987 <= self._year <= 2006:
|
||||
# Corpus Christi.
|
||||
name = tr("Corpus Christi")
|
||||
if self._year <= 1999:
|
||||
self._add_corpus_christi_day(name)
|
||||
else:
|
||||
self._add_holiday_57_days_past_easter(name)
|
||||
|
||||
if self._year >= 1932:
|
||||
# Labor Day.
|
||||
self._add_labor_day(tr("Día Nacional del Trabajo"))
|
||||
|
||||
# Naval Glories Day.
|
||||
self._add_holiday_may_21(tr("Día de las Glorias Navales"))
|
||||
|
||||
if self._year >= 2021:
|
||||
# National Day of Indigenous Peoples.
|
||||
name = tr("Día Nacional de los Pueblos Indígenas")
|
||||
if self._year == 2021:
|
||||
self._add_holiday_jun_21(name)
|
||||
else:
|
||||
self._add_holiday(name, self._summer_solstice_date)
|
||||
|
||||
if self._year <= 1967 or self._year >= 1986:
|
||||
# Saint Peter and Saint Paul's Day.
|
||||
self._move_holiday(self._add_saints_peter_and_paul_day(tr("San Pedro y San Pablo")))
|
||||
|
||||
if self._year >= 2007:
|
||||
# Day of Virgin of Carmen.
|
||||
self._add_holiday_jul_16(tr("Virgen del Carmen"))
|
||||
|
||||
# Assumption Day.
|
||||
self._add_assumption_of_mary_day(tr("Asunción de la Virgen"))
|
||||
|
||||
if 1981 <= self._year <= 1998:
|
||||
# Day of National Liberation.
|
||||
self._add_holiday_sep_11(tr("Día de la Liberación Nacional"))
|
||||
elif 1999 <= self._year <= 2001:
|
||||
# Day of National Unity.
|
||||
self._add_holiday_1st_mon_of_sep(tr("Día de la Unidad Nacional"))
|
||||
|
||||
if self._year >= 2007:
|
||||
self._add_observed(
|
||||
# National Holiday.
|
||||
self._add_holiday_sep_17(tr("Fiestas Patrias")),
|
||||
rule=MON_FRI_ONLY if self._year >= 2017 else MON_ONLY,
|
||||
)
|
||||
|
||||
# Independence Day.
|
||||
self._add_holiday_sep_18(tr("Día de la Independencia"))
|
||||
|
||||
# Army Day.
|
||||
self._add_holiday_sep_19(tr("Día de las Glorias del Ejército"))
|
||||
|
||||
if self._year >= 2008:
|
||||
self._add_observed(self._add_holiday_sep_20(tr("Fiestas Patrias")), rule=FRI_ONLY)
|
||||
|
||||
if 1932 <= self._year <= 1944:
|
||||
self._add_holiday_sep_20(tr("Fiestas Patrias"))
|
||||
|
||||
if self._year >= 1922 and self._year != 1973:
|
||||
self._move_holiday(
|
||||
self._add_columbus_day(
|
||||
# Meeting of Two Worlds' Day.
|
||||
tr("Día del Encuentro de dos Mundos")
|
||||
if self._year >= 2000
|
||||
# Columbus Day.
|
||||
else tr("Día de la Raza")
|
||||
)
|
||||
)
|
||||
|
||||
if self._year >= 2008:
|
||||
# This holiday is moved to the preceding Friday if it falls on a Tuesday,
|
||||
# or to the following Friday if it falls on a Wednesday.
|
||||
self._move_holiday(
|
||||
self._add_holiday_oct_31(
|
||||
# National Day of the Evangelical and Protestant Churches.
|
||||
tr("Día Nacional de las Iglesias Evangélicas y Protestantes")
|
||||
),
|
||||
rule=TUE_TO_PREV_FRI + WED_TO_NEXT_FRI,
|
||||
)
|
||||
|
||||
# All Saints' Day.
|
||||
self._add_all_saints_day(tr("Día de Todos los Santos"))
|
||||
|
||||
# Immaculate Conception.
|
||||
self._add_immaculate_conception_day(tr("La Inmaculada Concepción"))
|
||||
|
||||
if 1944 <= self._year <= 1988:
|
||||
# Christmas Eve.
|
||||
self._add_christmas_eve(tr("Víspera de Navidad"))
|
||||
|
||||
# Christmas Day.
|
||||
self._add_christmas_day(tr("Navidad"))
|
||||
|
||||
def _populate_subdiv_ap_public_holidays(self):
|
||||
if self._year >= 2013:
|
||||
# Assault and Capture of Cape Arica.
|
||||
self._add_holiday_jun_7(tr("Asalto y Toma del Morro de Arica"))
|
||||
|
||||
def _populate_subdiv_nb_public_holidays(self):
|
||||
if self._year >= 2014:
|
||||
self._add_holiday_aug_20(
|
||||
# Nativity of Bernardo O'Higgins (Chillán and Chillán Viejo communes)
|
||||
tr("Nacimiento del Prócer de la Independencia (Chillán y Chillán Viejo)")
|
||||
)
|
||||
|
||||
def _populate_bank_holidays(self):
|
||||
# Bank Holiday.
|
||||
name = tr("Feriado bancario")
|
||||
if 1957 <= self._year <= 1975:
|
||||
self._add_holiday_jun_30(name)
|
||||
|
||||
if self._year >= 1956 and self._year != 1997:
|
||||
self._add_holiday_dec_31(name)
|
||||
|
||||
@property
|
||||
def _summer_solstice_date(self) -> tuple[int, int]:
|
||||
day = 20
|
||||
if (self._year % 4 > 1 and self._year <= 2046) or (
|
||||
self._year % 4 > 2 and self._year <= 2075
|
||||
):
|
||||
day = 21
|
||||
return JUN, day
|
||||
|
||||
|
||||
class CL(Chile):
|
||||
pass
|
||||
|
||||
|
||||
class CHL(Chile):
|
||||
pass
|
||||
|
||||
|
||||
class ChileStaticHolidays:
|
||||
# National Holiday.
|
||||
national_holiday = tr("Feriado nacional")
|
||||
|
||||
special_public_holidays = {
|
||||
1999: (DEC, 31, national_holiday),
|
||||
2022: (SEP, 16, national_holiday),
|
||||
}
|
||||
Reference in New Issue
Block a user