Skip to content

Commit

Permalink
Merge pull request #1 from dr-prodigy/beta
Browse files Browse the repository at this point in the history
Update Beta
  • Loading branch information
jusce17 committed Nov 10, 2020
2 parents fcac619 + 5e0c1c3 commit 6e198d2
Show file tree
Hide file tree
Showing 15 changed files with 310 additions and 127 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ install:

matrix:
include:
# - python: '3.9'
- python: '3.9'
- python: '3.8'
- python: '3.7'
- python: '3.6'
Expand Down
15 changes: 13 additions & 2 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,22 @@ Released ????? ??, ????

- Support for Djibouti (Abdisamade)
- Support for United Arab Emirates (marcomasulli, mborsetti)
- Support for Chile (mborsetti, dr-p)
- Support for Angola (pietervdw115)
- Korea 2020 fix (MYUNGJE, dr-p)
- Australia 2020 fix (bencollerson, trauty-is-me)
- Croatia fixes (jangrg, dr-p)
- United States fixes (raffg, dr-p)
- Croatia fixes and updates (jangrg, mborsetti, dr-p)
- United States fixes (raffg, bgmiles, dr-p)
- UK fixes (dr-p, richard-kunert)
- Russia fixes (tserekh)
- Ireland fixes (chiuczek)
- France fix (mborsetti)
- Mexico fix (mborsetti)
- Singapore 2022 fix (mborsetti)
- Fix on occasional pop_named exception (mborsetti)
- convertdate fallback if hijri-converter not available (mborsetti)
- enabled Travis tests for python3.9 (mborsetti)
- added flake8 to unittests (mborsetti)


Version 0.10.3
Expand Down
7 changes: 4 additions & 3 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,8 @@ Bulgaria BG/BLG None
Burundi BI/BDI None
Canada CA/CAN prov = AB, BC, MB, NB, NL, NS, NT, NU, **ON** (default),
PE, QC, SK, YU
Chile CL/CHL None
Chile CL/CHL state = AI, AN, AP, AR, AT, BI, CO, LI, LL, LR, MA, ML, NB,
RM, TA, VS
Colombia CO/COL None
Croatia HR/HRV None
Czechia CZ/CZE None
Expand All @@ -122,7 +123,7 @@ England None
Estonia EE/EST None
EuropeanCentralBank ECB/TAR Trans-European Automated Real-time Gross Settlement (TARGET2)
Finland FI/FIN None
France FRA **Métropole** (default), Alsace-Moselle, Guadeloupe, Guyane,
France FR/FRA **Métropole** (default), Alsace-Moselle, Guadeloupe, Guyane,
Martinique, Mayotte, Nouvelle-Calédonie, La Réunion,
Polynésie Française, Saint-Barthélémy, Saint-Martin,
Wallis-et-Futuna
Expand Down Expand Up @@ -177,7 +178,7 @@ Switzerland CH/CHE prov = AG, AR, AI, BL, BS, BE, FR, GE, GL, GR, JU,
Turkey TR/TUR None
Ukraine UA/UKR None
UnitedArabEmirates AE/ARE None
UnitedKingdom UK/GB/GBR None
UnitedKingdom GB/GBR/UK None
UnitedStates US/USA state = AL, AK, AS, AZ, AR, CA, CO, CT, DE, DC, FL, GA,
GU, HI, ID, IL, IN, IA, KS, KY, LA, ME, MD, MH, MA, MI,
FM, MN, MS, MO, MT, NE, NV, NH, NJ, NM, NY, NC, ND, MP,
Expand Down
2 changes: 1 addition & 1 deletion holidays/countries/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
from .estonia import Estonia, EE, EST
from .european_central_bank import EuropeanCentralBank, ECB, TAR
from .finland import Finland, FI, FIN
from .france import France, FRA
from .france import France, FR, FRA
from .germany import Germany, DE, DEU
from .greece import Greece, GR, GRC
from .honduras import Honduras, HN, HND
Expand Down
127 changes: 89 additions & 38 deletions holidays/countries/chile.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,92 +14,143 @@
from datetime import date

