holidays 0.78__py3-none-any.whl → 0.80__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 (161) hide show
  1. holidays/calendars/__init__.py +1 -0
  2. holidays/calendars/chinese.py +14 -4
  3. holidays/calendars/ethiopian.py +31 -0
  4. holidays/calendars/hindu.py +1 -0
  5. holidays/calendars/islamic.py +16 -4
  6. holidays/calendars/julian.py +14 -0
  7. holidays/calendars/mandaean.py +59 -0
  8. holidays/calendars/tibetan.py +1466 -0
  9. holidays/constants.py +2 -1
  10. holidays/countries/__init__.py +20 -0
  11. holidays/countries/afghanistan.py +6 -39
  12. holidays/countries/albania.py +3 -22
  13. holidays/countries/argentina.py +7 -18
  14. holidays/countries/australia.py +191 -295
  15. holidays/countries/azerbaijan.py +6 -39
  16. holidays/countries/bahrain.py +29 -38
  17. holidays/countries/bhutan.py +194 -0
  18. holidays/countries/bosnia_and_herzegovina.py +7 -28
  19. holidays/countries/brunei.py +7 -117
  20. holidays/countries/burkina_faso.py +9 -15
  21. holidays/countries/burundi.py +95 -40
  22. holidays/countries/cameroon.py +8 -34
  23. holidays/countries/canada.py +9 -1
  24. holidays/countries/central_african_republic.py +3 -16
  25. holidays/countries/chad.py +9 -17
  26. holidays/countries/chile.py +20 -4
  27. holidays/countries/christmas_island.py +10 -15
  28. holidays/countries/cocos_islands.py +5 -24
  29. holidays/countries/comoros.py +121 -0
  30. holidays/countries/egypt.py +5 -37
  31. holidays/countries/eritrea.py +104 -0
  32. holidays/countries/ethiopia.py +18 -47
  33. holidays/countries/fiji.py +1 -2
  34. holidays/countries/gabon.py +5 -23
  35. holidays/countries/gambia.py +168 -0
  36. holidays/countries/georgia.py +9 -7
  37. holidays/countries/guinea.py +5 -27
  38. holidays/countries/guinea_bissau.py +96 -0
  39. holidays/countries/guyana.py +2 -17
  40. holidays/countries/india.py +12 -25
  41. holidays/countries/indonesia.py +6 -158
  42. holidays/countries/iran.py +16 -126
  43. holidays/countries/iraq.py +276 -0
  44. holidays/countries/kazakhstan.py +2 -18
  45. holidays/countries/kenya.py +2 -8
  46. holidays/countries/kiribati.py +124 -0
  47. holidays/countries/kyrgyzstan.py +2 -0
  48. holidays/countries/lebanon.py +5 -87
  49. holidays/countries/liberia.py +80 -0
  50. holidays/countries/libya.py +5 -37
  51. holidays/countries/macau.py +65 -63
  52. holidays/countries/malaysia.py +9 -130
  53. holidays/countries/maldives.py +2 -0
  54. holidays/countries/mali.py +4 -9
  55. holidays/countries/mauritania.py +2 -0
  56. holidays/countries/mauritius.py +1 -2
  57. holidays/countries/montenegro.py +3 -18
  58. holidays/countries/nepal.py +42 -44
  59. holidays/countries/niger.py +14 -74
  60. holidays/countries/nigeria.py +198 -27
  61. holidays/countries/north_macedonia.py +3 -39
  62. holidays/countries/oman.py +6 -28
  63. holidays/countries/pakistan.py +5 -30
  64. holidays/countries/palestine.py +2 -5
  65. holidays/countries/philippines.py +3 -33
  66. holidays/countries/qatar.py +3 -45
  67. holidays/countries/rwanda.py +162 -0
  68. holidays/countries/saudi_arabia.py +3 -0
  69. holidays/countries/senegal.py +6 -16
  70. holidays/countries/sierra_leone.py +5 -21
  71. holidays/countries/singapore.py +7 -59
  72. holidays/countries/somalia.py +79 -0
  73. holidays/countries/south_georgia_and_the_south_sandwich_islands.py +160 -0
  74. holidays/countries/south_sudan.py +133 -0
  75. holidays/countries/spain.py +7 -10
  76. holidays/countries/sri_lanka.py +3 -14
  77. holidays/countries/suriname.py +11 -19
  78. holidays/countries/syrian_arab_republic.py +134 -0
  79. holidays/countries/tajikistan.py +116 -0
  80. holidays/countries/tanzania.py +291 -153
  81. holidays/countries/timor_leste.py +2 -17
  82. holidays/countries/togo.py +4 -29
  83. holidays/countries/trinidad_and_tobago.py +2 -9
  84. holidays/countries/turkey.py +2 -116
  85. holidays/countries/turkmenistan.py +164 -0
  86. holidays/countries/uganda.py +101 -0
  87. holidays/countries/united_arab_emirates.py +5 -29
  88. holidays/countries/uzbekistan.py +3 -31
  89. holidays/countries/yemen.py +8 -52
  90. holidays/financial/__init__.py +5 -0
  91. holidays/financial/national_stock_exchange_of_india.py +169 -0
  92. holidays/groups/__init__.py +2 -0
  93. holidays/groups/christian.py +48 -12
  94. holidays/groups/eastern.py +1 -1
  95. holidays/groups/international.py +17 -1
  96. holidays/groups/islamic.py +1 -1
  97. holidays/groups/mandaean.py +107 -0
  98. holidays/groups/tibetan.py +153 -0
  99. holidays/holiday_base.py +14 -0
  100. holidays/locale/ar/LC_MESSAGES/BH.mo +0 -0
  101. holidays/locale/ar/LC_MESSAGES/IQ.mo +0 -0
  102. holidays/locale/ar/LC_MESSAGES/SY.mo +0 -0
  103. holidays/locale/bs/LC_MESSAGES/BA.mo +0 -0
  104. holidays/locale/en_GM/LC_MESSAGES/GM.mo +0 -0
  105. holidays/locale/en_GS/LC_MESSAGES/GS.mo +0 -0
  106. holidays/locale/en_IN/LC_MESSAGES/XNSE.mo +0 -0
  107. holidays/locale/en_MO/LC_MESSAGES/MO.mo +0 -0
  108. holidays/locale/en_NG/LC_MESSAGES/NG.mo +0 -0
  109. holidays/locale/en_SG/LC_MESSAGES/SG.mo +0 -0
  110. holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
  111. holidays/locale/en_US/LC_MESSAGES/BA.mo +0 -0
  112. holidays/locale/en_US/LC_MESSAGES/BH.mo +0 -0
  113. holidays/locale/en_US/LC_MESSAGES/BI.mo +0 -0
  114. holidays/locale/en_US/LC_MESSAGES/CL.mo +0 -0
  115. holidays/locale/en_US/LC_MESSAGES/ES.mo +0 -0
  116. holidays/locale/en_US/LC_MESSAGES/GE.mo +0 -0
  117. holidays/locale/en_US/LC_MESSAGES/GM.mo +0 -0
  118. holidays/locale/en_US/LC_MESSAGES/GS.mo +0 -0
  119. holidays/locale/en_US/LC_MESSAGES/GW.mo +0 -0
  120. holidays/locale/en_US/LC_MESSAGES/IQ.mo +0 -0
  121. holidays/locale/en_US/LC_MESSAGES/MO.mo +0 -0
  122. holidays/locale/en_US/LC_MESSAGES/NG.mo +0 -0
  123. holidays/locale/en_US/LC_MESSAGES/RW.mo +0 -0
  124. holidays/locale/en_US/LC_MESSAGES/SG.mo +0 -0
  125. holidays/locale/en_US/LC_MESSAGES/SY.mo +0 -0
  126. holidays/locale/en_US/LC_MESSAGES/TJ.mo +0 -0
  127. holidays/locale/en_US/LC_MESSAGES/TM.mo +0 -0
  128. holidays/locale/en_US/LC_MESSAGES/TZ.mo +0 -0
  129. holidays/locale/en_US/LC_MESSAGES/XNSE.mo +0 -0
  130. holidays/locale/es/LC_MESSAGES/AR.mo +0 -0
  131. holidays/locale/es/LC_MESSAGES/ES.mo +0 -0
  132. holidays/locale/fr/LC_MESSAGES/RW.mo +0 -0
  133. holidays/locale/fr_BI/LC_MESSAGES/BI.mo +0 -0
  134. holidays/locale/hi/LC_MESSAGES/XNSE.mo +0 -0
  135. holidays/locale/ka/LC_MESSAGES/GE.mo +0 -0
  136. holidays/locale/pt_GW/LC_MESSAGES/GW.mo +0 -0
  137. holidays/locale/pt_MO/LC_MESSAGES/MO.mo +0 -0
  138. holidays/locale/ru/LC_MESSAGES/TJ.mo +0 -0
  139. holidays/locale/ru/LC_MESSAGES/TM.mo +0 -0
  140. holidays/locale/rw/LC_MESSAGES/RW.mo +0 -0
  141. holidays/locale/sr/LC_MESSAGES/BA.mo +0 -0
  142. holidays/locale/sw/LC_MESSAGES/TZ.mo +0 -0
  143. holidays/locale/tg/LC_MESSAGES/TJ.mo +0 -0
  144. holidays/locale/th/LC_MESSAGES/MO.mo +0 -0
  145. holidays/locale/th/LC_MESSAGES/SG.mo +0 -0
  146. holidays/locale/tk/LC_MESSAGES/TM.mo +0 -0
  147. holidays/locale/uk/LC_MESSAGES/AR.mo +0 -0
  148. holidays/locale/uk/LC_MESSAGES/BA.mo +0 -0
  149. holidays/locale/uk/LC_MESSAGES/CL.mo +0 -0
  150. holidays/locale/uk/LC_MESSAGES/ES.mo +0 -0
  151. holidays/locale/uk/LC_MESSAGES/GE.mo +0 -0
  152. holidays/locale/zh_CN/LC_MESSAGES/MO.mo +0 -0
  153. holidays/locale/zh_MO/LC_MESSAGES/MO.mo +0 -0
  154. holidays/registry.py +46 -14
  155. holidays/version.py +1 -1
  156. {holidays-0.78.dist-info → holidays-0.80.dist-info}/METADATA +127 -9
  157. {holidays-0.78.dist-info → holidays-0.80.dist-info}/RECORD +161 -113
  158. {holidays-0.78.dist-info → holidays-0.80.dist-info}/licenses/CONTRIBUTORS +2 -0
  159. {holidays-0.78.dist-info → holidays-0.80.dist-info}/WHEEL +0 -0
  160. {holidays-0.78.dist-info → holidays-0.80.dist-info}/licenses/LICENSE +0 -0
  161. {holidays-0.78.dist-info → holidays-0.80.dist-info}/top_level.txt +0 -0
