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
@@ -164,15 +164,15 @@ class Azerbaijan(ObservedHolidayBase, InternationalHolidays, IslamicHolidays, St
164
164
  if self.observed and self._year >= 2006:
165
165
  self._populate_observed(dts_observed.union(dts_bairami))
166
166
 
167
- bayrami_names = {self.tr("Ramazan bayrami"), self.tr("Qurban bayrami")}
167
+ bayrami_names = (self.tr("Qurban bayrami"), self.tr("Ramazan bayrami"))
168
168
  # 6. If the holidays of Qurban and Ramadan coincide with another holiday
169
169
  # that is not considered a working day, the next working day is considered a rest day.
170
170
  for dt_observed in sorted(dts_bairami.difference(dts_non_observed)):
171
171
  if len(dt_holidays := self.get_list(dt_observed)) == 1:
172
172
  continue
173
- for name in dt_holidays:
174
- if name in bayrami_names:
175
- self._add_observed(dt_observed, name, WORKDAY_TO_NEXT_WORKDAY)
173
+ for holiday_name in dt_holidays:
174
+ if any(bayrami_name in holiday_name for bayrami_name in bayrami_names):
175
+ self._add_observed(dt_observed, holiday_name, WORKDAY_TO_NEXT_WORKDAY)
176
176
 
177
177
  def _populate_workday_holidays(self):
178
178
  if self._year >= 2021:
@@ -206,58 +206,25 @@ class AZE(Azerbaijan):
206
206
 
207
207
 
208
208
  class AzerbaijanIslamicHolidays(_CustomIslamicHolidays):
209
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2002, 2025)
209
210
  EID_AL_ADHA_DATES = {
210
211
  2002: (FEB, 21),
211
- 2003: (FEB, 11),
212
- 2004: (FEB, 1),
213
212
  2005: (JAN, 22),
214
- 2006: ((JAN, 10), (DEC, 31)),
215
- 2007: (DEC, 20),
216
- 2008: (DEC, 8),
217
- 2009: (NOV, 27),
218
- 2010: (NOV, 16),
219
- 2011: (NOV, 6),
220
213
  2012: (OCT, 25),
221
- 2013: (OCT, 15),
222
- 2014: (OCT, 4),
223
214
  2015: (SEP, 24),
224
215
  2016: (SEP, 12),
225
- 2017: (SEP, 1),
226
216
  2018: (AUG, 22),
227
217
  2019: (AUG, 12),
228
- 2020: (JUL, 31),
229
- 2021: (JUL, 20),
230
- 2022: (JUL, 9),
231
- 2023: (JUN, 28),
232
- 2024: (JUN, 16),
233
- 2025: (JUN, 6),
234
218
  }
235
219
 
220
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2002, 2025)
236
221
  EID_AL_FITR_DATES = {
237
222
  2002: (DEC, 4),
238
- 2003: (NOV, 25),
239
- 2004: (NOV, 14),
240
- 2005: (NOV, 3),
241
- 2006: (OCT, 23),
242
223
  2007: (OCT, 12),
243
224
  2008: (SEP, 30),
244
- 2009: (SEP, 20),
245
225
  2010: (SEP, 9),
246
- 2011: (AUG, 30),
247
- 2012: (AUG, 19),
248
- 2013: (AUG, 8),
249
- 2014: (JUL, 28),
250
- 2015: (JUL, 17),
251
- 2016: (JUL, 6),
252
226
  2017: (JUN, 26),
253
- 2018: (JUN, 15),
254
227
  2019: (JUN, 5),
255
- 2020: (MAY, 24),
256
- 2021: (MAY, 13),
257
- 2022: (MAY, 2),
258
- 2023: (APR, 21),
259
- 2024: (APR, 10),
260
- 2025: (MAR, 30),
261
228
  }
262
229
 
263
230
 
@@ -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 FRI, SAT, MAY, JUL, AUG, OCT
16
+ from holidays.calendars.gregorian import JUL, SEP, FRI, SAT
17
17
  from holidays.groups import InternationalHolidays, IslamicHolidays