from dateutil.easter import easter
from dateutil.relativedelta import relativedelta as rd, FR
from dateutil.relativedelta import relativedelta as rd, MO, FR, SA

from holidays.constants import JAN, MAY, JUN, JUL, AUG, SEP, OCT, \
NOV, DEC
from holidays.constants import WED, THU
from holidays.constants import TUE, THU, FRI, SAT, SUN
from holidays.holiday_base import HolidayBase


class Chile(HolidayBase):
# https://www.feriados.cl
# http://www.feriadoschilenos.cl/ (excellent history)
# https://es.wikipedia.org/wiki/Anexo:D%C3%ADas_feriados_en_Chile

# ISO 3166-2 codes for the principal subdivisions, called regions
STATES = ['AI', 'AN', 'AP', 'AR', 'AT', 'BI', 'CO', 'LI', 'LL', 'LR',
'MA', 'ML', 'NB', 'RM', 'TA', 'VS']

def __init__(self, **kwargs):
self.country = 'CL'
HolidayBase.__init__(self, **kwargs)

def _populate(self, year):
# New Year's Day
# New Year's Day (Law 2.977)
self[date(year, JAN, 1)] = "Año Nuevo [New Year's Day]"
# Day after, if it's a Sunday (Law 20.983)
if year > 2016 and date(year, JAN, 1).weekday() == SUN:
self[date(year, JAN, 2)] = "Fiestas Patrias [Holiday]"

# Holy Week
name_fri = "Semana Santa (Viernes Santo) [Holy day (Holy Friday)]"
# Holy Week (Law 2.977)
name_fri = "Semana Santa (Viernes Santo) [Good Friday)]"
name_sat = "Semana Santa (Sábado Santo) [Good Saturday)]"
name_easter = 'Día de Pascuas [Easter Day]'

self[easter(year) + rd(weekday=FR(-1))] = name_fri
self[easter(year) + rd(weekday=SA(-1))] = name_sat
self[easter(year)] = name_easter

# Labor Day
name = "Día del Trabajo [Labour Day]"
# Labor Day (Law 2.200, renamed with Law 18.018)
name = "Día Nacional del Trabajo [Labour Day]"
self[date(year, MAY, 1)] = name

# Naval Glories Day
name = "Día de las Glorias Navales [Naval Glories Day]"
# Naval Glories Day (Law 2.977)
name = "Día de las Glorias Navales [Navy Day]"
self[date(year, MAY, 21)] = name

# Saint Peter and Saint Paul.
# Saint Peter and Saint Paul (Law 18.432)
name = "San Pedro y San Pablo [Saint Peter and Saint Paul]"
self[date(year, JUN, 29)] = name
if year < 2020:
self[date(year, JUN, 29)] = name
else:
# floating Monday holiday (Law 19.668)
if date(year, JUN, 29).weekday() <= THU:
self[date(year, JUN, 29) + rd(date(year, JUN, 29),
weekday=MO(-1))] = name
elif date(year, JUN, 29).weekday() == FRI:
self[date(year, JUN, 29) + rd(weekday=MO)] = name
else:
self[date(year, JUN, 29)] = name

# Day of Virgin of Carmen (Law 20.148)
if year > 2006:
name = "Virgen del Carmen [Our Lady of Mount Carmel]"
self[date(year, JUL, 16)] = name

# Day of Assumption of the Virgin (Law 2.977)
name = "Asunción de la Virgen [Assumption of Mary]"
self[date(year, AUG, 15)] = name

# Day of Virgin of Carmen.
name = "Virgen del Carmen [Virgin of Carmen]"
self[date(year, JUL, 16)] = name
# National Holiday Friday preceding Independence Day (Law 20.983)
if year > 2016 and date(year, SEP, 18).weekday() == SAT:
self[date(year, SEP, 17)] = "Fiestas Patrias [Holiday]"

