holidays 0.86__py3-none-any.whl → 0.87__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1306,21 +1306,39 @@ class _ChineseLunisolar:
1306
1306
  2053: (FEB, 18),
1307
1307
  }
1308
1308
 
1309
+ QINGMING_THRESHOLDS: dict[str, dict[str, dict[int, int]]] = {
1310
+ # UTC+7.
1311
+ VIETNAMESE_CALENDAR: {
1312
+ "apr_4": {0: 1972, 1: 2005, 2: 2038, 3: 2067},
1313
+ "apr_6": {2: 1906, 3: 1935},
1314
+ },
1315
+ # UTC+8.
1316
+ CHINESE_CALENDAR: {
1317
+ "apr_4": {0: 1976, 1: 2009, 2: 2042, 3: 2075},
1318
+ "apr_6": {2: 1910, 3: 1943},
1319
+ },
1320
+ # UTC+9.
1321
+ KOREAN_CALENDAR: {
1322
+ "apr_4": {0: 1984, 1: 2017, 2: 2046, 3: 2079},
1323
+ "apr_6": {2: 1914, 3: 1947},
1324
+ },
1325
+ }
1326
+
1309
1327
  WINTER_SOLSTICE_THRESHOLDS: dict[str, dict[str, dict[int, int]]] = {
1310
1328
  # UTC+7.
1311
1329
  VIETNAMESE_CALENDAR: {
1312
1330
  "dec_21": {0: 1980, 1: 2017, 2: 2050, 3: 2083},
1313
- "dec_23": {3: 1943},
1331
+ "dec_23": {2: 1910, 3: 1943},
1314
1332
  },
1315
1333
  # UTC+8.
1316
1334
  CHINESE_CALENDAR: {
1317
1335
  "dec_21": {0: 1988, 1: 2021, 2: 2058, 3: 2091},
1318
- "dec_23": {3: 1947},
1336
+ "dec_23": {2: 1914, 3: 1947},
1319
1337
  },
1320
1338
  # UTC+9.
1321
1339
  KOREAN_CALENDAR: {
1322
1340
  "dec_21": {0: 1992, 1: 2029, 2: 2062, 3: 2099},
1323
- "dec_23": {3: 1955},
1341
+ "dec_23": {2: 1918, 3: 1955},
1324
1342
  },
1325
1343
  }
1326
1344
 
@@ -1376,11 +1394,31 @@ class _ChineseLunisolar:
1376
1394
  def mid_autumn_date(self, year: int, calendar=None) -> tuple[date | None, bool]:
1377
1395
  return self._get_holiday(MID_AUTUMN, year, calendar)
1378
1396
 
1379
- def winter_solstice_date(self, year: int, calendar=None) -> tuple[date | None, bool]:
1397
+ def qingming_date(self, year: int, calendar=None) -> tuple[date, bool]:
1398
+ """Return Qingming Festival (5th solar term of the Chinese lunisolar calendar) date.
1399
+
1400
+ !!! note "Note"
1401
+ This approximation is reliable for 1901-2099 years.
1402
+ """
1403
+ calendar = calendar or self.__calendar
1404
+ self.__verify_calendar(calendar)
1405
+
1406
+ thresholds = self.QINGMING_THRESHOLDS[calendar]
1407
+ year_mod = year % 4
1408
+ if year >= thresholds["apr_4"][year_mod]:
1409
+ day = 4
1410
+ elif year <= thresholds["apr_6"].get(year_mod, 0):
1411
+ day = 6
1412
+ else:
1413
+ day = 5
1414
+
1415
+ return date(year, APR, day), not (1901 <= year <= 2099)
1416
+
1417
+ def winter_solstice_date(self, year: int, calendar=None) -> tuple[date, bool]:
1380
1418
  """Return Winter Solstice (22nd solar term in Chinese Lunisolar calendar) date.
1381
1419
 
1382
1420
  !!! note "Note"
1383
- This approximation is reliable for 1941-2099 years.
1421
+ This approximation is reliable for 1901-2099 years.
1384
1422
  """
