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 <alarr...@suse.com> + +- 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()