18
18
  from holidays.holiday_base import HolidayBase
19
19
 
@@ -23,13 +23,14 @@ class Bahrain(HolidayBase, InternationalHolidays, IslamicHolidays):
23
23
 
24
24
  References:
25
25
  * <https://web.archive.org/web/20250415063947/https://www.cbb.gov.bh/official-bank-holidays>
26
- * <https://web.archive.org/web/20240805170117/https://www.officeholidays.com/countries/bahrain>
27
26
  """
28
27
 
29
28
  country = "BH"
30
29
  default_language = "ar"
31
30
  # %s (estimated).
32
31
  estimated_label = tr("%s (المقدرة)")
32
+ # Independence declared on August 15, 1971.
33
+ start_year = 1972
33
34
  supported_languages = ("ar", "en_US")
34
35
  weekend = {FRI, SAT}
35
36
 
@@ -53,34 +54,33 @@ class Bahrain(HolidayBase, InternationalHolidays, IslamicHolidays):
53
54
  # Labor Day.
54
55
  self._add_labor_day(tr("عيد العمال"))
55
56
 
56
- # Eid al-Fitr.
57
- eid_al_fitr = tr("عيد الفطر")
58
- self._add_eid_al_fitr_day(eid_al_fitr)
59
- self._add_eid_al_fitr_day_two(tr("عطلة عيد الفطر"))
60
- # Eid al-Fitr Holiday.
61
- self._add_eid_al_fitr_day_three(tr("عطلة عيد الفطر"))
62
-
63
- # Eid al-Adha.
64
- self._add_eid_al_adha_day(tr("عيد الأضحى"))
65
- # Eid al-Adha Holiday.
66
- self._add_eid_al_adha_day_two(tr("عطلة عيد الأضحى"))
67
- self._add_eid_al_adha_day_three(tr("عطلة عيد الأضحى"))
57
+ # National Day.
58
+ national_day = tr("العيد الوطني")
59
+ self._add_holiday_dec_16(national_day)
60
+ self._add_holiday_dec_17(national_day)
68
61
 
69
62
  # Islamic New Year.
70
63
  self._add_islamic_new_year_day(tr("رأس السنة الهجرية"))
71
64
 
72
- # Ashura Eve.
73
- self._add_ashura_eve(tr("ليلة عاشورة"))
74
65
  # Ashura.
75
- self._add_ashura_day(tr("عاشورة"))
66
+ ashura = tr("عاشوراء")
67
+ self._add_ashura_eve(ashura)
68
+ self._add_ashura_day(ashura)
76
69
 
77
70
  # Prophet's Birthday.
78
- self._add_mawlid_day(tr("عيد المولد النبوي"))
71
+ self._add_mawlid_day(tr("المولد النبوي الشريف"))
79
72
 
80
- # National Day.
81
- national_day = tr("اليوم الوطني")
82
- self._add_holiday_dec_16(national_day)
83
- self._add_holiday_dec_17(national_day)
73
+ # Eid al-Fitr.
74
+ eid_al_fitr = tr("عيد الفطر")
75
+ self._add_eid_al_fitr_day(eid_al_fitr)
76
+ self._add_eid_al_fitr_day_two(eid_al_fitr)
77
+ self._add_eid_al_fitr_day_three(eid_al_fitr)
78
+
79
+ # Eid al-Adha.
80
+ eid_al_adha = tr("عيد الأضحى")
81
+ self._add_eid_al_adha_day(eid_al_adha)
82
+ self._add_eid_al_adha_day_two(eid_al_adha)
83
+ self._add_eid_al_adha_day_three(eid_al_adha)
84
84
 
85
85
 
86
86
  class BH(Bahrain):
@@ -92,22 +92,13 @@ class BAH(Bahrain):
92
92
 
93
93
 
94
94
  class BahrainIslamicHolidays(_CustomIslamicHolidays):
95
+ ASHURA_DATES_CONFIRMED_YEARS = (2019, 2025)
95
96
  ASHURA_DATES = {
96
- 2022: (AUG, 8),
97
- }
98
-
99
- EID_AL_ADHA = {
100
- 2022: (JUL, 9),
97
+ 2019: (SEP, 10),
98
+ 2023: (JUL, 29),
101
99
  }
102
100
 
103
- EID_AL_FITR_DATES = {
104
- 2022: (MAY, 2),
105
- }
106
-
107
- HIJRI_NEW_YEAR_DATES = {
108
- 2022: (JUL, 30),
109
- }
110
-
111
- MAWLID_DATES = {
112
- 2022: (OCT, 8),
113
- }
101
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2019, 2025)
102
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2019, 2025)
103
+ HIJRI_NEW_YEAR_DATES_CONFIRMED_YEARS = (2019, 2025)
104
+ MAWLID_DATES_CONFIRMED_YEARS = (2019, 2025)
@@ -0,0 +1,194 @@
1
+ # holidays
2
+ # --------
3
+ # A fast, efficient Python library for generating country, province and state
4
+ # specific sets of holidays on the fly. It aims to make determining whether a
5
+ # specific date is a holiday as fast and flexible as possible.
6
+ #
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
+ # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
+ # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
+ # Website: https://github.com/vacanza/holidays
11
+ # License: MIT (see LICENSE file)
12
+
13
+ from holidays.calendars import _CustomHinduHolidays
14
+ from holidays.calendars.gregorian import SEP, OCT
15
+ from holidays.groups import HinduCalendarHolidays, TibetanCalendarHolidays
16
+ from holidays.holiday_base import HolidayBase
17
+
18
+
19
+ class Bhutan(HolidayBase, HinduCalendarHolidays, TibetanCalendarHolidays):
20
+ """Bhutan holidays.
21
+
22
+ References:
23
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_Bhutan>
24
+ * [The Bhutanese calendar](https://web.archive.org/web/20250707105447/http://www.kalacakra.org/calendar/bhutlist.htm)
25
+ * [2007-2011](https://web.archive.org/web/20070730055559/http://www.rcsc.gov.bt/tmpFolder/CalendarOfEvent/holiday.htm)
26
+ * [2010-2011](https://web.archive.org/web/20100127021618/http://www.mohca.gov.bt/?mode=READMORE&news_id=157)
27
+ * [2014](https://web.archive.org/web/20141222122050/http://www.mohca.gov.bt/Publications/calander_2014-15.pdf)
28
+ * [2015](https://web.archive.org/web/20151004161522/http://www.mohca.gov.bt/Publications/calander_2015-16.pdf)
29
+ * [2016](https://web.archive.org/web/20170606131500/http://www.mohca.gov.bt/download/calander_2016-17.pdf)
30
+ * [2017](https://web.archive.org/web/20180107115733/http://www.mohca.gov.bt/wp-content/uploads/2017/11/calander_2017-18.pdf)
31
+ * [2018](https://web.archive.org/web/20180906031327/http://www.mohca.gov.bt/wp-content/uploads/2017/11/scan0126.pdf)
32
+ * [2019](https://web.archive.org/web/20191221201614/http://www.mohca.gov.bt/downloads/scan0004.pdf)
33
+ * [2020](https://web.archive.org/web/20200720030220/http://www.mohca.gov.bt/wp-content/uploads/2019/12/2020-Holiday-List0001.pdf)
34
+ * [2021](https://web.archive.org/web/20230511011459/http://www.mohca.gov.bt/downloads/Holidays2021.pdf)
35
+ * [2022](https://web.archive.org/web/20220619061040/https://www.mohca.gov.bt/wp-content/uploads/2021/11/HolidayList.pdf)
36
+ * [2023](https://web.archive.org/web/20221210152039/https://www.mohca.gov.bt/wp-content/uploads/2022/11/Holidays-2023.pdf)
37
+ * [2024](https://web.archive.org/web/20250407140158/https://www.moha.gov.bt/wp-content/uploads/2023/11/National-Holiday-List-for-2024-2-.pdf)
38
+ * [2025](https://web.archive.org/web/20250703030226/https://www.moha.gov.bt/wp-content/uploads/2024/11/Calendar_2025.pdf)
39
+ """
40
+
41
+ country = "BT"
42
+ # %s (estimated).
43
+ estimated_label = "%s (estimated)"
44
+ # Jigme Khesar Namgyel Wangchuck ascended to the throne on December 9th, 2006.
45
+ start_year = 2007
46
+ subdivisions = (
47
+ "11", # Paro.
48
+ "12", # Chhukha.
49
+ "13", # Haa.
50
+ "14", # Samtse.
51
+ "15", # Thimphu.
52
+ "21", # Tsirang.
53
+ "22", # Dagana.
54
+ "23", # Punakha.
55
+ "24", # Wangdue Phodrang.
56
+ "31", # Sarpang.
57
+ "32", # Trongsa.
58
+ "33", # Bumthang.
59
+ "34", # Zhemgang.
60
+ "41", # Trashigang.
61
+ "42", # Monggar.
62
+ "43", # Pema Gatshel.
63
+ "44", # Lhuentse.
64
+ "45", # Samdrup Jongkhar.
65
+ "GA", # Gasa.
66
+ "TY", # Trashi Yangtse.
67
+ )
68
+
69
+ subdivisions_aliases = {
70
+ "Paro": "11",
71
+ "Chhukha": "12",
72
+ "Haa": "13",
73
+ "Samtse": "14",
74
+ "Thimphu": "15",
75
+ "Tsirang": "21",
76
+ "Dagana": "22",
77
+ "Punakha": "23",
78
+ "Wangdue Phodrang": "24",
79
+ "Sarpang": "31",
80
+ "Trongsa": "32",
81
+ "Bumthang": "33",
82
+ "Zhemgang": "34",
83
+ "Trashigang": "41",
84
+ "Monggar": "42",
85
+ "Pema Gatshel": "43",
86
+ "Lhuentse": "44",
87
+ "Samdrup Jongkhar": "45",
88
+ "Gasa": "GA",
89
+ "Trashi Yangtse": "TY",
90
+ }
91
+
92
+ def __init__(self, *args, hindu_show_estimated: bool = True, **kwargs):
93
+ """
94
+ Args:
95
+ hindu_show_estimated:
96
+ Whether to add "estimated" label to Hindu holidays name
97
+ if holiday date is estimated.
98
+ """
99
+ HinduCalendarHolidays.__init__(
100
+ self, cls=BhutanHinduHolidays, show_estimated=hindu_show_estimated
101
+ )
102
+ TibetanCalendarHolidays.__init__(self)
103
+ super().__init__(*args, **kwargs)
104
+
105
+ def _populate_public_holidays(self):
106
+ name = "Birth Anniversary of His Majesty the King"
107
+ # Birth Anniversary of His Majesty the King.
108
+ self._add_holiday_feb_21(name)
109
+ self._add_holiday_feb_22(name)
110
+ self._add_holiday_feb_23(name)
111
+
112
+ # Birth Anniversary of the 3rd Druk Gyalpo.
113
+ self._add_holiday_may_2("Birth Anniversary of the 3rd Druk Gyalpo")
114
+
115
+ # Coronation of His Majesty the King.
116
+ self._add_holiday_nov_1("Coronation of His Majesty the King")
117
+
118
+ # Birth Anniversary of the 4th Druk Gyalpo - Constitution Day.
119
+ self._add_holiday_nov_11("Birth Anniversary of the 4th Druk Gyalpo - Constitution Day")
120
+
121
+ # National Day.
122
+ self._add_holiday_dec_17("National Day")
123
+
124
+ # Winter Solstice.
125
+ self._add_tibetan_winter_solstice("Winter Solstice")
126
+
127
+ # Traditional Day of Offering.
128
+ self._add_day_of_offering("Traditional Day of Offering")
129
+
130
+ # Losar.
131
+ name = "Losar"
132
+ self._add_losar(name)
133
+ self._add_losar_day_two(name)
134
+
135
+ # Death Anniversary of Zhabdrung.
136
+ self._add_death_of_zhabdrung("Death Anniversary of Zhabdrung")
137
+
138
+ # Lord Buddha's Parinirvana.
139
+ self._add_buddha_parinirvana("Lord Buddha's Parinirvana")
140
+
141
+ # Birth Anniversary of Guru Rinpoche.
142
+ self._add_birth_of_guru_rinpoche("Birth Anniversary of Guru Rinpoche")
143
+
144
+ # First Sermon of Lord Buddha.
145
+ self._add_buddha_first_sermon("First Sermon of Lord Buddha")
146
+
147
+ # Blessed Rainy Day.
148
+ self._add_blessed_rainy_day("Blessed Rainy Day")
149
+
150
+ # Dassain.
151
+ self._add_dussehra("Dassain")
152
+
153
+ # Descending Day of Lord Buddha.
154
+ self._add_descending_day_of_lord_buddha("Descending Day of Lord Buddha")
155
+
156
+ def _populate_subdiv_15_public_holidays(self):
157
+ # Thimphu Drubchoe.
158
+ self._add_thimphu_drubchen_day("Thimphu Drubchoe")
159
+
160
+ # Thimphu Tshechu.
161
+ name = "Thimphu Tshechu"
162
+ self._add_thimphu_tshechu_day(name)
163
+ self._add_thimphu_tshechu_day_two(name)
164
+ self._add_thimphu_tshechu_day_three(name)
165
+
166
+
167
+ class BT(Bhutan):
168
+ pass
169
+
170
+
171
+ class BTN(Bhutan):
172
+ pass
173
+
174
+
175
+ class BhutanHinduHolidays(_CustomHinduHolidays):
176
+ DUSSEHRA_DATES = {
177
+ 2007: (OCT, 21),
178
+ 2008: (OCT, 9),
179
+ 2009: (SEP, 28),
180
+ 2010: (OCT, 17),
181
+ 2011: (OCT, 6),
182
+ 2014: (OCT, 3),
183
+ 2015: (OCT, 22),
184
+ 2016: (OCT, 11),
185
+ 2017: (SEP, 30),
186
+ 2018: (OCT, 19),
187
+ 2019: (OCT, 8),
188
+ 2020: (OCT, 26),
189
+ 2021: (OCT, 15),
190
+ 2022: (OCT, 5),
191
+ 2023: (OCT, 24),
192
+ 2024: (OCT, 12),
193
+ 2025: (OCT, 2),
194
+ }
@@ -15,11 +15,8 @@ from gettext import gettext as tr
15
15
  from holidays.calendars import _CustomIslamicHolidays
16
16
  from holidays.calendars.gregorian import (
17
17
  GREGORIAN_CALENDAR,
18
- JAN,
19
18
  FEB,
20
19
  MAR,
21
- APR,
22
- MAY,
23
20
  JUN,
24
21
  JUL,
25
22
  AUG,
@@ -58,8 +55,12 @@ class BosniaAndHerzegovina(
58
55
 
59
56
  country = "BA"
60
57
  default_language = "bs"
58
+ # %s (estimated).
59
+ estimated_label = tr("%s (procijenjeno)")
60
+ # %s (observed, estimated).
61
+ observed_estimated_label = tr("%s (slobodan dan, procijenjeno)")
61
62
  # %s (observed).
62
- observed_label = tr("%s (preneseno)")
63
+ observed_label = tr("%s (slobodan dan)")
63
64
  subdivisions = (
64
65
  "BIH", # Federacija Bosne i Hercegovine.
65
66
  "BRC", # Brčko distrikt.
@@ -259,55 +260,33 @@ class BIH(BosniaAndHerzegovina):
259
260
 
260
261
 
261
262
  class BosniaAndHerzegovinaIslamicHolidays(_CustomIslamicHolidays):
263
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2001, 2023)
262
264
  EID_AL_ADHA_DATES = {
263
265
  2001: (MAR, 6),
264
266
  2002: (FEB, 23),
265
267
  2003: (FEB, 12),
266
268
  2004: (FEB, 2),
267
- 2005: (JAN, 21),
268
- 2006: ((JAN, 10), (DEC, 31)),
269
- 2007: (DEC, 20),
270
269
  2008: (DEC, 9),
271
270
  2009: (NOV, 28),
272
271
  2010: (NOV, 17),
273
272
  2011: (NOV, 7),
274
- 2012: (OCT, 26),
275
- 2013: (OCT, 15),
276
- 2014: (OCT, 4),
277
273
  2015: (SEP, 24),
278
274
  2016: (SEP, 13),
279
275
  2017: (SEP, 2),
280
276
  2018: (AUG, 22),
281
- 2019: (AUG, 11),
282
- 2020: (JUL, 31),
283
- 2021: (JUL, 20),
284
- 2022: (JUL, 9),
285
- 2023: (JUN, 28),
286
277
  }
287
278
 
279
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2001, 2024)
288
280
  EID_AL_FITR_DATES = {
289
281
  2001: (DEC, 17),
290
282
  2002: (DEC, 6),
291
283
  2003: (NOV, 26),
292
- 2004: (NOV, 14),
293
284
  2005: (NOV, 4),
294
285
  2006: (OCT, 24),
295
- 2007: (OCT, 13),
296
286
  2008: (OCT, 2),
297
287
  2009: (SEP, 21),
298
- 2010: (SEP, 10),
299
288
  2011: (AUG, 31),
300
- 2012: (AUG, 19),
301
- 2013: (AUG, 8),
302
- 2014: (JUL, 28),
303
289
  2015: (JUL, 18),
304
290
  2016: (JUL, 7),
305
291
  2017: (JUN, 26),
306
- 2018: (JUN, 15),
307
- 2019: (JUN, 4),
308
- 2020: (MAY, 24),
309
- 2021: (MAY, 13),
310
- 2022: (MAY, 2),
311
- 2023: (APR, 21),
312
- 2024: (APR, 10),
313
292
  }
@@ -266,219 +266,109 @@ class BRN(Brunei):
266
266
 
267
267
 
268
268
  class BruneiIslamicHolidays(_CustomIslamicHolidays):
269
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (1998, 2025)
269
270
  EID_AL_ADHA_DATES = {
270
- 1998: (APR, 7),
271
271
  1999: (MAR, 28),
272
272
  2000: (MAR, 17),
273
273
  2001: (MAR, 6),
274
274
  2002: (FEB, 23),
275
275
  2003: (FEB, 12),
276
276
  2004: (FEB, 2),
277
- 2005: (JAN, 21),
278
277
  2006: ((JAN, 11), (DEC, 31)),
279
- 2007: (DEC, 20),
280
- 2008: (DEC, 8),
281
- 2009: (NOV, 27),
282
- 2010: (NOV, 16),
283
- 2011: (NOV, 6),
284
- 2012: (OCT, 26),
285
- 2013: (OCT, 15),
286
278
  2014: (OCT, 5),
287
279
  2015: (SEP, 24),
288
280
  2016: (SEP, 12),
289
- 2017: (SEP, 1),
290
281
  2018: (AUG, 22),
291
- 2019: (AUG, 11),
292
- 2020: (JUL, 31),
293
- 2021: (JUL, 20),
294
- 2022: (JUL, 9),
295
282
  2023: (JUN, 29),
296
283
  2024: (JUN, 17),
297
284
  2025: (JUN, 7),
298
285
  }
299
286
 
287
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (1998, 2025)
300
288
  EID_AL_FITR_DATES = {
301
289
  1998: (JAN, 30),
302
290
  1999: (JAN, 19),
303
- 2000: ((JAN, 8), (DEC, 27)),
304
- 2001: (DEC, 16),
305
291
  2002: (DEC, 6),
306
- 2003: (NOV, 25),
307
- 2004: (NOV, 14),
308
292
  2005: (NOV, 4),
309
293
  2006: (OCT, 24),
310
- 2007: (OCT, 13),
311
- 2008: (OCT, 1),
312
- 2009: (SEP, 20),
313
- 2010: (SEP, 10),
314
- 2011: (AUG, 30),
315
- 2012: (AUG, 19),
316
- 2013: (AUG, 8),
317
- 2014: (JUL, 28),
318
- 2015: (JUL, 17),
319
- 2016: (JUL, 6),
320
- 2017: (JUN, 25),
321
- 2018: (JUN, 15),
322
294
  2019: (JUN, 5),
323
- 2020: (MAY, 24),
324
- 2021: (MAY, 13),
325
- 2022: (MAY, 2),
326
295
  2023: (APR, 22),
327
- 2024: (APR, 10),
328
296
  2025: (MAR, 31),
329
297
  }
330
298
 
299
+ HIJRI_NEW_YEAR_DATES_CONFIRMED_YEARS = (1998, 2025)
331
300
  HIJRI_NEW_YEAR_DATES = {
332
301
  1998: (APR, 28),
333
- 1999: (APR, 17),
334
- 2000: (APR, 6),
335
- 2001: (MAR, 26),
336
- 2002: (MAR, 15),
337
- 2003: (MAR, 4),
338
302
  2004: (FEB, 22),
339
- 2005: (FEB, 10),
340
- 2006: (JAN, 31),
341
- 2007: (JAN, 20),
342
- 2008: ((JAN, 10), (DEC, 29)),
343
- 2009: (DEC, 18),
344
- 2010: (DEC, 7),
345
303
  2011: (NOV, 27),
346
- 2012: (NOV, 15),
347
304
  2013: (NOV, 5),
348
- 2014: (OCT, 25),
349
- 2015: (OCT, 14),
350
- 2016: (OCT, 2),
351
305
  2017: (SEP, 22),
352
- 2018: (SEP, 11),
353
306
  2019: (SEP, 1),
354
- 2020: (AUG, 20),
355
307
  2021: (AUG, 10),
356
- 2022: (JUL, 30),
357
- 2023: (JUL, 19),
358
- 2024: (JUL, 7),
359
308
  2025: (JUN, 27),
360
309
  }
361
310
 
311
+ ISRA_AND_MIRAJ_DATES_CONFIRMED_YEARS = (1998, 2025)
362
312
  ISRA_AND_MIRAJ_DATES = {
363
313
  1998: (NOV, 17),
364
314
  1999: (NOV, 6),
365
315
  2000: (OCT, 25),
366
316
  2001: (OCT, 15),
367
- 2002: (OCT, 4),
368
- 2003: (SEP, 24),
369
- 2004: (SEP, 12),
370
- 2005: (SEP, 1),
371
- 2006: (AUG, 21),
372
317
  2007: (AUG, 11),
373
- 2008: (JUL, 30),
374
- 2009: (JUL, 20),
375
318
  2010: (JUL, 10),
376
- 2011: (JUN, 29),
377
- 2012: (JUN, 17),
378
- 2013: (JUN, 6),
379
319
  2014: (MAY, 27),
380
- 2015: (MAY, 16),
381
320
  2016: (MAY, 5),
382
- 2017: (APR, 24),
383
321
  2018: (APR, 14),
384
- 2019: (APR, 3),
385
- 2020: (MAR, 22),
386
- 2021: (MAR, 11),
387
- 2022: (FEB, 28),
388
- 2023: (FEB, 18),
389
- 2024: (FEB, 8),
390
- 2025: (JAN, 27),
391
322
  }
392
323
 
324
+ MAWLID_DATES_CONFIRMED_YEARS = (1998, 2025)
393
325
  MAWLID_DATES = {
394
- 1998: (JUL, 6),
395
- 1999: (JUN, 26),
396
326
  2000: (JUN, 15),
397
- 2001: (JUN, 4),
398
327
  2002: (MAY, 25),
399
328
  2003: (MAY, 14),
400
329
  2004: (MAY, 2),
401
- 2005: (APR, 21),
402
330
  2006: (APR, 11),
403
- 2007: (MAR, 31),
404
- 2008: (MAR, 20),
405
- 2009: (MAR, 9),
406
- 2010: (FEB, 26),
407
- 2011: (FEB, 15),
408
331
  2012: (FEB, 5),
409
- 2013: (JAN, 24),
410
332
  2014: (JAN, 14),
411
333
  2015: ((JAN, 3), (DEC, 24)),
412
334
  2016: (DEC, 12),
413
335
  2017: (DEC, 1),
414
- 2018: (NOV, 20),
415
- 2019: (NOV, 9),
416
- 2020: (OCT, 29),
417
336
  2021: (OCT, 19),
418
- 2022: (OCT, 8),
419
337
  2023: (SEP, 28),
420
338
  2024: (SEP, 16),
421
339
  2025: (SEP, 5),
422
340
  }
423
341
 
342
+ NUZUL_AL_QURAN_DATES_CONFIRMED_YEARS = (1998, 2025)
424
343
  NUZUL_AL_QURAN_DATES = {
425
344
  1998: (JAN, 16),
426
345
  1999: ((JAN, 5), (DEC, 25)),
427
- 2000: (DEC, 13),
428
346
  2001: (DEC, 3),
429
- 2002: (NOV, 22),
430
347
  2003: (NOV, 12),
431
348
  2004: (NOV, 1),
432
349
  2005: (OCT, 21),
433
- 2006: (OCT, 10),
434
- 2007: (SEP, 29),
435
350
  2008: (SEP, 18),
436
- 2009: (SEP, 7),
437
- 2010: (AUG, 27),
438
- 2011: (AUG, 17),
439
351
  2012: (AUG, 6),
440
352
  2013: (JUL, 26),
441
353
  2014: (JUL, 15),
442
- 2015: (JUL, 4),
443
- 2016: (JUN, 22),
444
- 2017: (JUN, 12),
445
354
  2018: (JUN, 2),
446
- 2019: (MAY, 22),
447
- 2020: (MAY, 10),
448
- 2021: (APR, 29),
449
355
  2022: (APR, 19),
450
- 2023: (APR, 8),
451
356
  2024: (MAR, 28),
452
357
  2025: (MAR, 18),
453
358
  }
454
359
 
360
+ RAMADAN_BEGINNING_DATES_CONFIRMED_YEARS = (1998, 2025)
455
361
  RAMADAN_BEGINNING_DATES = {
456
362
  1998: (DEC, 20),
457
- 1999: (DEC, 9),
458
- 2000: (NOV, 27),
459
363
  2001: (NOV, 17),
460
- 2002: (NOV, 6),
461
364
  2003: (OCT, 27),
462
365
  2004: (OCT, 16),
463
366
  2005: (OCT, 5),
464
- 2006: (SEP, 24),
465
- 2007: (SEP, 13),
466
- 2008: (SEP, 1),
467
- 2009: (AUG, 22),
468
- 2010: (AUG, 11),
469
- 2011: (AUG, 1),
470
367
  2012: (JUL, 21),
471
368
  2013: (JUL, 10),
472
369
  2014: (JUN, 29),
473
- 2015: (JUN, 18),
474
- 2016: (JUN, 6),
475
- 2017: (MAY, 27),
476
370
  2018: (MAY, 17),
477
- 2019: (MAY, 6),
478
- 2020: (APR, 24),
479
- 2021: (APR, 13),
480
371
  2022: (APR, 3),
481
- 2023: (MAR, 23),
482
372
  2024: (MAR, 12),
483
373
  2025: (MAR, 2),
484
374
  }