Repository: vacanza/holidays (python)

Issue:
Add Nepal holidays
Links:
  - https://en.wikipedia.org/wiki/Public_holidays_in_Nepal
  - https://www.timeanddate.com/holidays/nepal/

Pull request description:
Add Nepal holidays
<!--
  Thanks for contributing to holidays!
-->

## Proposed change

<!--
  Describe the big picture of your changes.
  Don't forget to link your PR to an existing issue if any.
-->

Added Nepal holidays.  

Resolves #1234  

## Type of change

<!--
  Type of change you want to introduce. Please, check one (1) box only!
  If your PR requires multiple boxes to be checked, most likely it needs to
  be split into multiple PRs.
-->

- [x] New country/market holidays support (thank you!)
- [ ] Supported country/market holidays update (calendar discrepancy fix, localization)
- [ ] Existing code/documentation/test/process quality improvement (best practice, cleanup, refactoring, optimization)
- [ ] Dependency update (version deprecation/pin/upgrade)
- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] Breaking change (a code change causing existing functionality to break)
- [ ] New feature (new `holidays` functionality in general)

## Checklist

<!--
  Put an `x` in the boxes that apply. You can change them after PR is created.
-->

- [x] I've followed the [contributing guidelines][contributing-guidelines]
- [x] I've successfully run `make check`, all checks and tests are green

<!--
  Thanks again for your contribution!
-->

[contributing-guidelines]: https://github.com/vacanza/holidays/blob/dev/CONTRIBUTING.md
[docs]: https://github.com/vacanza/holidays/tree/dev/docs/source


Patch:
diff --git a/README.md b/README.md
index c7a50c18..73871407 100644
--- a/README.md
+++ b/README.md
@@ -105,7 +105,7 @@ and detailed information.
 
 ## Available Countries
 
-We currently support 173 country codes. The standard way to refer to a country is by using its [ISO
+We currently support 174 country codes. The standard way to refer to a country is by using its [ISO
 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes), the same used
 for domain names, and for a subdivision its [ISO 3166-2
 code](https://en.wikipedia.org/wiki/ISO_3166-2). Some countries have common or foreign names or
@@ -918,6 +918,13 @@ any) in brackets, available languages and additional holiday categories. All cou
 <td></td>
 </tr>
 <tr>
+<td>Nepal</td>
+<td>NP</td>
+<td></td>
+<td></td>
+<td>WORKDAY</td>
+</tr>
+<tr>
 <td>Netherlands</td>
 <td>NL</td>
 <td></td>
diff --git a/holidays/calendars/hindu.py b/holidays/calendars/hindu.py
index 86a4e9df..bed7910c 100644
--- a/holidays/calendars/hindu.py
+++ b/holidays/calendars/hindu.py
@@ -28,8 +28,10 @@ GOVARDHAN_PUJA = "GOVARDHAN_PUJA"
 GUDI_PADWA = "GUDI_PADWA"
 GURU_GOBIND_SINGH_JAYANTI = "GURU_GOBIND_SINGH_JAYANTI"
 GURU_NANAK_JAYANTI = "GURU_NANAK_JAYANTI"
+GYALPO_LOSAR = "GYALPO_LOSAR"
 HOLI = "HOLI"
 JANMASHTAMI = "JANMASHTAMI"
+MAHA_ASHTAMI = "MAHA_ASHTAMI"
 MAHA_NAVAMI = "MAHA_NAVAMI"
 MAHA_SHIVARATRI = "MAHA_SHIVARATRI"
 MAHAVIR_JAYANTI = "MAHAVIR_JAYANTI"
@@ -39,6 +41,8 @@ PONGAL = "PONGAL"
 RAKSHA_BANDHAN = "RAKSHA_BANDHAN"
 RAM_NAVAMI = "RAM_NAVAMI"
 SHARAD_NAVRATRI = "SHARAD_NAVRATRI"
+SONAM_LOSAR = "SONAM_LOSAR"
+TAMU_LOSAR = "TAMU_LOSAR"
 THAIPUSAM = "THAIPUSAM"
 VAISAKHI = "VAISAKHI"
 
@@ -350,7 +354,7 @@ class _HinduLunisolar:
         2021: (NOV, 4),
         2022: (OCT, 24),
         2023: (NOV, 12),
-        2024: (NOV, 1),
+        2024: (OCT, 31),
         2025: (OCT, 20),
         2026: (NOV, 8),
         2027: (OCT, 29),
@@ -593,6 +597,37 @@ class _HinduLunisolar:
         2035: (NOV, 15),
     }
 
+    # https://www.timeanddate.com/holidays/nepal/gyalpo-losar
+    # https://www.ashesh.com.np/nepali-calendar/
+    GYALPO_LOSAR_DATES = {
+        2010: (FEB, 13),
+        2011: (MAR, 5),
+        2012: (FEB, 22),
+        2013: (MAR, 12),
+        2014: (MAR, 2),
+        2015: (FEB, 19),
+        2016: (MAR, 9),
+        2017: (FEB, 27),
+        2018: (FEB, 16),
+        2019: (MAR, 7),
+        2020: (FEB, 24),
+        2021: (MAR, 14),
+        2022: (MAR, 3),
+        2023: (FEB, 21),
+        2024: (MAR, 11),
+        2025: (FEB, 28),
+        2026: (FEB, 18),
+        2027: (FEB, 7),
+        2028: (FEB, 26),
+        2029: (FEB, 14),
+        2030: (MAR, 5),
+        2031: (FEB, 22),
+        2032: (FEB, 12),
+        2033: (MAR, 2),
+        2034: (FEB, 19),
+        2035: (FEB, 9),
+    }
+
     # https://www.timeanddate.com/holidays/india/holi
     HOLI_DATES = {
         2001: (MAR, 10),
@@ -671,6 +706,45 @@ class _HinduLunisolar:
         2035: (AUG, 26),
     }
 
