holidays 0.78__py3-none-any.whl → 0.79__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 (105) 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/islamic.py +16 -4
  5. holidays/calendars/julian.py +14 -0
  6. holidays/calendars/mandaean.py +59 -0
  7. holidays/calendars/tibetan.py +1466 -0
  8. holidays/constants.py +2 -0
  9. holidays/countries/__init__.py +13 -0
  10. holidays/countries/afghanistan.py +6 -39
  11. holidays/countries/albania.py +3 -22
  12. holidays/countries/argentina.py +3 -18
  13. holidays/countries/azerbaijan.py +6 -39
  14. holidays/countries/bahrain.py +29 -38
  15. holidays/countries/bhutan.py +194 -0
  16. holidays/countries/bosnia_and_herzegovina.py +2 -27
  17. holidays/countries/brunei.py +7 -117
  18. holidays/countries/burkina_faso.py +4 -15
  19. holidays/countries/cameroon.py +3 -34
  20. holidays/countries/canada.py +2 -1
  21. holidays/countries/central_african_republic.py +3 -16
  22. holidays/countries/chad.py +4 -17
  23. holidays/countries/chile.py +20 -4
  24. holidays/countries/christmas_island.py +4 -15
  25. holidays/countries/cocos_islands.py +5 -24
  26. holidays/countries/egypt.py +5 -37
  27. holidays/countries/ethiopia.py +18 -47
  28. holidays/countries/fiji.py +1 -2
  29. holidays/countries/gabon.py +3 -23
  30. holidays/countries/gambia.py +168 -0
  31. holidays/countries/guinea.py +5 -27
  32. holidays/countries/guinea_bissau.py +100 -0
  33. holidays/countries/guyana.py +2 -17
  34. holidays/countries/india.py +12 -25
  35. holidays/countries/indonesia.py +6 -158
  36. holidays/countries/iran.py +16 -126
  37. holidays/countries/iraq.py +276 -0
  38. holidays/countries/kazakhstan.py +2 -18
  39. holidays/countries/kenya.py +2 -8
  40. holidays/countries/kiribati.py +124 -0
  41. holidays/countries/lebanon.py +5 -87
  42. holidays/countries/liberia.py +80 -0
  43. holidays/countries/libya.py +5 -37
  44. holidays/countries/malaysia.py +9 -130
  45. holidays/countries/mali.py +4 -9
  46. holidays/countries/mauritius.py +1 -2
  47. holidays/countries/montenegro.py +3 -18
  48. holidays/countries/nepal.py +42 -44
  49. holidays/countries/niger.py +14 -74
  50. holidays/countries/north_macedonia.py +3 -39
  51. holidays/countries/oman.py +6 -28
  52. holidays/countries/pakistan.py +5 -30
  53. holidays/countries/palestine.py +2 -5
  54. holidays/countries/philippines.py +3 -33
  55. holidays/countries/qatar.py +3 -45
  56. holidays/countries/saudi_arabia.py +3 -0
  57. holidays/countries/senegal.py +6 -16
  58. holidays/countries/sierra_leone.py +4 -20
  59. holidays/countries/singapore.py +3 -59
  60. holidays/countries/south_georgia_and_the_south_sandwich_islands.py +160 -0
  61. holidays/countries/spain.py +3 -10
  62. holidays/countries/sri_lanka.py +3 -14
  63. holidays/countries/suriname.py +11 -19
  64. holidays/countries/syrian_arab_republic.py +134 -0
  65. holidays/countries/tanzania.py +3 -9
  66. holidays/countries/timor_leste.py +2 -17
  67. holidays/countries/togo.py +4 -29
  68. holidays/countries/trinidad_and_tobago.py +2 -9
  69. holidays/countries/turkey.py +2 -116
  70. holidays/countries/turkmenistan.py +158 -0
  71. holidays/countries/united_arab_emirates.py +5 -29
  72. holidays/countries/uzbekistan.py +3 -31
  73. holidays/countries/yemen.py +8 -52
  74. holidays/groups/__init__.py +2 -0
  75. holidays/groups/christian.py +48 -12
  76. holidays/groups/international.py +17 -1
  77. holidays/groups/islamic.py +1 -1
  78. holidays/groups/mandaean.py +107 -0
  79. holidays/groups/tibetan.py +153 -0
  80. holidays/holiday_base.py +14 -0
  81. holidays/locale/ar/LC_MESSAGES/BH.mo +0 -0
  82. holidays/locale/ar/LC_MESSAGES/IQ.mo +0 -0
  83. holidays/locale/ar/LC_MESSAGES/SY.mo +0 -0
  84. holidays/locale/en_GM/LC_MESSAGES/GM.mo +0 -0
  85. holidays/locale/en_GS/LC_MESSAGES/GS.mo +0 -0
  86. holidays/locale/en_US/LC_MESSAGES/BH.mo +0 -0
  87. holidays/locale/en_US/LC_MESSAGES/CL.mo +0 -0
  88. holidays/locale/en_US/LC_MESSAGES/GM.mo +0 -0
  89. holidays/locale/en_US/LC_MESSAGES/GS.mo +0 -0
  90. holidays/locale/en_US/LC_MESSAGES/GW.mo +0 -0
  91. holidays/locale/en_US/LC_MESSAGES/IQ.mo +0 -0
  92. holidays/locale/en_US/LC_MESSAGES/SY.mo +0 -0
  93. holidays/locale/en_US/LC_MESSAGES/TM.mo +0 -0
  94. holidays/locale/pt_GW/LC_MESSAGES/GW.mo +0 -0
  95. holidays/locale/ru/LC_MESSAGES/TM.mo +0 -0
  96. holidays/locale/tk/LC_MESSAGES/TM.mo +0 -0
  97. holidays/locale/uk/LC_MESSAGES/CL.mo +0 -0
  98. holidays/registry.py +13 -0
  99. holidays/version.py +1 -1
  100. {holidays-0.78.dist-info → holidays-0.79.dist-info}/METADATA +68 -5
  101. {holidays-0.78.dist-info → holidays-0.79.dist-info}/RECORD +105 -78
  102. {holidays-0.78.dist-info → holidays-0.79.dist-info}/licenses/CONTRIBUTORS +2 -0
  103. {holidays-0.78.dist-info → holidays-0.79.dist-info}/WHEEL +0 -0
  104. {holidays-0.78.dist-info → holidays-0.79.dist-info}/licenses/LICENSE +0 -0
  105. {holidays-0.78.dist-info → holidays-0.79.dist-info}/top_level.txt +0 -0
