holidays 0.83__py3-none-any.whl → 0.85__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.
Files changed (112) hide show
  1. holidays/__init__.py +0 -2
  2. holidays/calendars/__init__.py +0 -2
  3. holidays/calendars/balinese_saka.py +2 -3
  4. holidays/calendars/buddhist.py +3 -4
  5. holidays/calendars/burmese.py +9 -10
  6. holidays/calendars/chinese.py +8 -9
  7. holidays/calendars/hebrew.py +10 -11
  8. holidays/calendars/hindu.py +27 -28
  9. holidays/calendars/mandaean.py +2 -3
  10. holidays/calendars/mongolian.py +4 -5
  11. holidays/calendars/persian.py +2 -3
  12. holidays/calendars/sinhala.py +25 -14
  13. holidays/calendars/thai.py +13 -14
  14. holidays/calendars/tibetan.py +12 -13
  15. holidays/constants.py +0 -2
  16. holidays/countries/__init__.py +0 -2
  17. holidays/countries/aland_islands.py +4 -4
  18. holidays/countries/american_samoa.py +4 -4
  19. holidays/countries/angola.py +1 -2
  20. holidays/countries/austria.py +1 -1
  21. holidays/countries/azerbaijan.py +2 -0
  22. holidays/countries/china.py +10 -1
  23. holidays/countries/ecuador.py +12 -4
  24. holidays/countries/french_guiana.py +4 -4
  25. holidays/countries/french_polynesia.py +4 -4
  26. holidays/countries/french_southern_territories.py +4 -4
  27. holidays/countries/guadeloupe.py +4 -4
  28. holidays/countries/guam.py +4 -4
  29. holidays/countries/guernsey.py +1 -2
  30. holidays/countries/italy.py +2 -2
  31. holidays/countries/jersey.py +1 -2
  32. holidays/countries/malta.py +1 -1
  33. holidays/countries/marshall_islands.py +8 -6
  34. holidays/countries/martinique.py +4 -4
  35. holidays/countries/mauritania.py +2 -4
  36. holidays/countries/mayotte.py +4 -4
  37. holidays/countries/new_caledonia.py +4 -4
  38. holidays/countries/northern_mariana_islands.py +4 -4
  39. holidays/countries/portugal.py +6 -3
  40. holidays/countries/puerto_rico.py +4 -4
  41. holidays/countries/reunion.py +4 -4
  42. holidays/countries/saint_barthelemy.py +4 -4
  43. holidays/countries/saint_martin.py +4 -4
  44. holidays/countries/saint_pierre_and_miquelon.py +4 -4
  45. holidays/countries/samoa.py +1 -3
  46. holidays/countries/sint_maarten.py +1 -1
  47. holidays/countries/spain.py +418 -214
  48. holidays/countries/sri_lanka.py +37 -33
  49. holidays/countries/svalbard_and_jan_mayen.py +4 -4
  50. holidays/countries/taiwan.py +2 -2
  51. holidays/countries/thailand.py +4 -1
  52. holidays/countries/turkey.py +7 -4
  53. holidays/countries/united_kingdom.py +1 -2
  54. holidays/countries/united_states.py +5 -2
  55. holidays/countries/united_states_minor_outlying_islands.py +4 -4
  56. holidays/countries/united_states_virgin_islands.py +4 -4
  57. holidays/countries/wallis_and_futuna.py +4 -4
  58. holidays/financial/__init__.py +1 -3
  59. holidays/financial/ice_futures_europe.py +6 -2
  60. holidays/financial/national_stock_exchange_of_india.py +141 -38
  61. holidays/groups/__init__.py +0 -2
  62. holidays/groups/balinese_saka.py +2 -3
  63. holidays/groups/buddhist.py +4 -5
  64. holidays/groups/burmese.py +11 -12
  65. holidays/groups/chinese.py +18 -19
  66. holidays/groups/christian.py +20 -0
  67. holidays/groups/eastern.py +2 -3
  68. holidays/groups/hebrew.py +7 -10
  69. holidays/groups/hindu.py +36 -37
  70. holidays/groups/mandaean.py +13 -14
  71. holidays/groups/mongolian.py +7 -8
  72. holidays/groups/persian.py +14 -15
  73. holidays/groups/sinhala.py +13 -14
  74. holidays/groups/thai.py +12 -13
  75. holidays/groups/tibetan.py +16 -17
  76. holidays/holiday_base.py +34 -33
  77. holidays/ical.py +1 -2
  78. holidays/locale/ca/LC_MESSAGES/ES.mo +0 -0
  79. holidays/locale/en_IN/LC_MESSAGES/XNSE.mo +0 -0
  80. holidays/locale/en_US/LC_MESSAGES/EC.mo +0 -0
  81. holidays/locale/en_US/LC_MESSAGES/ES.mo +0 -0
  82. holidays/locale/en_US/LC_MESSAGES/LK.mo +0 -0
  83. holidays/locale/en_US/LC_MESSAGES/TR.mo +0 -0
  84. holidays/locale/en_US/LC_MESSAGES/US.mo +0 -0
  85. holidays/locale/en_US/LC_MESSAGES/XNSE.mo +0 -0
  86. holidays/locale/es/LC_MESSAGES/EC.mo +0 -0
  87. holidays/locale/es/LC_MESSAGES/ES.mo +0 -0
  88. holidays/locale/hi/LC_MESSAGES/XNSE.mo +0 -0
  89. holidays/locale/si_LK/LC_MESSAGES/LK.mo +0 -0
  90. holidays/locale/ta_LK/LC_MESSAGES/LK.mo +0 -0
  91. holidays/locale/th/LC_MESSAGES/CN.mo +0 -0
  92. holidays/locale/th/LC_MESSAGES/ES.mo +0 -0
  93. holidays/locale/th/LC_MESSAGES/HK.mo +0 -0
  94. holidays/locale/th/LC_MESSAGES/KR.mo +0 -0
  95. holidays/locale/th/LC_MESSAGES/MO.mo +0 -0
  96. holidays/locale/th/LC_MESSAGES/US.mo +0 -0
  97. holidays/locale/tr/LC_MESSAGES/TR.mo +0 -0
  98. holidays/locale/uk/LC_MESSAGES/EC.mo +0 -0
  99. holidays/locale/uk/LC_MESSAGES/ES.mo +0 -0
  100. holidays/locale/uk/LC_MESSAGES/TR.mo +0 -0
  101. holidays/mixins/__init__.py +0 -2
  102. holidays/mixins/child_entity.py +1 -3
  103. holidays/observed_holiday_base.py +12 -13
  104. holidays/registry.py +4 -4
  105. holidays/utils.py +13 -14
  106. holidays/version.py +1 -1
  107. {holidays-0.83.dist-info → holidays-0.85.dist-info}/METADATA +4 -5
  108. {holidays-0.83.dist-info → holidays-0.85.dist-info}/RECORD +112 -111
  109. {holidays-0.83.dist-info → holidays-0.85.dist-info}/licenses/CONTRIBUTORS +2 -0
  110. {holidays-0.83.dist-info → holidays-0.85.dist-info}/WHEEL +0 -0
  111. {holidays-0.83.dist-info → holidays-0.85.dist-info}/licenses/LICENSE +0 -0
  112. {holidays-0.83.dist-info → holidays-0.85.dist-info}/top_level.txt +0 -0
