# 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 (c) 2017-2023 # ryanss (c) 2014-2017 # Website: https://github.com/vacanza/holidays # License: MIT (see LICENSE file) from collections.abc import Iterable from datetime import date from holidays.calendars.custom import _CustomCalendar from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC from holidays.helpers import _normalize_tuple BATHUKAMMA = "BATHUKAMMA" BONALU = "BONALU" BUDDHA_PURNIMA = "BUDDHA_PURNIMA" CHHATH_PUJA = "CHHATH_PUJA" DIWALI = "DIWALI" DIWALI_INDIA = "DIWALI_INDIA" DUSSEHRA = "DUSSEHRA" GANESH_CHATURTHI = "GANESH_CHATURTHI" 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" MAHARANA_PRATAP_JAYANTI = "MAHARANA_PRATAP_JAYANTI" MAHARISHI_VALMIKI_JAYANTI = "MAHARISHI_VALMIKI_JAYANTI" MAHA_SHIVARATRI = "MAHA_SHIVARATRI" MAHAVIR_JAYANTI = "MAHAVIR_JAYANTI" MAKAR_SANKRANTI = "MAKAR_SANKRANTI" ONAM = "ONAM" 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" class _HinduLunisolar: # Dates for Bathukamma (Mahalaya Amavasya/amavasya shraddha) # [Mahalaya Amavasya](https://web.archive.org/web/20250906191235/https://www.drikpanchang.com/shraddha/tithi/amavasya-shraddha-date-time.html) # [2018](https://web.archive.org/web/20250402131537/https://www.telangana.gov.in/Downloads/calendar-2018/) # [2019](https://web.archive.org/web/20250508145651/https://www.telangana.gov.in/Downloads/calendar-2019/) # [2020](https://web.archive.org/web/20250421174049/https://www.telangana.gov.in/downloads/calendar-2020/) # [2021](https://web.archive.org/web/20250404142143/https://www.telangana.gov.in/Downloads/calendar-2021/) # [2022](https://web.archive.org/web/20250217143857/https://www.telangana.gov.in/Downloads/calendar-2022/) # [2023](https://web.archive.org/web/20250123180708/https://www.telangana.gov.in/Downloads/calendar-2023/) # [2024](https://web.archive.org/web/20250217144536/https://www.telangana.gov.in/Downloads/calendar/) # [2025](https://web.archive.org/web/20250217133450/https://www.telangana.gov.in/Downloads/calendar-2025/) BATHUKAMMA_DATES = { 2010: (OCT, 7), 2011: (SEP, 27), 2012: (OCT, 15), 2013: (OCT, 4), 2014: (SEP, 23), 2015: (OCT, 12), 2016: (SEP, 30), 2017: (SEP, 19), 2018: (OCT, 8), 2019: (SEP, 28), 2020: (OCT, 16), 2021: (OCT, 6), 2022: (SEP, 25), 2023: (OCT, 14), 2024: (OCT, 2), 2025: (SEP, 21), 2026: (OCT, 10), 2027: (SEP, 29), 2028: (SEP, 18), 2029: (OCT, 7), 2030: (SEP, 27), 2031: (OCT, 15), 2032: (OCT, 4), 2033: (SEP, 23), 2034: (OCT, 11), 2035: (OCT, 1), } # Dates for Bonalu (Ashada Masam). # [2018](https://web.archive.org/web/20250402131537/https://www.telangana.gov.in/Downloads/calendar-2018/) # [2019](https://web.archive.org/web/20250508145651/https://www.telangana.gov.in/Downloads/calendar-2019/) # [2020](https://web.archive.org/web/20250421174049/https://www.telangana.gov.in/downloads/calendar-2020/) # [2021](https://web.archive.org/web/20250404142143/https://www.telangana.gov.in/Downloads/calendar-2021/) # [2022](https://web.archive.org/web/20250217143857/https://www.telangana.gov.in/Downloads/calendar-2022/) # [2023](https://web.archive.org/web/20250123180708/https://www.telangana.gov.in/Downloads/calendar-2023/) # [2024](https://web.archive.org/web/20250217144536/https://www.telangana.gov.in/Downloads/calendar/) # [2025](https://web.archive.org/web/20250217133450/https://www.telangana.gov.in/Downloads/calendar-2025/) BONALU_DATES = { 2018: (AUG, 6), 2019: (JUL, 29), 2020: (JUL, 20), 2021: (AUG, 2), 2022: (JUL, 25), 2023: (JUL, 17), 2024: (JUL, 29), 2025: (JUL, 21), 2026: (AUG, 10), 2027: (AUG, 2), } # https://web.archive.org/web/20240804044401/https://www.timeanddate.com/holidays/india/buddha-purnima BUDDHA_PURNIMA_DATES = { 2001: (APR, 30), 2002: (MAY, 19), 2003: (MAY, 8), 2004: (MAY, 26), 2005: (MAY, 23), 2006: (MAY, 13), 2007: (MAY, 2), 2008: (MAY, 20), 2009: (MAY, 8), 2010: (MAY, 27), 2011: (MAY, 17), 2012: (MAY, 6), 2013: (MAY, 25), 2014: (MAY, 14), 2015: (MAY, 4), 2016: (MAY, 21), 2017: (MAY, 10), 2018: (APR, 30), 2019: (MAY, 18), 2020: (MAY, 7), 2021: (MAY, 26), 2022: (MAY, 16), 2023: (MAY, 5), 2024: (MAY, 23), 2025: (MAY, 12), 2026: (MAY, 1), 2027: (MAY, 20), 2028: (MAY, 8), 2029: (MAY, 27), 2030: (MAY, 17), 2031: (MAY, 7), 2032: (MAY, 25), 2033: (MAY, 14), 2034: (MAY, 3), 2035: (MAY, 22), } # https://web.archive.org/web/20250404174934/https://www.timeanddate.com/holidays/india/chhat-puja CHHATH_PUJA_DATES = { 2001: (NOV, 21), 2002: (NOV, 10), 2003: (OCT, 30), 2004: (NOV, 17), 2005: (NOV, 7), 2006: (OCT, 28), 2007: (NOV, 16), 2008: (NOV, 4), 2009: (OCT, 24), 2010: (NOV, 11), 2011: (NOV, 1), 2012: (NOV, 19), 2013: (NOV, 8), 2014: (OCT, 29), 2015: (NOV, 17), 2016: (NOV, 6), 2017: (OCT, 26), 2018: (NOV, 13), 2019: (NOV, 2), 2020: (NOV, 20), 2021: (NOV, 10), 2022: (OCT, 30), 2023: (NOV, 19), 2024: (NOV, 7), 2025: (OCT, 28), 2026: (NOV, 15), 2027: (NOV, 4), 2028: (OCT, 23), 2029: (NOV, 11), 2030: (NOV, 1), 2031: (NOV, 20), 2032: (NOV, 9), 2033: (OCT, 29), 2034: (NOV, 17), 2035: (NOV, 6), } DIWALI_DATES = { 1901: (NOV, 10), 1902: (OCT, 30), 1903: (NOV, 18), 1904: (NOV, 6), 1905: (OCT, 27), 1906: (NOV, 15), 1907: (NOV, 5), 1908: (OCT, 24), 1909: (NOV, 12), 1910: (NOV, 1), 1911: (NOV, 20), 1912: (NOV, 8), 1913: (OCT, 28), 1914: (NOV, 17), 1915: (NOV, 6), 1916: (OCT, 26), 1917: (NOV, 14), 1918: (NOV, 3), 1919: (NOV, 21), 1920: (NOV, 10), 1921: (OCT, 30), 1922: (NOV, 18), 1923: (NOV, 7), 1924: (OCT, 27), 1925: (NOV, 15), 1926: (NOV, 4), 1927: (OCT, 24), 1928: (NOV, 11), 1929: (OCT, 31), 1930: (NOV, 19), 1931: (NOV, 9), 1932: (OCT, 28), 1933: (NOV, 17), 1934: (NOV, 6), 1935: (OCT, 26), 1936: (NOV, 13), 1937: (NOV, 2), 1938: (NOV, 21), 1939: (NOV, 10), 1940: (OCT, 30), 1941: (NOV, 18), 1942: (NOV, 7), 1943: (OCT, 28), 1944: (NOV, 15), 1945: (NOV, 4), 1946: (OCT, 24), 1947: (NOV, 12), 1948: (OCT, 31), 1949: (NOV, 19), 1950: (NOV, 9), 1951: (OCT, 29), 1952: (NOV, 16), 1953: (NOV, 6), 1954: (OCT, 26), 1955: (NOV, 13), 1956: (NOV, 2), 1957: (NOV, 21), 1958: (NOV, 10), 1959: (OCT, 31), 1960: (NOV, 18), 1961: (NOV, 7), 1962: (OCT, 27), 1963: (NOV, 15), 1964: (NOV, 3), 1965: (OCT, 23), 1966: (NOV, 11), 1967: (NOV, 1), 1968: (NOV, 19), 1969: (NOV, 9), 1970: (OCT, 29), 1971: (NOV, 17), 1972: (NOV, 5), 1973: (OCT, 25), 1974: (NOV, 13), 1975: (NOV, 2), 1976: (NOV, 20), 1977: (NOV, 10), 1978: (OCT, 31), 1979: (NOV, 19), 1980: (NOV, 7), 1981: (OCT, 27), 1982: (NOV, 14), 1983: (NOV, 4), 1984: (OCT, 23), 1985: (NOV, 11), 1986: (NOV, 1), 1987: (NOV, 20), 1988: (NOV, 8), 1989: (OCT, 28), 1990: (NOV, 16), 1991: (NOV, 5), 1992: (OCT, 25), 1993: (NOV, 13), 1994: (NOV, 2), 1995: (NOV, 21), 1996: (NOV, 10), 1997: (OCT, 30), 1998: (NOV, 18), 1999: (NOV, 7), 2000: (OCT, 26), 2001: (NOV, 14), 2002: (NOV, 4), 2003: (OCT, 24), 2004: (NOV, 11), 2005: (NOV, 1), 2006: (NOV, 20), 2007: (NOV, 9), 2008: (OCT, 28), 2009: (NOV, 16), 2010: (NOV, 5), 2011: (OCT, 26), 2012: (NOV, 13), 2013: (NOV, 2), 2014: (OCT, 23), 2015: (NOV, 11), 2016: (OCT, 30), 2017: (NOV, 17), 2018: (NOV, 7), 2019: (OCT, 27), 2020: (NOV, 14), 2021: (NOV, 4), 2022: (OCT, 24), 2023: (NOV, 12), 2024: (OCT, 31), 2025: (NOV, 19), 2026: (NOV, 8), 2027: (OCT, 28), 2028: (NOV, 15), 2029: (NOV, 5), 2030: (OCT, 26), 2031: (NOV, 14), 2032: (NOV, 2), 2033: (OCT, 22), 2034: (NOV, 10), 2035: (OCT, 30), 2036: (NOV, 17), 2037: (NOV, 6), 2038: (OCT, 27), 2039: (NOV, 15), 2040: (NOV, 4), 2041: (OCT, 24), 2042: (NOV, 12), 2043: (NOV, 1), 2044: (NOV, 18), 2045: (NOV, 8), 2046: (OCT, 28), 2047: (NOV, 16), 2048: (NOV, 5), 2049: (OCT, 26), 2050: (NOV, 13), 2051: (NOV, 2), 2052: (NOV, 20), 2053: (NOV, 9), 2054: (OCT, 30), 2055: (NOV, 18), 2056: (NOV, 6), 2057: (OCT, 27), 2058: (NOV, 15), 2059: (NOV, 4), 2060: (OCT, 23), 2061: (NOV, 11), 2062: (OCT, 31), 2063: (NOV, 19), 2064: (NOV, 8), 2065: (OCT, 28), 2066: (NOV, 16), 2067: (NOV, 6), 2068: (OCT, 25), 2069: (NOV, 13), 2070: (NOV, 2), 2071: (NOV, 21), 2072: (NOV, 9), 2073: (OCT, 30), 2074: (NOV, 18), 2075: (NOV, 7), 2076: (OCT, 27), 2077: (NOV, 15), 2078: (NOV, 4), 2079: (OCT, 24), 2080: (NOV, 10), 2081: (OCT, 31), 2082: (NOV, 19), 2083: (NOV, 9), 2084: (OCT, 28), 2085: (NOV, 16), 2086: (NOV, 5), 2087: (OCT, 25), 2088: (NOV, 12), 2089: (NOV, 1), 2090: (NOV, 20), 2091: (NOV, 10), 2092: (OCT, 30), 2093: (NOV, 18), 2094: (NOV, 7), 2095: (OCT, 27), 2096: (NOV, 14), 2097: (NOV, 3), 2098: (OCT, 23), 2099: (NOV, 11), 2100: (NOV, 1), } # https://web.archive.org/web/20250118190944/https://www.timeanddate.com/holidays/india/diwali DIWALI_INDIA_DATES = { 2001: (NOV, 14), 2002: (NOV, 4), 2003: (OCT, 25), 2004: (NOV, 12), 2005: (NOV, 1), 2006: (OCT, 21), 2007: (NOV, 9), 2008: (OCT, 28), 2009: (OCT, 17), 2010: (NOV, 5), 2011: (OCT, 26), 2012: (NOV, 13), 2013: (NOV, 3), 2014: (OCT, 23), 2015: (NOV, 11), 2016: (OCT, 30), 2017: (OCT, 19), 2018: (NOV, 7), 2019: (OCT, 27), 2020: (NOV, 14), 2021: (NOV, 4), 2022: (OCT, 24), 2023: (NOV, 12), 2024: (OCT, 31), 2025: (OCT, 20), 2026: (NOV, 8), 2027: (OCT, 29), 2028: (OCT, 17), 2029: (NOV, 5), 2030: (OCT, 26), 2031: (NOV, 14), 2032: (NOV, 2), 2033: (OCT, 22), 2034: (NOV, 10), 2035: (OCT, 30), } # https://web.archive.org/web/20250118183534/https://www.timeanddate.com/holidays/india/dussehra DUSSEHRA_DATES = { 2001: (OCT, 26), 2002: (OCT, 15), 2003: (OCT, 5), 2004: (OCT, 22), 2005: (OCT, 12), 2006: (OCT, 2), 2007: (OCT, 21), 2008: (OCT, 9), 2009: (SEP, 28), 2010: (OCT, 17), 2011: (OCT, 6), 2012: (OCT, 24), 2013: (OCT, 13), 2014: (OCT, 3), 2015: (OCT, 22), 2016: (OCT, 11), 2017: (SEP, 30), 2018: (OCT, 19), 2019: (OCT, 8), 2020: (OCT, 25), 2021: (OCT, 15), 2022: (OCT, 5), 2023: (OCT, 24), 2024: (OCT, 12), 2025: (OCT, 2), 2026: (OCT, 20), 2027: (OCT, 9), 2028: (SEP, 27), 2029: (OCT, 16), 2030: (OCT, 6), 2031: (OCT, 25), 2032: (OCT, 14), 2033: (OCT, 3), 2034: (OCT, 22), 2035: (OCT, 11), } # https://web.archive.org/web/20250219062212/https://www.timeanddate.com/holidays/india/ganesh-chaturthi GANESH_CHATURTHI_DATES = { 2001: (AUG, 22), 2002: (SEP, 10), 2003: (AUG, 31), 2004: (SEP, 18), 2005: (SEP, 7), 2006: (AUG, 27), 2007: (SEP, 15), 2008: (SEP, 3), 2009: (AUG, 23), 2010: (SEP, 11), 2011: (SEP, 1), 2012: (SEP, 19), 2013: (SEP, 9), 2014: (AUG, 29), 2015: (SEP, 17), 2016: (SEP, 5), 2017: (AUG, 25), 2018: (SEP, 13), 2019: (SEP, 2), 2020: (AUG, 22), 2021: (SEP, 10), 2022: (AUG, 31), 2023: (SEP, 19), 2024: (SEP, 7), 2025: (AUG, 27), 2026: (SEP, 14), 2027: (SEP, 4), 2028: (AUG, 23), 2029: (SEP, 11), 2030: (SEP, 1), 2031: (SEP, 20), 2032: (SEP, 8), 2033: (AUG, 28), 2034: (SEP, 16), 2035: (SEP, 5), } # https://web.archive.org/web/20240917162551/https://www.timeanddate.com/holidays/india/govardhan-puja GOVARDHAN_PUJA_DATES = { 2001: (NOV, 15), 2002: (NOV, 5), 2003: (OCT, 26), 2004: (NOV, 13), 2005: (NOV, 2), 2006: (OCT, 22), 2007: (NOV, 10), 2008: (OCT, 29), 2009: (OCT, 18), 2010: (NOV, 6), 2011: (OCT, 27), 2012: (NOV, 14), 2013: (NOV, 4), 2014: (OCT, 24), 2015: (NOV, 12), 2016: (OCT, 31), 2017: (OCT, 20), 2018: (NOV, 8), 2019: (OCT, 28), 2020: (NOV, 15), 2021: (NOV, 5), 2022: (OCT, 25), 2023: (NOV, 13), 2024: (NOV, 2), 2025: (OCT, 22), 2026: (NOV, 10), 2027: (OCT, 30), 2028: (OCT, 18), 2029: (NOV, 6), 2030: (OCT, 27), 2031: (NOV, 15), 2032: (NOV, 3), 2033: (OCT, 23), 2034: (NOV, 11), 2035: (OCT, 31), } # https://web.archive.org/web/20250331230057/https://www.timeanddate.com/holidays/india/gudi-padwa GUDI_PADWA_DATES = { 2001: (MAR, 26), 2002: (APR, 13), 2003: (APR, 2), 2004: (MAR, 21), 2005: (APR, 9), 2006: (MAR, 30), 2007: (MAR, 19), 2008: (APR, 6), 2009: (MAR, 27), 2010: (MAR, 16), 2011: (APR, 4), 2012: (MAR, 23), 2013: (APR, 11), 2014: (MAR, 31), 2015: (MAR, 21), 2016: (APR, 8), 2017: (MAR, 28), 2018: (MAR, 18), 2019: (APR, 6), 2020: (MAR, 25), 2021: (APR, 13), 2022: (APR, 2), 2023: (MAR, 22), 2024: (APR, 9), 2025: (MAR, 30), 2026: (MAR, 19), 2027: (APR, 7), 2028: (MAR, 27), 2029: (APR, 14), 2030: (APR, 3), 2031: (MAR, 24), 2032: (APR, 11), 2033: (MAR, 31), 2034: (MAR, 21), 2035: (APR, 9), } # https://web.archive.org/web/20241231181629/https://www.timeanddate.com/holidays/india/guru-govind-singh-jayanti GURU_GOBIND_SINGH_JAYANTI_DATES = { 2001: (JAN, 2), 2002: (JAN, 21), 2003: (DEC, 29), 2004: (NOV, 20), 2005: (JAN, 5), 2006: (JAN, 5), 2007: (JAN, 5), 2008: (JAN, 5), 2009: (JAN, 5), 2010: (JAN, 5), 2011: (JAN, 5), 2012: (JAN, 5), 2013: (JAN, 18), 2014: (JAN, 7), 2015: (JAN, 5), 2016: (JAN, 16), 2017: ((JAN, 5), (DEC, 25)), 2019: (JAN, 13), 2020: (JAN, 2), 2021: (JAN, 20), 2022: ((JAN, 9), (DEC, 29)), 2024: (JAN, 17), 2025: ((JAN, 6), (DEC, 27)), 2027: (JAN, 15), 2028: (JAN, 4), 2029: (JAN, 15), 2030: ((JAN, 10), (DEC, 31)), 2032: (JAN, 18), 2033: (JAN, 7), 2034: (JAN, 17), 2035: (JAN, 16), } # https://web.archive.org/web/20240521074207/https://www.timeanddate.com/holidays/india/guru-nanak-jayanti GURU_NANAK_JAYANTI_DATES = { 2001: (NOV, 30), 2002: (NOV, 19), 2003: (NOV, 8), 2004: (NOV, 26), 2005: (NOV, 15), 2006: (NOV, 5), 2007: (NOV, 24), 2008: (NOV, 13), 2009: (NOV, 2), 2010: (NOV, 21), 2011: (NOV, 10), 2012: (NOV, 28), 2013: (NOV, 17), 2014: (NOV, 6), 2015: (NOV, 25), 2016: (NOV, 14), 2017: (NOV, 4), 2018: (NOV, 23), 2019: (NOV, 12), 2020: (NOV, 30), 2021: (NOV, 19), 2022: (NOV, 8), 2023: (NOV, 27), 2024: (NOV, 15), 2025: (NOV, 5), 2026: (NOV, 24), 2027: (NOV, 14), 2028: (NOV, 2), 2029: (NOV, 21), 2030: (NOV, 10), 2031: (NOV, 28), 2032: (NOV, 17), 2033: (NOV, 6), 2034: (NOV, 25), 2035: (NOV, 15), } # https://web.archive.org/web/20240814073838/https://www.timeanddate.com/holidays/nepal/gyalpo-losar # https://web.archive.org/web/20250322000610/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://web.archive.org/web/20250410002117/https://www.timeanddate.com/holidays/india/holi HOLI_DATES = { 2001: (MAR, 10), 2002: (MAR, 29), 2003: (MAR, 18), 2004: (MAR, 7), 2005: (MAR, 26), 2006: (MAR, 15), 2007: (MAR, 4), 2008: (MAR, 22), 2009: (MAR, 11), 2010: (MAR, 1), 2011: (MAR, 20), 2012: (MAR, 8), 2013: (MAR, 27), 2014: (MAR, 17), 2015: (MAR, 6), 2016: (MAR, 24), 2017: (MAR, 13), 2018: (MAR, 2), 2019: (MAR, 21), 2020: (MAR, 10), 2021: (MAR, 29), 2022: (MAR, 18), 2023: (MAR, 8), 2024: (MAR, 25), 2025: (MAR, 14), 2026: (MAR, 4), 2027: (MAR, 22), 2028: (MAR, 11), 2029: (MAR, 1), 2030: (MAR, 20), 2031: (MAR, 9), 2032: (MAR, 27), 2033: (MAR, 16), 2034: (MAR, 5), 2035: (MAR, 24), } # https://web.archive.org/web/20241205010833/https://www.timeanddate.com/holidays/india/janmashtami JANMASHTAMI_DATES = { 2001: (AUG, 12), 2002: (AUG, 31), 2003: (AUG, 20), 2004: (SEP, 7), 2005: (AUG, 27), 2006: (AUG, 16), 2007: (SEP, 4), 2008: (AUG, 24), 2009: (AUG, 14), 2010: (SEP, 2), 2011: (AUG, 22), 2012: (AUG, 10), 2013: (AUG, 28), 2014: (AUG, 18), 2015: (SEP, 5), 2016: (AUG, 25), 2017: (AUG, 15), 2018: (SEP, 3), 2019: (AUG, 24), 2020: (AUG, 12), 2021: (AUG, 30), 2022: (AUG, 19), 2023: (SEP, 7), 2024: (AUG, 26), 2025: (AUG, 16), 2026: (SEP, 4), 2027: (AUG, 25), 2028: (AUG, 13), 2029: (SEP, 1), 2030: (AUG, 21), 2031: (AUG, 10), 2032: (AUG, 28), 2033: (AUG, 17), 2034: (SEP, 6), 2035: (AUG, 26), } # https://web.archive.org/web/20250113213218/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://web.archive.org/web/20241125173623/https://www.timeanddate.com/holidays/india/maha-navami MAHA_NAVAMI_DATES = { 2001: (OCT, 25), 2002: (OCT, 14), 2003: (OCT, 3), 2004: (OCT, 21), 2005: (OCT, 11), 2006: (OCT, 1), 2007: (OCT, 20), 2008: (OCT, 8), 2009: (SEP, 27), 2010: (OCT, 16), 2011: (OCT, 5), 2012: (OCT, 23), 2013: (OCT, 12), 2014: (OCT, 2), 2015: (OCT, 21), 2016: (OCT, 10), 2017: (SEP, 29), 2018: (OCT, 17), 2019: (OCT, 6), 2020: (OCT, 24), 2021: (OCT, 14), 2022: (OCT, 4), 2023: (OCT, 23), 2024: (OCT, 11), 2025: (OCT, 1), 2026: (OCT, 19), 2027: (OCT, 8), 2028: (SEP, 26), 2029: (OCT, 15), 2030: (OCT, 5), 2031: (OCT, 24), 2032: (OCT, 13), 2033: (OCT, 2), 2034: (OCT, 21), 2035: (OCT, 10), } # Dates for Maharana Pratap Jayanti (Jyeshtha Shukla 3) # [Maharana Pratap Jayanti](https://web.archive.org/web/20241212205537/https://www.drikpanchang.com/calendars/indian/jayanti/maharana-pratap/maharana-pratap-jayanti.html) # [2018](https://web.archive.org/web/20251213153439/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_Holidays_2018_25102017.pdf) # [2019](https://web.archive.org/web/20251213151532/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_Holidays_2019_02112018.pdf) # [2020](https://web.archive.org/web/20251213151547/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_Holidays_2020_22112019.pdf) # [2021](https://web.archive.org/web/20251213151616/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/holiday_calender_2021_gr6_26102020.pdf) # [2022](https://web.archive.org/web/20251213151608/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_holidays_list_21_10_2021.pdf) # [2023](https://web.archive.org/web/20251213151559/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_holidays_list_16_11_2022.pdf) MAHARANA_PRATAP_JAYANTI_DATES = { 2010: (JUN, 15), 2011: (JUN, 4), 2012: (MAY, 24), 2013: (JUN, 11), 2014: (MAY, 31), 2015: (MAY, 20), 2016: (JUN, 7), 2017: (MAY, 28), 2018: (JUN, 16), 2019: (JUN, 6), 2020: (MAY, 25), 2021: (JUN, 13), 2022: (JUN, 2), 2023: (MAY, 22), 2024: (JUN, 9), 2025: (MAY, 29), 2026: (JUN, 17), 2027: (JUN, 7), 2028: (MAY, 27), 2029: (MAY, 15), 2030: (JUN, 4), 2031: (MAY, 24), 2032: (JUN, 11), 2033: (MAY, 31), 2034: (MAY, 20), 2035: (JUN, 8), } # https://web.archive.org/web/20260219010222/https://www.drikpanchang.com/hindu-saints/valmiki/maharishi-valmiki-jayanti.html MAHARISHI_VALMIKI_JAYANTI_DATES = { 2001: (NOV, 1), 2002: (OCT, 21), 2003: (OCT, 10), 2004: (OCT, 28), 2005: (OCT, 17), 2006: (OCT, 7), 2007: (OCT, 26), 2008: (OCT, 14), 2009: (OCT, 4), 2010: (OCT, 22), 2011: (OCT, 11), 2012: (OCT, 29), 2013: (OCT, 18), 2014: (OCT, 8), 2015: (OCT, 27), 2016: (OCT, 16), 2017: (OCT, 5), 2018: (OCT, 24), 2019: (OCT, 13), 2020: (OCT, 31), 2021: (OCT, 20), 2022: (OCT, 9), 2023: (OCT, 28), 2024: (OCT, 17), 2025: (OCT, 7), 2026: (OCT, 26), 2027: (OCT, 15), 2028: (OCT, 3), 2029: (OCT, 22), 2030: (OCT, 11), 2031: (OCT, 30), 2032: (OCT, 18), 2033: (OCT, 8), 2034: (OCT, 27), 2035: (OCT, 17), } # https://web.archive.org/web/20250323040914/https://www.timeanddate.com/holidays/india/maha-shivaratri-shivaratri MAHA_SHIVARATRI_DATES = { 2001: (FEB, 21), 2002: (MAR, 12), 2003: (MAR, 1), 2004: (FEB, 18), 2005: (MAR, 8), 2006: (FEB, 26), 2007: (FEB, 16), 2008: (MAR, 6), 2009: (FEB, 23), 2010: (FEB, 12), 2011: (MAR, 2), 2012: (FEB, 20), 2013: (MAR, 10), 2014: (FEB, 27), 2015: (FEB, 17), 2016: (MAR, 7), 2017: (FEB, 24), 2018: (FEB, 13), 2019: (MAR, 4), 2020: (FEB, 21), 2021: (MAR, 11), 2022: (MAR, 1), 2023: (FEB, 18), 2024: (MAR, 8), 2025: (FEB, 26), 2026: (FEB, 15), 2027: (MAR, 6), 2028: (FEB, 23), 2029: (FEB, 11), 2030: (MAR, 2), 2031: (FEB, 20), 2032: (MAR, 10), 2033: (FEB, 27), 2034: (FEB, 17), 2035: (MAR, 8), } # https://web.archive.org/web/20250121194712/https://www.timeanddate.com/holidays/india/mahavir-jayanti MAHAVIR_JAYANTI_DATES = { 2001: (APR, 6), 2002: (APR, 25), 2003: (APR, 15), 2004: (APR, 3), 2005: (APR, 22), 2006: (APR, 11), 2007: (MAR, 31), 2008: (APR, 18), 2009: (APR, 7), 2010: (APR, 28), 2011: (APR, 16), 2012: (APR, 5), 2013: (APR, 24), 2014: (APR, 13), 2015: (APR, 2), 2016: (APR, 20), 2017: (APR, 9), 2018: (MAR, 29), 2019: (APR, 17), 2020: (APR, 6), 2021: (APR, 25), 2022: (APR, 14), 2023: (APR, 4), 2024: (APR, 21), 2025: (APR, 10), 2026: (MAR, 31), 2027: (APR, 18), 2028: (APR, 7), 2029: (APR, 26), 2030: (APR, 16), 2031: (APR, 5), 2032: (APR, 23), 2033: (APR, 12), 2034: (APR, 1), 2035: (APR, 20), } # https://web.archive.org/web/20250119043432/https://www.timeanddate.com/holidays/india/makar-sankranti MAKAR_SANKRANTI_DATES = { 2001: (JAN, 14), 2002: (JAN, 14), 2003: (JAN, 14), 2004: (JAN, 15), 2005: (JAN, 14), 2006: (JAN, 14), 2007: (JAN, 15), 2008: (JAN, 15), 2009: (JAN, 14), 2010: (JAN, 14), 2011: (JAN, 15), 2012: (JAN, 15), 2013: (JAN, 14), 2014: (JAN, 14), 2015: (JAN, 15), 2016: (JAN, 15), 2017: (JAN, 14), 2018: (JAN, 14), 2019: (JAN, 15), 2020: (JAN, 15), 2021: (JAN, 14), 2022: (JAN, 14), 2023: (JAN, 14), 2024: (JAN, 14), 2025: (JAN, 14), 2026: (JAN, 14), 2027: (JAN, 15), 2028: (JAN, 15), 2029: (JAN, 14), 2030: (JAN, 14), 2031: (JAN, 15), 2032: (JAN, 15), 2033: (JAN, 14), 2034: (JAN, 14), 2035: (JAN, 15), } # https://web.archive.org/web/20241205101551/https://www.timeanddate.com/holidays/india/onam ONAM_DATES = { 2001: (AUG, 31), 2002: (AUG, 21), 2003: (SEP, 8), 2004: (AUG, 28), 2005: (SEP, 15), 2006: (SEP, 5), 2007: (AUG, 26), 2008: (SEP, 12), 2009: (SEP, 2), 2010: (AUG, 23), 2011: (SEP, 9), 2012: (AUG, 29), 2013: (AUG, 20), 2014: (SEP, 6), 2015: (AUG, 28), 2016: (SEP, 13), 2017: (SEP, 4), 2018: (AUG, 24), 2019: (SEP, 11), 2020: (AUG, 31), 2021: (AUG, 21), 2022: (SEP, 8), 2023: (AUG, 29), 2024: (SEP, 15), 2025: (SEP, 5), 2026: (AUG, 26), 2027: (SEP, 12), 2028: (SEP, 1), 2029: (AUG, 22), 2030: (SEP, 9), 2031: (AUG, 30), 2032: (AUG, 20), 2033: (SEP, 6), 2034: (AUG, 28), 2035: (SEP, 14), } PONGAL_DATES = { 2001: (JAN, 14), 2002: (JAN, 14), 2003: (JAN, 15), 2004: (JAN, 15), 2005: (JAN, 14), 2006: (JAN, 14), 2007: (JAN, 15), 2008: (JAN, 15), 2009: (JAN, 14), 2010: (JAN, 14), 2011: (JAN, 15), 2012: (JAN, 15), 2013: (JAN, 14), 2014: (JAN, 14), 2015: (JAN, 15), 2016: (JAN, 15), 2017: (JAN, 14), 2018: (JAN, 14), 2019: (JAN, 15), 2020: (JAN, 15), 2021: (JAN, 14), 2022: (JAN, 14), 2023: (JAN, 15), 2024: (JAN, 15), 2025: (JAN, 14), 2026: (JAN, 14), 2027: (JAN, 15), 2028: (JAN, 15), 2029: (JAN, 14), 2030: (JAN, 14), 2031: (JAN, 15), 2032: (JAN, 15), 2033: (JAN, 14), 2034: (JAN, 14), 2035: (JAN, 15), } # https://web.archive.org/web/20240720191148/https://www.timeanddate.com/holidays/india/raksha-bandhan RAKSHA_BANDHAN_DATES = { 2001: (AUG, 4), 2002: (AUG, 22), 2003: (AUG, 12), 2004: (AUG, 29), 2005: (AUG, 19), 2006: (AUG, 9), 2007: (AUG, 28), 2008: (AUG, 16), 2009: (AUG, 5), 2010: (AUG, 24), 2011: (AUG, 13), 2012: (AUG, 2), 2013: (AUG, 20), 2014: (AUG, 10), 2015: (AUG, 29), 2016: (AUG, 18), 2017: (AUG, 7), 2018: (AUG, 26), 2019: (AUG, 15), 2020: (AUG, 3), 2021: (AUG, 22), 2022: (AUG, 11), 2023: (AUG, 30), 2024: (AUG, 19), 2025: (AUG, 9), 2026: (AUG, 28), 2027: (AUG, 17), 2028: (AUG, 5), 2029: (AUG, 23), 2030: (AUG, 13), 2031: (AUG, 2), 2032: (AUG, 20), 2033: (AUG, 10), 2034: (AUG, 29), 2035: (AUG, 18), } # https://web.archive.org/web/20250403054153/https://www.timeanddate.com/holidays/india/rama-navami RAM_NAVAMI_DATES = { 2001: (APR, 2), 2002: (APR, 21), 2003: (APR, 11), 2004: (MAR, 30), 2005: (APR, 18), 2006: (APR, 6), 2007: (MAR, 26), 2008: (APR, 13), 2009: (APR, 3), 2010: (MAR, 24), 2011: (APR, 12), 2012: (APR, 1), 2013: (APR, 19), 2014: (APR, 8), 2015: (MAR, 28), 2016: (APR, 15), 2017: (APR, 4), 2018: (MAR, 25), 2019: (APR, 13), 2020: (APR, 2), 2021: (APR, 21), 2022: (APR, 10), 2023: (MAR, 30), 2024: (APR, 17), 2025: (APR, 6), 2026: (MAR, 26), 2027: (APR, 15), 2028: (APR, 3), 2029: (APR, 22), 2030: (APR, 12), 2031: (APR, 1), 2032: (APR, 19), 2033: (APR, 7), 2034: (MAR, 28), 2035: (APR, 16), } # https://web.archive.org/web/20241202103625/https://www.timeanddate.com/holidays/india/navratri SHARAD_NAVRATRI_DATES = { 2001: (OCT, 17), 2002: (OCT, 7), 2003: (SEP, 26), 2004: (OCT, 14), 2005: (OCT, 4), 2006: (SEP, 23), 2007: (OCT, 12), 2008: (SEP, 30), 2009: (SEP, 19), 2010: (OCT, 8), 2011: (SEP, 28), 2012: (OCT, 16), 2013: (OCT, 5), 2014: (SEP, 25), 2015: (OCT, 13), 2016: (OCT, 1), 2017: (SEP, 21), 2018: (OCT, 10), 2019: (SEP, 29), 2020: (OCT, 17), 2021: (OCT, 7), 2022: (SEP, 26), 2023: (OCT, 15), 2024: (OCT, 3), 2025: (SEP, 22), 2026: (OCT, 11), 2027: (SEP, 30), 2028: (SEP, 19), 2029: (OCT, 8), 2030: (SEP, 28), 2031: (OCT, 17), 2032: (OCT, 5), 2033: (SEP, 24), 2034: (OCT, 13), 2035: (OCT, 2), } # https://web.archive.org/web/20241007171215/https://www.timeanddate.com/holidays/nepal/sonam-losar # https://web.archive.org/web/20250322000610/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://web.archive.org/web/20241207045124/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: (FEB, 3), 1902: (JAN, 24), 1903: (FEB, 12), 1904: (JAN, 31), 1905: (JAN, 20), 1906: (FEB, 8), 1907: (JAN, 28), 1908: (JAN, 18), 1909: (FEB, 5), 1910: (JAN, 25), 1911: (FEB, 13), 1912: (FEB, 2), 1913: (JAN, 21), 1914: (FEB, 9), 1915: (JAN, 29), 1916: (JAN, 19), 1917: (FEB, 6), 1918: (JAN, 27), 1919: (FEB, 15), 1920: (FEB, 4), 1921: (JAN, 23), 1922: (FEB, 11), 1923: (JAN, 31), 1924: (JAN, 20), 1925: (FEB, 7), 1926: (JAN, 28), 1927: (JAN, 18), 1928: (FEB, 6), 1929: (JAN, 25), 1930: (FEB, 13), 1931: (FEB, 2), 1932: (JAN, 22), 1933: (FEB, 9), 1934: (JAN, 29), 1935: (JAN, 19), 1936: (FEB, 7), 1937: (JAN, 27), 1938: (FEB, 14), 1939: (FEB, 3), 1940: (JAN, 23), 1941: (FEB, 10), 1942: (JAN, 31), 1943: (JAN, 20), 1944: (FEB, 8), 1945: (JAN, 28), 1946: (JAN, 17), 1947: (FEB, 5), 1948: (JAN, 25), 1949: (FEB, 12), 1950: (FEB, 1), 1951: (JAN, 22), 1952: (FEB, 10), 1953: (JAN, 29), 1954: (JAN, 19), 1955: (FEB, 7), 1956: (JAN, 27), 1957: (FEB, 14), 1958: (FEB, 3), 1959: (JAN, 23), 1960: (FEB, 11), 1961: (JAN, 31), 1962: (JAN, 20), 1963: (FEB, 8), 1964: (JAN, 29), 1965: (JAN, 17), 1966: (FEB, 4), 1967: (JAN, 25), 1968: (FEB, 13), 1969: (FEB, 1), 1970: (JAN, 22), 1971: (FEB, 10), 1972: (JAN, 30), 1973: (JAN, 18), 1974: (FEB, 6), 1975: (JAN, 26), 1976: (FEB, 14), 1977: (FEB, 2), 1978: (JAN, 23), 1979: (FEB, 11), 1980: (FEB, 1), 1981: (JAN, 20), 1982: (FEB, 8), 1983: (JAN, 28), 1984: (FEB, 16), 1985: (FEB, 4), 1986: (JAN, 24), 1987: (FEB, 12), 1988: (FEB, 2), 1989: (JAN, 22), 1990: (FEB, 10), 1991: (JAN, 30), 1992: (JAN, 19), 1993: (FEB, 6), 1994: (JAN, 26), 1995: (FEB, 14), 1996: (FEB, 3), 1997: (JAN, 23), 1998: (FEB, 11), 1999: (JAN, 31), 2000: (JAN, 21), 2001: (FEB, 7), 2002: (JAN, 27), 2003: (JAN, 17), 2004: (FEB, 5), 2005: (JAN, 24), 2006: (FEB, 12), 2007: (FEB, 2), 2008: (JAN, 22), 2009: (FEB, 9), 2010: (JAN, 29), 2011: (JAN, 18), 2012: (FEB, 6), 2013: (JAN, 26), 2014: (FEB, 14), 2015: (FEB, 3), 2016: (JAN, 24), 2017: (FEB, 11), 2018: (JAN, 31), 2019: (JAN, 20), 2020: (FEB, 8), 2021: (JAN, 27), 2022: (JAN, 17), 2023: (FEB, 5), 2024: (JAN, 25), 2025: (FEB, 12), 2026: (FEB, 2), 2027: (JAN, 22), 2028: (FEB, 9), 2029: (JAN, 29), 2030: (JAN, 18), 2031: (FEB, 6), 2032: (JAN, 27), 2033: (FEB, 14), 2034: (FEB, 3), 2035: (JAN, 23), 2036: (FEB, 11), 2037: (JAN, 30), 2038: (JAN, 19), 2039: (FEB, 7), 2040: (JAN, 28), 2041: (JAN, 17), 2042: (FEB, 5), 2043: (JAN, 25), 2044: (FEB, 13), 2045: (FEB, 1), 2046: (JAN, 21), 2047: (FEB, 9), 2048: (JAN, 29), 2049: (JAN, 18), 2050: (FEB, 6), 2051: (JAN, 27), 2052: (FEB, 15), 2053: (FEB, 3), 2054: (JAN, 23), 2055: (FEB, 11), 2056: (JAN, 31), 2057: (JAN, 19), 2058: (FEB, 7), 2059: (JAN, 28), 2060: (JAN, 18), 2061: (FEB, 4), 2062: (JAN, 25), 2063: (FEB, 12), 2064: (FEB, 1), 2065: (JAN, 21), 2066: (FEB, 9), 2067: (JAN, 29), 2068: (JAN, 19), 2069: (FEB, 6), 2070: (JAN, 26), 2071: (FEB, 14), 2072: (FEB, 3), 2073: (JAN, 22), 2074: (FEB, 10), 2075: (JAN, 31), 2076: (JAN, 20), 2077: (FEB, 7), 2078: (JAN, 28), 2079: (JAN, 17), 2080: (FEB, 5), 2081: (JAN, 24), 2082: (FEB, 12), 2083: (FEB, 1), 2084: (JAN, 22), 2085: (FEB, 9), 2086: (JAN, 29), 2087: (JAN, 19), 2088: (FEB, 7), 2089: (JAN, 26), 2090: (FEB, 13), 2091: (FEB, 3), 2092: (JAN, 23), 2093: (FEB, 10), 2094: (JAN, 31), 2095: (JAN, 20), 2096: (FEB, 8), 2097: (JAN, 27), 2098: (JAN, 16), 2099: (FEB, 4), 2100: (JAN, 24), } # https://web.archive.org/web/20250121194712/https://www.timeanddate.com/holidays/india/vaisakhi VAISAKHI_DATES = { 2001: (APR, 13), 2002: (APR, 14), 2003: (APR, 14), 2004: (APR, 13), 2005: (APR, 14), 2006: (APR, 14), 2007: (APR, 14), 2008: (APR, 13), 2009: (APR, 14), 2010: (APR, 14), 2011: (APR, 14), 2012: (APR, 13), 2013: (APR, 13), 2014: (APR, 14), 2015: (APR, 14), 2016: (APR, 13), 2017: (APR, 14), 2018: (APR, 14), 2019: (APR, 14), 2020: (APR, 13), 2021: (APR, 14), 2022: (APR, 14), 2023: (APR, 14), 2024: (APR, 13), 2025: (APR, 13), 2026: (APR, 14), 2027: (APR, 14), 2028: (APR, 13), 2029: (APR, 14), 2030: (APR, 14), 2031: (APR, 14), 2032: (APR, 13), 2033: (APR, 14), 2034: (APR, 14), 2035: (APR, 14), } def _get_holiday(self, holiday: str, year: int) -> tuple[date | None, bool]: estimated_dates = getattr(self, f"{holiday}_DATES", {}) exact_dates = getattr(self, f"{holiday}_DATES_{_CustomCalendar.CUSTOM_ATTR_POSTFIX}", {}) dt = exact_dates.get(year, estimated_dates.get(year, ())) return date(year, *dt) if dt else None, year not in exact_dates def _get_holiday_set(self, holiday: str, year: int) -> Iterable[tuple[date, bool]]: estimated_dates = getattr(self, f"{holiday}_DATES", {}) exact_dates = getattr(self, f"{holiday}_DATES_{_CustomCalendar.CUSTOM_ATTR_POSTFIX}", {}) for year in (year - 1, year): for dt in _normalize_tuple(exact_dates.get(year, estimated_dates.get(year, ()))): yield date(year, *dt), year not in exact_dates def bathukamma_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(BATHUKAMMA, year) def bonalu_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(BONALU, year) def buddha_purnima_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(BUDDHA_PURNIMA, year) def chhath_puja_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(CHHATH_PUJA, year) def diwali_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(DIWALI, year) def diwali_india_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(DIWALI_INDIA, year) def dussehra_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(DUSSEHRA, year) def ganesh_chaturthi_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(GANESH_CHATURTHI, year) def govardhan_puja_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(GOVARDHAN_PUJA, year) def gudi_padwa_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(GUDI_PADWA, year) def guru_gobind_singh_jayanti_date(self, year: int) -> Iterable[tuple[date, bool]]: return self._get_holiday_set(GURU_GOBIND_SINGH_JAYANTI, year) def guru_nanak_jayanti_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(GURU_NANAK_JAYANTI, year) def gyalpo_losar_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(GYALPO_LOSAR, year) def holi_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(HOLI, year) def pongal_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(PONGAL, year) def janmashtami_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(JANMASHTAMI, year) def maha_ashtami_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(MAHA_ASHTAMI, year) def maha_navami_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(MAHA_NAVAMI, year) def maha_shivaratri_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(MAHA_SHIVARATRI, year) def maharana_pratap_jayanti_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(MAHARANA_PRATAP_JAYANTI, year) def maharishi_valmiki_jayanti_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(MAHARISHI_VALMIKI_JAYANTI, year) def mahavir_jayanti_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(MAHAVIR_JAYANTI, year) def makar_sankranti_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(MAKAR_SANKRANTI, year) def onam_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(ONAM, year) def raksha_bandhan_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(RAKSHA_BANDHAN, year) def ram_navami_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(RAM_NAVAMI, year) def sharad_navratri_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(SHARAD_NAVRATRI, year) def sonam_losar_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(SONAM_LOSAR, year) def tamu_losar_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(TAMU_LOSAR, year) def thaipusam_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(THAIPUSAM, year) def vaisakhi_date(self, year: int) -> tuple[date | None, bool]: return self._get_holiday(VAISAKHI, year) class _CustomHinduHolidays(_CustomCalendar, _HinduLunisolar): pass