holidays/constants.py CHANGED
@@ -56,6 +56,8 @@ HEBREW = "hebrew"
56
56
  HINDU = "hindu"
57
57
  ISLAMIC = "islamic"
58
58
  ORTHODOX = "orthodox"
59
+ SABIAN = "sabian"
60
+ YAZIDI = "yazidi"
59
61
 
60
62
  ALBANIAN = "albanian"
61
63
  ARMENIAN = "armenian"
@@ -36,6 +36,7 @@ from holidays.countries.belgium import Belgium, BE, BEL
36
36
  from holidays.countries.belize import Belize, BZ, BLZ
37
37
  from holidays.countries.benin import Benin, BJ, BEN
38
38
  from holidays.countries.bermuda import Bermuda, BM, BMU
39
+ from holidays.countries.bhutan import Bhutan, BT, BTN
39
40
  from holidays.countries.bolivia import Bolivia, BO, BOL
40
41
  from holidays.countries.bonaire_sint_eustatius_and_saba import BonaireSintEustatiusAndSaba, BQ, BES
41
42
  from holidays.countries.bosnia_and_herzegovina import BosniaAndHerzegovina, BA, BIH
@@ -92,6 +93,7 @@ from holidays.countries.french_southern_territories import (
92
93
  HolidaysTF,
93
94
  )