+    # https://www.timeanddate.com/holidays/india/maha-ashtami
+    MAHA_ASHTAMI_DATES = {
+        2001: (OCT, 24),
+        2002: (OCT, 13),
+        2003: (OCT, 3),
+        2004: (OCT, 21),
+        2005: (OCT, 11),
+        2006: (SEP, 30),
+        2007: (OCT, 19),
+        2008: (OCT, 7),
+        2009: (SEP, 26),
+        2010: (OCT, 15),
+        2011: (OCT, 4),
+        2012: (OCT, 22),
+        2013: (OCT, 12),
+        2014: (OCT, 2),
+        2015: (OCT, 21),
+        2016: (OCT, 9),
+        2017: (SEP, 28),
+        2018: (OCT, 17),
+        2019: (OCT, 6),
+        2020: (OCT, 23),
+        2021: (OCT, 13),
+        2022: (OCT, 3),
+        2023: (OCT, 22),
+        2024: (OCT, 11),
+        2025: (SEP, 30),
+        2026: (OCT, 19),
+        2027: (OCT, 7),
+        2028: (SEP, 26),
+        2029: (OCT, 14),
+        2030: (OCT, 4),
+        2031: (OCT, 23),
+        2032: (OCT, 12),
+        2033: (OCT, 2),
+        2034: (OCT, 20),
+        2035: (OCT, 9),
+    }
+
     # https://www.timeanddate.com/holidays/india/maha-navami
     MAHA_NAVAMI_DATES = {
         2001: (OCT, 25),
@@ -690,8 +764,8 @@ class _HinduLunisolar:
         2015: (OCT, 21),
         2016: (OCT, 10),
         2017: (SEP, 29),
-        2018: (OCT, 18),
-        2019: (OCT, 7),
+        2018: (OCT, 17),
+        2019: (OCT, 6),
         2020: (OCT, 24),
         2021: (OCT, 14),
         2022: (OCT, 4),
@@ -1021,6 +1095,64 @@ class _HinduLunisolar:
         2035: (OCT, 2),
     }
 
