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()


Reply via email to