# Day of Assumption of the Virgin
name = "Asunsión de la Virgen [Assumption of the Virgin]"
self[date(year, AUG, 15)] = name
# National Holiday Monday preceding Independence Day (Law 20.215)
if year > 2007 and date(year, SEP, 18).weekday() == TUE:
self[date(year, SEP, 17)] = "Fiestas Patrias [Holiday]"

# Independence Day
# Independence Day (Law 2.977)
name = "Día de la Independencia [Independence Day]"
self[date(year, SEP, 18)] = name

# Day of Glories of the Army of Chile
name = "Día de las Glorias del Ejército de Chile [Day of " \
"Glories of the Army of Chile]"
# Day of Glories of the Army of Chile (Law 2.977)
name = "Día de las Glorias del Ejército [Army Day]"
self[date(year, SEP, 19)] = name
# National Holidays Ley 20.215
name = "Fiestas Patrias [National Holidays]"
if year > 2014 and date(year, SEP, 19).weekday() in [WED, THU]:
self[date(year, SEP, 20)] = name

# Day of the Meeting of Two Worlds
# National Holiday Friday following Army Day (Law 20.215)
if year > 2007 and date(year, SEP, 19).weekday() == THU:
self[date(year, SEP, 20)] = "Fiestas Patrias [Holiday]"

# Day of the Meeting of Two Worlds (Law 3.810)
if year < 2010:
self[date(year, OCT, 12)] = "Día de la Raza [Columbus day]"
else:
elif year < 2020:
self[date(year, OCT, 12)] = "Día del Respeto a la Diversidad"\
" [Day of the Meeting " \
" of Two Worlds]"

# National Day of the Evangelical and Protestant Churches
name = "Día Nacional de las Iglesias Evangélicas y Protestantes " \
" [National Day of the " \
" Evangelical and " \
" Protestant Churches]"
self[date(year, OCT, 31)] = name

# All Saints Day
else:
# floating Monday holiday (Law 19.668)
name = ("Día del Descubrimiento de dos Mundos [Columbus Day]")
if date(year, OCT, 12).weekday() <= THU:
self[date(year, OCT, 12) + rd(date(year, OCT, 12),
weekday=MO(-1))] = name
elif date(year, OCT, 12).weekday() == FRI:
self[date(year, OCT, 12) + rd(weekday=MO)] = name
else:
self[date(year, OCT, 12)] = name

# National Day of the Evangelical and Protestant Churches (Law 20.299)
if year > 2007:
name = ("Día Nacional de las Iglesias Evangélicas y Protestantes "
" [Reformation Day]")
self[date(year, OCT, 31)] = name

# All Saints Day (Law 2.977)
name = "Día de Todos los Santos [All Saints Day]"
self[date(year, NOV, 1)] = name

# Immaculate Conception
# Immaculate Conception (Law 2.977)
self[date(year, DEC, 8)] = "La Inmaculada Concepción" \
" [Immaculate Conception]"

# Christmas
# Christmas (Law 2.977)
self[date(year, DEC, 25)] = "Navidad [Christmas]"

# región de Arica y Parinacota
if self.state == 'AP' and year >= 2020:
# Law 20.663
self[date(year, JUN, 7)] = ("Asalto y Toma del Morro de Arica"
" [Assault and Capture of Cape Arica]")

# región de Ñuble
if self.state == 'NB' and year >= 2014:
# Law 20.678
self[date(year, AUG, 20)] =\
("Nacimiento del Prócer de la Independencia"
" (Chillán y Chillán Viejo)"
" [Nativity of Bernardo O'Higgins]")


class CL(Chile):
pass
Expand Down
24 changes: 12 additions & 12 deletions holidays/countries/croatia.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,18 @@
# Website: https://github.com/dr-prodigy/python-holidays
# License: MIT (see LICENSE file)

from datetime import date
from datetime import date, timedelta

from dateutil.easter import easter
from dateutil.relativedelta import relativedelta as rd