+    # https://www.timeanddate.com/holidays/nepal/sonam-losar
+    # https://www.ashesh.com.np/nepali-calendar/
+    SONAM_LOSAR_DATES = {
+        2010: (JAN, 16),
+        2011: (FEB, 4),
+        2012: (JAN, 24),
+        2013: (FEB, 11),
+        2014: (JAN, 31),
+        2015: (JAN, 21),
+        2016: (FEB, 9),
+        2017: (JAN, 28),
+        2018: (JAN, 18),
+        2019: (FEB, 5),
+        2020: (JAN, 25),
+        2021: (FEB, 12),
+        2022: (FEB, 2),
+        2023: (JAN, 22),
+        2024: (FEB, 10),
+        2025: (JAN, 30),
+        2026: (JAN, 19),
+        2027: (FEB, 7),
+        2028: (FEB, 26),
+        2029: (JAN, 15),
+        2030: (FEB, 3),
+        2031: (JAN, 24),
+        2032: (FEB, 12),
+        2033: (JAN, 31),
+        2034: (JAN, 21),
+        2035: (FEB, 9),
+    }
+
+    # https://www.hamropatro.com/posts/articles-Bishesh-Dinharu/articles-Bishesh-Dinharu-english-tamu-lhosar
+    TAMU_LOSAR_DATES = {
+        2010: (DEC, 30),
+        2011: (DEC, 30),
+        2012: (DEC, 30),
+        2013: (DEC, 30),
+        2014: (DEC, 30),
+        2015: (DEC, 30),
+        2016: (DEC, 30),
+        2017: (DEC, 30),
+        2018: (DEC, 30),
+        2019: (DEC, 31),
+        2020: (DEC, 30),
+        2021: (DEC, 30),
+        2022: (DEC, 30),
+        2023: (DEC, 31),
+        2024: (DEC, 30),
+        2025: (DEC, 30),
+        2026: (DEC, 30),
+        2027: (DEC, 30),
+        2028: (DEC, 30),
+        2029: (DEC, 30),
+        2030: (DEC, 31),
+        2031: (DEC, 31),
+        2032: (DEC, 30),
+    }
+
     THAIPUSAM_DATES = {
         1901: (MAR, 5),
         1902: (FEB, 23),
@@ -1306,6 +1438,9 @@ class _HinduLunisolar:
     def guru_nanak_jayanti_date(self, year: int) -> tuple[Optional[date], bool]:
         return self._get_holiday(GURU_NANAK_JAYANTI, year)
 
+    def gyalpo_losar_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(GYALPO_LOSAR, year)
+
     def holi_date(self, year: int) -> tuple[Optional[date], bool]:
         return self._get_holiday(HOLI, year)
 
@@ -1315,6 +1450,9 @@ class _HinduLunisolar:
     def janmashtami_date(self, year: int) -> tuple[Optional[date], bool]:
         return self._get_holiday(JANMASHTAMI, year)
 
+    def maha_ashtami_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(MAHA_ASHTAMI, year)
+
     def maha_navami_date(self, year: int) -> tuple[Optional[date], bool]:
         return self._get_holiday(MAHA_NAVAMI, year)
 
@@ -1339,6 +1477,12 @@ class _HinduLunisolar:
     def sharad_navratri_date(self, year: int) -> tuple[Optional[date], bool]:
         return self._get_holiday(SHARAD_NAVRATRI, year)
 
+    def sonam_losar_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(SONAM_LOSAR, year)
+
+    def tamu_losar_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(TAMU_LOSAR, year)
+
     def thaipusam_date(self, year: int) -> tuple[Optional[date], bool]:
         return self._get_holiday(THAIPUSAM, year)
 
diff --git a/holidays/countries/__init__.py b/holidays/countries/__init__.py
index 8b92a991..9951e8a0 100644
--- a/holidays/countries/__init__.py
+++ b/holidays/countries/__init__.py
@@ -122,6 +122,7 @@ from .montenegro import Montenegro, ME, MNE
 from .morocco import Morocco, MA, MOR
 from .mozambique import Mozambique, MZ, MOZ
 from .namibia import Namibia, NA, NAM
+from .nepal import Nepal, NP, NPL
 from .netherlands import Netherlands, NL, NLD
 from .new_zealand import NewZealand, NZ, NZL
 from .nicaragua import Nicaragua, NI, NIC
diff --git a/holidays/countries/nepal.py b/holidays/countries/nepal.py
new file mode 100644
index 00000000..69cdd377
--- /dev/null
+++ b/holidays/countries/nepal.py
@@ -0,0 +1,441 @@
+#  holidays
+#  --------
+#  A fast, efficient Python library for generating country, province and state
+#  specific sets of holidays on the fly. It aims to make determining whether a
+#  specific date is a holiday as fast and flexible as possible.
+#
+#  Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+#           dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
+#           ryanss <ryanssdev@icloud.com> (c) 2014-2017
+#  Website: https://github.com/vacanza/holidays
+#  License: MIT (see LICENSE file)
+
+from holidays.calendars import _CustomIslamicHolidays, _CustomHinduHolidays
+from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV
+from holidays.constants import PUBLIC, WORKDAY
+from holidays.groups import (
+    ChristianHolidays,
+    HinduCalendarHolidays,
+    InternationalHolidays,
+    IslamicHolidays,
+    StaticHolidays,
+)
+from holidays.holiday_base import HolidayBase
+
+
+class Nepal(
+    HolidayBase,
+    ChristianHolidays,
+    HinduCalendarHolidays,
+    InternationalHolidays,
+    IslamicHolidays,
+    StaticHolidays,
+):
+    """Nepal holidays.
+
+    References:
+        * <https://en.wikipedia.org/wiki/Public_holidays_in_Nepal>
+        * <https://narayanilawfirm.org.np/list-of-public-holidays-in-nepal-2079/>
+        * <https://www.timeanddate.com/holidays/nepal/>
+        * <https://kathmandupost.com/national/2018/03/29/government-trims-public-holidays-by-22-days>
+        * <https://kathmandupost.com/national/2021/02/13/two-years-after-shortening-public-holiday-list-government-starts-adding-to-it-again>
+        * <https://english.hamropatro.com/nepali-public-holidays>
+        * <https://english.hamropatro.com/calendar>
+        * <https://www.ashesh.com.np/nepali-calendar/>
+        * <https://www.bolpatra.gov.np/egp/openDateConverter>
+        * <https://www.moha.gov.np/en/page/holidays>
+    """
+
+    country = "NP"
+    # %s (estimated).
+    estimated_label = "%s (estimated)"
+    start_year = 2010
+    supported_categories = (PUBLIC, WORKDAY)
+
+    def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
+        """
+        Args:
+            islamic_show_estimated:
+                Whether to add "estimated" label to Islamic holidays name
+                if holiday date is estimated.
+        """
+        ChristianHolidays.__init__(self)
+        HinduCalendarHolidays.__init__(self, cls=NepalHinduHolidays)
+        InternationalHolidays.__init__(self)
+        IslamicHolidays.__init__(
+            self, cls=NepalIslamicHolidays, show_estimated=islamic_show_estimated
+        )
+        StaticHolidays.__init__(self, cls=NepalStaticHolidays)
+        super().__init__(*args, **kwargs)
+
+    def _add_non_continuous_holidays(self, is_workday: bool = False):
+        """Holidays removed by MoHA between 2019-2020."""
+        if (2019 <= self._year <= 2020) == is_workday:
+            martyrs_day_dates = {
+                2010: (JAN, 30),
+                2011: (JAN, 30),
+                2012: (JAN, 30),
+                2013: (JAN, 29),
+                2014: (JAN, 30),
+                2015: (JAN, 30),
+                2016: (JAN, 30),
+                2017: (JAN, 29),
+                2018: (JAN, 30),
+                2019: (JAN, 30),
+                2020: (JAN, 30),
+                2021: (JAN, 29),
+                2022: (JAN, 30),
+                2023: (JAN, 30),
+                2024: (JAN, 30),
+                2025: (JAN, 29),
+                2026: (JAN, 29),
+                2027: (JAN, 29),
+                2028: (JAN, 29),
+                2029: (JAN, 29),
+                2030: (JAN, 29),
+                2031: (JAN, 30),
+                2032: (JAN, 30),
+                2033: (JAN, 29),
+            }
+            if self._year in martyrs_day_dates:
+                # Martyr's Day.
+                self._add_holiday("Martyr's Day", martyrs_day_dates[self._year])
+
+            democracy_day_dates = {
+                2010: (FEB, 19),
+                2011: (FEB, 19),
+                2012: (FEB, 19),
+                2013: (FEB, 18),
+                2014: (FEB, 19),
+                2015: (FEB, 19),
+                2016: (FEB, 19),
+                2017: (FEB, 18),
+                2018: (FEB, 19),
+                2019: (FEB, 19),
+                2020: (FEB, 19),
+                2021: (FEB, 19),
+                2022: (FEB, 19),
+                2023: (FEB, 19),
+                2024: (FEB, 19),
+                2025: (FEB, 19),
+                2026: (FEB, 19),
+                2027: (FEB, 19),
+                2028: (FEB, 19),
+                2029: (FEB, 19),
+                2030: (FEB, 19),
+                2031: (FEB, 20),
+                2032: (FEB, 20),
+                2033: (FEB, 19),
+            }
+            if self._year in democracy_day_dates:
+                # National Democracy Day.
+                self._add_holiday("National Democracy Day", democracy_day_dates[self._year])
+
+            republic_day_dates = {
+                2010: (MAY, 29),
+                2011: (MAY, 29),
+                2012: (MAY, 28),
+                2013: (MAY, 29),
+                2014: (MAY, 29),
+                2015: (MAY, 29),
+                2016: (MAY, 28),
+                2017: (MAY, 29),
+                2018: (MAY, 29),
+                2019: (MAY, 29),
+                2020: (MAY, 28),
+                2021: (MAY, 29),
+                2022: (MAY, 29),
+                2023: (MAY, 29),
+                2024: (MAY, 28),
+                2025: (MAY, 28),
+                2026: (MAY, 29),
+                2027: (MAY, 29),
+                2028: (MAY, 28),
+                2029: (MAY, 28),
+                2030: (MAY, 29),
+                2031: (MAY, 29),
+                2032: (MAY, 28),
+            }
+            if self._year in republic_day_dates:
+                # Established in 2009.
+                # Republic Day.
+                self._add_holiday("Republic Day", republic_day_dates[self._year])
+
+            # Hindu Holidays.
+
+            # Ram Navami.
+            self._add_ram_navami("Ram Navami")
+
+            # Janai Poornima.
+            self._add_raksha_bandhan("Janai Poornima")
+
+            # Shree Krishna Janmashtami.
+            self._add_janmashtami("Shree Krishna Janmashtami")
+
+            # Ghatasthapana.
+            self._add_sharad_navratri("Ghatasthapana")
+
+            # Duwadashi (Dashain).
+            self._add_papankusha_duwadashi("Duwadashi (Dashain)")
+
+    def _populate_public_holidays(self):
+        if self._year >= 2023:
+            # Prithvi Jayanti.
+            self._add_holiday_jan_11("Prithvi Jayanti")
+
+        # International Women's Day.
+        self._add_womens_day("International Women's Day")
+
+        # Nepal New Year.
+        self._add_vaisakhi("Nepali New Year")
+
+        # International Labour Day.
+        self._add_labor_day("International Labour Day")
+
+        constitution_day_dates = {
+            2016: (SEP, 19),
+            2017: (SEP, 19),
+            2018: (SEP, 19),
+            2019: (SEP, 20),
+            2020: (SEP, 19),
+            2021: (SEP, 19),
+            2022: (SEP, 19),
+            2023: (SEP, 20),
+            2024: (SEP, 19),
+            2025: (SEP, 19),
+            2026: (SEP, 19),
+            2027: (SEP, 19),
+            2028: (SEP, 18),
+            2029: (SEP, 19),
+            2030: (SEP, 19),
+            2031: (SEP, 19),
+            2032: (SEP, 19),
+        }
+        if self._year in constitution_day_dates:
+            # Constitution Day.
+            self._add_holiday("Constitution Day", constitution_day_dates[self._year])
+
+        # Christmas Day.
+        self._add_christmas_day("Christmas Day")
+
+        # Hindu holidays.
+
+        # Maghe Sankranti.
+        self._add_makar_sankranti("Maghe Sankranti")
+
+        # Sonam Lhochhar.
+        self._add_sonam_losar("Sonam Lhochhar")
+
+        # Maha Shivaratri.
+        self._add_maha_shivaratri("Maha Shivaratri")
+
+        # Gyalpo Lhosar.
+        self._add_gyalpo_losar("Gyalpo Lhosar")
+
+        # Fagu Poornima.
+        self._add_nepal_holi("Fagu Poornima")
+
+        # Fagu Poornima (Terai).
+        self._add_holi("Fagu Poornima (Terai)")
+
+        # Buddha Jayanti.
+        self._add_buddha_purnima("Buddha Jayanti")
+
+        # Fulpati.
+        self._add_maha_saptami("Fulpati")
+
+        # Maha Ashtami.
+        self._add_maha_ashtami("Maha Ashtami")
+
+        # Maha Navami.
+        self._add_maha_navami("Maha Navami")
+
+        # Bijaya Dashami.
+        self._add_dussehra("Bijaya Dashami")
+
+        # Ekadashi (Dashain).
+        self._add_papankusha_ekadashi("Ekadashi (Dashain)")
+
+        # Laxmi Pooja.
+        self._add_diwali_india("Laxmi Pooja")
+
+        # Gai Tihar.
+        self._add_gau_krida("Gai Tihar")
+
+        # Gobardhan Pooja.
+        self._add_govardhan_puja("Gobardhan Pooja")
+
+        # Mha Pooja.
+        self._add_govardhan_puja("Mha Pooja")
+
+        # Bhai Tika.
+        self._add_bhai_dooj("Bhai Tika")
+
+        # Chhath Parva.
+        self._add_chhath_puja("Chhath Parva")
+
+        # Tamu Lhochhar.
+        self._add_tamu_losar("Tamu Lhochhar")
+
+        # Islamic holidays.
+
+        # Eid al-Fitr.
+        self._add_eid_al_fitr_day("Id-ul-Fitr")
+
+        # Eid al-Adha.
+        self._add_eid_al_adha_day("Bakrid")
+
+        # Removed by MoHA between 2019-2020.
+        self._add_non_continuous_holidays()
+
+    def _populate_workday_holidays(self):
+        self._add_non_continuous_holidays(is_workday=True)
+
+
+class NepalIslamicHolidays(_CustomIslamicHolidays):
+    # Bakrid / Eid-al-Adha.
+    EID_AL_ADHA_DATES = {
+        2010: (NOV, 17),
+        2011: (NOV, 7),
+        2012: (OCT, 27),
+        2013: (OCT, 16),
+        2014: (OCT, 6),
+        2015: (SEP, 25),
+        2016: (SEP, 13),
+        2017: (SEP, 2),
+        2018: (AUG, 22),
+        2019: (AUG, 12),
+        2020: (AUG, 1),
+        2021: (JUL, 21),
+        2022: (JUL, 10),
+        2023: (JUN, 29),
+        2024: (JUN, 17),
+        2025: (JUN, 7),
+    }
+
+    # Id-ul-Fitr / Eid-al-Fitr.
+    EID_AL_FITR_DATES = {
+        2010: (SEP, 10),
+        2011: (AUG, 31),
+        2012: (AUG, 20),
+        2013: (AUG, 8),
+        2014: (JUL, 29),
+        2015: (JUL, 18),
+        2016: (JUL, 7),
+        2017: (JUN, 26),
+        2018: (JUN, 16),
+        2019: (JUN, 5),
+        2020: (MAY, 25),
+        2021: (MAY, 14),
+        2022: (MAY, 3),
+        2023: (APR, 22),
+        2024: (APR, 11),
+        2025: (MAR, 31),
+    }
+
+
+class NepalHinduHolidays(_CustomHinduHolidays):
+    # Maghe Sankranti.
+    MAKAR_SANKRANTI_DATES = {
+        2022: (JAN, 15),
+        2023: (JAN, 15),
+        2024: (JAN, 15),
+        2026: (JAN, 15),
+    }
+
+    # Fagu Poornima (Terai).
+    HOLI_DATES = {
+        2023: (MAR, 7),
+        2026: (MAR, 3),
+    }
+
+    # Ram Navami.
+    RAM_NAVAMI_DATES = {
+        2026: (MAR, 27),
+    }
+
+    # Nepal New Year.
+    VAISAKHI_DATES = {
+        2025: (APR, 14),
+    }
+
+    # Janai Punima.
+    RAKSHA_BANDHAN_DATES = {
+        2022: (AUG, 12),
+        2023: (AUG, 31),
+    }
+
+    # Shree Krishna Janmashtami.
+    JANMASHTAMI_DATES = {
+        2023: (SEP, 6),
+    }
+
+    # Maha Ashtami.
+    MAHA_ASHTAMI_DATES = {
+        2020: (OCT, 24),
+    }
+
+    # Maha Navami.
+    MAHA_NAVAMI_DATES = {
+        2020: (OCT, 25),
+    }
+
+    # Bijaya Dashami.
+    DUSSEHRA_DATES = {
+        2020: (OCT, 26),
+    }
+
+    # Gobardhan Pooja.
+    GOVARDHAN_PUJA_DATES = {
+        2020: (NOV, 16),
+        2022: (OCT, 26),
+        2023: (NOV, 14),
+    }
+
+    # Chhath Parva.
+    CHHATH_PUJA_DATES = {
+        2025: (OCT, 27),
+    }
+
+
+class NP(Nepal):
+    pass
+
+
+class NPL(Nepal):
+    pass
+
+
+class NepalStaticHolidays:
+    """Nepal special holidays.
+
+    References:
+        * [Death of Krishna Prasad Bhattarai](https://myrepublica.nagariknetwork.com/news/27618/)
+        * [Death of Sushil Koirala](https://kathmandupost.com/miscellaneous/2016/02/09/cabinet-decision-koirala-to-be-honoured-with-state-funeral)
+        * [Crash of Yeti Airlines Flight 691](https://edition.cnn.com/2023/01/15/asia/nepal-yeti-airlines-crash-intl-hnk/index.html)
+        * [People's War Day Instituted](https://kathmandupost.com/national/2023/02/12/government-announces-public-holiday-on-monday-to-mark-people-s-war-day)
+        * [People's War Day Annulled](https://kathmandupost.com/national/2023/12/29/supreme-court-annuls-public-holiday-on-people-s-war-day)
+        * [Death of Subas Chandra Nembang](https://en.nepalkhabar.com/news/detail/6023/)
+    """
+
+    # Day of National Mourning.
+    name_day_of_national_mourning = "Day of National Mourning"
+
+    # Tihar Holiday.
+    name_tihar_holiday = "Tihar Holiday"
+
+    special_public_holidays = {
+        2011: (MAR, 6, name_day_of_national_mourning),
+        2016: (FEB, 10, name_day_of_national_mourning),
+        2021: (NOV, 7, name_tihar_holiday),
+        2022: (OCT, 28, name_tihar_holiday),
+        2023: (
+            (JAN, 16, name_day_of_national_mourning),
+            # People War's Day.
+            (FEB, 13, "People War's Day"),
+            (SEP, 14, name_day_of_national_mourning),
+            (NOV, 16, name_tihar_holiday),
+        ),
+        2024: (NOV, 4, name_tihar_holiday),
+        2025: (OCT, 24, name_tihar_holiday),
+    }
diff --git a/holidays/groups/hindu.py b/holidays/groups/hindu.py
index 6843cf1a..f158dcd8 100644
--- a/holidays/groups/hindu.py
+++ b/holidays/groups/hindu.py
@@ -59,6 +59,18 @@ class HinduCalendarHolidays(EasternCalendarHolidays):
 
         return added_dates
 
+    def _add_bhai_dooj(self, name) -> Optional[date]:
+        """
+        Add Bhai Dooj.
+
+        Bhai Dooj, also known as Bhai Tika or Bhaiya Dooj, is a Hindu festival celebrating the bond
+        between brothers and sisters. It is observed two days after Diwali on the second lunar day
+        of the Shukla Paksha in the Hindu month of Kartika.
+        """
+        return self._add_hindu_calendar_holiday(
+            name, self._hindu_calendar.govardhan_puja_date(self._year), days_delta=+1
+        )
+
     def _add_buddha_purnima(self, name) -> Optional[date]:
         """
         Add Buddha Purnima.
@@ -126,11 +138,21 @@ class HinduCalendarHolidays(EasternCalendarHolidays):
             name, self._hindu_calendar.ganesh_chaturthi_date(self._year)
         )
 
+    def _add_gau_krida(self, name) -> Optional[date]:
+        """
+        Add Gau Krida.
+
+        Gau Krida, is celebrated the day after Diwali to honor cows.
+        """
+        return self._add_hindu_calendar_holiday(
+            name, self._hindu_calendar.govardhan_puja_date(self._year), days_delta=-1
+        )
+
     def _add_govardhan_puja(self, name) -> Optional[date]:
         """
         Add Govardhan Puja.
 
-        Govardhan Puja, also known as Annakut, is celebrated the day after Diwali
+        Govardhan Puja, also known as Annakut, is celebrated after Diwali
         to honor Lord Krishna. It falls on the first lunar day of the Hindu month of Kartika.
         https://en.wikipedia.org/wiki/Govardhan_Puja
         """
@@ -175,6 +197,32 @@ class HinduCalendarHolidays(EasternCalendarHolidays):
             name, self._hindu_calendar.guru_nanak_jayanti_date(self._year)
         )
 
+    def _add_gyalpo_losar(self, name) -> Optional[date]:
+        """
+        Add Gyalpo Losar.
+
+        Gyalpo Losar marks the Tibetan New Year and is widely celebrated by the
+        Tibetan and Sherpa communities in Nepal. It falls on the first day of the
+        Tibetan lunar calendar, typically in February or March.
+        https://en.wikipedia.org/wiki/Gyalpo_Losar
+        """
+        return self._add_hindu_calendar_holiday(
+            name, self._hindu_calendar.gyalpo_losar_date(self._year)
+        )
+
+    def _add_nepal_holi(self, name) -> Optional[date]:
+        """
+        Add Holi Festival for Nepal (Mountain & Hilly).
+
+        Holi, known as the Festival of Colors, is a Hindu festival that marks
+        the arrival of spring. It is celebrated on the full moon day of the
+        Hindu month of Phalguna (February/March).
+        https://en.wikipedia.org/wiki/Holi
+        """
+        return self._add_hindu_calendar_holiday(
+            name, self._hindu_calendar.holi_date(self._year), days_delta=-1
+        )
+
     def _add_holi(self, name) -> Optional[date]:
         """
         Add Holi Festival.
@@ -198,6 +246,30 @@ class HinduCalendarHolidays(EasternCalendarHolidays):
             name, self._hindu_calendar.janmashtami_date(self._year)
         )
 