@@ -12,7 +12,6 @@
12
12
 
13
13
  from datetime import date
14
14
  from functools import cache
15
- from typing import Optional
16
15
 
17
16
  from holidays.calendars.gregorian import _timedelta
18
17
 
@@ -296,7 +295,7 @@ class _ThaiLunisolar:
296
295
  )
297
296
 
298
297
  @cache
299
- def _get_start_date(self, year: int) -> Optional[date]:
298
+ def _get_start_date(self, year: int) -> date | None:
300
299
  """Calculate the start date of that particular Thai Lunar Calendar Year.
301
300
 
302
301
  This usually falls in November or December of the previous Gregorian
@@ -367,7 +366,7 @@ class _ThaiLunisolar:
367
366
 
368
367
  return buddhist_sabbaths
369
368
 
370
- def makha_bucha_date(self, year: int, calendar=None) -> Optional[date]:
369
+ def makha_bucha_date(self, year: int, calendar=None) -> date | None:
371
370
  """Calculate the estimated Gregorian date of Makha Bucha.
372
371
 
373
372
  Also known as "Magha Puja", "Makha Buxha" and "Meak Bochea".
@@ -415,7 +414,7 @@ class _ThaiLunisolar:
415
414
  else +73,
416
415
  )
417
416
 
418
- def visakha_bucha_date(self, year: int, calendar=None) -> Optional[date]:
417
+ def visakha_bucha_date(self, year: int, calendar=None) -> date | None:
419
418
  """Calculate the estimated Gregorian date of Visakha Bucha.
420
419
 
421
420
  Also known as "Vesak" and "Buddha Day". This coincides with
@@ -462,7 +461,7 @@ class _ThaiLunisolar:
462
461
  else +161,
463
462
  )
464
463
 
465
- def preah_neangkoal_date(self, year: int) -> Optional[date]:
464
+ def preah_neangkoal_date(self, year: int) -> date | None:
466
465
  """Calculate the estimated Gregorian date of Preah Neangkoal.
467
466
 
468
467
  Also known as "Cambodian Royal Ploughing Ceremony". This always
@@ -494,7 +493,7 @@ class _ThaiLunisolar:
494
493
 
495
494
  return _timedelta(start_date, +165)
496
495
 