@@ -609,33 +609,7 @@ class MalaysiaBuddhistHolidays(_CustomBuddhistHolidays):
609
609
 
610
610
 
611
611
  class MalaysiaChineseHolidays(_CustomChineseHolidays):
612
- LUNAR_NEW_YEAR_DATES = {
613
- 2001: (JAN, 24),
614
- 2002: (FEB, 12),
615
- 2003: (FEB, 1),
616
- 2004: (JAN, 22),
617
- 2005: (FEB, 9),
618
- 2006: (JAN, 29),
619
- 2007: (FEB, 18),
620
- 2008: (FEB, 7),
621
- 2009: (JAN, 26),
622
- 2010: (FEB, 14),
623
- 2011: (FEB, 3),
624
- 2012: (JAN, 23),
625
- 2013: (FEB, 10),
626
- 2014: (JAN, 31),
627
- 2015: (FEB, 19),
628
- 2016: (FEB, 8),
629
- 2017: (JAN, 28),
630
- 2018: (FEB, 16),
631
- 2019: (FEB, 5),
632
- 2020: (JAN, 25),
633
- 2021: (FEB, 12),
634
- 2022: (FEB, 1),
635
- 2023: (JAN, 22),
636
- 2024: (FEB, 10),
637
- 2025: (JAN, 29),
638
- }
612
+ LUNAR_NEW_YEAR_DATES_CONFIRMED_YEARS = (2001, 2025)
639
613
 
