Opa_omroep-automatiseren/venv/lib/python3.8/site-packages/holidays/countries/colombia.py

166 lines
5.6 KiB
Python
Raw Normal View History

2020-12-27 20:00:11 +00:00
# -*- coding: utf-8 -*-
# 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.
#
# Author: ryanss <ryanssdev@icloud.com> (c) 2014-2017
# dr-prodigy <maurizio.montel@gmail.com> (c) 2017-2020
# Website: https://github.com/dr-prodigy/python-holidays
# License: MIT (see LICENSE file)
from datetime import date
from dateutil.easter import easter
from dateutil.relativedelta import relativedelta as rd, MO, TH, FR
from holidays.constants import JAN, MAR, MAY, JUN, JUL, AUG, OCT, \
NOV, DEC
from holidays.constants import MON, WEEKEND
from holidays.holiday_base import HolidayBase
class Colombia(HolidayBase):
# https://es.wikipedia.org/wiki/Anexo:D%C3%ADas_festivos_en_Colombia
def __init__(self, **kwargs):
self.country = 'CO'
HolidayBase.__init__(self, **kwargs)
def _populate(self, year):
# Fixed date holidays!
# If observed=True and they fall on a weekend they are not observed.
# If observed=False there are 18 holidays
# New Year's Day
if self.observed and date(year, JAN, 1).weekday() in WEEKEND:
pass
else:
self[date(year, JAN, 1)] = "Año Nuevo [New Year's Day]"
# Labor Day
self[date(year, MAY, 1)] = "Día del Trabajo [Labour Day]"
# Independence Day
name = "Día de la Independencia [Independence Day]"
if self.observed and date(year, JUL, 20).weekday() in WEEKEND:
pass
else:
self[date(year, JUL, 20)] = name
# Battle of Boyaca
self[date(year, AUG, 7)] = "Batalla de Boyacá [Battle of Boyacá]"
# Immaculate Conception
if self.observed and date(year, DEC, 8).weekday() in WEEKEND:
pass
else:
self[date(year, DEC, 8)] = "La Inmaculada Concepción" \
" [Immaculate Conception]"
# Christmas
self[date(year, DEC, 25)] = "Navidad [Christmas]"
# Emiliani Law holidays!
# Unless they fall on a Monday they are observed the following monday
# Epiphany
name = "Día de los Reyes Magos [Epiphany]"
if date(year, JAN, 6).weekday() == MON or not self.observed:
self[date(year, JAN, 6)] = name
else:
self[date(year, JAN, 6) + rd(weekday=MO)] = name + "(Observed)"
# Saint Joseph's Day
name = "Día de San José [Saint Joseph's Day]"
if date(year, MAR, 19).weekday() == MON or not self.observed:
self[date(year, MAR, 19)] = name
else:
self[date(year, MAR, 19) + rd(weekday=MO)] = name + "(Observed)"
# Saint Peter and Saint Paul's Day
name = "San Pedro y San Pablo [Saint Peter and Saint Paul]"
if date(year, JUN, 29).weekday() == MON or not self.observed:
self[date(year, JUN, 29)] = name
else:
self[date(year, JUN, 29) + rd(weekday=MO)] = name + "(Observed)"
# Assumption of Mary
name = "La Asunción [Assumption of Mary]"
if date(year, AUG, 15).weekday() == MON or not self.observed:
self[date(year, AUG, 15)] = name
else:
self[date(year, AUG, 15) + rd(weekday=MO)] = name + "(Observed)"
# Discovery of America
name = "Descubrimiento de América [Discovery of America]"
if date(year, OCT, 12).weekday() == MON or not self.observed:
self[date(year, OCT, 12)] = name
else:
self[date(year, OCT, 12) + rd(weekday=MO)] = name + \
"(Observed)"
# All Saints Day
name = "Dia de Todos los Santos [All Saint's Day]"
if date(year, NOV, 1).weekday() == MON or not self.observed:
self[date(year, NOV, 1)] = name
else:
self[date(year, NOV, 1) + rd(weekday=MO)] = name + \
"(Observed)"
# Independence of Cartagena
name = "Independencia de Cartagena [Independence of Cartagena]"
if date(year, NOV, 11).weekday() == MON or not self.observed:
self[date(year, NOV, 11)] = name
else:
self[date(year, NOV, 11) + rd(weekday=MO)] = name + \
"(Observed)"
# Holidays based on Easter
# Maundy Thursday
self[easter(year) + rd(weekday=TH(-1))
] = "Jueves Santo [Maundy Thursday]"
# Good Friday
self[easter(year) + rd(weekday=FR(-1))
] = "Viernes Santo [Good Friday]"
# Holidays based on Easter but are observed the following monday
# (unless they occur on a monday)
# Ascension of Jesus
name = "Ascensión del señor [Ascension of Jesus]"
hdate = easter(year) + rd(days=+39)
if hdate.weekday() == MON or not self.observed:
self[hdate] = name
else:
self[hdate + rd(weekday=MO)] = name + "(Observed)"
# Corpus Christi
name = "Corpus Christi [Corpus Christi]"
hdate = easter(year) + rd(days=+60)
if hdate.weekday() == MON or not self.observed:
self[hdate] = name
else:
self[hdate + rd(weekday=MO)] = name + "(Observed)"
# Sacred Heart
name = "Sagrado Corazón [Sacred Heart]"
hdate = easter(year) + rd(days=+68)
if hdate.weekday() == MON or not self.observed:
self[hdate] = name
else:
self[hdate + rd(weekday=MO)] = name + "(Observed)"
class CO(Colombia):
pass
class COL(Colombia):
pass