Files
Time-Series-Analysis/venv/lib/python3.11/site-packages/holidays/countries/india.py
2025-08-01 04:33:03 -04:00

628 lines
20 KiB
Python

# 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)
import warnings
from gettext import gettext as tr
from holidays.calendars import _CustomIslamicHolidays
from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
from holidays.constants import OPTIONAL, PUBLIC
from holidays.groups import (
ChristianHolidays,
HinduCalendarHolidays,
InternationalHolidays,
IslamicHolidays,
)
from holidays.holiday_base import HolidayBase
class India(
HolidayBase, ChristianHolidays, HinduCalendarHolidays, InternationalHolidays, IslamicHolidays
):
"""India holidays.
References:
* <https://web.archive.org/web/20250413193616/https://www.india.gov.in/calendar>
* <https://web.archive.org/web/20250413193624/https://www.india.gov.in/state-and-ut-holiday-calendar>
* <https://en.wikipedia.org/wiki/Public_holidays_in_India>
* <https://web.archive.org/web/20250413193633/https://www.calendarlabs.com/holidays/india/2021>
* <https://web.archive.org/web/20231118175007/http://slusi.dacnet.nic.in/watershedatlas/list_of_state_abbreviation.htm>
* <https://web.archive.org/web/20231008063930/https://vahan.parivahan.gov.in/vahan4dashboard/>
* Tamil Nadu:
* [Tamil Monthly Calendar](https://web.archive.org/web/20231228103352/https://www.tamildailycalendar.com/tamil_monthly_calendar.php)
* [Tamil Calendar](https://web.archive.org/web/20250429125140/https://www.prokerala.com/general/calendar/tamilcalendar.php)
"""
country = "IN"
default_language = "en_IN"
# %s (estimated).
estimated_label = tr("%s (estimated)")
# India gained independence on August 15, 1947.
start_year = 1948
subdivisions = (
"AN", # Andaman and Nicobar Islands.
"AP", # Andhra Pradesh.
"AR", # Arunachal Pradesh (Arunāchal Pradesh).
"AS", # Assam.
"BR", # Bihar (Bihār).
"CG", # Chhattisgarh (Chhattīsgarh).
"CH", # Chandigarh (Chandīgarh).
"DH", # Dadra and Nagar Haveli and Daman and Diu(Dādra and Nagar Haveli and Damān and Diu)
"DL", # Delhi.
"GA", # Goa.
"GJ", # Gujarat (Gujarāt).
"HP", # Himachal Pradesh (Himāchal Pradesh).
"HR", # Haryana (Haryāna).
"JH", # Jharkhand (Jhārkhand).
"JK", # Jammu and Kashmir (Jammu and Kashmīr).
"KA", # Karnataka (Karnātaka).
"KL", # Kerala.
"LA", # Ladakh (Ladākh).
"LD", # Lakshadweep.
"MH", # Maharashtra (Mahārāshtra).
"ML", # Meghalaya (Meghālaya).
"MN", # Manipur.
"MP", # Madhya Pradesh.
"MZ", # Mizoram.
"NL", # Nagaland (Nāgāland).
"OD", # Odisha.
"PB", # Punjab.
"PY", # Puducherry.
"RJ", # Rajasthan (Rājasthān).
"SK", # Sikkim.
"TN", # Tamil Nadu (Tamil Nādu).
"TR", # Tripura.
"TS", # Telangana (Telangāna).
"UK", # Uttarakhand (Uttarākhand).
"UP", # Uttar Pradesh.
"WB", # West Bengal.
)
subdivisions_aliases = {
"Andaman and Nicobar Islands": "AN",
"Andhra Pradesh": "AP",
"Arunachal Pradesh": "AR",
"Arunāchal Pradesh": "AR",
"Assam": "AS",
"Bihar": "BR",
"Bihār": "BR",
"Chhattisgarh": "CG",
"Chhattīsgarh": "CG",
"Chandigarh": "CH",
"Chandīgarh": "CH",
"Dadra and Nagar Haveli and Daman and Diu": "DH",
"Dādra and Nagar Haveli and Damān and Diu": "DH",
"Delhi": "DL",
"Goa": "GA",
"Gujarat": "GJ",
"Gujarāt": "GJ",
"Himachal Pradesh": "HP",
"Himāchal Pradesh": "HP",
"Haryana": "HR",
"Haryāna": "HR",
"Jharkhand": "JH",
"Jhārkhand": "JH",
"Jammu and Kashmir": "JK",
"Jammu and Kashmīr": "JK",
"Karnataka": "KA",
"Karnātaka": "KA",
"Kerala": "KL",
"Ladakh": "LA",
"Ladākh": "LA",
"Lakshadweep": "LD",
"Maharashtra": "MH",
"Mahārāshtra": "MH",
"Meghalaya": "ML",
"Meghālaya": "ML",
"Manipur": "MN",
"Madhya Pradesh": "MP",
"Mizoram": "MZ",
"Nagaland": "NL",
"Nāgāland": "NL",
"Odisha": "OD",
"Punjab": "PB",
"Puducherry": "PY",
"Rajasthan": "RJ",
"Rājasthān": "RJ",
"Sikkim": "SK",
"Tamil Nadu": "TN",
"Tamil Nādu": "TN",
"Tripura": "TR",
"Telangana": "TS",
"Telangāna": "TS",
"Uttarakhand": "UK",
"Uttarākhand": "UK",
"Uttar Pradesh": "UP",
"West Bengal": "WB",
}
supported_categories = (OPTIONAL, PUBLIC)
supported_languages = ("en_IN", "en_US", "hi")
_deprecated_subdivisions = (
"DD", # Daman and Diu.
"OR", # Orissa.
)
def __init__(self, *args, islamic_show_estimated: bool = True, **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)
IslamicHolidays.__init__(
self, cls=IndiaIslamicHolidays, show_estimated=islamic_show_estimated
)
InternationalHolidays.__init__(self)
super().__init__(*args, **kwargs)
def _populate_public_holidays(self):
if self._year >= 1950:
# Republic Day.
self._add_holiday_jan_26(tr("Republic Day"))
# Independence Day.
self._add_holiday_aug_15(tr("Independence Day"))
# Gandhi Jayanti.
self._add_holiday_oct_2(tr("Gandhi Jayanti"))
# Hindu Holidays.
if self._year < 2001 or self._year > 2035:
warning_msg = "Requested Holidays are available only from 2001 to 2035."
warnings.warn(warning_msg, Warning)
# Buddha Purnima.
self._add_buddha_purnima(tr("Buddha Purnima"))
# Diwali.
self._add_diwali_india(tr("Diwali"))
# Janmashtami.
self._add_janmashtami(tr("Janmashtami"))
# Dussehra.
self._add_dussehra(tr("Dussehra"))
# Mahavir Jayanti.
self._add_mahavir_jayanti(tr("Mahavir Jayanti"))
# Maha Shivaratri.
self._add_maha_shivaratri(tr("Maha Shivaratri"))
# Guru Nanak Jayanti.
self._add_guru_nanak_jayanti(tr("Guru Nanak Jayanti"))
# Islamic holidays.
# Ashura.
self._add_ashura_day(tr("Muharram"))
# Prophet's Birthday.
self._add_mawlid_day(tr("Milad-un-Nabi"))
# Eid al-Fitr.
self._add_eid_al_fitr_day(tr("Id-ul-Fitr"))
# Eid al-Adha.
self._add_eid_al_adha_day(tr("Bakrid"))
# Christian holidays.
# Good Friday.
self._add_good_friday(tr("Good Friday"))
# Christmas.
self._add_christmas_day(tr("Christmas"))
if self.subdiv == "OR":
self._populate_subdiv_od_public_holidays()
def _populate_optional_holidays(self):
# Hindu holidays.
# Children's Day.
self._add_holiday_nov_14(tr("Children's Day"))
# Holi.
self._add_holi(tr("Holi"))
# Ganesh Chaturthi.
self._add_ganesh_chaturthi(tr("Ganesh Chaturthi"))
# Govardhan Puja.
self._add_govardhan_puja(tr("Govardhan Puja"))
# Labor Day.
self._add_labor_day(tr("Labour Day"))
# Maha Navami.
self._add_maha_navami(tr("Maha Navami"))
# Makar Sankranti.
self._add_makar_sankranti(tr("Makar Sankranti"))
# Raksha Bandhan.
self._add_raksha_bandhan(tr("Raksha Bandhan"))
# Ram Navami.
self._add_ram_navami(tr("Ram Navami"))
# Navratri / Sharad Navratri.
self._add_sharad_navratri(tr("Navratri / Sharad Navratri"))
# Christian holidays.
# Easter Sunday.
self._add_easter_sunday(tr("Easter Sunday"))
# Palm Sunday.
self._add_palm_sunday(tr("Palm Sunday"))
# Andaman and Nicobar Islands.
def _populate_subdiv_an_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Andhra Pradesh.
def _populate_subdiv_ap_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Andhra Pradesh Foundation Day.
self._add_holiday_nov_1(tr("Andhra Pradesh Foundation Day"))
# Assam.
def _populate_subdiv_as_public_holidays(self):
# Magh Bihu.
self._add_makar_sankranti(tr("Magh Bihu"))
# Assam Day.
self._add_holiday_dec_2(tr("Assam Day"))
# Bihar.
def _populate_subdiv_br_public_holidays(self):
# Chhath Puja.
self._add_chhath_puja(tr("Chhath Puja"))
# Bihar Day.
self._add_holiday_mar_22(tr("Bihar Day"))
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Chandigarh.
def _populate_subdiv_ch_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Chhattisgarh.
def _populate_subdiv_cg_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Chhattisgarh Foundation Day.
self._add_holiday_nov_1(tr("Chhattisgarh Foundation Day"))
# Delhi.
def _populate_subdiv_dl_public_holidays(self):
# Chhath Puja.
self._add_chhath_puja(tr("Chhath Puja"))
# Goa.
def _populate_subdiv_ga_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Goa Liberation Day.
self._add_holiday_dec_19(tr("Goa Liberation Day"))
# Gujarat.
def _populate_subdiv_gj_public_holidays(self):
# Makar Sankranti.
self._add_makar_sankranti(tr("Uttarayan"))
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Gujarat Day.
self._add_holiday_may_1(tr("Gujarat Day"))
# Sardar Vallabhbhai Patel Jayanti.
self._add_holiday_oct_31(tr("Sardar Vallabhbhai Patel Jayanti"))
# Haryana.
def _populate_subdiv_hr_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Haryana Foundation Day.
self._add_holiday_nov_1(tr("Haryana Foundation Day"))
# Himachal Pradesh.
def _populate_subdiv_hp_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Himachal Day.
self._add_holiday_apr_15(tr("Himachal Day"))
# Jammu and Kashmir
def _populate_subdiv_jk_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Jharkhand.
def _populate_subdiv_jh_public_holidays(self):
# Chhath Puja.
self._add_chhath_puja(tr("Chhath Puja"))
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Jharkhand Formation Day.
self._add_holiday_nov_15(tr("Jharkhand Formation Day"))
# Karnataka.
def _populate_subdiv_ka_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Karnataka Rajyotsav.
self._add_holiday_nov_1(tr("Karnataka Rajyotsava"))
# Kerala.
def _populate_subdiv_kl_public_holidays(self):
# Onam.
self._add_onam(tr("Onam"))
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Kerala Foundation Day.
self._add_holiday_nov_1(tr("Kerala Foundation Day"))
# Ladakh.
def _populate_subdiv_la_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Maharashtra.
def _populate_subdiv_mh_public_holidays(self):
# Gudi Padwa.
self._add_gudi_padwa(tr("Gudi Padwa"))
# Chhatrapati Shivaji Maharaj Jayanti.
self._add_holiday_feb_19(tr("Chhatrapati Shivaji Maharaj Jayanti"))
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Maharashtra Day.
self._add_holiday_may_1(tr("Maharashtra Day"))
# Madhya Pradesh.
def _populate_subdiv_mp_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Madhya Pradesh Foundation Day.
self._add_holiday_nov_1(tr("Madhya Pradesh Foundation Day"))
# Mizoram.
def _populate_subdiv_mz_public_holidays(self):
# Mizoram State Day.
self._add_holiday_feb_20(tr("Mizoram State Day"))
# Nagaland.
def _populate_subdiv_nl_public_holidays(self):
# Nagaland State Inauguration Day.
self._add_holiday_dec_1(tr("Nagaland State Inauguration Day"))
# Orissa / Odisha.
def _populate_subdiv_od_public_holidays(self):
# Odisha Day.
self._add_holiday_apr_1(tr("Odisha Day (Utkala Dibasa)"))
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Maha Vishuva Sankranti.
self._add_holiday_apr_15(tr("Maha Vishuva Sankranti / Pana Sankranti"))
# Puducherry.
def _populate_subdiv_py_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Puducherry De Jure Transfer Day.
self._add_holiday_aug_16(tr("Puducherry De Jure Transfer Day"))
# Puducherry Liberation Day.
self._add_holiday_nov_1(tr("Puducherry Liberation Day"))
# Punjab.
def _populate_subdiv_pb_public_holidays(self):
# Guru Gobind Singh Jayanti.
self._add_guru_gobind_singh_jayanti(tr("Guru Gobind Singh Jayanti"))
# Vaisakhi.
self._add_vaisakhi(tr("Vaisakhi"))
# Lohri.
self._add_holiday_jan_13(tr("Lohri"))
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Punjabi Day.
self._add_holiday_nov_1(tr("Punjab Day"))
# Rajasthan.
def _populate_subdiv_rj_public_holidays(self):
# Rajasthan Day.
self._add_holiday_mar_30(tr("Rajasthan Day"))
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Maharana Pratap Jayanti.
self._add_holiday_jun_15(tr("Maharana Pratap Jayanti"))
# Sikkim.
def _populate_subdiv_sk_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Sikkim State Day.
self._add_holiday_may_16(tr("Sikkim State Day"))
# Tamil Nadu.
def _populate_subdiv_tn_public_holidays(self):
# Pongal.
self._add_pongal(tr("Pongal"))
# Thiruvalluvar Day / Mattu Pongal.
self._add_thiruvalluvar_day(tr("Thiruvalluvar Day / Mattu Pongal"))
# Uzhavar Thirunal.
self._add_uzhavar_thirunal(tr("Uzhavar Thirunal"))
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Puthandu.
self._add_holiday_apr_14(tr("Puthandu (Tamil New Year)"))
# Telangana.
def _populate_subdiv_ts_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Telangana Formation Day.
self._add_holiday_jun_2(tr("Telangana Formation Day"))
# Bathukamma Festival.
self._add_holiday_oct_6(tr("Bathukamma Festival"))
# Uttarakhand.
def _populate_subdiv_uk_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Uttar Pradesh.
def _populate_subdiv_up_public_holidays(self):
# Chhath Puja.
self._add_chhath_puja(tr("Chhath Puja"))
# UP Formation Day.
self._add_holiday_jan_24(tr("UP Formation Day"))
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# West Bengal.
def _populate_subdiv_wb_public_holidays(self):
# Dr. B. R. Ambedkar Jayanti.
self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
# Pohela Boisakh.
self._add_holiday_apr_15(tr("Pohela Boishakh"))
# Rabindra Jayanti.
self._add_holiday_may_9(tr("Rabindra Jayanti"))
class IndiaIslamicHolidays(_CustomIslamicHolidays):
# Muharram / Day of Ashura.
ASHURA_DATES = {
2001: (APR, 4),
2002: (MAR, 24),
2003: (MAR, 14),
2004: (MAR, 2),
2005: (FEB, 19),
2006: (FEB, 9),
2007: (JAN, 30),
2008: (JAN, 19),
2009: ((JAN, 7), (DEC, 28)),
2010: (DEC, 17),
2011: (DEC, 6),
2012: (NOV, 25),
2013: (NOV, 14),
2014: (NOV, 4),
2015: (OCT, 24),
2016: (OCT, 12),
2017: (OCT, 1),
2018: (SEP, 21),
2019: (SEP, 10),
2020: (AUG, 30),
2021: (AUG, 20),
2022: (AUG, 9),
2023: (JUL, 29),
2024: (JUL, 17),
2025: (JUL, 6),
}
# Bakrid / Eid-al-Adha.
EID_AL_ADHA_DATES = {
2001: (MAR, 6),
2002: (FEB, 23),
2003: (FEB, 12),
2004: (FEB, 2),
2005: (JAN, 21),
2006: ((JAN, 11), (DEC, 31)),
2007: (DEC, 20),
2008: (DEC, 9),
2009: (NOV, 28),
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 = {
2001: (DEC, 17),
2002: (DEC, 6),
2003: (NOV, 26),
2004: (NOV, 14),
2005: (NOV, 3),
2006: (OCT, 24),
2007: (OCT, 13),
2008: (OCT, 2),
2009: (SEP, 21),
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),
}
# Milad-un-Nabi / Mawlid.
MAWLID_DATES = {
2001: (JUN, 5),
2002: (MAY, 25),
2003: (MAY, 15),
2004: (MAY, 3),
2005: (APR, 22),
2006: (APR, 11),
2007: (APR, 1),
2008: (MAR, 21),
2009: (MAR, 9),
2010: (FEB, 27),
2011: (FEB, 16),
2012: (FEB, 5),
2013: (JAN, 25),
2014: (JAN, 14),
2015: ((JAN, 4), (DEC, 25)),
2016: (DEC, 13),
2017: (DEC, 2),
2018: (NOV, 21),
2019: (NOV, 10),
2020: (OCT, 30),
2021: (OCT, 19),
2022: (OCT, 9),
2023: (SEP, 28),
2024: (SEP, 16),
2025: (SEP, 5),
}
class IN(India):
pass
class IND(India):
pass