640
614
 
641
615
  class MalaysiaHinduHolidays(_CustomHinduHolidays):
@@ -682,62 +656,39 @@ class MalaysiaHinduHolidays(_CustomHinduHolidays):
682
656
 
683
657
 
684
658
  class MalaysiaIslamicHolidays(_CustomIslamicHolidays):
659
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2001, 2025)
685
660
  EID_AL_ADHA_DATES = {
686
661
  2001: (MAR, 6),
687
662
  2002: (FEB, 23),
688
663
  2003: (FEB, 12),
689
664
  2004: (FEB, 2),
690
- 2005: (JAN, 21),
691
- 2006: ((JAN, 10), (DEC, 31)),
692
- 2007: (DEC, 20),
693
665
  2008: (DEC, 9),
694
666
  2009: (NOV, 28),
695
667
  2010: (NOV, 17),
696
668
  2011: (NOV, 7),
697
- 2012: (OCT, 26),
698
- 2013: (OCT, 15),
699
669
  2014: (OCT, 5),
700
670
  2015: (SEP, 24),
701
671
  2016: (SEP, 12),
702
- 2017: (SEP, 1),
703
672
  2018: (AUG, 22),
704
- 2019: (AUG, 11),
705
- 2020: (JUL, 31),
706
- 2021: (JUL, 20),
707
673
  2022: (JUL, 10),
708
674
  2023: (JUN, 29),
709
675
  2024: (JUN, 17),
710
676
  2025: (JUN, 7),
711
677
  }
712
678
 
679
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2001, 2025)
713
680
  EID_AL_FITR_DATES = {
714
681
  2001: (DEC, 17),
715
682
  2002: (DEC, 6),
716
683
  2003: (NOV, 26),
717
- 2004: (NOV, 14),
718
- 2005: (NOV, 3),
719
684
  2006: (OCT, 24),
720
- 2007: (OCT, 13),
721
- 2008: (OCT, 1),
722
- 2009: (SEP, 20),
723
- 2010: (SEP, 10),
724
685
  2011: (AUG, 31),
725
- 2012: (AUG, 19),
726
- 2013: (AUG, 8),
727
- 2014: (JUL, 28),
728
- 2015: (JUL, 17),
729
- 2016: (JUL, 6),
730
- 2017: (JUN, 25),
731
- 2018: (JUN, 15),
732
686
  2019: (JUN, 5),
733
- 2020: (MAY, 24),
734
- 2021: (MAY, 13),
735
- 2022: (MAY, 2),
736
687
  2023: (APR, 22),
737
- 2024: (APR, 10),
738
688
  2025: (MAR, 31),
739
689
  }