+    def _add_maha_saptami(self, name) -> Optional[date]:
+        """
+        Add Maha Saptami.
+
+        Maha Saptami is the seventh day of Navratri, dedicated to Goddess Durga.
+        It is observed in Ashvin (September-October).
+        https://en.wikipedia.org/wiki/Navaratri
+        """
+        return self._add_hindu_calendar_holiday(
+            name, self._hindu_calendar.maha_ashtami_date(self._year), days_delta=-1
+        )
+
+    def _add_maha_ashtami(self, name) -> Optional[date]:
+        """
+        Add Maha Ashtami.
+
+        Maha Ashtami is the eighth day of Navratri, dedicated to Goddess Durga.
+        It is observed in Ashvin (September-October).
+        https://en.wikipedia.org/wiki/Navaratri
+        """
+        return self._add_hindu_calendar_holiday(
+            name, self._hindu_calendar.maha_ashtami_date(self._year)
+        )
+
     def _add_maha_navami(self, name) -> Optional[date]:
         """
         Add Maha Navami.
@@ -256,6 +328,29 @@ class HinduCalendarHolidays(EasternCalendarHolidays):
         """
         return self._add_hindu_calendar_holiday(name, self._hindu_calendar.onam_date(self._year))
 
+    def _add_papankusha_ekadashi(self, name) -> Optional[date]:
+        """
+        Add Papankusha Ekadashi.
+
+        Papankusha Ekadashi is a Hindu festival which occurs on eleventh day on month of
+        Ashwin (September-October).
+        https://en.wikipedia.org/wiki/Ekadashi
+        """
+        return self._add_hindu_calendar_holiday(
+            name, self._hindu_calendar.dussehra_date(self._year), days_delta=+1
+        )
+
+    def _add_papankusha_duwadashi(self, name) -> Optional[date]:
+        """
+        Add Papankusha Duwadashi.
+
+        Papankusha Duwadashi is a Hindu festival which occurs next day of Papankusha Ekadashi.
+        https://en.wikipedia.org/wiki/Ekadashi
+        """
+        return self._add_hindu_calendar_holiday(
+            name, self._hindu_calendar.dussehra_date(self._year), days_delta=+2
+        )
+
     def _add_pongal(self, name) -> Optional[date]:
         """
         Add Pongal.
@@ -306,6 +401,31 @@ class HinduCalendarHolidays(EasternCalendarHolidays):
             name, self._hindu_calendar.sharad_navratri_date(self._year)
         )
 
+    def _add_sonam_losar(self, name) -> Optional[date]:
+        """
+        Add Sonam Losar.
+
+        Sonam Losar is the New Year festival celebrated by the Tamang community
+        in Nepal. It follows the Tibetan lunar calendar and usually falls in
+        January or February.
+        https://en.wikipedia.org/wiki/Sonam_Lhosar
+        """
+        return self._add_hindu_calendar_holiday(
+            name, self._hindu_calendar.sonam_losar_date(self._year)
+        )
+
+    def _add_tamu_losar(self, name) -> Optional[date]:
+        """
+        Add Tamu Losar.
+
+        Tamu Losar marks the New Year festival of the Gurung community in Nepal.
+        It is traditionally celebrated on December 30th each year.
+        https://en.wikipedia.org/wiki/Tamu_Lhosar
+        """
+        return self._add_hindu_calendar_holiday(
+            name, self._hindu_calendar.tamu_losar_date(self._year)
+        )
+
     def _add_thaipusam(self, name) -> Optional[date]:
         """
         Add Thaipusam.