from holidays.constants import JAN, MAY, JUN, AUG, OCT, \
NOV, DEC
from holidays.constants import JAN, MAY, JUN, AUG, OCT, NOV, DEC
from holidays.holiday_base import HolidayBase


class Croatia(HolidayBase):

# Updated with act 022-03 / 19-01 / 219 of 14 November 2019
# https://narodne-novine.nn.hr/clanci/sluzbeni/2019_11_110_2212.html
# https://en.wikipedia.org/wiki/Public_holidays_in_Croatia

def __init__(self, **kwargs):
Expand All @@ -32,30 +32,31 @@ def __init__(self, **kwargs):
def _populate(self, year):
# New years
self[date(year, JAN, 1)] = "Nova Godina"

# Epiphany
self[date(year, JAN, 6)] = "Sveta tri kralja"
easter_date = easter(year)

# Easter
self[easter_date] = "Uskrs"
# Easter Monday
self[easter_date + rd(days=1)] = "Uskršnji ponedjeljak"
self[easter_date + timedelta(days=1)] = "Uskrsni ponedjeljak"

# Corpus Christi
self[easter_date + rd(days=60)] = "Tijelovo"
self[easter_date + timedelta(days=60)] = "Tijelovo"

# International Workers' Day
self[date(year, MAY, 1)] = "Međunarodni praznik rada"

# Statehood day (new)
if year >= 2020:
# Statehood day
self[date(year, MAY, 30)] = "Dan državnosti"

# Anti-fascist struggle day
self[date(year, JUN, 22)] = "Dan antifašističke borbe"

# Statehood day (old)
if year < 2020:
# Statehood day
self[date(year, JUN, 25)] = "Dan državnosti"

# Victory and Homeland Thanksgiving Day
Expand All @@ -64,17 +65,16 @@ def _populate(self, year):
# Assumption of Mary
self[date(year, AUG, 15)] = "Velika Gospa"

# Independence Day (old)
if year < 2020:
# Independence Day
self[date(year, OCT, 8)] = "Dan neovisnosti"

# All Saints' Day
self[date(year, NOV, 1)] = "Dan svih svetih"
self[date(year, NOV, 1)] = "Svi sveti"

if year >= 2020:
# Memorial day
self[date(year, NOV, 18)] =\
"Dan sjećanja na žrtve Domovinskog rata"
self[date(year, NOV, 18)] = "Dan sjećanja"

# Christmas day
self[date(year, DEC, 25)] = "Božić"
Expand Down
6 changes: 5 additions & 1 deletion holidays/countries/france.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,10 @@ def _populate(self, year):
self[date(year, DEC, 20)] = "Abolition de l'esclavage"


# FR already exists (Friday), we don't want to mess it up
# *Warning* FR is also used by dateutlis (Friday), so be careful with its use
class FR(France):
pass


class FRA(France):
pass
3 changes: 2 additions & 1 deletion holidays/countries/mexico.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ def _populate(self, year):

# Labor Day
if year >= 1923:
self[date(year, MAY, 1)] = "Día del Trabajo [Labour Day]"
name = "Día del Trabajo [Labour Day]"
self[date(year, MAY, 1)] = name
if self.observed and date(year, MAY, 1).weekday() == SAT:
self[date(year, MAY, 1) + rd(days=-1)] = name + " (Observed)"
elif self.observed and date(year, MAY, 1).weekday() == SUN:
Expand Down
8 changes: 6 additions & 2 deletions holidays/countries/russia.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,12 @@ def _populate(self, year):
self[date(year, MAY, 9)] = "День Победы"
# Russia's Day
self[date(year, JUN, 12)] = "День России"
# Unity Day
self[date(year, NOV, 4)] = "День народного единства"
if year >= 2005:
# Unity Day
self[date(year, NOV, 4)] = "День народного единства"
else:
# October Revolution Day
self[date(year, NOV, 7)] = "День Октябрьской революции"


class RU(Russia):
Expand Down

0 comments on commit 6e198d2

Please sign in to comment.