497
- def atthami_bucha_date(self, year: int, calendar=None) -> Optional[date]:
496
+ def atthami_bucha_date(self, year: int, calendar=None) -> date | None:
498
497
  """Calculate the estimated Gregorian date of Atthami Bucha.
499
498
 
500
499
  Also known as "Buddha's Cremation Day". This coincides with
@@ -543,7 +542,7 @@ class _ThaiLunisolar:
543
542
  else +169,
544
543
  )
545
544
 
546
- def asarnha_bucha_date(self, year: int) -> Optional[date]:
545
+ def asarnha_bucha_date(self, year: int) -> date | None:
547
546
  """Calculate the estimated Gregorian date of Asarnha Bucha.
548
547
 
549
548
  Also known as "Asalha Puja". This coincides with
@@ -583,7 +582,7 @@ class _ThaiLunisolar:
583
582
  delta_days = +220
584
583
  return _timedelta(start_date, delta_days)
585
584
 
586
- def khao_phansa_date(self, year: int) -> Optional[date]:
585
+ def khao_phansa_date(self, year: int) -> date | None:
587
586
  """Calculate the estimated Gregorian date of Khao Phansa.
588
587
 
589
588
  Also known as "(Start of) Buddhist Lent" and "Start of Vassa".
@@ -623,7 +622,7 @@ class _ThaiLunisolar:
623
622
  delta_days = +221
624
623
  return _timedelta(start_date, delta_days)
625
624
 
626
- def boun_haw_khao_padapdin_date(self, year: int) -> Optional[date]:
625
+ def boun_haw_khao_padapdin_date(self, year: int) -> date | None:
627
626
  """Calculate the estimated Gregorian date of Boun Haw Khao Padapdin.
628
627
 
629
628
  Also known as "Boon Khao Padap Din".
@@ -660,7 +659,7 @@ class _ThaiLunisolar:
660
659
  delta_days = +264
661
660
  return _timedelta(start_date, delta_days)
662
661
 
663
- def boun_haw_khao_salark_date(self, year: int) -> Optional[date]:
662
+ def boun_haw_khao_salark_date(self, year: int) -> date | None:
664
663
  """Calculate the estimated Gregorian date of Boun Haw Khao Salark.
665
664
 
666
665
  Also known as "Boon Khao Sak".
@@ -697,7 +696,7 @@ class _ThaiLunisolar:
697
696
  delta_days = +279
698
697
  return _timedelta(start_date, delta_days)
699
698
 
700
- def pchum_ben_date(self, year: int) -> Optional[date]:
699
+ def pchum_ben_date(self, year: int) -> date | None:
701
700
  """Calculate the estimated Gregorian date of Pchum Ben.
702
701
 
703
702
  Also known as "Prachum Bandar".
@@ -734,7 +733,7 @@ class _ThaiLunisolar:
734
733
  delta_days = +294
735
734
  return _timedelta(start_date, delta_days)
736
735
 
737
- def ok_phansa_date(self, year: int) -> Optional[date]:
736
+ def ok_phansa_date(self, year: int) -> date | None:
738
737
  """Calculate the estimated Gregorian date of Ok Phansa.
739
738
 
740
739
  Also known as "End of Buddhist Lent" and "End of Vassa".
@@ -771,7 +770,7 @@ class _ThaiLunisolar:
771
770
  delta_days = +309
772
771
  return _timedelta(start_date, delta_days)
773
772
 
774
- def boun_suang_heua_date(self, year: int) -> Optional[date]:
773
+ def boun_suang_heua_date(self, year: int) -> date | None:
775
774
  """Calculate the estimated Gregorian date of Ok Boun Suang Huea.
776
775
 
777
776
  Boun Suang Huea Nakhone Luang Prabang, also known as "Vientiane Boat Racing Festival".
@@ -808,7 +807,7 @@ class _ThaiLunisolar:
808
807
  delta_days = +310
809
808
  return _timedelta(start_date, delta_days)
810
809
 