94
95
  from holidays.countries.gabon import Gabon, GA, GAB
96
+ from holidays.countries.gambia import Gambia, GM, GMB
95
97
  from holidays.countries.georgia import Georgia, GE, GEO
96
98
  from holidays.countries.germany import Germany, DE, DEU
97
99
  from holidays.countries.ghana import Ghana, GH, GHA
@@ -104,6 +106,7 @@ from holidays.countries.guam import Guam, GU, GUM, HolidaysGU
104
106
  from holidays.countries.guatemala import Guatemala, GT, GUA
105
107
  from holidays.countries.guernsey import Guernsey, GG, GGY
106
108
  from holidays.countries.guinea import Guinea, GN, GIN
109
+ from holidays.countries.guinea_bissau import GuineaBissau, GW, GNB
107
110
  from holidays.countries.guyana import Guyana, GY, GUY
108
111
  from holidays.countries.haiti import Haiti, HT, HTI
109
112
  from holidays.countries.honduras import Honduras, HN, HND
@@ -113,6 +116,7 @@ from holidays.countries.iceland import Iceland, IS, ISL
113
116
  from holidays.countries.india import India, IN, IND
114
117
  from holidays.countries.indonesia import Indonesia, ID, IDN
115
118
  from holidays.countries.iran import Iran, IR, IRN
119
+ from holidays.countries.iraq import Iraq, IQ, IRQ
116
120
  from holidays.countries.ireland import Ireland, IE, IRL
117
121
  from holidays.countries.isle_of_man import IsleOfMan, IM, IMN
118
122
  from holidays.countries.israel import Israel, IL, ISR
@@ -124,12 +128,14 @@ from holidays.countries.jersey import Jersey, JE, JEY
124
128
  from holidays.countries.jordan import Jordan, JO, JOR
125
129
  from holidays.countries.kazakhstan import Kazakhstan, KZ, KAZ
126
130
  from holidays.countries.kenya import Kenya, KE, KEN
131
+ from holidays.countries.kiribati import Kiribati, KI, KIR
127
132
  from holidays.countries.kuwait import Kuwait, KW, KWT
128
133
  from holidays.countries.kyrgyzstan import Kyrgyzstan, KG, KGZ
129
134
  from holidays.countries.laos import Laos, LA, LAO
130
135
  from holidays.countries.latvia import Latvia, LV, LVA
131
136
  from holidays.countries.lebanon import Lebanon, LB, LBN
132
137
  from holidays.countries.lesotho import Lesotho, LS, LSO
138
+ from holidays.countries.liberia import Liberia, LR, LBR
133
139
  from holidays.countries.libya import Libya, LY, LBY
134
140
  from holidays.countries.liechtenstein import Liechtenstein, LI, LIE
135
141
  from holidays.countries.lithuania import Lithuania, LT, LTU
@@ -215,6 +221,11 @@ from holidays.countries.slovakia import Slovakia, SK, SVK
215
221
  from holidays.countries.slovenia import Slovenia, SI, SVN
216
222
  from holidays.countries.solomon_islands import SolomonIslands, SB, SLB
217
223
  from holidays.countries.south_africa import SouthAfrica, ZA, ZAF
224
+ from holidays.countries.south_georgia_and_the_south_sandwich_islands import (
225
+ SouthGeorgiaAndTheSouthSandwichIslands,
226
+ GS,
227
+ SGS,
228
+ )
218
229
  from holidays.countries.south_korea import SouthKorea, KR, KOR, Korea
219
230
  from holidays.countries.spain import Spain, ES, ESP
220
231
  from holidays.countries.sri_lanka import SriLanka, LK, LKA
@@ -222,6 +233,7 @@ from holidays.countries.suriname import Suriname, SR, SUR
222
233
  from holidays.countries.svalbard_and_jan_mayen import SvalbardAndJanMayen, SJ, SJM, HolidaysSJ