1385
1423
  calendar = calendar or self.__calendar
1386
1424
  self.__verify_calendar(calendar)
@@ -1394,7 +1432,7 @@ class _ChineseLunisolar:
1394
1432
  else:
1395
1433
  day = 22
1396
1434
 
1397
- return date(year, DEC, day), not (1941 <= year <= 2099)
1435
+ return date(year, DEC, day), not (1901 <= year <= 2099)
1398
1436
 
1399
1437
 
1400
1438
  class _CustomChineseHolidays(_CustomCalendar, _ChineseLunisolar):
@@ -14,9 +14,10 @@ from collections.abc import Iterable
14
14
  from datetime import date
15
15
 
16
16
  from holidays.calendars.custom import _CustomCalendar
17
- from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, AUG, SEP, OCT, NOV, DEC
17
+ from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, AUG, SEP, OCT, NOV, DEC
18
18
  from holidays.helpers import _normalize_tuple
19
19
 
20
+ BATHUKAMMA = "BATHUKAMMA"
20
21
  BUDDHA_PURNIMA = "BUDDHA_PURNIMA"
21
22
  CHHATH_PUJA = "CHHATH_PUJA"
22
23
  DIWALI = "DIWALI"
@@ -32,6 +33,7 @@ HOLI = "HOLI"
32
33
  JANMASHTAMI = "JANMASHTAMI"
33
34
  MAHA_ASHTAMI = "MAHA_ASHTAMI"
34
35
  MAHA_NAVAMI = "MAHA_NAVAMI"
36
+ MAHARANA_PRATAP_JAYANTI = "MAHARANA_PRATAP_JAYANTI"
35
37
  MAHA_SHIVARATRI = "MAHA_SHIVARATRI"
36
38
  MAHAVIR_JAYANTI = "MAHAVIR_JAYANTI"
37
39
  MAKAR_SANKRANTI = "MAKAR_SANKRANTI"
@@ -47,6 +49,45 @@ VAISAKHI = "VAISAKHI"
47
49
 
48
50
 
49
51
  class _HinduLunisolar:
52
+ # Dates for Bathukamma (Mahalaya Amavasya/amavasya shraddha)
53
+ # [Mahalaya Amavasya](https://web.archive.org/web/20250906191235/https://www.drikpanchang.com/shraddha/tithi/amavasya-shraddha-date-time.html)
54
+ # [2018](https://web.archive.org/web/20250402131537/https://www.telangana.gov.in/Downloads/calendar-2018/)
55
+ # [2019](https://web.archive.org/web/20250508145651/https://www.telangana.gov.in/Downloads/calendar-2019/)
56
+ # [2020](https://web.archive.org/web/20250421174049/https://www.telangana.gov.in/downloads/calendar-2020/)
57
+ # [2021](https://web.archive.org/web/20250404142143/https://www.telangana.gov.in/Downloads/calendar-2021/)
58
+ # [2022](https://web.archive.org/web/20250217143857/https://www.telangana.gov.in/Downloads/calendar-2022/)
59
+ # [2023](https://web.archive.org/web/20250123180708/https://www.telangana.gov.in/Downloads/calendar-2023/)
60
+ # [2024](https://web.archive.org/web/20250217144536/https://www.telangana.gov.in/Downloads/calendar/)
61
+ # [2025](https://web.archive.org/web/20250217133450/https://www.telangana.gov.in/Downloads/calendar-2025/)
62
+ BATHUKAMMA_DATES = {
63
+ 2010: (OCT, 7),
64
+ 2011: (SEP, 27),
65
+ 2012: (OCT, 15),
66
+ 2013: (OCT, 4),
67
+ 2014: (SEP, 23),
68
+ 2015: (OCT, 12),
69
+ 2016: (SEP, 30),
70
+ 2017: (SEP, 19),
71
+ 2018: (OCT, 8),
72
+ 2019: (SEP, 28),
73
+ 2020: (OCT, 16),
74
+ 2021: (OCT, 6),
75
+ 2022: (SEP, 25),
76
+ 2023: (OCT, 14),
77
+ 2024: (OCT, 2),
78
+ 2025: (SEP, 21),
79
+ 2026: (OCT, 10),
80
+ 2027: (SEP, 29),
81
+ 2028: (SEP, 18),
82
+ 2029: (OCT, 7),
83
+ 2030: (SEP, 27),
84
+ 2031: (OCT, 15),
85
+ 2032: (OCT, 4),
86
+ 2033: (SEP, 23),
87
+ 2034: (OCT, 11),
88
+ 2035: (OCT, 1),
89
+ }
90
+
50
91
  # https://web.archive.org/web/20240804044401/https://www.timeanddate.com/holidays/india/buddha-purnima