740
690
 
691
+ HARI_HOL_JOHOR_DATES_CONFIRMED_YEARS = (2011, 2025)
741
692
  HARI_HOL_JOHOR_DATES = {
742
693
  2011: (JAN, 12),
743
694
  2012: (DEC, 20),
@@ -746,93 +697,48 @@ class MalaysiaIslamicHolidays(_CustomIslamicHolidays):
746
697
  2015: (NOV, 19),
747
698
  2016: (NOV, 7),
748
699
  2017: (OCT, 27),
749
- 2018: (OCT, 15),
750
- 2019: (OCT, 5),
751
700
  2020: (SEP, 24),
752
- 2021: (SEP, 13),
753
701
  2022: (SEP, 3),
754
702
  2023: (AUG, 23),
755
703
  2024: (AUG, 11),
756
- 2025: (JUL, 31),
757
704
  }
758
705
 
706
+ HIJRI_NEW_YEAR_DATES_CONFIRMED_YEARS = (2001, 2025)
759
707
  HIJRI_NEW_YEAR_DATES = {
760
- 2001: (MAR, 26),
761
- 2002: (MAR, 15),
762
708
  2003: (MAR, 5),
763
709
  2004: (FEB, 22),
764
- 2005: (FEB, 10),
765
- 2006: (JAN, 31),
766
- 2007: (JAN, 20),
767
- 2008: ((JAN, 10), (DEC, 29)),
768
- 2009: (DEC, 18),
769
710
  2010: (DEC, 8),
770
711
  2011: (NOV, 27),
771
- 2012: (NOV, 15),
772
712
  2013: (NOV, 5),
773
- 2014: (OCT, 25),
774
- 2015: (OCT, 14),
775
- 2016: (OCT, 2),
776
713
  2017: (SEP, 22),
777
- 2018: (SEP, 11),
778
714
  2019: (SEP, 1),
779
- 2020: (AUG, 20),
780
715
  2021: (AUG, 10),
781
- 2022: (JUL, 30),
782
- 2023: (JUL, 19),
783
- 2024: (JUL, 7),
784
716
  2025: (JUN, 27),
785
717
  }
786
718
 
719
+ ISRA_AND_MIRAJ_DATES_CONFIRMED_YEARS = (2001, 2025)
787
720
  ISRA_AND_MIRAJ_DATES = {
788
721
  2001: (OCT, 15),
789
- 2002: (OCT, 4),
790
- 2003: (SEP, 24),
791
- 2004: (SEP, 12),
792
- 2005: (SEP, 1),
793
722
  2006: (AUG, 22),
794
723
  2007: (AUG, 11),
795
724
  2008: (JUL, 31),
796
- 2009: (JUL, 20),
797
- 2010: (JUL, 9),
798
- 2011: (JUN, 29),
799
- 2012: (JUN, 17),
800
- 2013: (JUN, 6),
801
725
  2014: (MAY, 27),
802
- 2015: (MAY, 16),
803
726
  2016: (MAY, 5),
804
- 2017: (APR, 24),
805
727
  2018: (APR, 14),
806
- 2019: (APR, 3),
807
- 2020: (MAR, 22),
808
- 2021: (MAR, 11),
809
728
  2022: (MAR, 1),
810
- 2023: (FEB, 18),
811
- 2024: (FEB, 8),
812
- 2025: (JAN, 27),
813
729
  }
814
730
 
731
+ MAWLID_DATES_CONFIRMED_YEARS = (2001, 2025)
815
732
  MAWLID_DATES = {
816
- 2001: (JUN, 4),
817
- 2002: (MAY, 24),
818
733
  2003: (MAY, 14),
819
734
  2004: (MAY, 2),
820
- 2005: (APR, 21),
821
735
  2006: (APR, 11),
822
- 2007: (MAR, 31),
823
- 2008: (MAR, 20),
824
- 2009: (MAR, 9),
825
- 2010: (FEB, 26),
826
736
  2011: (FEB, 16),
827
737
  2012: (FEB, 5),
828
- 2013: (JAN, 24),
829
738
  2014: (JAN, 14),
830
739
  2015: ((JAN, 3), (DEC, 24)),
831
740
  2016: (DEC, 12),
832
741
  2017: (DEC, 1),
833
- 2018: (NOV, 20),
834
- 2019: (NOV, 9),
835
- 2020: (OCT, 29),
836
742
  2021: (OCT, 19),
837
743
  2022: (OCT, 10),
838
744
  2023: (SEP, 28),
@@ -840,58 +746,31 @@ class MalaysiaIslamicHolidays(_CustomIslamicHolidays):
840
746
  2025: (SEP, 5),
841
747
  }
842
748
 