223
234
  from holidays.countries.sweden import Sweden, SE, SWE
224
235
  from holidays.countries.switzerland import Switzerland, CH, CHE
236
+ from holidays.countries.syrian_arab_republic import SyrianArabRepublic, SY, SYR
225
237
  from holidays.countries.taiwan import Taiwan, TW, TWN
226
238
  from holidays.countries.tanzania import Tanzania, TZ, TZA
227
239
  from holidays.countries.thailand import Thailand, TH, THA
@@ -232,6 +244,7 @@ from holidays.countries.tonga import Tonga, TO, TON
232
244
  from holidays.countries.trinidad_and_tobago import TrinidadAndTobago, TT, TTO
233
245
  from holidays.countries.tunisia import Tunisia, TN, TUN
234
246
  from holidays.countries.turkey import Turkey, TR, TUR
247
+ from holidays.countries.turkmenistan import Turkmenistan, TM, TKM
235
248
  from holidays.countries.turks_and_caicos_islands import TurksAndCaicosIslands, TC, TCA
236
249
  from holidays.countries.tuvalu import Tuvalu, TV, TUV
237
250
  from holidays.countries.ukraine import Ukraine, UA, UKR
@@ -13,21 +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 (
17
- JAN,
18
- MAR,
19
- APR,
20
- MAY,
21
- JUN,
22
- JUL,
23
- AUG,
24
- SEP,
25
- OCT,
26
- NOV,
27
- DEC,
28
- FRI,
29
- SAT,
30
- )
16
+ from holidays.calendars.gregorian import JAN, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, FRI, SAT
31
17
  from holidays.groups import InternationalHolidays, IslamicHolidays, PersianCalendarHolidays
32
18
  from holidays.holiday_base import HolidayBase
33
19
 
@@ -134,8 +120,8 @@ class AFG(Afghanistan):
134
120
 
135
121
 
136
122
  class AfghanistanIslamicHolidays(_CustomIslamicHolidays):
123
+ ASHURA_DATES_CONFIRMED_YEARS = (2014, 2021)
137
124
  ASHURA_DATES = {
138
- 2014: (NOV, 3),
139
125
  2015: (OCT, 24),
140
126
  2016: (OCT, 12),
141
127
  2017: (OCT, 1),
@@ -145,34 +131,26 @@ class AfghanistanIslamicHolidays(_CustomIslamicHolidays):
145
131
  2021: (AUG, 19),
146
132
  }
147
133
 
134
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2014, 2024)
148
135
  EID_AL_ADHA_DATES = {
149
136
  2014: (OCT, 5),
150
- 2015: (SEP, 23),
151
137
  2016: (SEP, 13),
152
138
  2017: (SEP, 2),
153
139
  2018: (AUG, 22),
154
- 2019: (AUG, 11),
155
- 2020: (JUL, 31),
156
- 2021: (JUL, 20),
157
- 2022: (JUL, 9),
158
- 2023: (JUN, 28),
159
140
  2024: (JUN, 17),
160
141
  }
161
142
 
143
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2014, 2024)
162
144
  EID_AL_FITR_DATES = {
163
145
  2014: (JUL, 29),
164
146
  2015: (JUL, 18),
165
147
  2016: (JUL, 7),
166
148
  2017: (JUN, 26),
167
- 2018: (JUN, 15),
168
- 2019: (JUN, 4),
169
- 2020: (MAY, 24),
170
- 2021: (MAY, 13),
171
149
  2022: (MAY, 1),
172
150
  2023: (APR, 22),
173
- 2024: (APR, 10),
174
151
  }
175
152
 