51
92
  BUDDHA_PURNIMA_DATES = {
52
93
  2001: (APR, 30),
@@ -784,6 +825,43 @@ class _HinduLunisolar:
784
825
  2035: (OCT, 10),
785
826
  }
786
827
 
828
+ # Dates for Maharana Pratap Jayanti (Jyeshtha Shukla 3)
829
+ # [Maharana Pratap Jayanti](https://web.archive.org/web/20241212205537/https://www.drikpanchang.com/calendars/indian/jayanti/maharana-pratap/maharana-pratap-jayanti.html)
830
+ # [2018](https://web.archive.org/web/20251213153439/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_Holidays_2018_25102017.pdf)
831
+ # [2019](https://web.archive.org/web/20251213151532/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_Holidays_2019_02112018.pdf)
832
+ # [2020](https://web.archive.org/web/20251213151547/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_Holidays_2020_22112019.pdf)
833
+ # [2021](https://web.archive.org/web/20251213151616/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/holiday_calender_2021_gr6_26102020.pdf)
834
+ # [2022](https://web.archive.org/web/20251213151608/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_holidays_list_21_10_2021.pdf)
835
+ # [2023](https://web.archive.org/web/20251213151559/https://gad.rajasthan.gov.in/writereaddata/OLDWEBDATA/PDF/Govt_holidays_list_16_11_2022.pdf)
836
+ MAHARANA_PRATAP_JAYANTI_DATES = {
837
+ 2010: (JUN, 15),
838
+ 2011: (JUN, 4),
839
+ 2012: (MAY, 24),
840
+ 2013: (JUN, 11),
841
+ 2014: (MAY, 31),
842
+ 2015: (MAY, 20),
843
+ 2016: (JUN, 7),
844
+ 2017: (MAY, 28),
845
+ 2018: (JUN, 16),
846
+ 2019: (JUN, 6),
847
+ 2020: (MAY, 25),
848
+ 2021: (JUN, 13),
849
+ 2022: (JUN, 2),
850
+ 2023: (MAY, 22),
851
+ 2024: (JUN, 9),
852
+ 2025: (MAY, 29),
853
+ 2026: (JUN, 17),
854
+ 2027: (JUN, 7),
855
+ 2028: (MAY, 27),
856
+ 2029: (MAY, 15),
857
+ 2030: (JUN, 4),
858
+ 2031: (MAY, 24),
859
+ 2032: (JUN, 11),
860
+ 2033: (MAY, 31),
861
+ 2034: (MAY, 20),
862
+ 2035: (JUN, 8),
863
+ }
864
+
787
865
  # https://web.archive.org/web/20250323040914/https://www.timeanddate.com/holidays/india/maha-shivaratri-shivaratri