749
+ NUZUL_AL_QURAN_DATES_CONFIRMED_YEARS = (2001, 2025)
843
750
  NUZUL_AL_QURAN_DATES = {
844
751
  2001: (DEC, 3),
845
- 2002: (NOV, 22),
846
752
  2003: (NOV, 12),
847
753
  2004: (NOV, 1),
848
754
  2005: (OCT, 21),
849
- 2006: (OCT, 10),
850
- 2007: (SEP, 29),
851
755
  2008: (SEP, 18),
852
- 2009: (SEP, 7),
853
- 2010: (AUG, 27),
854
- 2011: (AUG, 17),
855
- 2012: (AUG, 5),
856
- 2013: (JUL, 25),
857
756
  2014: (JUL, 15),
858
- 2015: (JUL, 4),
859
- 2016: (JUN, 22),
860
- 2017: (JUN, 12),
861
757
  2018: (JUN, 2),
862
- 2019: (MAY, 22),
863
- 2020: (MAY, 10),
864
- 2021: (APR, 29),
865
758
  2022: (APR, 19),
866
- 2023: (APR, 8),
867
759
  2024: (MAR, 28),
868
760
  2025: (MAR, 18),
869
761
  }
870
762
 
763
+ RAMADAN_BEGINNING_DATES_CONFIRMED_YEARS = (2001, 2025)
871
764
  RAMADAN_BEGINNING_DATES = {
872
765
  2001: (NOV, 17),
873
- 2002: (NOV, 6),
874
766
  2003: (OCT, 27),
875
767
  2004: (OCT, 16),
876
768
  2005: (OCT, 5),
877
- 2006: (SEP, 24),
878
- 2007: (SEP, 13),
879
769
  2008: (SEP, 2),
880
- 2009: (AUG, 22),
881
- 2010: (AUG, 11),
882
- 2011: (AUG, 1),
883
- 2012: (JUL, 20),
884
- 2013: (JUL, 9),
885
770
  2014: (JUN, 29),
886
- 2015: (JUN, 18),
887
771
  2016: (JUN, 7),
888
- 2017: (MAY, 27),
889
772
  2018: (MAY, 17),
890
- 2019: (MAY, 6),
891
- 2020: (APR, 24),
892
- 2021: (APR, 13),
893
773
  2022: (APR, 3),
894
- 2023: (MAR, 23),
895
774
  2024: (MAR, 12),
896
775
  2025: (MAR, 2),
897
776
  }
@@ -25,6 +25,8 @@ class Maldives(HolidayBase, InternationalHolidays, IslamicHolidays):
25
25
  """
26
26
 
27
27
  country = "MV"
28
+ # %s (estimated).
29
+ estimated_label = "%s (estimated)"
28
30
  weekend = {FRI, SAT}
29
31
 
30
32
  def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
@@ -13,7 +13,7 @@
13
13
  from gettext import gettext as tr
14
14
 
15
15
  from holidays.calendars import _CustomIslamicHolidays
16
- from holidays.calendars.gregorian import JAN, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
16
+ from holidays.calendars.gregorian import JAN, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
17
17
  from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
18
18
  from holidays.holiday_base import HolidayBase
19
19
 
@@ -107,43 +107,38 @@ class MLI(Mali):
107
107
 
108
108
  class MaliIslamicHolidays(_CustomIslamicHolidays):
109
109
  # https://web.archive.org/web/20250619042440/https://www.timeanddate.com/holidays/mali/eid-al-adha
110
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2015, 2025)
110
111
  EID_AL_ADHA_DATES = {
111
112
  2015: (SEP, 24),
112
113
  2016: (SEP, 13),
113
114
  2017: (SEP, 2),
114
115
  2018: (AUG, 22),
115
- 2019: (AUG, 11),
116
- 2020: (JUL, 31),
117
116
  2021: (JUL, 21),
118
- 2022: (JUL, 9),
119
- 2023: (JUN, 28),
120
117
  2024: (JUN, 17),
121
118
  2025: (JUN, 7),
122
119
  }
123
120
 
124
121
  # https://web.archive.org/web/20250318001443/https://www.timeanddate.com/holidays/mali/eid-al-fitr
122
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2015, 2025)
125
123
  EID_AL_FITR_DATES = {
126
124
  2015: (JUL, 18),
127
125
  2016: (JUL, 7),
128
126
  2017: (JUN, 26),
129
- 2018: (JUN, 15),
130
127
  2019: (JUN, 3),
131
128
  2020: (MAY, 23),
132
129
  2021: (MAY, 12),
133
130
  2022: (MAY, 1),
134
- 2023: (APR, 21),
135
131
  2024: (APR, 9),
136
- 2025: (MAR, 30),
137
132
  }
138
133
 
139
134
  # https://web.archive.org/web/20240424165412/https://www.timeanddate.com/holidays/mali/prophet-birthday
135
+ MAWLID_DATES_CONFIRMED_YEARS = (2015, 2024)
140
136
  MAWLID_DATES = {
141
137
  2015: ((JAN, 3), (DEC, 24)),
142
138
  2016: (DEC, 12),
143
139
  2017: (DEC, 1),
144
140
  2018: (NOV, 21),
145
141
  2019: (NOV, 10),
146
- 2020: (OCT, 29),
147
142
  2021: (OCT, 19),
148
143
  2022: (OCT, 9),
149
144
  2023: (SEP, 28),
@@ -24,6 +24,8 @@ class Mauritania(HolidayBase, InternationalHolidays, IslamicHolidays):
24
24
  """
