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.
- holidays/calendars/chinese.py +44 -6
- holidays/calendars/hindu.py +85 -1
- holidays/countries/bangladesh.py +13 -9
- holidays/countries/germany.py +75 -74
- holidays/countries/india.py +5 -3
- holidays/countries/united_states.py +55 -46
- holidays/financial/ny_stock_exchange.py +591 -89
- holidays/groups/chinese.py +11 -18
- holidays/groups/hindu.py +24 -0
- holidays/locale/bn/LC_MESSAGES/BD.mo +0 -0
- holidays/locale/de/LC_MESSAGES/DE.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/BD.mo +0 -0
- holidays/locale/en_US/LC_MESSAGES/DE.mo +0 -0
- holidays/locale/gu/LC_MESSAGES/IN.mo +0 -0
- holidays/locale/th/LC_MESSAGES/DE.mo +0 -0
- holidays/locale/uk/LC_MESSAGES/DE.mo +0 -0
- holidays/utils.py +10 -1
- holidays/version.py +1 -1
- {holidays-0.86.dist-info → holidays-0.87.dist-info}/METADATA +13 -6
- {holidays-0.86.dist-info → holidays-0.87.dist-info}/RECORD +24 -21
- {holidays-0.86.dist-info → holidays-0.87.dist-info}/licenses/CONTRIBUTORS +1 -0
- {holidays-0.86.dist-info → holidays-0.87.dist-info}/WHEEL +0 -0
- {holidays-0.86.dist-info → holidays-0.87.dist-info}/licenses/LICENSE +0 -0
- {holidays-0.86.dist-info → holidays-0.87.dist-info}/top_level.txt +0 -0
holidays/calendars/chinese.py
CHANGED
|
@@ -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
|
|
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
|
|
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 (
|
|
1435
|
+
return date(year, DEC, day), not (1901 <= year <= 2099)
|
|
1398
1436
|
|
|
1399
1437
|
|
|
1400
1438
|
class _CustomChineseHolidays(_CustomCalendar, _ChineseLunisolar):
|
holidays/calendars/hindu.py
CHANGED
|
@@ -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
|
|
holidays/countries/bangladesh.py
CHANGED
|
@@ -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
|
|
35
|
-
self._add_holiday_feb_21("
|
|
38
|
+
# Martyrs' Day and International Mother Language Day.
|
|
39
|
+
self._add_holiday_feb_21(tr("শহীদ দিবস ও আন্তর্জাতিক মাতৃভাষা দিবস"))
|
|
36
40
|
|
|
37
|
-
# Sheikh Mujibur Rahman's Birthday
|
|
38
|
-
self._add_holiday_mar_17("
|
|
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("
|
|
45
|
+
self._add_holiday_mar_26(tr("স্বাধীনতা দিবস"))
|
|
42
46
|
|
|
43
47
|
# Bengali New Year's Day.
|
|
44
|
-
self._add_holiday_apr_14("
|
|
48
|
+
self._add_holiday_apr_14(tr("পহেলা বৈশাখ"))
|
|
45
49
|
|
|
46
50
|
# May Day.
|
|
47
|
-
self._add_labor_day("
|
|
51
|
+
self._add_labor_day(tr("মে দিবস"))
|
|
48
52
|
|
|
49
53
|
# National Mourning Day.
|
|
50
|
-
self._add_holiday_aug_15("
|
|
54
|
+
self._add_holiday_aug_15(tr("জাতীয় শোক দিবস"))
|
|
51
55
|
|
|
52
56
|
# Victory Day.
|
|
53
|
-
self._add_holiday_dec_16("
|
|
57
|
+
self._add_holiday_dec_16(tr("বিজয় দিবস"))
|
|
54
58
|
|
|
55
59
|
|
|
56
60
|
class BD(Bangladesh):
|
holidays/countries/germany.py
CHANGED
|
@@ -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
|
-
* [
|
|
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
|
-
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
self._add_new_years_day(tr("Neujahr"))
|
|
107
|
+
# New Year's Day.
|
|
108
|
+
self._add_new_years_day(tr("Neujahr"))
|
|
96
109
|
|
|
97
|
-
|
|
98
|
-
|
|
110
|
+
# Good Friday.
|
|
111
|
+
self._add_good_friday(tr("Karfreitag"))
|
|
99
112
|
|
|
100
|
-
|
|
101
|
-
|
|
113
|
+
# Easter Monday.
|
|
114
|
+
self._add_easter_monday(tr("Ostermontag"))
|
|
102
115
|
|
|
103
|
-
|
|
104
|
-
|
|
116
|
+
# Labor Day.
|
|
117
|
+
self._add_labor_day(tr("Erster Mai"))
|
|
105
118
|
|
|
106
|
-
|
|
107
|
-
|
|
119
|
+
# Ascension Day.
|
|
120
|
+
self._add_ascension_thursday(tr("Christi Himmelfahrt"))
|
|
108
121
|
|
|
109
|
-
|
|
110
|
-
|
|
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
|
-
|
|
130
|
-
|
|
131
|
-
self._add_easter_sunday(tr("Ostersonntag"))
|
|
142
|
+
# Easter Sunday.
|
|
143
|
+
self._add_easter_sunday(tr("Ostersonntag"))
|
|
132
144
|
|
|
133
|
-
|
|
134
|
-
|
|
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
|
-
#
|
|
142
|
-
self._add_womens_day(tr("
|
|
153
|
+
# Women's Day.
|
|
154
|
+
self._add_womens_day(tr("Frauentag"))
|
|
143
155
|
|
|
144
156
|
def _populate_subdiv_bw_public_holidays(self):
|
|
145
|
-
|
|
146
|
-
|
|
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
|
-
|
|
150
|
-
|
|
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
|
-
|
|
157
|
-
|
|
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
|
-
|
|
161
|
-
|
|
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
|
-
|
|
168
|
-
|
|
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
|
-
|
|
178
|
-
|
|
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
|
-
#
|
|
189
|
-
self._add_womens_day(tr("
|
|
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
|
-
|
|
201
|
-
|
|
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
|
-
|
|
209
|
-
|
|
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
|
-
|
|
222
|
-
|
|
223
|
-
self._add_corpus_christi_day(tr("Fronleichnam"))
|
|
227
|
+
# Corpus Christi.
|
|
228
|
+
self._add_corpus_christi_day(tr("Fronleichnam"))
|
|
224
229
|
|
|
225
|
-
|
|
226
|
-
|
|
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
|
-
|
|
241
|
-
|
|
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
|
-
|
|
246
|
-
|
|
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
|
-
|
|
262
|
-
|
|
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
|
-
|
|
269
|
-
|
|
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):
|
holidays/countries/india.py
CHANGED
|
@@ -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.
|
|
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.
|
|
490
|
+
self._add_bathukamma(tr("Bathukamma Festival"))
|
|
489
491
|
# Ugadi.
|
|
490
492
|
self._add_gudi_padwa(tr("Ugadi"))
|
|
491
493
|
|