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
@@ -11,7 +11,7 @@
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
13
  from holidays.calendars import _CustomIslamicHolidays
14
- from holidays.calendars.gregorian import JAN, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
14
+ from holidays.calendars.gregorian import JAN, JUN, JUL, SEP, OCT, NOV, DEC
15
15
  from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
16
16
  from holidays.observed_holiday_base import ObservedHolidayBase, SUN_TO_NEXT_MON
17
17
 
@@ -24,6 +24,11 @@ class BurkinaFaso(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
24
24
  """
25
25
 
26
26
  country = "BF"
27
+ # %s (estimated).
28
+ estimated_label = "%s (estimated)"
29
+ # %s (observed, estimated).
30
+ observed_estimated_label = "%s (observed, estimated)"
31
+ # %s (observed).
27
32
  observed_label = "%s (observed)"
28
33
  # On 5 August 1960, Burkina Faso (Republic of Upper Volta at that time)
29
34
  # gained independence from France.
@@ -104,33 +109,23 @@ class BFA(BurkinaFaso):
104
109
 
105
110
 
106
111
  class BurkinaFasoIslamicHolidays(_CustomIslamicHolidays):
112
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2014, 2023)
107
113
  EID_AL_ADHA_DATES = {
108
114
  2014: (OCT, 5),
109
115
  2015: (SEP, 24),
110
116
  2016: (SEP, 13),
111
117
  2017: (SEP, 2),
112
- 2018: (AUG, 21),
113
- 2019: (AUG, 11),
114
- 2020: (JUL, 31),
115
- 2021: (JUL, 20),
116
- 2022: (JUL, 9),
117
- 2023: (JUN, 28),
118
118
  }
119
119
 
120
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2014, 2024)
120
121
  EID_AL_FITR_DATES = {
121
122
  2014: (JUL, 29),
122
123
  2015: (JUL, 18),
123
124
  2016: (JUL, 7),
124
125
  2017: (JUN, 26),
125
- 2018: (JUN, 15),
126
- 2019: (JUN, 4),
127
- 2020: (MAY, 24),
128
- 2021: (MAY, 13),
129
- 2022: (MAY, 2),
130
- 2023: (APR, 21),
131
- 2024: (APR, 10),
132
126
  }
133
127
 
128
+ MAWLID_DATES_CONFIRMED_YEARS = (2014, 2022)
134
129
  MAWLID_DATES = {
135
130
  2014: (JAN, 14),
136
131
  2015: ((JAN, 3), (DEC, 24)),
@@ -138,7 +133,6 @@ class BurkinaFasoIslamicHolidays(_CustomIslamicHolidays):
138
133
  2017: (DEC, 1),
139
134
  2018: (NOV, 21),
140
135
  2019: (NOV, 10),
141
- 2020: (OCT, 29),
142
136
  2021: (OCT, 19),
143
137
  2022: (OCT, 9),
144
138
  }
@@ -10,6 +10,10 @@
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
+
15
+ from holidays.calendars import _CustomIslamicHolidays
16
+ from holidays.calendars.gregorian import JUN, JUL, SEP, OCT
13
17
  from holidays.groups import ChristianHolidays, IslamicHolidays, InternationalHolidays
14
18
  from holidays.observed_holiday_base import ObservedHolidayBase, SUN_TO_NEXT_MON
15
19
 
@@ -18,16 +22,25 @@ class Burundi(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Isl
18
22
  """Burundi holidays.
19
23
 
20
24
  References:
21
- * <https://web.archive.org/web/20240915030631/https://www.officeholidays.com/countries/burundi>
25
+ * [Décret n° 100/150 du 7 Juin 2021](https://web.archive.org/web/20240514031141/https://www.presidence.gov.bi/wp-content/uploads/2021/06/Liste-et-regime-des-jours-feries.pdf)
26
+ * [Republic of Burundi's Ministry of Foreign Affairs Public Holidays List](https://web.archive.org/web/20250820080112/https://www.mae.gov.bi/en/official-holidays/)
27
+ * <https://web.archive.org/web/20250820095115/https://www.timeanddate.com/holidays/burundi/2025>
22
28
 
23
- Note that holidays falling on a sunday maybe observed on the following Monday.
24
- This depends on formal announcements by the government, which only happens close
25
- to the date of the holiday.
29
+ When it appears inappropriate for a public holiday listed in Article 1 to be observed because
30
+ it coincides with a Sunday, it shall be postponed to the following working day, which shall
31
+ accordingly be considered a public holiday and observed as such.
26
32
  """
27
33
 
28
34
  country = "BI"
29
- observed_label = "%s (observed)"
35
+ # %s (estimated).
36
+ estimated_label = tr("%s (estimé)")
37
+ default_language = "fr_BI"
38
+ # %s (observed, estimated).
39
+ observed_estimated_label = tr("%s (observé, estimé)")
40
+ # %s (observed).
41
+ observed_label = tr("%s (observé)")
30
42
  start_year = 1962
43
+ supported_languages = ("en_US", "fr_BI")
31
44
 
32
45
  def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
33
46
  """
@@ -38,58 +51,82 @@ class Burundi(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Isl
38
51
  """
39
52
  ChristianHolidays.__init__(self)
40
53
  InternationalHolidays.__init__(self)
41
- IslamicHolidays.__init__(self, show_estimated=islamic_show_estimated)
54
+ IslamicHolidays.__init__(
55
+ self, cls=BurundiIslamicHolidays, show_estimated=islamic_show_estimated
56
+ )
42
57
  kwargs.setdefault("observed_rule", SUN_TO_NEXT_MON)
43
58
  super().__init__(*args, **kwargs)
44
59
 
45
60
  def _populate_public_holidays(self):
46
- # New Year's Day
47
- self._add_observed(self._add_new_years_day("New Year's Day"))
61
+ dts_observed = set()
62
+
63
+ # New Year's Day.
64
+ dts_observed.add(self._add_new_years_day(tr("Jour de l'an")))
48
65
 
49
- # Unity Day
50
66
  if self._year >= 1992:
51
- self._add_observed(self._add_holiday_feb_5("Unity Day"))
67
+ # Unity Day.
68
+ dts_observed.add(self._add_holiday_feb_5(tr("Fête de l'Unité")))
52
69
 
53
- # President Ntaryamira Day
54
70
  if self._year >= 1995:
55
- self._add_observed(self._add_holiday_apr_6("President Ntaryamira Day"))
71
+ dts_observed.add(
72
+ self._add_holiday_apr_6(
73
+ # Commemoration of the Assassination of President Cyprien Ntaryamira.
74
+ tr("Commémoration de l'Assassinat du Président Cyprien Ntaryamira")
75
+ )
76
+ )
56
77
 
57
- # Labour Day
58
- self._add_observed(self._add_labor_day("Labour Day"))
78
+ # International Labor Day.
79
+ dts_observed.add(self._add_labor_day(tr("Fête Internationale du Travail")))
59
80
 
60
- # Ascension Day
61
- self._add_ascension_thursday("Ascension Day")
81
+ # Ascension Day.
82
+ self._add_ascension_thursday(tr("Jour de l'Ascension"))
62
83
 
63
- # President Nkurunziza Day
64
84
  if self._year >= 2022:
65
- self._add_observed(self._add_holiday_jun_8("President Nkurunziza Day"))
66
-
67
- # Independence Day
68
- self._add_observed(self._add_holiday_jul_1("Independence Day"))
69
-
70
- # Assumption Day
71
- self._add_observed(self._add_assumption_of_mary_day("Assumption Day"))
72
-
73
- # Prince Louis Rwagasore Day
74
- self._add_observed(self._add_holiday_oct_13("Prince Louis Rwagasore Day"))
75
-
76
- # President Ndadaye's Day
85
+ dts_observed.add(
86
+ self._add_holiday_jun_8(
87
+ # National Day of Patriotism and Commemoration of the Death of
88
+ # President Pierre Nkurunziza.
89
+ tr(
90
+ "Journée Nationale du Patriotisme et Commémoration de la Mort "
91
+ "du Président Pierre Nkurunziza"
92
+ )
93
+ )
94
+ )
95
+
96
+ # Independence Day.
97
+ dts_observed.add(self._add_holiday_jul_1(tr("Anniversaire de l'Indépendance")))
98
+
99
+ # Assumption Day.
100
+ dts_observed.add(self._add_assumption_of_mary_day(tr("Assomption")))
101
+
102
+ dts_observed.add(
103
+ self._add_holiday_oct_13(
104
+ # Commemoration of the Assassination of National Hero, Prince Louis Rwagasore.
105
+ tr("Commémoration de l'Assassinat du Héros National, le Prince Louis Rwagasore")
106
+ )
107
+ )
77
108
  if self._year >= 1994:
78
- self._add_observed(self._add_holiday_oct_21("President Ndadaye's Day"))
109
+ dts_observed.add(
110
+ self._add_holiday_oct_21(
111
+ # Commemoration of the Assassination of President Melchior Ndadaye.
112
+ tr("Commémoration de l'Assassinat du Président Melchior Ndadaye")
113
+ )
114
+ )
115
+
116
+ # All Saints' Day.
117
+ dts_observed.add(self._add_all_saints_day(tr("Toussaint")))
79
118
 
80
- # All Saints' Day
81
- self._add_observed(self._add_all_saints_day("All Saints' Day"))
119
+ # Christmas Day.
120
+ dts_observed.add(self._add_christmas_day(tr("Noël")))
82
121
 
83
- # Christmas Day
84
- self._add_observed(self._add_christmas_day("Christmas Day"))
122
+ # Eid al-Fitr.
123
+ dts_observed.update(self._add_eid_al_fitr_day(tr("Aid-El-Fithr")))
85
124
 
86
- # Eid ul Fitr
87
- for dt in self._add_eid_al_fitr_day("Eid ul Fitr"):
88
- self._add_observed(dt)
125
+ # Eid al-Adha.
126
+ dts_observed.update(self._add_eid_al_adha_day(tr("Aid-El-Adha")))
89
127
 
90
- # Eid al Adha
91
- for dt in self._add_eid_al_adha_day("Eid al Adha"):
92
- self._add_observed(dt)
128
+ if self.observed:
129
+ self._populate_observed(dts_observed)
93
130
 
94
131
 
95
132
  class BI(Burundi):
@@ -98,3 +135,21 @@ class BI(Burundi):
98
135
 
99
136
  class BDI(Burundi):
100
137
  pass
138
+
139
+
140
+ class BurundiIslamicHolidays(_CustomIslamicHolidays):
141
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2014, 2025)
142
+ EID_AL_ADHA_DATES = {
143
+ 2014: (OCT, 5),
144
+ 2015: (SEP, 24),
145
+ 2016: (SEP, 13),
146
+ 2017: (SEP, 2),
147
+ }
148
+
149
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2014, 2025)
150
+ EID_AL_FITR_DATES = {
151
+ 2014: (JUL, 29),
152
+ 2015: (JUL, 18),
153
+ 2016: (JUL, 7),
154
+ 2017: (JUN, 26),
155
+ }
@@ -33,6 +33,11 @@ class Cameroon(
33
33
  """
34
34
 
35
35
  country = "CM"
36
+ # %s (estimated).
37
+ estimated_label = "%s (estimated)"
38
+ # %s (observed, estimated).
39
+ observed_estimated_label = "%s (observed, estimated)"
40
+ # %s (observed).
36
41
  observed_label = "%s (observed)"
37
42
  # On 1 January 1960, French Cameroun gained independence from France.
38
43
  start_year = 1960
@@ -104,82 +109,51 @@ class CMR(Cameroon):
104
109
 
105
110
 
106
111
  class CameroonIslamicHolidays(_CustomIslamicHolidays):
112
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2001, 2023)
107
113
  EID_AL_ADHA_DATES = {
108
114
  2001: (MAR, 6),
109
115
  2002: (FEB, 23),
110
116
  2003: (FEB, 12),
111
117
  2004: (FEB, 2),
112
- 2005: (JAN, 21),
113
- 2006: ((JAN, 10), (DEC, 31)),
114
- 2007: (DEC, 20),
115
118
  2008: (DEC, 9),
116
119
  2009: (NOV, 28),
117
120
  2010: (NOV, 17),
118
121
  2011: (NOV, 7),
119
- 2012: (OCT, 26),
120
- 2013: (OCT, 15),
121
122
  2014: (OCT, 5),
122
123
  2015: (SEP, 24),
123
124
  2016: (SEP, 13),
124
125
  2017: (SEP, 2),
125
- 2018: (AUG, 21),
126
- 2019: (AUG, 11),
127
- 2020: (JUL, 31),
128
- 2021: (JUL, 20),
129
- 2022: (JUL, 9),
130
- 2023: (JUN, 28),
131
126
  }
132
127
 
128
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2001, 2024)
133
129
  EID_AL_FITR_DATES = {
134
130
  2001: (DEC, 17),
135
131
  2002: (DEC, 6),
136
132
  2003: (NOV, 26),
137
- 2004: (NOV, 14),
138
133
  2005: (NOV, 4),
139
134
  2006: (OCT, 24),
140
- 2007: (OCT, 13),
141
135
  2008: (OCT, 2),
142
136
  2009: (SEP, 21),
143
- 2010: (SEP, 10),
144
137
  2011: (AUG, 31),
145
- 2012: (AUG, 19),
146
- 2013: (AUG, 8),
147
- 2014: (JUL, 28),
148
138
  2015: (JUL, 18),
149
139
  2016: (JUL, 7),
150
140
  2017: (JUN, 26),
151
- 2018: (JUN, 15),
152
- 2019: (JUN, 4),
153
- 2020: (MAY, 24),
154
- 2021: (MAY, 13),
155
- 2022: (MAY, 2),
156
- 2023: (APR, 21),
157
- 2024: (APR, 10),
158
141
  }
159
142
 
143
+ MAWLID_DATES_CONFIRMED_YEARS = (2001, 2022)
160
144
  MAWLID_DATES = {
161
- 2001: (JUN, 4),
162
- 2002: (MAY, 24),
163
145
  2003: (MAY, 14),
164
146
  2004: (MAY, 2),
165
- 2005: (APR, 21),
166
147
  2006: (APR, 11),
167
- 2007: (MAR, 31),
168
- 2008: (MAR, 20),
169
- 2009: (MAR, 9),
170
- 2010: (FEB, 26),
171
148
  2011: (FEB, 16),
172
149
  2012: (FEB, 5),
173
- 2013: (JAN, 24),
174
150
  2014: (JAN, 14),
175
151
  2015: ((JAN, 3), (DEC, 24)),
176
152
  2016: (DEC, 12),
177
153
  2017: (DEC, 1),
178
154
  2018: (NOV, 21),
179
155
  2019: (NOV, 10),
180
- 2020: (OCT, 29),
181
156
  2021: (OCT, 19),
182
- 2022: (OCT, 8),
183
157
  }
184
158
 
185
159
 
@@ -45,6 +45,8 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
45
45
  * <https://web.archive.org/web/20250428153936/https://www.thecanadianencyclopedia.ca/en/article/thanksgiving-day>
46
46
  * <https://web.archive.org/web/20250428154427/https://recherche-collection-search.bac-lac.gc.ca/eng/home/record?idnumber=9326&app=diawlmking&ecopy=80003QJW>
47
47
  * <https://web.archive.org/web/20240915001506/https://www.britannica.com/topic/Victoria-Day>
48
+ * [NT National Aboriginal Day](https://web.archive.org/web/20160623071755/http://www.daair.gov.nt.ca/_live/pages/wpPages/National_Aboriginal_Day.aspx)
49
+ * [MB National Day for Truth and Reconciliation](https://web.archive.org/web/20240714223654/https://web2.gov.mb.ca/bills/43-1/b004e.php)
48
50
  """
49
51
 
50
52
  country = "CA"
@@ -276,6 +278,12 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
276
278
 
277
279
  self._add_victoria_day()
278
280
 
281
+ if self._year >= 2024:
282
+ self._add_observed(
283
+ # National Day for Truth and Reconciliation.
284
+ self._add_holiday_sep_30(tr("National Day for Truth and Reconciliation"))
285
+ )
286
+
279
287
  self._add_thanksgiving_day()
280
288
 
281
289
  def _populate_subdiv_mb_optional_holidays(self):
@@ -370,7 +378,7 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
370
378
  def _populate_subdiv_nt_public_holidays(self):
371
379
  self._add_victoria_day()
372
380
 
373
- if self._year >= 1996:
381
+ if self._year >= 2001:
374
382
  # National Aboriginal Day.
375
383
  self._add_holiday_jun_21(tr("National Aboriginal Day"))
376
384
 
@@ -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 MAR, APR, MAY, JUN, JUL, AUG, SEP
16
+ from holidays.calendars.gregorian import JUN, JUL, SEP
17
17
  from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
18
18
  from holidays.holiday_base import HolidayBase
19
19
 
@@ -114,30 +114,17 @@ class CAF(CentralAfricanRepublic):
114
114
 
115
115
 
116
116
  class CentralAfricanRepublicIslamicHolidays(_CustomIslamicHolidays):
117
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2015, 2025)
117
118
  EID_AL_ADHA_DATES = {
118
119
  2015: (SEP, 24),
119
120
  2016: (SEP, 13),
120
121
  2017: (SEP, 2),
121
- 2018: (AUG, 21),
122
- 2019: (AUG, 11),
123
- 2020: (JUL, 31),
124
- 2021: (JUL, 20),
125
- 2022: (JUL, 9),
126
- 2023: (JUN, 28),
127
- 2024: (JUN, 16),
128
122
  2025: (JUN, 7),
129
123
  }
130
124
 
125
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2015, 2025)
131
126
  EID_AL_FITR_DATES = {
132
127
  2015: (JUL, 18),
133
128
  2016: (JUL, 7),
134
129
  2017: (JUN, 26),
135
- 2018: (JUN, 15),
136
- 2019: (JUN, 4),
137
- 2020: (MAY, 24),
138
- 2021: (MAY, 13),
139
- 2022: (MAY, 2),
140
- 2023: (APR, 21),
141
- 2024: (APR, 10),
142
- 2025: (MAR, 30),
143
130
  }
@@ -11,7 +11,7 @@
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
13
  from holidays.calendars import _CustomIslamicHolidays
14
- from holidays.calendars.gregorian import JAN, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
14
+ from holidays.calendars.gregorian import JAN, APR, JUN, JUL, AUG, SEP, NOV, DEC
15
15
  from holidays.groups import (
16
16
  ChristianHolidays,
17
17
  InternationalHolidays,
@@ -32,6 +32,11 @@ class Chad(
32
32
  """
33
33
 
34
34
  country = "TD"
35
+ # %s (estimated).
36
+ estimated_label = "%s (estimated)"
37
+ # %s (observed, estimated).
38
+ observed_estimated_label = "%s (observed, estimated)"
39
+ # %s (observed).
35
40
  observed_label = "%s (observed)"
36
41
  # On 11 August 1960, Chad gained independence from France.
37
42
  start_year = 1961
@@ -100,40 +105,27 @@ class TCD(Chad):
100
105
 
101
106
 
102
107
  class ChadIslamicHolidays(_CustomIslamicHolidays):
108
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2015, 2023)
103
109
  EID_AL_ADHA_DATES = {
104
110
  2015: (SEP, 24),
105
111
  2016: (SEP, 13),
106
112
  2017: (SEP, 2),
107
113
  2018: (AUG, 22),
108
- 2019: (AUG, 11),
109
- 2020: (JUL, 31),
110
- 2021: (JUL, 20),
111
- 2022: (JUL, 9),
112
- 2023: (JUN, 28),
113
114
  }
114
115
 
116
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2015, 2024)
115
117
  EID_AL_FITR_DATES = {
116
118
  2015: (JUL, 18),
117
119
  2016: (JUL, 7),
118
120
  2017: (JUN, 26),
119
- 2018: (JUN, 15),
120
- 2019: (JUN, 4),
121
- 2020: (MAY, 24),
122
- 2021: (MAY, 13),
123
- 2022: (MAY, 2),
124
- 2023: (APR, 21),
125
- 2024: (APR, 10),
126
121
  }
127
122
 
123
+ MAWLID_DATES_CONFIRMED_YEARS = (2015, 2022)
128
124
  MAWLID_DATES = {
129
125
  2015: ((JAN, 3), (DEC, 24)),
130
126
  2016: (DEC, 12),
131
127
  2017: (DEC, 1),
132
128
  2018: (NOV, 21),
133
- 2019: (NOV, 9),
134
- 2020: (OCT, 29),
135
- 2021: (OCT, 18),
136
- 2022: (OCT, 8),
137
129
  }
138
130
 
139
131
 
@@ -12,7 +12,7 @@
12
12
 
13
13
  from gettext import gettext as tr
14
14
 
15
- from holidays.calendars.gregorian import JUN, SEP, DEC
15
+ from holidays.calendars.gregorian import APR, JUN, SEP, DEC
16
16
  from holidays.constants import BANK, PUBLIC
17
17
  from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
18
18
  from holidays.observed_holiday_base import (
@@ -30,8 +30,8 @@ class Chile(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
30
30
  """Chile holidays.
31
31
 
32
32
  References:
33
- * <https://web.archive.org/web/20250418020620/https://www.feriados.cl/>
34
- * [Excellent history of Chile holidays](https://web.archive.org/web/20250124223839/https://www.feriadoschilenos.cl/)
33
+ * <https://web.archive.org/web/20250718012109/https://www.feriados.cl/>
34
+ * [Excellent history of Chile holidays](https://web.archive.org/web/20250712031422/https://www.feriadoschilenos.cl/)
35
35
  * <https://es.wikipedia.org/wiki/Anexo:Días_feriados_en_Chile>
36
36
  * Law 2.977 (established official Chile holidays in its current form)
37
37
  * Law 20.983 (Day after New Year's Day, if it's a Sunday)
@@ -51,11 +51,17 @@ class Chile(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
51
51
  * Law 20.299 (National Day of the Evangelical and Protestant Churches)
52
52
  * Law 20.663 (Región de Arica y Parinacota)
53
53
  * Law 20.678 (Región de Ñuble)
54
+ * [Law 17.374 (holiday on census days)](https://web.archive.org/web/20250812022623/https://www.bcn.cl/leychile/navegar?idNorma=28960&idVersion=2002-02-01)
54
55
  * [Law 19.656 (Dec 31, 1999 holiday)](https://web.archive.org/web/20241228005823/https://www.bcn.cl/leychile/navegar?idNorma=149328&idVersion=1999-12-15)
55
56
  * [Law 12.051 (bank holidays Jun 30 and Dec 31)](https://web.archive.org/web/20241227190026/https://www.bcn.cl/leychile/navegar?idNorma=27013&idVersion=1956-07-12)
56
57
  * [Decree-law 1.171 (eliminate Jun 30)](https://web.archive.org/web/20241227191010/https://www.bcn.cl/leychile/navegar?idNorma=6507&idVersion=1975-09-05)
57
58
  * [Law 19.528 (eliminate Dec 31)](https://web.archive.org/web/20241227191452/https://www.bcn.cl/leychile/navegar?idNorma=76630&idVersion=1997-11-04)
58
59
  * [Law 19.559 (restore Dec 31)](https://web.archive.org/web/20241227195811/https://www.bcn.cl/leychile/navegar?idNorma=97758&idVersion=1998-04-16)
60
+ * [Law 19.973 (Sep 17, 2004 holiday)](https://web.archive.org/web/20250812023003/https://www.bcn.cl/leychile/navegar?idLey=19973)
61
+ * [Law 20.450 (Sep 17, 2010 and Sep 20, 2010 holidays)](https://web.archive.org/web/20250812023308/https://www.bcn.cl/leychile/navegar?idLey=20450)
62
+ * [Law 21.521 (eliminate Dec 31 again, after the CMF publishes a specific regulation)](https://web.archive.org/web/20240214154900/https://www.bcn.cl/leychile/navegar?idNorma=1187323&idVersion=2023-02-03)
63
+ * [Norma de Carácter General N° 543 de la CMF](https://web.archive.org/web/20250811111649/https://www.cmfchile.cl/normativa/ncg_543_2025.pdf)
64
+ * [Resolución Exenta N° 7.671 (CMF, 2025-08-01)](https://web.archive.org/web/20250811123908/https://www.cmfchile.cl/sitio/aplic/serdoc/ver_sgd.php?s567=ba5ad42feea3531a678a9db5253a9477VFdwQmVVNVVRVFJOUkZWNlRucEpORTVCUFQwPQ==&secuencia=-1&t=1754086087)
59
65
  """
60
66
 
61
67
  country = "CL"
@@ -237,7 +243,7 @@ class Chile(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stati
237
243
  if 1957 <= self._year <= 1975:
238
244
  self._add_holiday_jun_30(name)
239
245
 
240
- if self._year >= 1956 and self._year != 1997:
246
+ if 1956 <= self._year <= 2024 and self._year != 1997:
241
247
  self._add_holiday_dec_31(name)
242
248
 
243
249
  @property
@@ -262,7 +268,17 @@ class ChileStaticHolidays:
262
268
  # National Holiday.
263
269
  national_holiday = tr("Feriado nacional")
264
270
 
271
+ # National Population and Housing Census.
272
+ national_census = tr("Censo Nacional de Población y Vivienda")
273
+
265
274
  special_public_holidays = {
266
275
  1999: (DEC, 31, national_holiday),
276
+ 2002: (APR, 24, national_census),
277
+ 2004: (SEP, 17, national_holiday),
278
+ 2010: (
279
+ (SEP, 17, national_holiday),
280
+ (SEP, 20, national_holiday),
281
+ ),
282
+ 2017: (APR, 19, national_census),
267
283
  2022: (SEP, 16, national_holiday),
268
284
  }
@@ -13,7 +13,7 @@
13
13
  from gettext import gettext as tr
14
14
 
15
15
  from holidays.calendars import _CustomChineseHolidays, _CustomIslamicHolidays
16
- from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
16
+ from holidays.calendars.gregorian import JAN, FEB, MAR, APR, JUN, JUL, AUG, SEP, OCT, NOV
17
17
  from holidays.groups import (
18
18
  ChineseCalendarHolidays,
19
19
  ChristianHolidays,
@@ -72,6 +72,12 @@ class ChristmasIsland(
72
72
  start_year = 2007
73
73
 
74
74
  def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
75
+ """
76
+ Args:
77
+ islamic_show_estimated:
78
+ Whether to add "estimated" label to Islamic holidays name
79
+ if holiday date is estimated.
80
+ """
75
81
  ChineseCalendarHolidays.__init__(self, cls=ChristmasIslandChineseHolidays)
76
82
  ChristianHolidays.__init__(self)
77
83
  InternationalHolidays.__init__(self)
@@ -133,6 +139,7 @@ class ChristmasIsland(
133
139
 
134
140
 
135
141
  class ChristmasIslandChineseHolidays(_CustomChineseHolidays):
142
+ LUNAR_NEW_YEAR_DATES_CONFIRMED_YEARS = (2007, 2023)
136
143
  LUNAR_NEW_YEAR_DATES = {
137
144
  2007: (FEB, 19),
138
145
  2009: (JAN, 27),
@@ -142,39 +149,27 @@ class ChristmasIslandChineseHolidays(_CustomChineseHolidays):
142
149
 
143
150
 
144
151
  class ChristmasIslandIslamicHolidays(_CustomIslamicHolidays):
152
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = ((2007, 2010), (2019, 2025))
145
153
  EID_AL_ADHA_DATES = {
146
- 2007: (DEC, 20),
147
- 2008: (DEC, 8),
148
154
  2009: (NOV, 30),
149
- 2010: (NOV, 16),
150
155
  2013: (OCT, 15),
151
156
  2014: (OCT, 5),
152
157
  2016: (SEP, 13),
153
158
  2017: (SEP, 1),
154
- 2019: (AUG, 11),
155
- 2020: (JUL, 31),
156
- 2021: (JUL, 20),
157
- 2022: (JUL, 9),
158
- 2023: (JUN, 28),
159
159
  2024: (JUN, 17),
160
160
  2025: (JUN, 7),
161
161
  }
162
162
 
163
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = ((2007, 2010), (2019, 2025))
163
164
  EID_AL_FITR_DATES = {
164
165
  2007: (OCT, 15),
165
- 2008: (OCT, 1),
166
166
  2009: (SEP, 21),
167
- 2010: (SEP, 10),
168
167
  2013: (AUG, 8),
169
168
  2014: (JUL, 28),
170
169
  2016: (JUL, 6),
171
170
  2017: (JUN, 24),
172
171
  2019: (JUN, 5),
173
- 2020: (MAY, 24),
174
- 2021: (MAY, 13),
175
- 2022: (MAY, 2),
176
172
  2023: (APR, 22),
177
- 2024: (APR, 10),
178
173
  2025: (MAR, 31),
179
174
  }
180
175