25
25
 
26
26
  country = "MR"
27
+ # %s (estimated).
28
+ estimated_label = "%s (estimated)"
27
29
  weekend = {FRI, SAT}
28
30
 
29
31
  def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
@@ -165,12 +165,11 @@ class MauritiusHinduHolidays(_CustomHinduHolidays):
165
165
 
166
166
  class MauritiusIslamicHolidays(_CustomIslamicHolidays):
167
167
  # https://web.archive.org/web/20250420201326/https://www.timeanddate.com/holidays/mauritius/eid-al-fitr
168
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2016, 2025)
168
169
  EID_AL_FITR_DATES = {
169
- 2016: (JUL, 6),
170
170
  2017: (JUN, 26),
171
171
  2018: (JUN, 16),
172
172
  2019: (JUN, 5),
173
- 2020: (MAY, 24),
174
173
  2021: (MAY, 14),
175
174
  2022: (MAY, 3),
176
175
  2023: (APR, 22),
@@ -13,7 +13,7 @@
13
13
  from gettext import gettext as tr
14
14
 
15
15
  from holidays.calendars import _CustomIslamicHolidays
16
- from holidays.calendars.gregorian import GREGORIAN_CALENDAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV
16
+ from holidays.calendars.gregorian import GREGORIAN_CALENDAR, JUN, JUL, AUG, SEP, OCT, NOV
17
17
  from holidays.calendars.julian import JULIAN_CALENDAR
18
18
  from holidays.constants import CATHOLIC, HEBREW, ISLAMIC, ORTHODOX, PUBLIC, WORKDAY
19
19
  from holidays.groups import (
@@ -164,36 +164,21 @@ class MNE(Montenegro):
164
164
 
165
165
 
166
166
  class MontenegroIslamicHolidays(_CustomIslamicHolidays):
167
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2012, 2024)
167
168
  EID_AL_ADHA_DATES = {
168
- 2012: (OCT, 26),
169
- 2013: (OCT, 15),
170
169
  2014: (OCT, 5),
171
170
  2015: (SEP, 24),
172
171
  2016: (SEP, 13),
173
172
  2017: (SEP, 2),
174
173
  2018: (AUG, 22),
175
- 2019: (AUG, 11),
176
- 2020: (JUL, 31),
177
- 2021: (JUL, 20),
178
- 2022: (JUL, 9),
179
- 2023: (JUN, 28),
180
- 2024: (JUN, 16),
181
174
  }
182
175
 
176
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2012, 2024)
183
177
  EID_AL_FITR_DATES = {
184
- 2012: (AUG, 19),
185
- 2013: (AUG, 8),
186
178
  2014: (JUL, 29),
187
179
  2015: (JUL, 18),
188
180
  2016: (JUL, 7),
189
181
  2017: (JUN, 26),
190
- 2018: (JUN, 15),
191
- 2019: (JUN, 4),
192
- 2020: (MAY, 24),
193
- 2021: (MAY, 13),
194
- 2022: (MAY, 2),
195
- 2023: (APR, 21),
196
- 2024: (APR, 10),
197
182
  }
198
183
 
199
184
 
@@ -292,46 +292,12 @@ class Nepal(
292
292
  self._add_non_continuous_holidays(is_workday=True)
293
293
 
294
294
 
295
- class NepalIslamicHolidays(_CustomIslamicHolidays):
296
- # Bakrid / Eid-al-Adha.
297
- EID_AL_ADHA_DATES = {
298
- 2010: (NOV, 17),
299
- 2011: (NOV, 7),
300
- 2012: (OCT, 27),
301
- 2013: (OCT, 16),
302
- 2014: (OCT, 6),
303
- 2015: (SEP, 25),
304
- 2016: (SEP, 13),
305
- 2017: (SEP, 2),
306
- 2018: (AUG, 22),
307
- 2019: (AUG, 12),
308
- 2020: (AUG, 1),
309
- 2021: (JUL, 21),
310
- 2022: (JUL, 10),
311
- 2023: (JUN, 29),
312
- 2024: (JUN, 17),
313
- 2025: (JUN, 7),
314
- }
295
+ class NP(Nepal):
296
+ pass
315
297
 
316
- # Id-ul-Fitr / Eid-al-Fitr.
317
- EID_AL_FITR_DATES = {
318
- 2010: (SEP, 10),
319
- 2011: (AUG, 31),
320
- 2012: (AUG, 20),
321
- 2013: (AUG, 8),
322
- 2014: (JUL, 29),
323
- 2015: (JUL, 18),
324
- 2016: (JUL, 7),
325
- 2017: (JUN, 26),
326
- 2018: (JUN, 16),
327
- 2019: (JUN, 5),
328
- 2020: (MAY, 25),
329
- 2021: (MAY, 14),
330
- 2022: (MAY, 3),
331
- 2023: (APR, 22),
332
- 2024: (APR, 11),
333
- 2025: (MAR, 31),
334
- }
298
+
299
+ class NPL(Nepal):
300
+ pass
335
301
 
336
302
 
337
303
  class NepalHinduHolidays(_CustomHinduHolidays):
@@ -398,12 +364,44 @@ class NepalHinduHolidays(_CustomHinduHolidays):
398
364
  }