153
+ MAWLID_DATES_CONFIRMED_YEARS = (2014, 2024)
176
154
  MAWLID_DATES = {
177
155
  2014: (JAN, 14),
178
156
  2015: ((JAN, 3), (DEC, 24)),
@@ -180,23 +158,12 @@ class AfghanistanIslamicHolidays(_CustomIslamicHolidays):
180
158
  2017: (DEC, 1),
181
159
  2018: (NOV, 21),
182
160
  2019: (NOV, 10),
183
- 2020: (OCT, 29),
184
161
  2021: (OCT, 19),
185
- 2022: (OCT, 8),
186
- 2023: (SEP, 27),
187
162
  2024: (SEP, 16),
188
163
  }
189
164
 
165
+ RAMADAN_BEGINNING_DATES_CONFIRMED_YEARS = (2014, 2024)
190
166
  RAMADAN_BEGINNING_DATES = {
191
167
  2014: (JUN, 29),
192
- 2015: (JUN, 18),
193
168
  2016: (JUN, 7),
194
- 2017: (MAY, 27),
195
- 2018: (MAY, 16),
196
- 2019: (MAY, 6),
197
- 2020: (APR, 24),
198
- 2021: (APR, 13),
199
- 2022: (APR, 2),
200
- 2023: (MAR, 23),
201
- 2024: (MAR, 11),
202
169
  }
@@ -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
16
+ from holidays.calendars.gregorian import JAN, MAR
17
17
  from holidays.calendars.julian import JULIAN_CALENDAR
18
18
  from holidays.groups import (
19
19
  ChristianHolidays,
@@ -133,27 +133,8 @@ class ALB(Albania):
133
133
 
134
134
 
135
135
  class AlbaniaIslamicHolidays(_CustomIslamicHolidays):
136
- EID_AL_ADHA_DATES = {
137
- 2018: (AUG, 21),
138
- 2019: (AUG, 11),
139
- 2020: (JUL, 31),
140
- 2021: (JUL, 20),
141
- 2022: (JUL, 9),
142
- 2023: (JUN, 28),
143
- 2024: (JUN, 16),
144
- 2025: (JUN, 6),
145
- }
146
-
147
- EID_AL_FITR_DATES = {
148
- 2018: (JUN, 15),
149
- 2019: (JUN, 4),
150
- 2020: (MAY, 24),
151
- 2021: (MAY, 13),
152
- 2022: (MAY, 2),
153
- 2023: (APR, 21),
154
- 2024: (APR, 10),
155
- 2025: (MAR, 30),
156
- }
136
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2018, 2025)
137
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2018, 2025)
157
138
 
158
139
 
159
140
  class AlbaniaStaticHolidays:
@@ -778,34 +778,19 @@ class ARG(Argentina):
778
778
 
779
779
 
780
780
  class ArgentinaIslamicHolidays(_CustomIslamicHolidays):
781
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2019, 2025)
781
782
  EID_AL_ADHA_DATES = {
782
- 2019: (AUG, 11),
783
- 2020: (JUL, 31),
784
- 2021: (JUL, 20),
785
- 2022: (JUL, 9),
786
- 2023: (JUN, 28),
787
- 2024: (JUN, 16),
788
783
  2025: (JUN, 10),
789
784
  }
790
785
 
786
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2019, 2025)
791
787
  EID_AL_FITR_DATES = {
792
- 2019: (JUN, 4),
793
- 2020: (MAY, 24),
794
- 2021: (MAY, 13),
795
- 2022: (MAY, 2),
796
- 2023: (APR, 21),
797
- 2024: (APR, 10),
798
788
  2025: (MAR, 31),
799
789
  }
800
790
 
791
+ HIJRI_NEW_YEAR_DATES_CONFIRMED_YEARS = (2019, 2025)
801
792
  HIJRI_NEW_YEAR_DATES = {
802
- 2019: (AUG, 31),
803
- 2020: (AUG, 20),
804
793
  2021: (AUG, 8),
805
- 2022: (JUL, 30),
806
- 2023: (JUL, 19),
807
- 2024: (JUL, 7),
808
- 2025: (JUN, 26),
809
794
  }
810
795
 
811
796
 
@@ -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
+ }