diff --git a/holidays/registry.py b/holidays/registry.py
index 1d47c9f2..02acdd82 100644
--- a/holidays/registry.py
+++ b/holidays/registry.py
@@ -130,6 +130,7 @@ COUNTRIES: RegistryDict = {
     "morocco": ("Morocco", "MA", "MOR"),
     "mozambique": ("Mozambique", "MZ", "MOZ"),
     "namibia": ("Namibia", "NA", "NAM"),
+    "nepal": ("Nepal", "NP", "NPL"),
     "netherlands": ("Netherlands", "NL", "NLD"),
     "new_zealand": ("NewZealand", "NZ", "NZL"),
     "nicaragua": ("Nicaragua", "NI", "NIC"),


Test patch:
diff --git a/tests/countries/test_india.py b/tests/countries/test_india.py
index 2dd385b4..978a5352 100644
--- a/tests/countries/test_india.py
+++ b/tests/countries/test_india.py
@@ -183,7 +183,7 @@ class TestIndia(CommonCountryTests, TestCase):
             "2018-08-26",
             "2018-09-13",
             "2018-10-10",
-            "2018-10-18",
+            "2018-10-17",
             "2018-11-08",
             "2018-11-14",
         )
@@ -566,7 +566,7 @@ class TestIndia(CommonCountryTests, TestCase):
             ("2018-10-02", "Gandhi Jayanti"),
             ("2018-10-06", "Bathukamma Festival"),
             ("2018-10-10", "Navratri / Sharad Navratri"),