811
- def loy_krathong_date(self, year: int) -> Optional[date]:
810
+ def loy_krathong_date(self, year: int) -> date | None:
812
811
  """Calculate the estimated Gregorian date of Loy Krathong.
813
812
 
814
813
  Also known as "Boun That Louang" and "Bon Om Touk".
@@ -11,7 +11,6 @@
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
13
  from datetime import date
14
- from typing import Optional
15
14
 
16
15
  from holidays.calendars.custom import _CustomCalendar
17
16
  from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV
@@ -1422,43 +1421,43 @@ class _TibetanLunisolar:
1422
1421
  2099: (JAN, 2),
1423
1422
  }
1424
1423
 
1425
- def _get_holiday(self, holiday: str, year: int) -> tuple[Optional[date], bool]:
1424
+ def _get_holiday(self, holiday: str, year: int) -> tuple[date | None, bool]:
1426
1425
  estimated_dates = getattr(self, f"{holiday}_DATES", {})
1427
1426
  exact_dates = getattr(self, f"{holiday}_DATES_{_CustomCalendar.CUSTOM_ATTR_POSTFIX}", {})
1428
1427
  dt = exact_dates.get(year, estimated_dates.get(year, ()))
1429
1428
  return date(year, *dt) if dt else None, year not in exact_dates
1430
1429
 
1431
- def blessed_rainy_day_date(self, year: int) -> tuple[Optional[date], bool]:
1430
+ def blessed_rainy_day_date(self, year: int) -> tuple[date | None, bool]:
1432
1431
  return self._get_holiday(BLESSED_RAINY_DAY, year)
1433
1432
 
1434
- def birth_of_guru_rinpoche_date(self, year: int) -> tuple[Optional[date], bool]:
1433
+ def birth_of_guru_rinpoche_date(self, year: int) -> tuple[date | None, bool]:
1435
1434
  return self._get_holiday(BIRTH_OF_GURU_RINPOCHE, year)
1436
1435
 
1437
- def buddha_first_sermon_date(self, year: int) -> tuple[Optional[date], bool]:
1436
+ def buddha_first_sermon_date(self, year: int) -> tuple[date | None, bool]:
1438
1437
  return self._get_holiday(BUDDHA_FIRST_SERMON, year)
1439
1438
 
1440
- def buddha_parinirvana_date(self, year: int) -> tuple[Optional[date], bool]:
1439
+ def buddha_parinirvana_date(self, year: int) -> tuple[date | None, bool]:
1441
1440
  return self._get_holiday(BUDDHA_PARINIRVANA, year)
1442
1441
 
1443
- def day_of_offering_date(self, year: int) -> tuple[Optional[date], bool]:
1442
+ def day_of_offering_date(self, year: int) -> tuple[date | None, bool]:
1444
1443
  return self._get_holiday(DAY_OF_OFFERING, year)
1445
1444
 
1446
- def death_of_zhabdrung_date(self, year: int) -> tuple[Optional[date], bool]:
1445
+ def death_of_zhabdrung_date(self, year: int) -> tuple[date | None, bool]:
1447
1446
  return self._get_holiday(DEATH_OF_ZHABDRUNG, year)
1448
1447
 
1449
- def descending_day_of_lord_buddha_date(self, year: int) -> tuple[Optional[date], bool]:
1448
+ def descending_day_of_lord_buddha_date(self, year: int) -> tuple[date | None, bool]:
1450
1449
  return self._get_holiday(DESCENDING_DAY_OF_LORD_BUDDHA, year)
1451
1450
 
1452
- def losar_date(self, year: int) -> tuple[Optional[date], bool]:
1451
+ def losar_date(self, year: int) -> tuple[date | None, bool]:
1453
1452
  return self._get_holiday(LOSAR, year)
1454
1453
 
1455
- def thimphu_drubchen_date(self, year: int) -> tuple[Optional[date], bool]:
1454
+ def thimphu_drubchen_date(self, year: int) -> tuple[date | None, bool]:
1456
1455
  return self._get_holiday(THIMPHU_DRUBCHEN, year)
1457
1456
 
1458
- def thimphu_tshechu_date(self, year: int) -> tuple[Optional[date], bool]:
1457
+ def thimphu_tshechu_date(self, year: int) -> tuple[date | None, bool]:
1459
1458
  return self._get_holiday(THIMPHU_TSHECHU, year)
1460
1459
 
1461
- def tibetan_winter_solstice_date(self, year: int) -> tuple[Optional[date], bool]:
1460
+ def tibetan_winter_solstice_date(self, year: int) -> tuple[date | None, bool]:
1462
1461
  return self._get_holiday(WINTER_SOLSTICE, year)
1463
1462
 
1464
1463
 
holidays/constants.py CHANGED
@@ -10,8 +10,6 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
- # ruff: noqa: F401
14
-
15
13
  from holidays.calendars.gregorian import (
16
14
  JAN,
17
15
  FEB,
@@ -10,8 +10,6 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
- # ruff: noqa: F401
14
-
15
13
  from holidays.countries.afghanistan import Afghanistan, AF, AFG
16
14
  from holidays.countries.aland_islands import AlandIslands, AX, ALA, HolidaysAX
17
15
  from holidays.countries.albania import Albania, AL, ALB
@@ -14,7 +14,7 @@ from holidays.countries.finland import Finland
14
14
  from holidays.mixins.child_entity import ChildEntity
15
15
 
16
16
 
17
- class HolidaysAX(ChildEntity, Finland):
17
+ class AlandIslands(ChildEntity, Finland):
18
18
  """Åland Islands holidays.
19
19
 
20
20
  Alias of a Finnish subdivision that is also officially assigned
@@ -35,13 +35,13 @@ class HolidaysAX(ChildEntity, Finland):
35
35
  start_year = 1921
36
36
 
37
37
 
38
- class AlandIslands(HolidaysAX):
38
+ class HolidaysAX(AlandIslands):
39
39
  pass
40
40
 
41
41
 
42
- class AX(HolidaysAX):
42
+ class AX(AlandIslands):
43
43
  pass
44
44
 
45
45
 
46
- class ALA(HolidaysAX):
46
+ class ALA(AlandIslands):
47
47
  pass