788
866
  MAHA_SHIVARATRI_DATES = {
789
867
  2001: (FEB, 21),
@@ -1408,6 +1486,9 @@ class _HinduLunisolar:
1408
1486
  for dt in _normalize_tuple(exact_dates.get(year, estimated_dates.get(year, ()))):
1409
1487
  yield date(year, *dt), year not in exact_dates
1410
1488
 
1489
+ def bathukamma_date(self, year: int) -> tuple[date | None, bool]:
1490
+ return self._get_holiday(BATHUKAMMA, year)
1491
+
1411
1492
  def buddha_purnima_date(self, year: int) -> tuple[date | None, bool]:
1412
1493
  return self._get_holiday(BUDDHA_PURNIMA, year)
1413
1494
 
@@ -1459,6 +1540,9 @@ class _HinduLunisolar:
1459
1540
  def maha_shivaratri_date(self, year: int) -> tuple[date | None, bool]:
1460
1541
  return self._get_holiday(MAHA_SHIVARATRI, year)
1461
1542
 
1543
+ def maharana_pratap_jayanti_date(self, year: int) -> tuple[date | None, bool]:
1544
+ return self._get_holiday(MAHARANA_PRATAP_JAYANTI, year)
1545
+
1462
1546
  def mahavir_jayanti_date(self, year: int) -> tuple[date | None, bool]:
1463
1547
  return self._get_holiday(MAHAVIR_JAYANTI, year)
1464
1548
 
@@ -10,6 +10,8 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
+ from gettext import gettext as tr
14
+
13
15
  from holidays.calendars.gregorian import FRI, SAT
14
16
  from holidays.groups import InternationalHolidays
15
17
  from holidays.holiday_base import HolidayBase
@@ -24,6 +26,8 @@ class Bangladesh(HolidayBase, InternationalHolidays):
24
26
  """
25
27
 
26
28
  country = "BD"
29
+ default_language = "bn"
30
+ supported_languages = ("bn", "en_US")
27
31
  weekend = {FRI, SAT}
28
32
 
29
33
  def __init__(self, *args, **kwargs):
@@ -31,26 +35,26 @@ class Bangladesh(HolidayBase, InternationalHolidays):
31
35
  super().__init__(*args, **kwargs)
32
36
 
33
37
  def _populate_public_holidays(self):
34
- # International Mother's language Day.
35
- self._add_holiday_feb_21("International Mother's language Day")
38
+ # Martyrs' Day and International Mother Language Day.
39
+ self._add_holiday_feb_21(tr("শহীদ দিবস আন্তর্জাতিক মাতৃভাষা দিবস"))
36
40
 
37
- # Sheikh Mujibur Rahman's Birthday and Children's Day.
38
- self._add_holiday_mar_17("Sheikh Mujibur Rahman's Birthday and Children's Day")
41
+ # Sheikh Mujibur Rahman's Birthday.
42
+ self._add_holiday_mar_17(tr("জাতির পিতা বঙ্গবন্ধু শেখ মুজিবুর রহমান এর জন্মদিবস"))
39
43
 
40
44
  # Independence Day.
41
- self._add_holiday_mar_26("Independence Day")
45
+ self._add_holiday_mar_26(tr("স্বাধীনতা দিবস"))
42
46
 
43
47
  # Bengali New Year's Day.
44
- self._add_holiday_apr_14("Bengali New Year's Day")
48
+ self._add_holiday_apr_14(tr("পহেলা বৈশাখ"))
45
49
 
46
50
  # May Day.
47
- self._add_labor_day("May Day")
51
+ self._add_labor_day(tr("মে দিবস"))
48
52
 
49
53
  # National Mourning Day.
50
- self._add_holiday_aug_15("National Mourning Day")
54
+ self._add_holiday_aug_15(tr("জাতীয় শোক দিবস"))
51
55
 
52
56
  # Victory Day.
53
- self._add_holiday_dec_16("Victory Day")
57
+ self._add_holiday_dec_16(tr("বিজয় দিবস"))
54
58
 
55
59
 
56
60
  class BD(Bangladesh):
@@ -21,25 +21,39 @@ from holidays.holiday_base import HolidayBase
21
21
  class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
22
22
  """Germany holidays.
23
23
 
24
- This class doesn't return any holidays before 1990-10-03.
25
-
26
- Before that date the current Germany was separated into the "German Democratic
27
- Republic" and the "Federal Republic of Germany" which both had somewhat
28
- different holidays. Since this class is called "Germany" it doesn't really
29
- make sense to include the days from the two former countries.
30
-
31
- "Mariä Himmelfahrt" is only a holiday in Bavaria (BY) and "Fronleichnam"
32
- in Saxony (SN) and Thuringia (TH) if municipality is mostly catholic which
33
- in term depends on census data. It's listed in "CATHOLIC" category for these provinces.
34
-
35
24
  References:
25
+ * <https://de.wikipedia.org/wiki/Feiertag_(Deutschland)>
36
26
  * <https://en.wikipedia.org/wiki/Public_holidays_in_Germany>
37
- * [Bavaria's Feiertagsgesetz](https://web.archive.org/web/20250724092008/https://www.gesetze-bayern.de/Content/Document/BayFTG-1)
27
+ * [German Unity Day](https://web.archive.org/web/20251011161644/https://www.gesetze-im-internet.de/einigvtr/art_2.html)
28
+
29
+ Subdivisions Holidays References:
30
+ * [Brandenburg](https://web.archive.org/web/20251002092001/https://bravors.brandenburg.de/gesetze/ftg_2015)
31
+ * [Berlin](https://web.archive.org/web/20250518234750/http://gesetze.berlin.de/bsbe/document/jlr-FeiertGBEV10P1)
32
+ * [Baden-Württemberg](https://web.archive.org/web/20240914215438/https://www.landesrecht-bw.de/bsbw/document/jlr-FeiertGBWpP1)
33
+ * [Bayern](https://web.archive.org/web/20250906201237/https://www.gesetze-bayern.de/Content/Document/BayFTG/true)
34
+ * [Bremen](https://web.archive.org/web/20240430101614/https://www.transparenz.bremen.de/metainformationen/gesetz-ueber-die-sonn-gedenk-und-feiertage-vom-12-november-1954-145882)
35
+ * [Hessen](https://web.archive.org/web/20250421183249/http://www.rv.hessenrecht.hessen.de/bshe/document/jlr-FeiertGHE1952rahmen)
36
+ * [Hamburg](https://web.archive.org/web/20250618110249/https://www.landesrecht-hamburg.de/bsha/document/jlr-FeiertGHAV3P1)
37
+ * [Mecklenburg-Vorpommern](https://web.archive.org/web/20250222090126/https://www.landesrecht-mv.de/bsmv/document/jlr-FTGMVV3P2)
38
+ * [Niedersachsen](https://web.archive.org/web/20250627100126/https://voris.wolterskluwer-online.de/browse/document/b724111b-6c20-3862-b111-589842acacba)
39
+ * [Nordrhein-Westfalen](https://web.archive.org/web/20250717194916/https://recht.nrw.de/lmi/owa/br_bes_detail?bes_id=3367&aufgehoben=N&det_id=144445&anw_nr=2&menu=1&sg=0)
40
+ * [Rheinland-Pfalz](https://web.archive.org/web/20250521153233/http://www.landesrecht.rlp.de/bsrp/document/jlr-FeiertGRPpP2)
41
+ * [Schleswig-Holstein](https://web.archive.org/web/20250812223916/https://www.gesetze-rechtsprechung.sh.juris.de/bssh/document/jlr-FeiertGSH2004V3P2)
42
+ * [Saarland](https://web.archive.org/web/20250124112139/http://recht.saarland.de/bssl/document/jlr-FeiertGSL1976V6P2)
43
+ * [Sachsen](https://web.archive.org/web/20250808020452/https://www.revosax.sachsen.de/vorschrift/3997-SaechsSFG)
44
+ * [Sachsen-Anhalt](https://web.archive.org/web/20250615214949/http://www.landesrecht.sachsen-anhalt.de/bsst/document/jlr-FeiertGSTpP2)
45
+ * [Thüringen](https://web.archive.org/web/20250712163548/http://landesrecht.thueringen.de/bsth/document/jlr-FeiertGTHV5P2)
46
+
47
+ !!! note "Note"
48
+ "Mariä Himmelfahrt" is only a holiday in Bavaria (BY) and "Fronleichnam"
49
+ in Saxony (SN) and Thuringia (TH) if municipality is mostly catholic which
50
+ in term depends on census data. It's listed in "CATHOLIC" category for these provinces.
38
51
  """
39
52
 
40
53
  country = "DE"
41
54
  default_language = "de"
42
- start_year = 1990
55
+ # Germany reunification was completed on Oct 3, 1990.
56
+ start_year = 1991
43
57
  subdivisions = (
44
58
  # States.
45
59
  "BB", # Brandenburg.
@@ -90,24 +104,23 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
90
104
  super().__init__(*args, **kwargs)
91
105
 
92
106
  def _populate_public_holidays(self):
93
- if self._year >= 1991:
94
- # New Year's Day.
95
- self._add_new_years_day(tr("Neujahr"))
107
+ # New Year's Day.
108
+ self._add_new_years_day(tr("Neujahr"))
96
109
 
97
- # Good Friday.
98
- self._add_good_friday(tr("Karfreitag"))
110
+ # Good Friday.
111
+ self._add_good_friday(tr("Karfreitag"))
99
112
 
100
- # Easter Monday.
101
- self._add_easter_monday(tr("Ostermontag"))
113
+ # Easter Monday.
114
+ self._add_easter_monday(tr("Ostermontag"))
102
115
 
103
- # Labor Day.
104
- self._add_labor_day(tr("Erster Mai"))
116
+ # Labor Day.
117
+ self._add_labor_day(tr("Erster Mai"))
105
118
 
106
- # Ascension Day.
107
- self._add_ascension_thursday(tr("Christi Himmelfahrt"))
119
+ # Ascension Day.
120
+ self._add_ascension_thursday(tr("Christi Himmelfahrt"))
108
121
 
109
- # Whit Monday.
110
- self._add_whit_monday(tr("Pfingstmontag"))
122
+ # Whit Monday.
123
+ self._add_whit_monday(tr("Pfingstmontag"))
111
124
 
112
125
  # German Unity Day.
113
126
  self._add_holiday_oct_3(tr("Tag der Deutschen Einheit"))
@@ -126,47 +139,43 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
126
139
  self._populate_subdiv_by_public_holidays()
127
140
 
128
141
  def _populate_subdiv_bb_public_holidays(self):
129
- if self._year >= 1991:
130
- # Easter Sunday.
131
- self._add_easter_sunday(tr("Ostersonntag"))
142
+ # Easter Sunday.
143
+ self._add_easter_sunday(tr("Ostersonntag"))
132
144
 
133
- # Whit Sunday.
134
- self._add_whit_sunday(tr("Pfingstsonntag"))
145
+ # Whit Sunday.
146
+ self._add_whit_sunday(tr("Pfingstsonntag"))
135
147
 
136
148
  # Reformation Day.
137
149
  self._add_holiday_oct_31(tr("Reformationstag"))
138
150
 
139
151
  def _populate_subdiv_be_public_holidays(self):
140
152
  if self._year >= 2019:
141
- # International Women's Day.
142
- self._add_womens_day(tr("Internationaler Frauentag"))
153
+ # Women's Day.
154
+ self._add_womens_day(tr("Frauentag"))
143
155
 
144
156
  def _populate_subdiv_bw_public_holidays(self):
145
- if self._year >= 1991:
146
- # Epiphany.
147
- self._add_epiphany_day(tr("Heilige Drei Könige"))
157
+ # Epiphany.
158
+ self._add_epiphany_day(tr("Heilige Drei Könige"))
148
159
 
149
- # Corpus Christi.
150
- self._add_corpus_christi_day(tr("Fronleichnam"))
160
+ # Corpus Christi.
161
+ self._add_corpus_christi_day(tr("Fronleichnam"))
151
162
 
152
163
  # All Saints' Day.
153
164
  self._add_all_saints_day(tr("Allerheiligen"))
154
165
 
155
166
  def _populate_subdiv_by_public_holidays(self):
156
- if self._year >= 1991:
157
- # Epiphany.
158
- self._add_epiphany_day(tr("Heilige Drei Könige"))
167
+ # Epiphany.
168
+ self._add_epiphany_day(tr("Heilige Drei Könige"))
159
169
 
160
- # Corpus Christi.
161
- self._add_corpus_christi_day(tr("Fronleichnam"))
170
+ # Corpus Christi.
171
+ self._add_corpus_christi_day(tr("Fronleichnam"))
162
172
 
163
173
  # All Saints' Day.
164
174
  self._add_all_saints_day(tr("Allerheiligen"))
165
175
 
166
176
  def _populate_subdiv_by_catholic_holidays(self):
167
- if self._year >= 1991:
168
- # Assumption Day.
169
- self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
177
+ # Assumption Day.
178
+ self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
170
179
 
171
180
  def _populate_subdiv_hb_public_holidays(self):
172
181
  if self._year >= 2018:
@@ -174,9 +183,8 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
174
183
  self._add_holiday_oct_31(tr("Reformationstag"))
175
184
 
176
185
  def _populate_subdiv_he_public_holidays(self):
177
- if self._year >= 1991:
178
- # Corpus Christi.
179
- self._add_corpus_christi_day(tr("Fronleichnam"))
186
+ # Corpus Christi.
187
+ self._add_corpus_christi_day(tr("Fronleichnam"))
180
188
 
181
189
  def _populate_subdiv_hh_public_holidays(self):
182
190
  if self._year >= 2018:
@@ -185,8 +193,8 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
185
193
 
186
194
  def _populate_subdiv_mv_public_holidays(self):
187
195
  if self._year >= 2023:
188
- # International Women's Day.
189
- self._add_womens_day(tr("Internationaler Frauentag"))
196
+ # Women's Day.
197
+ self._add_womens_day(tr("Frauentag"))
190
198
 
191
199
  # Reformation Day.
192
200
  self._add_holiday_oct_31(tr("Reformationstag"))
@@ -197,17 +205,15 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
197
205
  self._add_holiday_oct_31(tr("Reformationstag"))
198
206
 
199
207
  def _populate_subdiv_nw_public_holidays(self):
200
- if self._year >= 1991:
201
- # Corpus Christi.
202
- self._add_corpus_christi_day(tr("Fronleichnam"))
208
+ # Corpus Christi.
209
+ self._add_corpus_christi_day(tr("Fronleichnam"))
203
210
 
204
211
  # All Saints' Day.
205
212
  self._add_all_saints_day(tr("Allerheiligen"))
206
213
 
207
214
  def _populate_subdiv_rp_public_holidays(self):
208
- if self._year >= 1991:
209
- # Corpus Christi.
210
- self._add_corpus_christi_day(tr("Fronleichnam"))
215
+ # Corpus Christi.
216
+ self._add_corpus_christi_day(tr("Fronleichnam"))
211
217
 
212
218
  # All Saints' Day.
213
219
  self._add_all_saints_day(tr("Allerheiligen"))
@@ -218,12 +224,11 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
218
224
  self._add_holiday_oct_31(tr("Reformationstag"))
219
225
 
220
226
  def _populate_subdiv_sl_public_holidays(self):
221
- if self._year >= 1991:
222
- # Corpus Christi.
223
- self._add_corpus_christi_day(tr("Fronleichnam"))
227
+ # Corpus Christi.
228
+ self._add_corpus_christi_day(tr("Fronleichnam"))
224
229
 
225
- # Assumption Day.
226
- self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
230
+ # Assumption Day.
231
+ self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
227
232
 
228
233
  # All Saints' Day.
229
234
  self._add_all_saints_day(tr("Allerheiligen"))
@@ -237,14 +242,12 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
237
242
  self._add_holiday_1st_wed_before_nov_22(tr("Buß- und Bettag"))
238
243
 
239
244
  def _populate_subdiv_sn_catholic_holidays(self):
240
- if self._year >= 1991:
241
- # Corpus Christi.
242
- self._add_corpus_christi_day(tr("Fronleichnam"))
245
+ # Corpus Christi.
246
+ self._add_corpus_christi_day(tr("Fronleichnam"))
243
247
 
244
248
  def _populate_subdiv_st_public_holidays(self):
245
- if self._year >= 1991:
246
- # Epiphany.
247
- self._add_epiphany_day(tr("Heilige Drei Könige"))
249
+ # Epiphany.
250
+ self._add_epiphany_day(tr("Heilige Drei Könige"))
248
251
 
249
252
  # Reformation Day.
250
253
  self._add_holiday_oct_31(tr("Reformationstag"))
@@ -258,16 +261,14 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
258
261
  self._add_holiday_oct_31(tr("Reformationstag"))
259
262
 
260
263
  def _populate_subdiv_th_catholic_holidays(self):
261
- if self._year >= 1991:
262
- # Corpus Christi.
263
- self._add_corpus_christi_day(tr("Fronleichnam"))
264
+ # Corpus Christi.
265
+ self._add_corpus_christi_day(tr("Fronleichnam"))
264
266
 
265
267
  def _populate_subdiv_augsburg_public_holidays(self):
266
268
  self._populate_subdiv_by_public_holidays()
267
269
 
268
- if self._year >= 1991:
269
- # Augsburg Peace Festival.
270
- self._add_holiday_aug_8(tr("Augsburger Hohes Friedensfest"))
270
+ # Augsburg Peace Festival.
271
+ self._add_holiday_aug_8(tr("Augsburger Hohes Friedensfest"))
271
272
 
272
273
 
273
274
  class DE(Germany):
@@ -37,6 +37,8 @@ class India(
37
37
  * <https://web.archive.org/web/20250413193633/https://www.calendarlabs.com/holidays/india/2021>
38
38
  * <https://web.archive.org/web/20231118175007/http://slusi.dacnet.nic.in/watershedatlas/list_of_state_abbreviation.htm>
39
39
  * <https://web.archive.org/web/20231008063930/https://vahan.parivahan.gov.in/vahan4dashboard/>
40
+ * Gujarat:
41
+ * <https://gad.gujarat.gov.in/personnel/Images/pdf/general_holidays_2026_guj.pdf>
40
42
  * Tamil Nadu:
41
43
  * [Tamil Monthly Calendar](https://web.archive.org/web/20231228103352/https://www.tamildailycalendar.com/tamil_monthly_calendar.php)
42
44
  * [Tamil Calendar](https://web.archive.org/web/20250429125140/https://www.prokerala.com/general/calendar/tamilcalendar.php)
@@ -144,7 +146,7 @@ class India(
144
146
  "West Bengal": "WB",
145
147
  }
146
148
  supported_categories = (OPTIONAL, PUBLIC)
147
- supported_languages = ("en_IN", "en_US", "hi")
149
+ supported_languages = ("en_IN", "en_US", "gu", "hi")
148
150
  _deprecated_subdivisions = (
149
151
  "DD", # Daman and Diu.
150
152
  "OR", # Orissa.
@@ -456,7 +458,7 @@ class India(
456
458
  # Dr. B. R. Ambedkar Jayanti.
457
459
  self._add_holiday_apr_14(tr("Dr. B. R. Ambedkar's Jayanti"))
458
460
  # Maharana Pratap Jayanti.
459
- self._add_holiday_jun_15(tr("Maharana Pratap Jayanti"))
461
+ self._add_maharana_pratap_jayanti(tr("Maharana Pratap Jayanti"))
460
462
 
461
463
  # Sikkim.
462
464
  def _populate_subdiv_sk_public_holidays(self):
@@ -485,7 +487,7 @@ class India(
485
487
  # Telangana Formation Day.
486
488
  self._add_holiday_jun_2(tr("Telangana Formation Day"))
487
489
  # Bathukamma Festival.
488
- self._add_holiday_oct_6(tr("Bathukamma Festival"))
490
+ self._add_bathukamma(tr("Bathukamma Festival"))
489
491
  # Ugadi.
490
492
  self._add_gudi_padwa(tr("Ugadi"))
491
493