399
365
 
400
366
 
401
- class NP(Nepal):
402
- pass
403
-
367
+ class NepalIslamicHolidays(_CustomIslamicHolidays):
368
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2010, 2025)
369
+ EID_AL_ADHA_DATES = {
370
+ 2010: (NOV, 17),
371
+ 2011: (NOV, 7),
372
+ 2012: (OCT, 27),
373
+ 2013: (OCT, 16),
374
+ 2014: (OCT, 6),
375
+ 2015: (SEP, 25),
376
+ 2016: (SEP, 13),
377
+ 2017: (SEP, 2),
378
+ 2018: (AUG, 22),
379
+ 2019: (AUG, 12),
380
+ 2020: (AUG, 1),
381
+ 2021: (JUL, 21),
382
+ 2022: (JUL, 10),
383
+ 2023: (JUN, 29),
384
+ 2024: (JUN, 17),
385
+ 2025: (JUN, 7),
386
+ }
404
387
 
405
- class NPL(Nepal):
406
- pass
388
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2010, 2025)
389
+ EID_AL_FITR_DATES = {
390
+ 2011: (AUG, 31),
391
+ 2012: (AUG, 20),
392
+ 2014: (JUL, 29),
393
+ 2015: (JUL, 18),
394
+ 2016: (JUL, 7),
395
+ 2017: (JUN, 26),
396
+ 2018: (JUN, 16),
397
+ 2019: (JUN, 5),
398
+ 2020: (MAY, 25),
399
+ 2021: (MAY, 14),
400
+ 2022: (MAY, 3),
401
+ 2023: (APR, 22),
402
+ 2024: (APR, 11),
403
+ 2025: (MAR, 31),
404
+ }
407
405
 
408
406
 
409
407
  class NepalStaticHolidays:
@@ -156,37 +156,37 @@ class Niger(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Islam
156
156
  self._add_observed(self._add_all_saints_day(tr("Toussaint")))
157
157
 
158
158
 
159
+ class NE(Niger):
160
+ pass
161
+
162
+
163
+ class NER(Niger):
164
+ pass
165
+
166
+
159
167
  class NigerIslamicHolidays(_CustomIslamicHolidays):
168
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (1998, 2025)
160
169
  EID_AL_ADHA_DATES = {
161
170
  1998: (APR, 8),
162
171
  1999: (MAR, 28),
163
- 2000: (MAR, 16),
164
172
  2001: (MAR, 6),
165
173
  2002: (FEB, 23),
166
174
  2003: (FEB, 12),
167
175
  2004: (FEB, 2),
168
- 2005: (JAN, 21),
169
- 2006: ((JAN, 10), (DEC, 31)),
170
- 2007: (DEC, 20),
171
176
  2008: (DEC, 9),
172
177
  2009: (NOV, 28),
173
178
  2010: (NOV, 17),
174
179
  2011: (NOV, 7),
175
- 2012: (OCT, 26),
176
- 2013: (OCT, 15),
177
180
  2014: (OCT, 5),
181
+ 2015: (SEP, 24),
178
182
  2016: (SEP, 13),
179
183
  2017: (SEP, 2),
180
184
  2018: (AUG, 22),
181
- 2019: (AUG, 11),
182
- 2020: (JUL, 31),
183
- 2021: (JUL, 20),
184
185
  2022: (JUL, 10),
185
- 2023: (JUN, 28),
186
- 2024: (JUN, 16),
187
186
  2025: (JUN, 7),
188
187
  }
189
188
 
189
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (1998, 2025)
190
190
  EID_AL_FITR_DATES = {
191
191
  1998: (JAN, 30),
192
192
  1999: (JAN, 19),
@@ -194,127 +194,67 @@ class NigerIslamicHolidays(_CustomIslamicHolidays):
194
194
  2001: (DEC, 17),
195
195
  2002: (DEC, 6),
196
196
  2003: (NOV, 26),
197
- 2004: (NOV, 14),
198
197
  2005: (NOV, 4),
199
198
  2006: (OCT, 24),
200
- 2007: (OCT, 13),
201
199
  2008: (OCT, 2),
202
200
  2009: (SEP, 21),
203
- 2010: (SEP, 10),
204
201
  2011: (AUG, 31),
205
- 2012: (AUG, 19),
206
- 2013: (AUG, 8),
207
202
  2014: (JUL, 29),
208
203
  2015: (JUL, 18),
209
204
  2016: (JUL, 7),
210
205
  2017: (JUN, 26),
211
- 2018: (JUN, 15),
212
- 2019: (JUN, 4),
213
206
  2020: (MAY, 23),
214
207
  2021: (MAY, 12),
215
208
  2022: (MAY, 1),
216
- 2023: (APR, 21),
217
209
  2024: (APR, 9),
218
- 2025: (MAR, 30),
219
210
  }
220
211
 
212
+ HIJRI_NEW_YEAR_DATES_CONFIRMED_YEARS = (1998, 2025)
221
213
  HIJRI_NEW_YEAR_DATES = {
222
214
  1998: (APR, 28),
223
- 1999: (APR, 17),
224
- 2000: (APR, 6),
225
- 2001: (MAR, 26),
226
- 2002: (MAR, 15),
227
215
  2003: (MAR, 5),
228
216
  2004: (FEB, 22),
229
- 2005: (FEB, 10),
230
- 2006: (JAN, 31),
231
- 2007: (JAN, 20),
232
- 2008: ((JAN, 10), (DEC, 29)),
233
- 2009: (DEC, 18),
234
217
  2010: (DEC, 8),
235
218
  2011: (NOV, 27),
236
- 2012: (NOV, 15),
237
219
  2013: (NOV, 5),
238
- 2014: (OCT, 25),
239
220
  2015: (OCT, 15),
240
221
  2016: (OCT, 3),
241
222
  2017: (SEP, 22),
242
223
  2018: (SEP, 12),
243
- 2019: (AUG, 31),
244
224
  2020: (AUG, 21),
245
225
  2021: (AUG, 10),
246
- 2022: (JUL, 30),
247
- 2023: (JUL, 19),
248
226
  2024: (JUL, 6),
249
227
  2025: (JUN, 27),
250
228
  }
251
229
 
230
+ LAYLAT_AL_QADR_DATES_CONFIRMED_YEARS = (1998, 2025)
252
231
  LAYLAT_AL_QADR_DATES = {
253
232
  1998: (JAN, 26),
254
233
  1999: (JAN, 15),
255
234
  2000: ((JAN, 4), (DEC, 24)),
256
235
  2001: (DEC, 13),
257
- 2002: (DEC, 2),
258
236
  2003: (NOV, 22),
259
237
  2004: (NOV, 11),
260
238
  2005: (OCT, 31),
261
- 2006: (OCT, 20),
262
- 2007: (OCT, 9),
263
239
  2008: (SEP, 28),
264
- 2009: (SEP, 17),
265
- 2010: (SEP, 6),
266
- 2011: (AUG, 27),
267
- 2012: (AUG, 15),
268
- 2013: (AUG, 4),
269
240
  2014: (JUL, 25),
270
- 2015: (JUL, 14),
271
- 2016: (JUL, 2),
272
- 2017: (JUN, 22),
273
- 2018: (JUN, 11),
274
- 2019: (JUN, 1),
275
- 2020: (MAY, 20),
276
- 2021: (MAY, 9),
277
- 2022: (APR, 28),
278
- 2023: (APR, 18),
279
- 2024: (APR, 6),
280
- 2025: (MAR, 27),
281
241
  }
282
242
 
243
+ MAWLID_DATES_CONFIRMED_YEARS = (1998, 2025)
283
244
  MAWLID_DATES = {
284
245
  1998: (JUL, 7),
285
- 1999: (JUN, 26),
286
246
  2000: (JUN, 15),
287
- 2001: (JUN, 4),
288
- 2002: (MAY, 24),
289
247
  2003: (MAY, 14),
290
248
  2004: (MAY, 2),
291
- 2005: (APR, 21),
292
249
  2006: (APR, 11),
293
- 2007: (MAR, 31),
294
- 2008: (MAR, 20),
295
- 2009: (MAR, 9),
296
- 2010: (FEB, 26),
297
250
  2011: (FEB, 16),
298
251
  2012: (FEB, 5),
299
- 2013: (JAN, 24),
300
252
  2014: (JAN, 14),
301
253
  2015: ((JAN, 3), (DEC, 24)),
302
254
  2016: (DEC, 12),
303
255
  2017: (DEC, 1),
304
256
  2018: (NOV, 21),
305
257
  2019: (NOV, 10),
306
- 2020: (OCT, 29),
307
- 2021: (OCT, 18),
308
- 2022: (OCT, 8),
309
- 2023: (SEP, 27),
310
258
  2024: (SEP, 16),
311
259
  2025: (SEP, 5),
312
260
  }
313
-
314
-
315
- class NE(Niger):
316
- pass
317
-
318
-
319
- class NER(Niger):
320
- pass