Hello community,
here is the log from the commit of package python-holidays for openSUSE:Factory
checked in at 2020-01-17 16:07:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-holidays (Old)
and /work/SRC/openSUSE:Factory/.python-holidays.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-holidays"
Fri Jan 17 16:07:31 2020 rev:4 rq:765226 version:0.9.12
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-holidays/python-holidays.changes
2019-09-13 15:00:37.561283103 +0200
+++
/work/SRC/openSUSE:Factory/.python-holidays.new.26092/python-holidays.changes
2020-01-17 16:07:51.192510042 +0100
@@ -1,0 +2,17 @@
+Fri Jan 17 11:51:51 UTC 2020 - Antonio Larrosa <[email protected]>
+
+- Update to 0.9.12:
+ * Support for Nigeria (ioluwayo)
+ * Support for India - Telangana (kiranbeethoju, dr-p)
+ * Support for Dominican Republic (gabmartinez)
+ * Support for Nicaragua (CARocha)
+ * Code refactoring, bugfixes (vlt)
+ * Add method to list all supported countries (fabaff)
+ * Germany bugfixes (bitraten)
+ * Correctly handle United Kingdom "May Day" holiday in 2020 - #219 (robfraz)
+ * Hungary fixes (gypapp)
+ * Chile test fixes (rpanai)
+ * Italy fixes (jokerigno, sixbladeknife)
+ * Other minor fixes
+
+-------------------------------------------------------------------
Old:
----
holidays-0.9.11.tar.gz
New:
----
holidays-0.9.12.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-holidays.spec ++++++
--- /var/tmp/diff_new_pack.AzLcZV/_old 2020-01-17 16:07:51.716510290 +0100
+++ /var/tmp/diff_new_pack.AzLcZV/_new 2020-01-17 16:07:51.720510292 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-holidays
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-holidays
-Version: 0.9.11
+Version: 0.9.12
Release: 0
Summary: Python library for generating holidays on the fly
License: MIT
++++++ holidays-0.9.11.tar.gz -> holidays-0.9.12.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/holidays-0.9.11/CHANGES new/holidays-0.9.12/CHANGES
--- old/holidays-0.9.11/CHANGES 2019-07-28 19:01:11.000000000 +0200
+++ new/holidays-0.9.12/CHANGES 2019-12-23 23:39:50.000000000 +0100
@@ -1,3 +1,21 @@
+Version 0.9.12
+==============
+
+Released December 23, 2019
+
+- Support for Nigeria (ioluwayo)
+- Support for India - Telangana (kiranbeethoju, dr-p)
+- Support for Dominican Republic (gabmartinez)
+- Support for Nicaragua (CARocha)
+- Code refactoring, bugfixes (vlt)
+- Add method to list all supported countries (fabaff)
+- Germany bugfixes (bitraten)
+- Correctly handle United Kingdom "May Day" holiday in 2020 - #219 (robfraz)
+- Hungary fixes (gypapp)
+- Chile test fixes (rpanai)
+- Italy fixes (jokerigno, sixbladeknife)
+- Other minor fixes
+
Version 0.9.11
==============
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/holidays-0.9.11/PKG-INFO new/holidays-0.9.12/PKG-INFO
--- old/holidays-0.9.11/PKG-INFO 2019-07-28 19:04:08.000000000 +0200
+++ new/holidays-0.9.12/PKG-INFO 2019-12-23 23:43:16.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: holidays
-Version: 0.9.11
+Version: 0.9.12
Summary: Generate and work with holidays in Python
Home-page: https://github.com/dr-prodigy/python-holidays
Author: dr-prodigy
@@ -121,6 +121,7 @@
Croatia HR None
Czechia CZ None
Denmark DK None
+ Dominican Republic DO None
England None
Estonia EE None
EuropeanCentralBank ECB,TAR Trans-European Automated Real-time Gross
Settlement (TARGET2)
@@ -148,6 +149,8 @@
Netherlands NL None
NewZealand NZ prov = NTL, AUK, TKI, HKB, WGN, MBH, NSN,
CAN, STC, WTL,
OTA, STL, CIT
+ Nicaragua NI prov = MN
+ Nigeria NG None
Northern Ireland None
Norway NO None
Peru PE None
@@ -311,11 +314,11 @@
>>> date(2012, 1, 1) in us_holidays
True
>>> us_holidays[date(2012, 1, 1)]
- "New Year's Eve"
+ "New Year's Day"
>>> date(2012, 1, 2) in us_holidays
True
>>> us_holidays.get(date(2012 ,1, 2))
- "New Year's Eve (Observed)"
+ "New Year's Day (Observed)"
# The `observed` and `expand` values can both be changed on the
fly and the
# holiday list will be adjusted accordingly
@@ -485,6 +488,7 @@
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Office/Business :: Scheduling
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/holidays-0.9.11/README.rst
new/holidays-0.9.12/README.rst
--- old/holidays-0.9.11/README.rst 2019-07-28 10:44:45.000000000 +0200
+++ new/holidays-0.9.12/README.rst 2019-12-23 23:01:50.000000000 +0100
@@ -112,6 +112,7 @@
Croatia HR None
Czechia CZ None
Denmark DK None
+Dominican Republic DO None
England None
Estonia EE None
EuropeanCentralBank ECB,TAR Trans-European Automated Real-time Gross
Settlement (TARGET2)
@@ -139,6 +140,8 @@
Netherlands NL None
NewZealand NZ prov = NTL, AUK, TKI, HKB, WGN, MBH, NSN, CAN,
STC, WTL,
OTA, STL, CIT
+Nicaragua NI prov = MN
+Nigeria NG None
Northern Ireland None
Norway NO None
Peru PE None
@@ -302,11 +305,11 @@
>>> date(2012, 1, 1) in us_holidays
True
>>> us_holidays[date(2012, 1, 1)]
- "New Year's Eve"
+ "New Year's Day"
>>> date(2012, 1, 2) in us_holidays
True
>>> us_holidays.get(date(2012 ,1, 2))
- "New Year's Eve (Observed)"
+ "New Year's Day (Observed)"
# The `observed` and `expand` values can both be changed on the fly and the
# holiday list will be adjusted accordingly
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/holidays-0.9.11/holidays.egg-info/PKG-INFO
new/holidays-0.9.12/holidays.egg-info/PKG-INFO
--- old/holidays-0.9.11/holidays.egg-info/PKG-INFO 2019-07-28
19:04:08.000000000 +0200
+++ new/holidays-0.9.12/holidays.egg-info/PKG-INFO 2019-12-23
23:43:16.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: holidays
-Version: 0.9.11
+Version: 0.9.12
Summary: Generate and work with holidays in Python
Home-page: https://github.com/dr-prodigy/python-holidays
Author: dr-prodigy
@@ -121,6 +121,7 @@
Croatia HR None
Czechia CZ None
Denmark DK None
+ Dominican Republic DO None
England None
Estonia EE None
EuropeanCentralBank ECB,TAR Trans-European Automated Real-time Gross
Settlement (TARGET2)
@@ -148,6 +149,8 @@
Netherlands NL None
NewZealand NZ prov = NTL, AUK, TKI, HKB, WGN, MBH, NSN,
CAN, STC, WTL,
OTA, STL, CIT
+ Nicaragua NI prov = MN
+ Nigeria NG None
Northern Ireland None
Norway NO None
Peru PE None
@@ -311,11 +314,11 @@
>>> date(2012, 1, 1) in us_holidays
True
>>> us_holidays[date(2012, 1, 1)]
- "New Year's Eve"
+ "New Year's Day"
>>> date(2012, 1, 2) in us_holidays
True
>>> us_holidays.get(date(2012 ,1, 2))
- "New Year's Eve (Observed)"
+ "New Year's Day (Observed)"
# The `observed` and `expand` values can both be changed on the
fly and the
# holiday list will be adjusted accordingly
@@ -485,6 +488,7 @@
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Office/Business :: Scheduling
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/holidays-0.9.11/holidays.py
new/holidays-0.9.12/holidays.py
--- old/holidays-0.9.11/holidays.py 2019-07-28 19:03:14.000000000 +0200
+++ new/holidays-0.9.12/holidays.py 2019-12-23 23:01:50.000000000 +0100
@@ -16,11 +16,12 @@
from dateutil.parser import parse
from dateutil.relativedelta import relativedelta as rd
from dateutil.relativedelta import MO, TU, WE, TH, FR, SA, SU
+import inspect
import six
+import sys
import warnings
-
-__version__ = '0.9.11'
+__version__ = '0.9.12'
MON, TUE, WED, THU, FRI, SAT, SUN = range(7)
WEEKEND = (SAT, SUN)
@@ -228,10 +229,21 @@
return HolidaySum
-def CountryHoliday(country, years=[], prov=None, state=None):
+def list_supported_countries():
+ """List all supported countries incl. their abbreviation."""
+ return [name for name, obj in
+ inspect.getmembers(sys.modules[__name__], inspect.isclass)
+ if obj.__module__ is __name__]
+
+
+def CountryHoliday(country, years=[], prov=None, state=None, expand=True,
+ observed=True):
try:
country_holiday = globals()[country](years=years,
- prov=prov, state=state)
+ prov=prov,
+ state=state,
+ expand=expand,
+ observed=observed)
except (KeyError):
raise KeyError("Country %s not available" % country)
return country_holiday
@@ -943,6 +955,89 @@
pass
+class Chile(HolidayBase):
+ # https://www.feriados.cl
+ # https://es.wikipedia.org/wiki/Anexo:D%C3%ADas_feriados_en_Chile
+
+ def __init__(self, **kwargs):
+ self.country = 'CL'
+ HolidayBase.__init__(self, **kwargs)
+
+ def _populate(self, year):
+ # New Year's Day
+ self[date(year, JAN, 1)] = "Año Nuevo [New Year's Day]"
+
+ # Holy Week
+ name_fri = "Semana Santa (Viernes Santo) [Holy day (Holy Friday)]"
+ name_easter = 'Día de Pascuas [Easter Day]'
+
+ self[easter(year) + rd(weekday=FR(-1))] = name_fri
+ self[easter(year)] = name_easter
+
+ # Labor Day
+ name = "Día del Trabajo [Labour Day]"
+ self[date(year, MAY, 1)] = name
+
+ # Naval Glories Day
+ name = "Día de las Glorias Navales [Naval Glories Day]"
+ self[date(year, MAY, 21)] = name
+
+ # Saint Peter and Saint Paul.
+ name = "San Pedro y San Pablo [Saint Peter and Saint Paul]"
+ self[date(year, JUN, 29)] = name
+
+ # Day of Virgin of Carmen.
+ name = "Virgen del Carmen [Virgin of Carmen]"
+ self[date(year, JUL, 16)] = name
+
+ # Day of Assumption of the Virgin
+ name = "Asunsión de la Virgen [Assumption of the Virgin]"
+ self[date(year, AUG, 15)] = name
+
+ # Independence Day
+ 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]"
+ 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
+ if year < 2010:
+ self[date(year, OCT, 12)] = "Día de la Raza [Columbus day]"
+ else:
+ 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
+ name = "Día de Todos los Santos [All Saints Day]"
+ self[date(year, NOV, 1)] = name
+
+ # Immaculate Conception
+ self[date(year, DEC, 8)] = "La Inmaculada Concepción" \
+ " [Immaculate Conception]"
+
+ # Christmas
+ self[date(year, DEC, 25)] = "Navidad [Christmas]"
+
+
+class CL(Chile):
+ pass
+
+
class Colombia(HolidayBase):
# https://es.wikipedia.org/wiki/Anexo:D%C3%ADas_festivos_en_Colombia
@@ -2251,16 +2346,13 @@
def __init__(self, **kwargs):
self.country = 'DE'
- self.prov = kwargs.pop('prov', 'SH')
+ self.prov = kwargs.pop('prov', None)
HolidayBase.__init__(self, **kwargs)
def _populate(self, year):
if year <= 1989:
return
- if year == 1990:
- self[date(year, JUN, 17)] = 'Tag der deutschen Einheit'
-
if year > 1990:
self[date(year, JAN, 1)] = 'Neujahr'
@@ -2301,7 +2393,7 @@
if self.prov in ('BY', 'SL'):
self[date(year, AUG, 15)] = 'Mariä Himmelfahrt'
- self[date(year, OCT, 3)] = 'Tag der Deutschen Einheit'
+ self[date(year, OCT, 3)] = 'Tag der Deutschen Einheit'
if self.prov in ('BB', 'MV', 'SN', 'ST', 'TH'):
self[date(year, OCT, 31)] = 'Reformationstag'
@@ -2317,7 +2409,7 @@
if self.prov in ('BW', 'BY', 'NW', 'RP', 'SL'):
self[date(year, NOV, 1)] = 'Allerheiligen'
- if (year >= 1990 and year <= 1994) or self.prov == 'SN':
+ if year <= 1994 or self.prov == 'SN':
# can be calculated as "last wednesday before year-11-23" which is
# why we need to go back two wednesdays if year-11-23 happens to be
# a wednesday
@@ -2325,7 +2417,7 @@
weekday_delta = WE(-2) if base_data.weekday() == 2 else WE(-1)
self[base_data + rd(weekday=weekday_delta)] = 'Buß- und Bettag'
- if (year >= 2019):
+ if year >= 2019:
if self.prov == 'TH':
self[date(year, SEP, 20)] = 'Weltkindertag'
@@ -2357,13 +2449,13 @@
self[easter(year) + rd(days=39)] = "Christi Himmelfahrt"
self[easter(year) + rd(days=50)] = "Pfingstmontag"
self[easter(year) + rd(days=60)] = "Fronleichnam"
- self[date(year, AUG, 15)] = "Maria Himmelfahrt"
+ self[date(year, AUG, 15)] = "Mariä Himmelfahrt"
if 1919 <= year <= 1934:
self[date(year, NOV, 12)] = "Nationalfeiertag"
if year >= 1967:
self[date(year, OCT, 26)] = "Nationalfeiertag"
self[date(year, NOV, 1)] = "Allerheiligen"
- self[date(year, DEC, 8)] = "Maria Empfängnis"
+ self[date(year, DEC, 8)] = "Mariä Empfängnis"
self[date(year, DEC, 25)] = "Christtag"
self[date(year, DEC, 26)] = "Stefanitag"
@@ -2457,24 +2549,28 @@
# May Day bank holiday (first Monday in May)
if year >= 1978:
name = "May Day"
- if year == 1995:
- dt = date(year, MAY, 8)
+ if year == 2020 and self.country != 'Ireland':
+ # Moved to Friday to mark 75th anniversary of VE Day.
+ self[date(year, MAY, 8)] = name
else:
- dt = date(year, MAY, 1)
- if dt.weekday() == MON:
- self[dt] = name
- elif dt.weekday() == TUE:
- self[dt + rd(days=+6)] = name
- elif dt.weekday() == WED:
- self[dt + rd(days=+5)] = name
- elif dt.weekday() == THU:
- self[dt + rd(days=+4)] = name
- elif dt.weekday() == FRI:
- self[dt + rd(days=+3)] = name
- elif dt.weekday() == SAT:
- self[dt + rd(days=+2)] = name
- elif dt.weekday() == SUN:
- self[dt + rd(days=+1)] = name
+ if year == 1995:
+ dt = date(year, MAY, 8)
+ else:
+ dt = date(year, MAY, 1)
+ if dt.weekday() == MON:
+ self[dt] = name
+ elif dt.weekday() == TUE:
+ self[dt + rd(days=+6)] = name
+ elif dt.weekday() == WED:
+ self[dt + rd(days=+5)] = name
+ elif dt.weekday() == THU:
+ self[dt + rd(days=+4)] = name
+ elif dt.weekday() == FRI:
+ self[dt + rd(days=+3)] = name
+ elif dt.weekday() == SAT:
+ self[dt + rd(days=+2)] = name
+ elif dt.weekday() == SUN:
+ self[dt + rd(days=+1)] = name
# Spring bank holiday (last Monday in May)
if self.country != 'Ireland':
@@ -2766,7 +2862,7 @@
def __init__(self, **kwargs):
warnings.warn("Czech is deprecated, use Czechia instead.",
DeprecationWarning)
- super(Czech, self).__init__()
+ super(Czech, self).__init__(**kwargs)
class Slovakia(HolidayBase):
@@ -2823,7 +2919,7 @@
def __init__(self, **kwargs):
warnings.warn("Slovak is deprecated, use Slovakia instead.",
DeprecationWarning)
- super(Slovak, self).__init__()
+ super(Slovak, self).__init__(**kwargs)
class Poland(HolidayBase):
@@ -2864,7 +2960,7 @@
def __init__(self, **kwargs):
warnings.warn("Polish is deprecated, use Poland instead.",
DeprecationWarning)
- super(Polish, self).__init__()
+ super(Polish, self).__init__(**kwargs)
class PL(Poland):
@@ -3162,7 +3258,7 @@
elif self.prov == 'EN':
self[date(year, JUL, 2)] = "Madonna della Visitazione"
elif self.prov == 'FE':
- self[date(year, APR, 22)] = "San Giorgio"
+ self[date(year, APR, 23)] = "San Giorgio"
elif self.prov == 'FI':
self[date(year, JUN, 24)] = "San Giovanni Battista"
elif self.prov == 'FR':
@@ -3177,6 +3273,8 @@
self[date(year, MAR, 19)] = "San Giuseppe"
elif self.prov == 'LT':
self[date(year, APR, 25)] = "San Marco evangelista"
+ elif self.prov == 'ME':
+ self[date(year, JUN, 3)] = "Madonna della Lettera"
elif self.prov == 'MI':
self[date(year, DEC, 7)] = "Sant'Ambrogio"
elif self.prov == 'MN':
@@ -3201,6 +3299,8 @@
self[date(year, JUL, 4)] = "Sant'Antonino di Piacenza"
elif self.prov == 'RM':
self[date(year, JUN, 29)] = "Santi Pietro e Paolo"
+ elif self.prov == 'TO':
+ self[date(year, JUN, 24)] = "San Giovanni Battista"
elif self.prov == 'TS':
self[date(year, NOV, 3)] = "San Giusto"
elif self.prov == 'VI':
@@ -3722,19 +3822,28 @@
y2k = "Y2K changeover"
local_election = "Local government elections"
presidential = "By presidential decree"
-
- self[date(1999, JUN, 2)] = national_election
- self[date(1999, DEC, 31)] = y2k
- self[date(2000, JAN, 2)] = y2k
- self[date(2004, APR, 14)] = national_election
- self[date(2006, MAR, 1)] = local_election
- self[date(2008, MAY, 2)] = presidential
- self[date(2009, APR, 22)] = national_election
- self[date(2011, MAY, 18)] = local_election
- self[date(2011, DEC, 27)] = presidential
- self[date(2014, MAY, 7)] = national_election
- self[date(2016, AUG, 3)] = local_election
- self[date(2019, MAY, 8)] = national_election
+ if year == 1999:
+ self[date(1999, JUN, 2)] = national_election
+ self[date(1999, DEC, 31)] = y2k
+ if year == 2000:
+ self[date(2000, JAN, 2)] = y2k
+ if year == 2004:
+ self[date(2004, APR, 14)] = national_election
+ if year == 2006:
+ self[date(2006, MAR, 1)] = local_election
+ if year == 2008:
+ self[date(2008, MAY, 2)] = presidential
+ if year == 2009:
+ self[date(2009, APR, 22)] = national_election
+ if year == 2011:
+ self[date(2011, MAY, 18)] = local_election
+ self[date(2011, DEC, 27)] = presidential
+ if year == 2014:
+ self[date(2014, MAY, 7)] = national_election
+ if year == 2016:
+ self[date(2016, AUG, 3)] = local_election
+ if year == 2019:
+ self[date(2019, MAY, 8)] = national_election
# As of 1995/1/1, whenever a public holiday falls on a Sunday,
# it rolls over to the following Monday
@@ -3968,7 +4077,7 @@
if self.prov in ('AI', 'JU', 'LU', 'NW', 'OW', 'SZ', 'TI', 'UR',
'VS', 'ZG'):
- self[date(year, AUG, 15)] = 'Maria Himmelfahrt'
+ self[date(year, AUG, 15)] = 'Mariä Himmelfahrt'
if self.prov == 'VD':
# Monday after the third Sunday of September
@@ -3984,7 +4093,7 @@
if self.prov in ('AI', 'LU', 'NW', 'OW', 'SZ', 'TI', 'UR', 'VS',
'ZG'):
- self[date(year, DEC, 8)] = 'Maria Empfängnis'
+ self[date(year, DEC, 8)] = 'Mariä Empfängnis'
if self.prov == 'GE':
self[date(year, DEC, 12)] = 'Escalade de Genève'
@@ -4125,6 +4234,14 @@
class Hungary(HolidayBase):
# https://en.wikipedia.org/wiki/Public_holidays_in_Hungary
+ # observed days off work around national holidays in the last 10 years:
+ # https://www.munkaugyiforum.hu/munkaugyi-segedanyagok/
+ # 2018-evi-munkaszuneti-napok-koruli-munkarend-9-2017-ngm-rendelet
+ # codification dates:
+ # - https://hvg.hu/gazdasag/
+ # 20170307_Megszavaztak_munkaszuneti_nap_lett_a_nagypentek
+ # - https://www.tankonyvtar.hu/hu/tartalom/historia/
+ # 92-10/ch01.html#id496839
def __init__(self, **kwargs):
self.country = "HU"
@@ -4132,45 +4249,100 @@
def _populate(self, year):
# New years
- self[date(year, JAN, 1)] = "Újév"
+ self._add_with_observed_day_off(date(year, JAN, 1), "Újév", since=2014)
# National Day
- self[date(year, MAR, 15)] = "Nemzeti ünnep"
+ if 1945 <= year <= 1950 or 1989 <= year:
+ self._add_with_observed_day_off(
+ date(year, MAR, 15), "Nemzeti ünnep")
+
+ # Soviet era
+ if 1950 <= year <= 1989:
+ # Proclamation of Soviet socialist governing system
+ self[date(year, MAR, 21)] = \
+ "A Tanácsköztársaság kikiáltásának ünnepe"
+ # Liberation Day
+ self[date(year, APR, 4)] = "A felszabadulás ünnepe"
+ # Memorial day of The Great October Soviet Socialist Revolution
+ if year not in (1956, 1989):
+ self[date(year, NOV, 7)] = \
+ "A nagy októberi szocialista forradalom ünnepe"
easter_date = easter(year)
# Good Friday
- self[easter_date + rd(weekday=FR(-1))] = "Nagypéntek"
+ if 2017 <= year:
+ self[easter_date + rd(weekday=FR(-1))] = "Nagypéntek"
# Easter
self[easter_date] = "Húsvét"
# Second easter day
- self[easter_date + rd(days=1)] = "Húsvét Hétfő"
+ if 1955 != year:
+ self[easter_date + rd(days=1)] = "Húsvét Hétfő"
# Pentecost
self[easter_date + rd(days=49)] = "Pünkösd"
# Pentecost monday
- self[easter_date + rd(days=50)] = "Pünkösdhétfő"
+ if year <= 1952 or 1992 <= year:
+ self[easter_date + rd(days=50)] = "Pünkösdhétfő"
# International Workers' Day
- self[date(year, MAY, 1)] = "A Munka ünnepe"
-
- # State Foundation Day
- self[date(year, AUG, 20)] = "Az államalapítás ünnepe"
+ if 1946 <= year:
+ self._add_with_observed_day_off(
+ date(year, MAY, 1), "A Munka ünnepe")
+ if 1950 <= year <= 1953:
+ self[date(year, MAY, 2)] = "A Munka ünnepe"
+
+ # State Foundation Day (1771-????, 1891-)
+ if 1950 <= year < 1990:
+ self[date(year, AUG, 20)] = "A kenyér ünnepe"
+ else:
+ self._add_with_observed_day_off(
+ date(year, AUG, 20), "Az államalapítás ünnepe")
# National Day
- self[date(year, OCT, 23)] = "Nemzeti ünnep"
+ if 1991 <= year:
+ self._add_with_observed_day_off(
+ date(year, OCT, 23), "Nemzeti ünnep")
# All Saints' Day
- self[date(year, NOV, 1)] = "Mindenszentek"
+ if 1999 <= year:
+ self._add_with_observed_day_off(
+ date(year, NOV, 1), "Mindenszentek")
+
+ # Christmas Eve is not endorsed officially
+ # but nowadays it is usually a day off work
+ if self.observed and 2010 <= year \
+ and date(year, DEC, 24).weekday() not in WEEKEND:
+ self[date(year, DEC, 24)] = "Szenteste"
# First christmas
self[date(year, DEC, 25)] = "Karácsony"
# Second christmas
- self[date(year, DEC, 26)] = "Karácsony másnapja"
+ if 1955 != year:
+ self._add_with_observed_day_off(
+ date(year, DEC, 26), "Karácsony másnapja", since=2013,
+ before=False, after=True)
+
+ # New Year's Eve
+ if self.observed and 2014 <= year \
+ and date(year, DEC, 31).weekday() == MON:
+ self[date(year, DEC, 31)] = "Szilveszter"
+
+ def _add_with_observed_day_off(self, day, desc, since=2010,
+ before=True, after=True):
+ # Swapped days off were in place earlier but
+ # I haven't found official record yet.
+ self[day] = desc
+ # TODO: should it be a separate flag?
+ if self.observed and since <= day.year:
+ if day.weekday() == TUE and before:
+ self[day - rd(days=1)] = desc + " előtti pihenőnap"
+ elif day.weekday() == THU and after:
+ self[day + rd(days=1)] = desc + " utáni pihenőnap"
class HU(Hungary):
@@ -4183,16 +4355,13 @@
# https://slusi.dacnet.nic.in/watershedatlas/list_of_state_abbreviation.htm
PROVINCES = ['AS', 'CG', 'SK', 'KA', 'GJ', 'BR', 'RJ', 'OD',
- 'TN', 'AP', 'WB', 'KL', 'HR', 'MH', 'MP', 'UP', 'UK']
+ 'TN', 'AP', 'WB', 'KL', 'HR', 'MH', 'MP', 'UP', 'UK', 'TS']
def __init__(self, **kwargs):
self.country = "IND"
HolidayBase.__init__(self, **kwargs)
def _populate(self, year):
- # New year
- self[date(year, JAN, 1)] = "New Year"
-
# Pongal/ Makar Sankranti
self[date(year, JAN, 14)] = "Makar Sankranti / Pongal"
@@ -4271,6 +4440,12 @@
if self.prov == 'CG':
self[date(year, NOV, 1)] = "Chhattisgarh Foundation Day"
+ # TS is Telangana State which was bifurcated in 2014 from AP
+ # (AndhraPradesh)
+ if self.prov == 'TS':
+ self[date(year, OCT, 6)] = "Bathukamma Festival"
+ self[date(year, APR, 6)] = "Eid al-Fitr"
+
class IND(India):
pass
@@ -4536,6 +4711,7 @@
# Public holidays
self[date(year, JAN, 1)] = "Nýársdagur"
self[easter(year) - rd(days=3)] = "Skírdagur"
+ self[easter(year) + rd(weekday=FR(-1))] = "Föstudagurinn langi"
self[easter(year)] = "Páskadagur"
self[easter(year) + rd(days=1)] = "Annar í páskum"
self[date(year, APR, 19) + rd(weekday=TH(+1))] = \
@@ -4954,3 +5130,149 @@
class PE(Peru):
pass
+
+
+class Nigeria(HolidayBase):
+ # https://en.wikipedia.org/wiki/Public_holidays_in_Nigeria
+ def __init__(self, **kwargs):
+ self.country = "NG"
+ HolidayBase.__init__(self, **kwargs)
+
+ def _populate(self, year):
+ # New Year's Day
+ self[date(year, JAN, 1)] = "New Year's day"
+
+ # Worker's day
+ self[date(year, MAY, 1)] = "Worker's day"
+
+ # Children's day
+ self[date(year, MAY, 27)] = "Children's day"
+
+ # Democracy day
+ self[date(year, JUN, 12)] = "Democracy day"
+
+ # Independence Day
+ self[date(year, OCT, 1)] = "Independence day"
+
+ # Christmas day
+ self[date(year, DEC, 25)] = "Christmas day"
+
+ # Boxing day
+ self[date(year, DEC, 26)] = "Boxing day"
+
+
+class NG(Nigeria):
+ pass
+
+
+class DominicanRepublic(HolidayBase):
+ # http://ojd.org.do/Normativas/LABORAL/Leyes/Ley%20No.%20%20139-97.pdf
+ #
https://es.wikipedia.org/wiki/Rep%C3%BAblica_Dominicana#D%C3%ADas_festivos_nacionales
+
+ def __init__(self, **kwargs):
+ self.country = 'DO'
+ HolidayBase.__init__(self, **kwargs)
+
+ @staticmethod
+ def __change_day_by_law(holiday, latest_days=(3, 4)):
+ # Law No. 139-97 - Holidays Dominican Republic - Jun 27, 1997
+ if holiday >= date(1997, 6, 27):
+ if holiday.weekday() in [1, 2]:
+ holiday -= rd(weekday=MO(-1))
+ elif holiday.weekday() in latest_days:
+ holiday += rd(weekday=MO(1))
+ return holiday
+
+ def _populate(self, year):
+ # New Year's Day
+ self[date(year, JAN, 1)] = "Año Nuevo [New Year's Day]"
+
+ # Epiphany
+ epiphany_day = self.__change_day_by_law(date(year, JAN, 6))
+ self[epiphany_day] = "Día de los Santos Reyes [Epiphany]"
+
+ # Lady of Altagracia
+ self[date(year, JAN, 21)] = "Día de la Altagracia [Lady of Altagracia]"
+
+ # Juan Pablo Duarte Day
+ duarte_day = self.__change_day_by_law(date(year, JAN, 26))
+ self[duarte_day] = "Día de Duarte [Juan Pablo Duarte Day]"
+
+ # Independence Day
+ self[date(year, FEB, 27)] = "Día de Independencia [Independence Day]"
+
+ # Good Friday
+ self[easter(year) + rd(weekday=FR(-1))] = "Viernes Santo [Good Friday]"
+
+ # Labor Day
+ labor_day = self.__change_day_by_law(date(year, MAY, 1), (3, 4, 6))
+ self[labor_day] = "Día del Trabajo [Labor Day]"
+
+ # Feast of Corpus Christi
+ self[date(year, JUN, 11)] = "Corpus Christi [Feast of Corpus Christi]"
+
+ # Restoration Day
+ # Judgment No. 14 of Feb 20, 2008 of the Supreme Court of Justice
+ restoration_day = date(year, AUG, 16) if ((year - 2000) % 4 == 0) \
+ and year < 2008 else self.__change_day_by_law(date(year, AUG, 16))
+ self[restoration_day] = "Día de la Restauración [Restoration Day]"
+
+ # Our Lady of Mercedes Day
+ self[date(year, SEP, 24)] = "Día de las Mercedes \
+ [Our Lady of Mercedes Day]"
+
+ # Constitution Day
+ constitution_day = self.__change_day_by_law(date(year, NOV, 6))
+ self[constitution_day] = "Día de la Constitución [Constitution Day]"
+
+ # Christmas Day
+ self[date(year, DEC, 25)] = "Día de Navidad [Christmas Day]"
+
+
+class DO(DominicanRepublic):
+ pass
+
+
+class Nicaragua(HolidayBase):
+ PROVINCES = ['MN']
+
+ def __init__(self, **kwargs):
+ self.country = 'NI'
+ self.prov = kwargs.pop('prov', kwargs.pop('state', 'MN'))
+ HolidayBase.__init__(self, **kwargs)
+
+ def _populate(self, year):
+ # New Years
+ self[date(year, JAN, 1)] = "Año Nuevo [New Year's Day]"
+ # 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]"
+ # Labor Day
+ self[date(year, MAY, 1)] = "Día del Trabajo [Labour Day]"
+ # Revolution Day
+ if 2020 >= year >= 1979:
+ self[date(year, JUL, 19)] = "Día de la Revolución [Revolution Day]"
+ # Battle of San Jacinto Day
+ self[date(year, SEP, 14)] =\
+ "Batalla de San Jacinto [Battle of San Jacinto]"
+ # Independence Day
+ self[date(year, SEP, 15)] =\
+ "Día de la Independencia [Independence Day]"
+ # Virgin's Day
+ self[date(year, DEC, 8)] = "Concepción de María [Virgin's Day]"
+ # Christmas
+ self[date(year, DEC, 25)] = "Navidad [Christmas]"
+
+ # Provinces festive day
+ if self.prov:
+ if self.prov == 'MN':
+ # Santo Domingo Day Down
+ self[date(year, AUG, 1)] = "Bajada de Santo Domingo"
+ # Santo Domingo Day Up
+ self[date(year, AUG, 10)] = "Subida de Santo Domingo"
+
+
+class NI(Nicaragua):
+ pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/holidays-0.9.11/setup.py new/holidays-0.9.12/setup.py
--- old/holidays-0.9.11/setup.py 2019-06-08 07:51:23.000000000 +0200
+++ new/holidays-0.9.12/setup.py 2019-07-28 19:19:00.000000000 +0200
@@ -52,6 +52,7 @@
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy',
'Topic :: Office/Business :: Scheduling',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/holidays-0.9.11/tests.py new/holidays-0.9.12/tests.py
--- old/holidays-0.9.11/tests.py 2019-07-28 10:54:35.000000000 +0200
+++ new/holidays-0.9.12/tests.py 2019-12-23 23:01:50.000000000 +0100
@@ -278,6 +278,10 @@
self.assertEqual(na.get_list(date(1969, 7, 1)), ["Dominion Day"])
self.assertEqual(na.get_list(date(1969, 1, 3)), [])
+ def test_list_supported_countries(self):
+ self.assertEqual(holidays.list_supported_countries()[0], "AR")
+ self.assertEqual(holidays.list_supported_countries()[-1], "ZA")
+
def test_radd(self):
self.assertRaises(TypeError, lambda: 1 + holidays.US())
@@ -2707,6 +2711,9 @@
for y, (m, d) in product(range(1991, 2050), fixed_days_whole_country):
self.assertIn(date(y, m, d), self.holidays)
+ def test_tag_der_deutschen_einheit_in_1990(self):
+ self.assertIn(date(1990, 10, 3), self.holidays)
+
def test_heilige_drei_koenige(self):
provinces_that_have = {'BW', 'BY', 'ST'}
provinces_that_dont = set(holidays.DE.PROVINCES) - provinces_that_have
@@ -2874,12 +2881,6 @@
for province, (y, m, d) in product(provinces_that_dont, known_good):
self.assertNotIn(date(y, m, d), self.prov_hols[province])
- def test_tag_der_deutschen_einheit(self):
- known_good = [(1990, 6, 17)]
-
- for province, (y, m, d) in product(holidays.DE.PROVINCES, known_good):
- self.assertIn(date(y, m, d), self.prov_hols[province])
-
def test_internationaler_frauentag(self):
prov_that_have = {'BE'}
prov_that_dont = set(holidays.DE.PROVINCES) - prov_that_have
@@ -2942,10 +2943,10 @@
"Christi Himmelfahrt",
"Pfingstmontag",
"Fronleichnam",
- "Maria Himmelfahrt",
+ "Mariä Himmelfahrt",
"Nationalfeiertag",
"Allerheiligen",
- "Maria Empfängnis",
+ "Mariä Empfängnis",
"Christtag",
"Stefanitag"]
for holiday in all_holidays:
@@ -3012,10 +3013,11 @@
def test_may_day(self):
for dt in [date(1978, 5, 1), date(1979, 5, 7), date(1980, 5, 5),
date(1999, 5, 3), date(2000, 5, 1), date(2010, 5, 3),
- date(2018, 5, 7), date(2019, 5, 6), date(2020, 5, 4)]:
+ date(2018, 5, 7), date(2019, 5, 6), date(2020, 5, 8)]:
self.assertIn(dt, self.holidays)
self.assertNotIn(dt + relativedelta(days=-1), self.holidays)
self.assertNotIn(dt + relativedelta(days=+1), self.holidays)
+ self.assertNotIn(date(2020, 5, 4), self.holidays)
def test_spring_bank_holiday(self):
for dt in [date(1978, 5, 29), date(1979, 5, 28), date(1980, 5, 26),
@@ -3108,6 +3110,25 @@
self.assertIn('2018-07-05', self.holidays)
+class TestIreland(unittest.TestCase):
+
+ def setUp(self):
+ self.holidays = holidays.Ireland()
+
+ def test_2020(self):
+ self.assertIn('2020-01-01', self.holidays) # New Year's Day
+ self.assertIn('2020-03-17', self.holidays) # St. Patrick's Day
+ self.assertIn('2020-04-13', self.holidays) # Easter Monday
+ self.assertIn('2020-05-04', self.holidays) # May Day in IE
+ self.assertNotIn('2020-05-08', self.holidays) # May Day in UK not IE
+ self.assertIn('2020-06-01', self.holidays) # June Bank Holiday
+ self.assertIn('2020-08-03', self.holidays) # Summer Bank Holiday
+ self.assertIn('2020-10-26', self.holidays) # October Bank Holiday
+ self.assertIn('2020-12-25', self.holidays) # Christmas Day
+ self.assertIn('2020-12-26', self.holidays) # Boxing Day
+ self.assertIn('2020-12-28', self.holidays) # Boxing Day (Observed)
+
+
class TestES(unittest.TestCase):
def setUp(self):
@@ -3566,6 +3587,7 @@
prov_kr = (holidays.IT(prov='KR', years=[2017]))
prov_lt = (holidays.IT(prov='LT', years=[2017]))
prov_mb = (holidays.IT(prov='MB', years=[2017]))
+ prov_me = (holidays.IT(prov='ME', years=[2017]))
prov_mi = (holidays.IT(prov='MI', years=[2017]))
prov_mn = (holidays.IT(prov='MN', years=[2017]))
prov_mo = (holidays.IT(prov='MO', years=[2017]))
@@ -3578,6 +3600,7 @@
prov_pr = (holidays.IT(prov='PR', years=[2017]))
prov_rm = (holidays.IT(prov='RM', years=[2017]))
prov_sp = (holidays.IT(prov='SP', years=[2017]))
+ prov_to = (holidays.IT(prov='TO', years=[2017]))
prov_ts = (holidays.IT(prov='TS', years=[2017]))
prov_vi = (holidays.IT(prov='VI', years=[2017]))
@@ -3595,7 +3618,7 @@
self.assertIn("2017-07-02", prov_en)
self.assertIn("2017-06-24", prov_fc)
self.assertIn("2017-02-04", prov_fc)
- self.assertIn("2017-04-22", prov_fe)
+ self.assertIn("2017-04-23", prov_fe)
self.assertIn("2017-06-24", prov_fi)
self.assertIn("2017-06-20", prov_fr)
self.assertIn("2017-06-24", prov_ge)
@@ -3605,6 +3628,7 @@
self.assertIn("2017-10-09", prov_kr)
self.assertIn("2017-04-25", prov_lt)
self.assertIn("2017-06-24", prov_mb)
+ self.assertIn("2017-06-03", prov_me)
self.assertIn("2017-12-07", prov_mi)
self.assertIn("2017-03-18", prov_mn)
self.assertIn("2017-01-31", prov_mo)
@@ -3616,6 +3640,7 @@
self.assertIn("2017-01-29", prov_pg)
self.assertIn("2017-01-13", prov_pr)
self.assertIn("2017-06-29", prov_rm)
+ self.assertIn("2017-06-24", prov_to)
self.assertIn("2017-11-03", prov_ts)
self.assertIn("2017-04-25", prov_vi)
@@ -3963,7 +3988,9 @@
self.assertNotIn('2015-03-02', self.holidays)
def test_onceoff(self):
- self.assertIn('2016-08-03', self.holidays) # local elections 2016
+ self.assertIn('1999-12-31', self.holidays) # Y2K
+ self.assertIn('2008-05-02', self.holidays) # Y2K
+ self.assertIn('2000-01-02', self.holidays) # Y2K
self.assertNotIn('2017-08-03', self.holidays)
def test_historic(self):
@@ -3980,7 +4007,14 @@
self.assertIn('1975-09-01', self.holidays) # Settler's Day
self.assertNotIn('1976-09-01', self.holidays)
- def test_election2019(self):
+ def test_elections(self):
+ self.assertTrue('1999-06-02' in self.holidays) # Election Day 1999
+ self.assertTrue('2004-04-14' in self.holidays) # Election Day 2004
+ self.assertTrue('2006-03-01' in self.holidays) # Local Election
+ self.assertTrue('2009-04-22' in self.holidays) # Election Day 2008
+ self.assertTrue('2011-05-18' in self.holidays) # Election Day 2011
+ self.assertTrue('2014-05-07' in self.holidays) # Election Day 2014
+ self.assertTrue('2016-08-03' in self.holidays) # Election Day 2016
self.assertTrue('2019-05-08' in self.holidays) # Election Day 2019
@@ -4146,20 +4180,92 @@
class TestHungary(unittest.TestCase):
def setUp(self):
- self.holidays = holidays.HU()
+ self.holidays = holidays.HU(observed=False)
+ self.next_year = date.today().year + 1
+
+ def test_national_day_was_not_celebrated_during_communism(self):
+ for year in range(1951, 1988):
+ self.assertNotIn(date(year, 3, 15), self.holidays)
+ self.assertIn(date(1989, 3, 15), self.holidays)
+
+ def test_holidays_during_communism(self):
+ for year in range(1950, 1989):
+ self.assertIn(date(year, 3, 21), self.holidays)
+ self.assertIn(date(year, 4, 4), self.holidays)
+ if year != 1956:
+ self.assertIn(date(year, 11, 7), self.holidays)
+ self.assertIn(date(1989, 3, 21), self.holidays)
+
+ def test_foundation_day_renamed_during_communism(self):
+ for year in range(1950, 1990):
+ self.assertEqual(
+ self.holidays[date(year, 8, 20)], "A kenyér ünnepe")
+
+ def test_christian_holidays_2nd_day_was_not_held_in_1955(self):
+ hu_1955 = holidays.Hungary(years=[1955])
+ self.assertNotIn(date(1955, 4, 11), hu_1955)
+ self.assertNotIn(date(1955, 12, 26), hu_1955)
+
+ def test_good_friday_since_2017(self):
+ self.assertNotIn(date(2016, 3, 25), self.holidays)
+ self.assertIn(date(2017, 4, 14), self.holidays)
+ self.assertIn(date(2018, 3, 30), self.holidays)
+
+ def test_whit_monday_since_1992(self):
+ self.assertNotIn(date(1991, 5, 20), self.holidays)
+ self.assertIn(date(1992, 6, 8), self.holidays)
+
+ def test_labour_day_since_1946(self):
+ self.assertNotIn(date(1945, 5, 1), self.holidays)
+ for year in range(1946, self.next_year):
+ self.assertIn(date(year, 5, 1), self.holidays)
+
+ def test_labour_day_was_doubled_in_early_50s(self):
+ for year in range(1950, 1954):
+ self.assertIn(date(year, 5, 2), self.holidays)
+
+ def test_october_national_day_since_1991(self):
+ for year in range(1991, self.next_year):
+ self.assertIn(date(year, 10, 23), self.holidays)
+
+ def test_all_saints_day_since_1999(self):
+ for year in range(1999, self.next_year):
+ self.assertIn(date(year, 11, 1), self.holidays)
+
+ def test_additional_day_off(self):
+ observed_days_off = holidays.HU(
+ observed=True, years=range(2010, self.next_year))
+ for day in [
+ date(2010, 12, 24),
+ date(2011, 3, 14), date(2011, 10, 31),
+ date(2012, 3, 16), date(2012, 4, 30), date(2012, 10, 22),
+ date(2012, 11, 2), date(2012, 12, 24),
+ date(2013, 8, 19), date(2013, 12, 24), date(2013, 12, 27),
+ date(2014, 5, 2), date(2014, 10, 24), date(2014, 12, 24),
+ date(2015, 1, 2), date(2015, 8, 21), date(2015, 12, 24),
+ date(2016, 3, 14), date(2016, 10, 31),
+ date(2018, 3, 16), date(2018, 4, 30), date(2018, 10, 22),
+ date(2018, 11, 2), date(2018, 12, 24), date(2018, 12, 31),
+ date(2019, 8, 19), date(2019, 12, 24), date(2019, 12, 27)]:
+ self.assertNotIn(day, self.holidays)
+ self.assertIn(day, observed_days_off)
+
+ def test_monday_new_years_eve_day_off(self):
+ observed_day_off = holidays.HU(observed=True)
+ self.assertIn(date(2018, 12, 31), observed_day_off)
def test_2018(self):
- self.assertIn(date(2018, 1, 1), self.holidays) # newyear
- self.assertIn(date(2018, 3, 15), self.holidays) # national holiday
- self.assertIn(date(2018, 3, 30), self.holidays) # good friday
- self.assertIn(date(2018, 4, 1), self.holidays) # easter 1.
- self.assertIn(date(2018, 4, 2), self.holidays) # easter 2.
- self.assertIn(date(2018, 5, 1), self.holidays) # Workers' Day
- self.assertIn(date(2018, 5, 20), self.holidays) # Pentecost
- self.assertIn(date(2018, 5, 21), self.holidays) # Pentecost monday
+ self.assertIn(date(2018, 1, 1), self.holidays) # newyear
+ self.assertIn(date(2018, 3, 15), self.holidays) # national holiday
+ self.assertIn(date(2018, 3, 30), self.holidays) # good friday
+ self.assertIn(date(2018, 4, 1), self.holidays) # easter 1.
+ self.assertIn(date(2018, 4, 2), self.holidays) # easter 2.
+ self.assertIn(date(2018, 5, 1), self.holidays) # Workers' Day
+ self.assertIn(date(2018, 5, 20), self.holidays) # Pentecost
+ self.assertIn(date(2018, 5, 21), self.holidays) # Pentecost monday
self.assertIn(date(2018, 8, 20), self.holidays) # State Foundation Day
self.assertIn(date(2018, 10, 23), self.holidays) # National Day
- self.assertIn(date(2018, 11, 1), self.holidays) # All Saints' Day
+ self.assertIn(date(2018, 11, 1), self.holidays) # All Saints' Day
self.assertIn(date(2018, 12, 25), self.holidays) # First christmas
self.assertIn(date(2018, 12, 26), self.holidays) # Second christmas
@@ -4192,20 +4298,20 @@
'Fest der Unabhängigkeit',
'Peter und Paul',
'Nationalfeiertag',
- 'Maria Himmelfahrt',
+ 'Mariä Himmelfahrt',
'Lundi du Jeûne',
'Bruder Klaus',
'Allerheiligen',
- 'Maria Empfängnis',
+ 'Mariä Empfängnis',
'Escalade de Genève',
'Weihnachten',
'Stephanstag',
'Wiederherstellung der Republik']
for holiday in all_ch:
- self.assertTrue(holiday in in_2018, "missing: {}".format(holiday))
+ self.assertTrue(holiday in all_ch, "missing: {}".format(holiday))
for holiday in in_2018:
- self.assertTrue(holiday in all_ch, "extra: {}".format(holiday))
+ self.assertTrue(holiday in in_2018, "extra: {}".format(holiday))
def test_fixed_holidays(self):
fixed_days_whole_country = (
@@ -4595,13 +4701,13 @@
self.holidays = holidays.IND()
def test_2018(self):
- self.assertIn(date(2018, 1, 1), self.holidays)
+ self.assertIn(date(2018, 1, 14), self.holidays)
+ self.assertIn(date(2018, 1, 26), self.holidays)
self.assertIn(date(2018, 10, 2), self.holidays)
+ self.assertIn(date(2018, 5, 1), self.holidays)
self.assertIn(date(2018, 8, 15), self.holidays)
- self.assertIn(date(2018, 1, 26), self.holidays)
+ self.assertIn(date(2018, 10, 2), self.holidays)
self.assertIn(date(2018, 12, 25), self.holidays)
- self.assertIn(date(2018, 5, 1), self.holidays)
- self.assertIn(date(2018, 1, 14), self.holidays)
gj_holidays = holidays.IND(prov="GJ")
as_holidays = holidays.IND(prov="AS")
@@ -4620,6 +4726,7 @@
mp_holidays = holidays.IND(prov="MP")
up_holidays = holidays.IND(prov="UP")
uk_holidays = holidays.IND(prov="UK")
+ ts_holidays = holidays.IND(prov="TS")
for dt in ([date(2018, 1, 14), date(2018, 5, 1), date(2018, 10, 31)]):
self.assertIn(dt, gj_holidays)
@@ -4632,6 +4739,7 @@
self.assertIn(date(2018, 3, 30), rj_holidays)
self.assertIn(date(2018, 6, 15), rj_holidays)
self.assertIn(date(2018, 4, 1), od_holidays)
+ self.assertIn(date(2018, 4, 6), ts_holidays)
self.assertIn(date(2018, 4, 15), od_holidays)
self.assertIn(date(2018, 4, 14), od_holidays)
self.assertIn(date(2018, 4, 14), br_holidays)
@@ -4645,6 +4753,7 @@
self.assertIn(date(2018, 4, 15), as_holidays)
self.assertIn(date(2018, 5, 1), mh_holidays)
self.assertIn(date(2018, 5, 16), sk_holidays)
+ self.assertIn(date(2018, 10, 6), ts_holidays)
self.assertIn(date(2018, 11, 1), ka_holidays)
self.assertIn(date(2018, 11, 1), ap_holidays)
self.assertIn(date(2018, 11, 1), hr_holidays)
@@ -5190,21 +5299,26 @@
self.assertIn(test_date, self.holidays)
def test_maundy_thursday(self):
- test_date = date(self.cur_date.year, 4, 18)
+ test_date = date(2019, 4, 18)
self.assertEqual(self.holidays.get(test_date), "Skírdagur")
self.assertIn(test_date, self.holidays)
def test_first_day_of_summer(self):
- test_date = date(self.cur_date.year, 4, 25)
+ test_date = date(2019, 4, 25)
self.assertEqual(self.holidays.get(test_date), "Sumardagurinn fyrsti")
self.assertIn(test_date, self.holidays)
def test_commerce_day(self):
- test_date = date(self.cur_date.year, 8, 5)
+ test_date = date(2019, 8, 5)
self.assertEqual(self.holidays.get(test_date),
"Frídagur verslunarmanna")
self.assertIn(test_date, self.holidays)
+ def test_holy_friday(self):
+ test_date = date(2019, 4, 19)
+ self.assertEqual(self.holidays.get(test_date), "Föstudagurinn langi")
+ self.assertIn(test_date, self.holidays)
+
class TestKenya(unittest.TestCase):
def setUp(self):
@@ -5440,5 +5554,112 @@
self.assertIn(date(2019, 12, 25), self.holidays)
+class TestNigeria(unittest.TestCase):
+ def setUp(self):
+ self.holidays = holidays.Nigeria()
+
+ def test_fixed_holidays(self):
+ self.assertIn(date(2019, 1, 1), self.holidays)
+ self.assertIn(date(2019, 5, 1), self.holidays)
+ self.assertIn(date(2019, 5, 27), self.holidays)
+ self.assertIn(date(2019, 6, 12), self.holidays)
+ self.assertIn(date(2019, 10, 1), self.holidays)
+ self.assertIn(date(2019, 12, 25), self.holidays)
+ self.assertIn(date(2019, 12, 26), self.holidays)
+
+
+class TestChile(unittest.TestCase):
+ def setUp(self):
+ self.holidays = holidays.Chile()
+
+ def test_2019(self):
+ # No laborables (sector público) not included
+ self.assertIn(date(2019, 1, 1), self.holidays)
+ # self.assertIn(date(2019, 4, 18), self.holidays)
+ self.assertIn(date(2019, 4, 19), self.holidays)
+ self.assertIn(date(2019, 5, 1), self.holidays)
+ self.assertIn(date(2019, 5, 21), self.holidays)
+ self.assertIn(date(2019, 6, 29), self.holidays)
+ self.assertIn(date(2019, 7, 16), self.holidays)
+ self.assertIn(date(2019, 8, 15), self.holidays)
+ self.assertIn(date(2019, 9, 18), self.holidays)
+ self.assertIn(date(2019, 9, 19), self.holidays)
+ self.assertIn(date(2019, 9, 20), self.holidays)
+ self.assertIn(date(2009, 10, 12), self.holidays)
+ self.assertIn(date(2019, 10, 12), self.holidays)
+ self.assertIn(date(2019, 11, 1), self.holidays)
+ self.assertIn(date(2019, 12, 8), self.holidays)
+ self.assertIn(date(2019, 12, 25), self.holidays)
+
+
+class TestDominicanRepublic(unittest.TestCase):
+ def setUp(self):
+ self.do_holidays = holidays.DO()
+
+ def test_do_holidays_2020(self):
+ year = 2020
+
+ # New Year's Day
+ self.assertIn(date(year, 1, 1), self.do_holidays)
+ # Epiphany
+ self.assertIn(date(year, 1, 6), self.do_holidays)
+ # Lady of Altagracia
+ self.assertIn(date(year, 1, 21), self.do_holidays)
+ # Juan Pablo Duarte Day
+ self.assertIn(date(year, 1, 26), self.do_holidays)
+ # Independence Day
+ self.assertIn(date(year, 2, 27), self.do_holidays)
+ # Good Friday
+ self.assertIn(date(year, 4, 10), self.do_holidays)
+ # Labor Day
+ self.assertIn(date(year, 5, 4), self.do_holidays)
+ # Feast of Corpus Christi
+ self.assertIn(date(year, 6, 11), self.do_holidays)
+ # Restoration Day
+ self.assertIn(date(year, 8, 16), self.do_holidays)
+ # Our Lady of Mercedes Day
+ self.assertIn(date(year, 9, 24), self.do_holidays)
+ # Constitution Day
+ self.assertIn(date(year, 11, 9), self.do_holidays)
+ # Christmas Day
+ self.assertIn(date(year, 12, 25), self.do_holidays)
+
+ # Change day by law test
+ # New Year's Day
+ self.assertIn(date(2019, 1, 1), self.do_holidays)
+
+
+class TestNicaragua(unittest.TestCase):
+ def setUp(self):
+ self.ni_holidays = holidays.NI()
+
+ def test_ni_holidays_2020(self):
+ year = 2020
+ mn_holidays = holidays.NI(prov="MN")
+
+ # New Year's Day
+ self.assertIn(date(year, 1, 1), self.ni_holidays)
+ # Maundy Thursday
+ self.assertIn(date(year, 4, 9), self.ni_holidays)
+ # Good Friday
+ self.assertIn(date(year, 4, 10), self.ni_holidays)
+ # Labor Day
+ self.assertIn(date(year, 5, 1), self.ni_holidays)
+ # Revolution Day
+ self.assertIn(date(year, 7, 19), self.ni_holidays)
+ # Battle of San Jacinto Day
+ self.assertIn(date(year, 9, 14), self.ni_holidays)
+ # Independence Day
+ self.assertIn(date(year, 9, 15), self.ni_holidays)
+ # Virgin's Day
+ self.assertIn(date(year, 12, 8), self.ni_holidays)
+ # Christmas Day
+ self.assertIn(date(year, 12, 25), self.ni_holidays)
+ # Santo Domingo Day Down
+ self.assertIn(date(year, 8, 1), mn_holidays)
+ # Santo Domingo Day Up
+ self.assertIn(date(year, 8, 10), mn_holidays)
+
+
if __name__ == "__main__":
unittest.main()