-            ("2018-10-18", "Maha Navami"),
+            ("2018-10-17", "Maha Navami"),
             ("2018-10-19", "Dussehra"),
             ("2018-10-31", "Sardar Vallabhbhai Patel Jayanti"),
             (
@@ -631,7 +631,7 @@ class TestIndia(CommonCountryTests, TestCase):
             ("2018-10-02", "गांधी जयंती"),
             ("2018-10-06", "बतुकम्मा महोत्सव"),
             ("2018-10-10", "नवरात्र/शरद नवरात्र"),
-            ("2018-10-18", "महानवमी"),
+            ("2018-10-17", "महानवमी"),
             ("2018-10-19", "दशहरा"),
             ("2018-10-31", "सरदार वल्लभभाई पटेल जयंती"),
             (
@@ -697,7 +697,7 @@ class TestIndia(CommonCountryTests, TestCase):
             ("2018-10-02", "Gandhi Jayanti"),
             ("2018-10-06", "Bathukamma Festival"),
             ("2018-10-10", "Navratri / Sharad Navratri"),
-            ("2018-10-18", "Maha Navami"),
+            ("2018-10-17", "Maha Navami"),
             ("2018-10-19", "Dussehra"),
             ("2018-10-31", "Sardar Vallabhbhai Patel Jayanti"),
             (
diff --git a/tests/countries/test_nepal.py b/tests/countries/test_nepal.py
new file mode 100644
index 00000000..048c4e2b
--- /dev/null
+++ b/tests/countries/test_nepal.py
@@ -0,0 +1,582 @@
+#  holidays
+#  --------
+#  A fast, efficient Python library for generating country, province and state
+#  specific sets of holidays on the fly. It aims to make determining whether a
+#  specific date is a holiday as fast and flexible as possible.
+#
+#  Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+#           dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
+#           ryanss <ryanssdev@icloud.com> (c) 2014-2017
+#  Website: https://github.com/vacanza/holidays
+#  License: MIT (see LICENSE file)
+
+from unittest import TestCase
+
+from holidays.constants import PUBLIC, WORKDAY
+from holidays.countries.nepal import Nepal, NP, NPL
+from tests.common import CommonCountryTests
+
+
+class TestNepal(CommonCountryTests, TestCase):
+    @classmethod
+    def setUpClass(cls):
+        years = range(2010, 2050)
+        super().setUpClass(Nepal, years=years)
+        cls.no_estimated_holidays = Nepal(years=years, islamic_show_estimated=False)
+        cls.workday_holidays = Nepal(categories=WORKDAY, years=years)
+
+    def test_country_aliases(self):
+        self.assertAliases(Nepal, NP, NPL)
+
+    def test_no_holidays(self):
+        self.assertNoHolidays(Nepal(years=2009, categories=(PUBLIC, WORKDAY)))
+
+    def test_special_holidays(self):
+        name_day_of_national_mourning = "Day of National Mourning"
+        name_tihar_holiday = "Tihar Holiday"
+
+        for dt, name in (
+            ("2011-03-06", name_day_of_national_mourning),
+            ("2016-02-10", name_day_of_national_mourning),
+            ("2021-11-07", name_tihar_holiday),
+            ("2022-10-28", name_tihar_holiday),
+            ("2023-01-16", name_day_of_national_mourning),
+            ("2023-02-13", "People War's Day"),
+            ("2023-09-14", name_day_of_national_mourning),
+            ("2023-11-16", name_tihar_holiday),
+            ("2024-11-04", name_tihar_holiday),
+            ("2025-10-24", name_tihar_holiday),
+        ):
+            self.assertHolidayName(name, dt)
+
+    def test_prithvi_jayanti(self):
+        name = "Prithvi Jayanti"
+        self.assertHolidayName(name, (f"{year}-01-11" for year in range(2023, 2050)))
+        self.assertNoHolidayName(name, range(2010, 2023))
+
+    def test_martyrs_day(self):
+        name = "Martyr's Day"
+        dt = (
+            "2021-01-29",
+            "2022-01-30",
+            "2023-01-30",
+            "2024-01-30",
+            "2025-01-29",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2019), range(2021, 2034))
+        self.assertNoHolidayName(name, range(2019, 2021), range(2034, 2050))
+        dt = (
+            "2019-01-30",
+            "2020-01-30",
+        )
+        self.assertHolidayName(name, self.workday_holidays, dt)
+        self.assertNoHolidayName(name, self.workday_holidays, range(2010, 2019), range(2021, 2050))
+
+    def test_national_democracy_day(self):
+        name = "National Democracy Day"
+        dt = (
+            "2021-02-19",
+            "2022-02-19",
+            "2023-02-19",
+            "2024-02-19",
+            "2025-02-19",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2019), range(2021, 2034))
+        self.assertNoHolidayName(name, range(2019, 2021), range(2034, 2050))
+        dt = (
+            "2019-02-19",
+            "2020-02-19",
+        )
+        self.assertHolidayName(name, self.workday_holidays, dt)
+        self.assertNoHolidayName(name, self.workday_holidays, range(2010, 2019), range(2021, 2050))
+
+    def test_womens_day(self):
+        self.assertHolidayName(
+            "International Women's Day", (f"{year}-03-08" for year in range(2010, 2050))
+        )
+
+    def test_nepali_new_year(self):
+        name = "Nepali New Year"
+        dt = (
+            "2019-04-14",
+            "2020-04-13",
+            "2021-04-14",
+            "2022-04-14",
+            "2023-04-14",
+            "2024-04-13",
+            "2025-04-14",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_labour_day(self):
+        self.assertHolidayName(
+            "International Labour Day", (f"{year}-05-01" for year in range(2010, 2050))
+        )
+
+    def test_republic_day(self):
+        name = "Republic Day"
+        dt = (
+            "2021-05-29",
+            "2022-05-29",
+            "2023-05-29",
+            "2024-05-28",
+            "2025-05-28",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2019), range(2021, 2033))
+        self.assertNoHolidayName(name, range(2019, 2021), range(2033, 2050))
+        dt = (
+            "2019-05-29",
+            "2020-05-28",
+        )
+        self.assertHolidayName(name, self.workday_holidays, dt)
+        self.assertNoHolidayName(name, self.workday_holidays, range(2010, 2019), range(2021, 2050))
+
+    def test_constitution_day(self):
+        name = "Constitution Day"
+        dt = (
+            "2019-09-20",
+            "2020-09-19",
+            "2021-09-19",
+            "2022-09-19",
+            "2023-09-20",
+            "2024-09-19",
+            "2025-09-19",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2016, 2033))
+
+    def test_christmas_day(self):
+        self.assertHolidayName("Christmas Day", (f"{year}-12-25" for year in range(2010, 2050)))
+
+    def test_maghe_sankranti(self):
+        name = "Maghe Sankranti"
+        dt = (
+            "2019-01-15",
+            "2020-01-15",
+            "2021-01-14",
+            "2022-01-15",
+            "2023-01-15",
+            "2024-01-15",
+            "2025-01-14",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_sonam_lhochhar(self):
+        name = "Sonam Lhochhar"
+        dt = (
+            "2019-02-05",
+            "2020-01-25",
+            "2021-02-12",
+            "2022-02-02",
+            "2023-01-22",
+            "2024-02-10",
+            "2025-01-30",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_gyalpo_lhosar(self):
+        name = "Gyalpo Lhosar"
+        dt = (
+            "2019-03-07",
+            "2020-02-24",
+            "2021-03-14",
+            "2022-03-03",
+            "2023-02-21",
+            "2024-03-11",
+            "2025-02-28",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_maha_shivaratri(self):
+        name = "Maha Shivaratri"
+        dt = (
+            "2019-03-04",
+            "2020-02-21",
+            "2021-03-11",
+            "2022-03-01",
+            "2023-02-18",
+            "2024-03-08",
+            "2025-02-26",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_holi_hilly(self):
+        name = "Fagu Poornima"
+        dt = (
+            "2019-03-20",
+            "2020-03-09",
+            "2021-03-28",
+            "2022-03-17",
+            "2023-03-06",
+            "2024-03-24",
+            "2025-03-13",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_holi_terai(self):
+        name = "Fagu Poornima (Terai)"
+        dt = (
+            "2019-03-21",
+            "2020-03-10",
+            "2021-03-29",
+            "2022-03-18",
+            "2023-03-07",
+            "2024-03-25",
+            "2025-03-14",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_ram_navami(self):
+        name = "Ram Navami"
+        dt = (
+            "2021-04-21",
+            "2022-04-10",
+            "2023-03-30",
+            "2024-04-17",
+            "2025-04-06",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2019), range(2021, 2036))
+        self.assertNoHolidayName(name, range(2019, 2021))
+        dt = (
+            "2019-04-13",
+            "2020-04-02",
+        )
+        self.assertHolidayName(name, self.workday_holidays, dt)
+        self.assertNoHolidayName(name, self.workday_holidays, range(2010, 2019), range(2021, 2050))
+
+    def test_buddha_jayanti(self):
+        name = "Buddha Jayanti"
+        dt = (
+            "2019-05-18",
+            "2020-05-07",
+            "2021-05-26",
+            "2022-05-16",
+            "2023-05-05",
+            "2024-05-23",
+            "2025-05-12",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_janai_poornima(self):
+        name = "Janai Poornima"
+        dt = (
+            "2021-08-22",
+            "2022-08-12",
+            "2023-08-31",
+            "2024-08-19",
+            "2025-08-09",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2019), range(2021, 2036))
+        self.assertNoHolidayName(name, range(2019, 2021))
+        dt = (
+            "2019-08-15",
+            "2020-08-03",
+        )
+        self.assertHolidayName(name, self.workday_holidays, dt)
+        self.assertNoHolidayName(name, self.workday_holidays, range(2010, 2019), range(2021, 2050))
+
+    def test_janmashtami(self):
+        name = "Shree Krishna Janmashtami"
+        dt = (
+            "2021-08-30",
+            "2022-08-19",
+            "2023-09-06",
+            "2024-08-26",
+            "2025-08-16",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2019), range(2021, 2036))
+        self.assertNoHolidayName(name, range(2019, 2021))
+        dt = (
+            "2019-08-24",
+            "2020-08-12",
+        )
+        self.assertHolidayName(name, self.workday_holidays, dt)
+        self.assertNoHolidayName(name, self.workday_holidays, range(2010, 2019), range(2021, 2050))
+
+    def test_ghatasthapana(self):
+        name = "Ghatasthapana"
+        dt = (
+            "2021-10-07",
+            "2022-09-26",
+            "2023-10-15",
+            "2024-10-03",
+            "2025-09-22",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2019), range(2021, 2036))
+        self.assertNoHolidayName(name, range(2019, 2021))
+        dt = (
+            "2019-09-29",
+            "2020-10-17",
+        )
+        self.assertHolidayName(name, self.workday_holidays, dt)
+        self.assertNoHolidayName(name, self.workday_holidays, range(2010, 2019), range(2021, 2050))
+
+    def test_fulpati(self):
+        name = "Fulpati"
+        dt = (
+            "2019-10-05",
+            "2020-10-23",
+            "2021-10-12",
+            "2022-10-02",
+            "2023-10-21",
+            "2024-10-10",
+            "2025-09-29",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_maha_ashtami(self):
+        name = "Maha Ashtami"
+        dt = (
+            "2019-10-06",
+            "2020-10-24",
+            "2021-10-13",
+            "2022-10-03",
+            "2023-10-22",
+            "2024-10-11",
+            "2025-09-30",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_maha_navami(self):
+        name = "Maha Navami"
+        dt = (
+            "2019-10-06",
+            "2020-10-25",
+            "2021-10-14",
+            "2022-10-04",
+            "2023-10-23",
+            "2024-10-11",
+            "2025-10-01",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_vijayadashami(self):
+        name = "Bijaya Dashami"
+        dt = (
+            "2019-10-08",
+            "2020-10-26",
+            "2021-10-15",
+            "2022-10-05",
+            "2023-10-24",
+            "2024-10-12",
+            "2025-10-02",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_ekadashi(self):
+        name = "Ekadashi (Dashain)"
+        dt = (
+            "2019-10-09",
+            "2020-10-27",
+            "2021-10-16",
+            "2022-10-06",
+            "2023-10-25",
+            "2024-10-13",
+            "2025-10-03",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_duwadashi(self):
+        name = "Duwadashi (Dashain)"
+        dt = (
+            "2021-10-17",
+            "2022-10-07",
+            "2023-10-26",
+            "2024-10-14",
+            "2025-10-04",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2019), range(2021, 2036))
+        self.assertNoHolidayName(name, range(2019, 2021))
+        dt = (
+            "2019-10-10",
+            "2020-10-28",
+        )
+        self.assertHolidayName(name, self.workday_holidays, dt)
+        self.assertNoHolidayName(name, self.workday_holidays, range(2010, 2019), range(2021, 2050))
+
+    def test_laxmi_pooja(self):
+        name = "Laxmi Pooja"
+        dt = (
+            "2019-10-27",
+            "2020-11-14",
+            "2021-11-04",
+            "2022-10-24",
+            "2023-11-12",
+            "2024-10-31",
+            "2025-10-20",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_gai_tihar(self):
+        name = "Gai Tihar"
+        dt = (
+            "2019-10-27",
+            "2020-11-15",
+            "2021-11-04",
+            "2022-10-25",
+            "2023-11-13",
+            "2024-11-01",
+            "2025-10-21",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_gobardhan_pooja(self):
+        name = "Gobardhan Pooja"
+        dt = (
+            "2019-10-28",
+            "2020-11-16",
+            "2021-11-05",
+            "2022-10-26",
+            "2023-11-14",
+            "2024-11-02",
+            "2025-10-22",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_mha_pooja(self):
+        name = "Mha Pooja"
+        dt = (
+            "2019-10-28",
+            "2020-11-16",
+            "2021-11-05",
+            "2022-10-26",
+            "2023-11-14",
+            "2024-11-02",
+            "2025-10-22",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_bhai_tika(self):
+        name = "Bhai Tika"
+        dt = (
+            "2019-10-29",
+            "2020-11-17",
+            "2021-11-06",
+            "2022-10-27",
+            "2023-11-15",
+            "2024-11-03",
+            "2025-10-23",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_chhath_parwa(self):
+        name = "Chhath Parva"
+        dt = (
+            "2019-11-02",
+            "2020-11-20",
+            "2021-11-10",
+            "2022-10-30",
+            "2023-11-19",
+            "2024-11-07",
+            "2025-10-27",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2036))
+
+    def test_tamu_lhochhar(self):
+        name = "Tamu Lhochhar"
+        dt = (
+            "2019-12-31",
+            "2020-12-30",
+            "2021-12-30",
+            "2022-12-30",
+            "2023-12-31",
+            "2024-12-30",
+            "2025-12-30",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, range(2010, 2033))
+
+    def test_id_ul_fitr(self):
+        name = "Id-ul-Fitr"
+        dt = (
+            "2019-06-05",
+            "2020-05-25",
+            "2021-05-14",
+            "2022-05-03",
+            "2023-04-22",
+            "2024-04-11",
+            "2025-03-31",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, self.no_estimated_holidays, range(2010, 2050))
+
+    def test_bakrid(self):
+        name = "Bakrid"
+        dt = (
+            "2019-08-12",
+            "2020-08-01",
+            "2021-07-21",
+            "2022-07-10",
+            "2023-06-29",
+            "2024-06-17",
+            "2025-06-07",
+        )
+        self.assertHolidayName(name, dt)
+        self.assertHolidayName(name, self.no_estimated_holidays, range(2010, 2050))
+
+    def test_2025(self):
+        self.assertHolidays(
+            Nepal(years=2025),
+            ("2025-01-11", "Prithvi Jayanti"),
+            ("2025-01-14", "Maghe Sankranti"),
+            ("2025-01-29", "Martyr's Day"),
+            ("2025-01-30", "Sonam Lhochhar"),
+            ("2025-02-19", "National Democracy Day"),
+            ("2025-02-26", "Maha Shivaratri"),
+            ("2025-02-28", "Gyalpo Lhosar"),
+            ("2025-03-08", "International Women's Day"),
+            ("2025-03-13", "Fagu Poornima"),
+            ("2025-03-14", "Fagu Poornima (Terai)"),
+            ("2025-03-31", "Id-ul-Fitr"),
+            ("2025-04-06", "Ram Navami"),
+            ("2025-04-14", "Nepali New Year"),
+            ("2025-05-01", "International Labour Day"),
+            ("2025-05-12", "Buddha Jayanti"),
+            ("2025-05-28", "Republic Day"),
+            ("2025-06-07", "Bakrid"),
+            ("2025-08-09", "Janai Poornima"),
+            ("2025-08-16", "Shree Krishna Janmashtami"),
+            ("2025-09-19", "Constitution Day"),
+            ("2025-09-22", "Ghatasthapana"),
+            ("2025-09-29", "Fulpati"),
+            ("2025-09-30", "Maha Ashtami"),
+            ("2025-10-01", "Maha Navami"),
+            ("2025-10-02", "Bijaya Dashami"),
+            ("2025-10-03", "Ekadashi (Dashain)"),
+            ("2025-10-04", "Duwadashi (Dashain)"),
+            ("2025-10-20", "Laxmi Pooja"),
+            ("2025-10-21", "Gai Tihar"),
+            ("2025-10-22", "Gobardhan Pooja; Mha Pooja"),
+            ("2025-10-23", "Bhai Tika"),
+            ("2025-10-24", "Tihar Holiday"),
+            ("2025-10-27", "Chhath Parva"),
+            ("2025-12-25", "Christmas Day"),
+            ("2025-12-30", "Tamu Lhochhar"),
+        )