@@ -14,7 +14,7 @@ from holidays.countries.united_states import UnitedStates
14
14
  from holidays.mixins.child_entity import ChildEntity
15
15
 
16
16
 
17
- class HolidaysAS(ChildEntity, UnitedStates):
17
+ class AmericanSamoa(ChildEntity, UnitedStates):
18
18
  """American Samoa holidays.
19
19
 
20
20
  Alias of a US subdivision that is also officially assigned its own country code in ISO 3166-1.
@@ -27,13 +27,13 @@ class HolidaysAS(ChildEntity, UnitedStates):
27
27
  start_year = 1901
28
28
 
29
29
 
30
- class AmericanSamoa(HolidaysAS):
30
+ class HolidaysAS(AmericanSamoa):
31
31
  pass
32
32
 
33
33
 
34
- class AS(HolidaysAS):
34
+ class AS(AmericanSamoa):
35
35
  pass
36
36
 
37
37
 
38
- class ASM(HolidaysAS):
38
+ class ASM(AmericanSamoa):
39
39
  pass
@@ -12,7 +12,6 @@
12
12
 
13
13
  from datetime import date
14
14
  from gettext import gettext as tr
15
- from typing import Optional
16
15
 
17
16
  from holidays.calendars.gregorian import AUG, SEP
18
17
  from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
@@ -62,7 +61,7 @@ class Angola(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
62
61
  # it rolls over to the following Monday.
63
62
  return dt >= date(1996, SEP, 27)
64
63
 
65
- def _add_observed(self, dt: date, **kwargs) -> tuple[bool, Optional[date]]:
64
+ def _add_observed(self, dt: date, **kwargs) -> tuple[bool, date | None]:
66
65
  # As per Law # #11/18, from 2018/9/10, when public holiday falls on Tuesday or Thursday,
67
66
  # the Monday or Friday is also a holiday.
68
67
  kwargs.setdefault(
@@ -124,7 +124,7 @@ class Austria(HolidayBase, ChristianHolidays, InternationalHolidays):
124
124
 
125
125
  def _populate_subdiv_1_bank_holidays(self):
126
126
  # Saint Martin's Day.
127
- self._add_holiday_nov_11(tr("Hl. Martin"))
127
+ self._add_saint_martins_day(tr("Hl. Martin"))
128
128
 
129
129
  def _populate_subdiv_2_bank_holidays(self):
130
130
  # Saint Joseph's Day.
@@ -242,6 +242,7 @@ class AzerbaijanStaticHolidays:
242
242
  * <https://web.archive.org/web/20241015224204/https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-8332>
243
243
  * <https://web.archive.org/web/20250410132503/https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-8449>
244
244
  * <https://web.archive.org/web/20250216200846/https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-8623>
245
+ * <https://web.archive.org/web/20250711211545/https://nk.gov.az/az/senedler/qerarlar/is-ve-istirahet-gunlerinin-yerlerinin-deyisdirilme-8864>
245
246
 
246
247
  Special holidays references:
247
248
  * <https://web.archive.org/web/20250421013220/https://www.msk.gov.az/en/elections/pages/municipal-elections/belediyye-29-01-2025>
@@ -308,6 +309,7 @@ class AzerbaijanStaticHolidays:
308
309
  2025: (
309
310
  (JAN, 3, DEC, 29, 2024),
310
311
  (JAN, 29, municipal_elections),
312
+ (JUN, 27, JUN, 21),
311
313
  ),
312
314
  }
313
315
 
@@ -24,8 +24,9 @@ class China(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays,
24
24
  References:
25
25
  * <https://en.wikipedia.org/wiki/Public_holidays_in_China>
26
26
  * [Festivals and Public Holidays](https://zh.wikipedia.org/wiki/中华人民共和国节日与公众假期)
27
- * [2024 changes (Order #795)](https://web.archive.org/web/20250228151847/https://www.gov.cn/zhengce/content/202411/content_6986380.htm)
27
+ * [2026](https://web.archive.org/web/20251111205945/https://www.gov.cn/zhengce/content/202511/content_7047090.htm)
28
28
  * [2025](https://web.archive.org/web/20250424041657/https://www.gov.cn/zhengce/content/202411/content_6986382.htm)
29
+ * [2024 changes (Order #795)](https://web.archive.org/web/20250228151847/https://www.gov.cn/zhengce/content/202411/content_6986380.htm)
29
30
  * [2024](https://web.archive.org/web/20250227033646/https://www.gov.cn/zhengce/content/202310/content_6911527.htm)
30
31
  * [2023](https://web.archive.org/web/20250414125053/https://www.gov.cn/gongbao/content/2023/content_5736714.htm)
31
32
  * [2022](https://web.archive.org/web/20250413071341/http://www.gov.cn/gongbao/content/2021/content_5651728.htm)
@@ -452,6 +453,14 @@ class ChinaStaticHolidays:
452
453
  (OCT, 7, SEP, 28), # National Day
453
454
  (OCT, 8, OCT, 11), # National Day
454
455
  ),
456
+ 2026: (
457
+ (JAN, 2, JAN, 4), # New Year's Day
458
+ (FEB, 20, FEB, 14), # Spring Festival
459
+ (FEB, 23, FEB, 28), # Spring Festival
460
+ (MAY, 5, MAY, 9), # Labor Day
461
+ (OCT, 6, SEP, 20), # National Day
462
+ (OCT, 7, OCT, 10), # National Day
463
+ ),
455
464
  }
456
465
 
457
466
  special_public_holidays_observed = {
@@ -19,6 +19,7 @@ from holidays.observed_holiday_base import (
19
19
  WED_TO_NEXT_FRI,
20
20
  SAT_TO_PREV_FRI,
21
21
  SUN_TO_NEXT_MON,
22
+ SUN_TO_NEXT_TUE,
22
23
  WED_THU_TO_NEXT_FRI,
23
24
  )
24
25
 
@@ -29,6 +30,11 @@ class Ecuador(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
29
30
  References:
30
31
  * <https://en.wikipedia.org/wiki/Public_holidays_in_Ecuador>
31
32
  * [Código del Trabajo](https://web.archive.org/web/20250428092005/https://biblioteca.defensoria.gob.ec/bitstream/37000/3364/1/Código%20de%20Trabajo%20(04-11-2021).pdf)
33
+ * [2018](https://web.archive.org/web/20181231193947/https://www.turismo.gob.ec/wp-content/uploads/2018/06/CALENDARIO-FERIADOS2018.pdf)
34
+ * [2019](https://web.archive.org/web/20220707173738/https://www.turismo.gob.ec/wp-content/uploads/2019/01/FERIADOS-2019.pdf)
35
+ * [2020-2021](https://web.archive.org/web/20210425014244/https://www.turismo.gob.ec/wp-content/uploads/2020/03/CALENDARIO-DE-FERIADOS.pdf)
36
+ * [2022](https://web.archive.org/web/20220127234055/https://www.turismo.gob.ec/wp-content/uploads/2022/01/FERIADOS-NACIONALES_2022.pdf)
37
+ * [2023-2025](https://web.archive.org/web/20250806025223/https://www.turismo.gob.ec/wp-content/uploads/2023/12/CALENDARIO-FERIADOS-2023-2025-06-12-2022-.pdf)
32
38
  """
33
39
 
34
40
  country = "EC"
@@ -84,19 +90,21 @@ class Ecuador(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
84
90
 
85
91
  self._add_observed(
86
92
  # All Souls' Day.
87
- self._add_all_souls_day(tr("Día de los Difuntos")),
88
- rule=TUE_TO_PREV_MON + WED_TO_NEXT_FRI + SAT_TO_PREV_FRI, # Not observed the next day.
93
+ self._add_all_souls_day(tr("Día de Difuntos")),
94
+ # Not observed the next day.
95
+ rule=TUE_TO_PREV_MON + WED_TO_NEXT_FRI + SAT_TO_PREV_FRI + SUN_TO_NEXT_TUE,
89
96
  )
90
97
 
91
98
  self._add_observed(
92
99
  # Independence of Cuenca.
93
100
  self._add_holiday_nov_3(tr("Independencia de Cuenca")),
94
- rule=WED_THU_TO_NEXT_FRI + SUN_TO_NEXT_MON, # Not observed the previous day.
101
+ # Not observed the previous day.
102
+ rule=SUN_TO_NEXT_MON,
95
103
  )
96
104
 
97
105
  self._add_observed(
98
106
  # Christmas Day.
99
- self._add_christmas_day(tr("Día de Navidad")),
107
+ self._add_christmas_day(tr("Navidad")),
100
108
  rule=SAT_TO_PREV_FRI + SUN_TO_NEXT_MON,
101
109
  )
102
110
 
@@ -14,7 +14,7 @@ from holidays.countries.france import France
14
14
  from holidays.mixins.child_entity import ChildEntity
15
15
 
16
16
 
17
- class HolidaysGF(ChildEntity, France):
17
+ class FrenchGuiana(ChildEntity, France):
18
18
  """French Guiana holidays.
19
19
 
20
20
  Alias of a French subdivision that is also officially assigned
@@ -32,13 +32,13 @@ class HolidaysGF(ChildEntity, France):
32
32
  start_year = 1815
33
33
 
34
34
 
35
- class FrenchGuiana(HolidaysGF):
35
+ class HolidaysGF(FrenchGuiana):
36
36
  pass
37
37
 
38
38
 
39
- class GF(HolidaysGF):
39
+ class GF(FrenchGuiana):
40
40
  pass
41
41
 
42
42
 
43
- class GUF(HolidaysGF):
43
+ class GUF(FrenchGuiana):
44
44
  pass
@@ -14,7 +14,7 @@ from holidays.countries.france import France
14
14
  from holidays.mixins.child_entity import ChildEntity
15
15
 
16
16
 
17
- class HolidaysPF(ChildEntity, France):
17
+ class FrenchPolynesia(ChildEntity, France):
18
18
  """French Polynesia holidays.
19
19
 
20
20
  Alias of a French subdivision that is also officially assigned
@@ -31,13 +31,13 @@ class HolidaysPF(ChildEntity, France):
31
31
  start_year = 1881
32
32
 
33
33
 
34
- class FrenchPolynesia(HolidaysPF):
34
+ class HolidaysPF(FrenchPolynesia):
35
35
  pass
36
36
 
37
37
 
38
- class PF(HolidaysPF):
38
+ class PF(FrenchPolynesia):
39
39
  pass
40
40
 
41
41
 
42
- class PYF(HolidaysPF):
42
+ class PYF(FrenchPolynesia):
43
43
  pass
@@ -14,7 +14,7 @@ from holidays.countries.france import France
14
14
  from holidays.mixins.child_entity import ChildEntity
15
15
 
16
16
 
17
- class HolidaysTF(ChildEntity, France):
17
+ class FrenchSouthernTerritories(ChildEntity, France):
18
18
  """French Southern Territories holidays.
19
19
 
20
20
  Alias of a French subdivision that is also officially assigned
@@ -36,13 +36,13 @@ class HolidaysTF(ChildEntity, France):
36
36
  start_year = 1956
37
37
 
38
38
 
39
- class FrenchSouthernTerritories(HolidaysTF):
39
+ class HolidaysTF(FrenchSouthernTerritories):
40
40
  pass
41
41
 
42
42
 
43
- class TF(HolidaysTF):
43
+ class TF(FrenchSouthernTerritories):
44
44
  pass
45
45
 
46
46
 
47
- class ATF(HolidaysTF):
47
+ class ATF(FrenchSouthernTerritories):
48
48
  pass
@@ -14,7 +14,7 @@ from holidays.countries.france import France
14
14
  from holidays.mixins.child_entity import ChildEntity
15
15
 
16
16
 
17
- class HolidaysGP(ChildEntity, France):
17
+ class Guadeloupe(ChildEntity, France):
18
18
  """Guadeloupe holidays.
19
19
 
20
20
  Alias of a French subdivision that is also officially assigned
@@ -32,13 +32,13 @@ class HolidaysGP(ChildEntity, France):
32
32
  start_year = 1815
33
33
 
34
34
 
35
- class Guadeloupe(HolidaysGP):
35
+ class HolidaysGP(Guadeloupe):
36
36
  pass
37
37
 
38
38
 
39
- class GP(HolidaysGP):
39
+ class GP(Guadeloupe):
40
40
  pass
41
41
 
42
42
 
43
- class GLP(HolidaysGP):
43
+ class GLP(Guadeloupe):
44
44
  pass
@@ -14,7 +14,7 @@ from holidays.countries.united_states import UnitedStates
14
14
  from holidays.mixins.child_entity import ChildEntity
15
15
 
16
16
 
17
- class HolidaysGU(ChildEntity, UnitedStates):
17
+ class Guam(ChildEntity, UnitedStates):
18
18
  """Guam holidays.
19
19
 
20
20
  Alias of a US subdivision that is also officially assigned its own country code in ISO 3166-1.
@@ -27,13 +27,13 @@ class HolidaysGU(ChildEntity, UnitedStates):
27
27
  start_year = 1900
28
28
 
29
29
 
30
- class Guam(HolidaysGU):
30
+ class HolidaysGU(Guam):
31
31
  pass
32
32
 
33
33
 
34
- class GU(HolidaysGU):
34
+ class GU(Guam):
35
35
  pass
36
36
 
37
37
 
38
- class GUM(HolidaysGU):
38
+ class GUM(Guam):
39
39
  pass
@@ -11,7 +11,6 @@
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
13
  from datetime import date
14
- from typing import Optional
15
14
 
16
15
  from holidays.calendars.gregorian import JAN, APR, MAY, JUN, JUL, SEP, OCT, DEC
17
16
  from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
@@ -53,7 +52,7 @@ class Guernsey(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, St
53
52
  kwargs.setdefault("observed_since", 1955)
54
53
  ObservedHolidayBase.__init__(self, *args, **kwargs)
55
54
 
56
- def _add_observed(self, dt: date, **kwargs) -> tuple[bool, Optional[date]]:
55
+ def _add_observed(self, dt: date, **kwargs) -> tuple[bool, date | None]:
57
56
  # Prior to 2009, in-lieu are only given for Sundays.
58
57
  # https://web.archive.org/web/20230930101652/https://guernseylegalresources.gg/CHttpHandler.ashx?documentid=55179
59
58
  kwargs.setdefault(
@@ -357,7 +357,7 @@ class Italy(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoliday
357
357
  self._add_christmas_day_two("Santo Stefano")
358
358
 
359
359
  def _populate_subdiv_bl_public_holidays(self):
360
- self._add_holiday_nov_11("San Martino")
360
+ self._add_saint_martins_day("San Martino")
361
361
 
362
362
  def _populate_subdiv_bn_public_holidays(self):
363
363
  self._add_holiday_aug_24("San Bartolomeo apostolo")
@@ -518,7 +518,7 @@ class Italy(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoliday
518
518
  self._add_holiday_jul_4("Sant'Antonino di Piacenza")
519
519
 
520
520
  def _populate_subdiv_pd_public_holidays(self):
521
- self._add_holiday_jun_13("Sant'Antonio di Padova")
521
+ self._add_saint_anthonys_day("Sant'Antonio di Padova")
522
522
 
523
523
  def _populate_subdiv_pe_public_holidays(self):
524
524
  self._add_holiday_oct_10("San Cetteo")
@@ -11,7 +11,6 @@
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
13
  from datetime import date
14
- from typing import Optional
15
14
 
16
15
  from holidays.calendars.gregorian import JAN, APR, MAY, JUN, JUL, SEP, OCT, DEC
17
16
  from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
@@ -60,7 +59,7 @@ class Jersey(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
60
59
  kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_WORKDAY)
61
60
  ObservedHolidayBase.__init__(self, *args, **kwargs)
62
61
 
63
- def _add_observed(self, dt: date, **kwargs) -> tuple[bool, Optional[date]]:
62
+ def _add_observed(self, dt: date, **kwargs) -> tuple[bool, date | None]:
64
63
  # Prior to 2004, in-lieu are only given for Sundays.
65
64
  # https://web.archive.org/web/20250414072718/https://www.jerseylaw.je/laws/enacted/Pages/RO-123-2004.aspx
66
65
  kwargs.setdefault(
@@ -112,7 +112,7 @@ class Malta(HolidayBase, ChristianHolidays, InternationalHolidays):
112
112
 
113
113
  if self._year >= 1987:
114
114
  # Feast of Our Lady of Victories.
115
- self._add_holiday_sep_8(tr("Jum il-Vitorja"))
115
+ self._add_nativity_of_mary_day(tr("Jum il-Vitorja"))
116
116
 
117
117
  # Jum l-Indipendenza
118
118
  # Status: In-Use.
@@ -17,7 +17,9 @@ from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHoli
17
17
  from holidays.observed_holiday_base import ObservedHolidayBase, SUN_TO_NEXT_MON
18
18
 
19
19
 
20
- class HolidaysMH(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
20
+ class MarshallIslands(
21
+ ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays
22
+ ):
21
23
  """Marshall Islands holidays.
22
24
 
23
25
  References:
@@ -31,7 +33,7 @@ class HolidaysMH(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
31
33
  def __init__(self, *args, **kwargs):
32
34
  ChristianHolidays.__init__(self)
33
35
  InternationalHolidays.__init__(self)
34
- StaticHolidays.__init__(self, MarshalIslandsStaticHolidays)
36
+ StaticHolidays.__init__(self, MarshallIslandsStaticHolidays)
35
37
  kwargs.setdefault("observed_rule", SUN_TO_NEXT_MON)
36
38
  super().__init__(*args, **kwargs)
37
39
 
@@ -77,19 +79,19 @@ class HolidaysMH(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
77
79
  self._add_observed(self._add_christmas_day(name))
78
80
 
79
81
 
80
- class MH(HolidaysMH):
82
+ class HolidaysMH(MarshallIslands):
81
83
  pass
82
84
 
83
85
 
84
- class MHL(HolidaysMH):
86
+ class MH(MarshallIslands):
85
87
  pass
86
88
 
87
89
 
88
- class MarshallIslands(HolidaysMH):
90
+ class MHL(MarshallIslands):
89
91
  pass
90
92
 
91
93
 
92
- class MarshalIslandsStaticHolidays:
94
+ class MarshallIslandsStaticHolidays:
93
95
  # General Election Day
94
96
  election_day = "General Election Day"
95
97
 
@@ -14,7 +14,7 @@ from holidays.countries.france import France
14
14
  from holidays.mixins.child_entity import ChildEntity
15
15
 
16
16
 
17
- class HolidaysMQ(ChildEntity, France):
17
+ class Martinique(ChildEntity, France):
18
18
  """Martinique holidays.
19
19
 
20
20
  Alias of a French subdivision that is also officially assigned
@@ -32,13 +32,13 @@ class HolidaysMQ(ChildEntity, France):
32
32
  start_year = 1815
33
33
 
34
34
 
35
- class Martinique(HolidaysMQ):
35
+ class HolidaysMQ(Martinique):
36
36
  pass
37
37
 
38
38
 
39
- class MQ(HolidaysMQ):
39
+ class MQ(Martinique):
40
40
  pass
41
41
 
42
42
 
43
- class MTQ(HolidaysMQ):
43
+ class MTQ(Martinique):
44
44
  pass