holidays 0.77__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 (121) 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 +48 -5
  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 +14 -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 +175 -51
  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/germany.py +41 -0
  32. holidays/countries/guinea.py +5 -27
  33. holidays/countries/guinea_bissau.py +100 -0
  34. holidays/countries/guyana.py +2 -17
  35. holidays/countries/india.py +12 -25
  36. holidays/countries/indonesia.py +11 -160
  37. holidays/countries/iran.py +16 -126
  38. holidays/countries/iraq.py +276 -0
  39. holidays/countries/kazakhstan.py +2 -18
  40. holidays/countries/kenya.py +2 -8
  41. holidays/countries/kiribati.py +124 -0
  42. holidays/countries/lebanon.py +5 -87
  43. holidays/countries/liberia.py +80 -0
  44. holidays/countries/libya.py +5 -37
  45. holidays/countries/luxembourg.py +13 -0
  46. holidays/countries/malaysia.py +9 -130
  47. holidays/countries/mali.py +4 -9
  48. holidays/countries/mauritius.py +1 -2
  49. holidays/countries/montenegro.py +3 -18
  50. holidays/countries/nepal.py +42 -44
  51. holidays/countries/niger.py +14 -74
  52. holidays/countries/north_macedonia.py +3 -39
  53. holidays/countries/oman.py +6 -28
  54. holidays/countries/pakistan.py +12 -35
  55. holidays/countries/palestine.py +2 -5
  56. holidays/countries/philippines.py +3 -33
  57. holidays/countries/pitcairn_islands.py +85 -0
  58. holidays/countries/qatar.py +3 -45
  59. holidays/countries/saudi_arabia.py +46 -35
  60. holidays/countries/senegal.py +6 -16
  61. holidays/countries/sierra_leone.py +4 -20
  62. holidays/countries/singapore.py +3 -59
  63. holidays/countries/south_georgia_and_the_south_sandwich_islands.py +160 -0
  64. holidays/countries/spain.py +3 -10
  65. holidays/countries/sri_lanka.py +3 -14
  66. holidays/countries/suriname.py +11 -19
  67. holidays/countries/syrian_arab_republic.py +134 -0
  68. holidays/countries/tanzania.py +3 -9
  69. holidays/countries/timor_leste.py +2 -17
  70. holidays/countries/togo.py +4 -29
  71. holidays/countries/trinidad_and_tobago.py +2 -9
  72. holidays/countries/turkey.py +2 -116
  73. holidays/countries/turkmenistan.py +158 -0
  74. holidays/countries/united_arab_emirates.py +5 -29
  75. holidays/countries/uzbekistan.py +3 -31
  76. holidays/countries/yemen.py +8 -52
  77. holidays/groups/__init__.py +2 -0
  78. holidays/groups/christian.py +48 -12
  79. holidays/groups/international.py +17 -1
  80. holidays/groups/islamic.py +1 -11
  81. holidays/groups/mandaean.py +107 -0
  82. holidays/groups/tibetan.py +153 -0
  83. holidays/holiday_base.py +86 -91
  84. holidays/locale/ar/LC_MESSAGES/BH.mo +0 -0
  85. holidays/locale/ar/LC_MESSAGES/IQ.mo +0 -0
  86. holidays/locale/ar/LC_MESSAGES/SY.mo +0 -0
  87. holidays/locale/{ar → ar_EG}/LC_MESSAGES/EG.mo +0 -0
  88. holidays/locale/de/LC_MESSAGES/DE.mo +0 -0
  89. holidays/locale/de/LC_MESSAGES/LU.mo +0 -0
  90. holidays/locale/en_GM/LC_MESSAGES/GM.mo +0 -0
  91. holidays/locale/en_GS/LC_MESSAGES/GS.mo +0 -0
  92. holidays/locale/en_US/LC_MESSAGES/BH.mo +0 -0
  93. holidays/locale/en_US/LC_MESSAGES/CL.mo +0 -0
  94. holidays/locale/en_US/LC_MESSAGES/DE.mo +0 -0
  95. holidays/locale/en_US/LC_MESSAGES/EG.mo +0 -0
  96. holidays/locale/en_US/LC_MESSAGES/GM.mo +0 -0
  97. holidays/locale/en_US/LC_MESSAGES/GS.mo +0 -0
  98. holidays/locale/en_US/LC_MESSAGES/GW.mo +0 -0
  99. holidays/locale/en_US/LC_MESSAGES/IQ.mo +0 -0
  100. holidays/locale/en_US/LC_MESSAGES/LU.mo +0 -0
  101. holidays/locale/en_US/LC_MESSAGES/SY.mo +0 -0
  102. holidays/locale/en_US/LC_MESSAGES/TM.mo +0 -0
  103. holidays/locale/fr/LC_MESSAGES/EG.mo +0 -0
  104. holidays/locale/fr/LC_MESSAGES/LU.mo +0 -0
  105. holidays/locale/lb/LC_MESSAGES/LU.mo +0 -0
  106. holidays/locale/pt_GW/LC_MESSAGES/GW.mo +0 -0
  107. holidays/locale/ru/LC_MESSAGES/TM.mo +0 -0
  108. holidays/locale/th/LC_MESSAGES/DE.mo +0 -0
  109. holidays/locale/tk/LC_MESSAGES/TM.mo +0 -0
  110. holidays/locale/uk/LC_MESSAGES/CL.mo +0 -0
  111. holidays/locale/uk/LC_MESSAGES/DE.mo +0 -0
  112. holidays/locale/uk/LC_MESSAGES/LU.mo +0 -0
  113. holidays/registry.py +14 -0
  114. holidays/utils.py +18 -18
  115. holidays/version.py +1 -1
  116. {holidays-0.77.dist-info → holidays-0.79.dist-info}/METADATA +79 -9
  117. {holidays-0.77.dist-info → holidays-0.79.dist-info}/RECORD +121 -92
  118. {holidays-0.77.dist-info → holidays-0.79.dist-info}/licenses/CONTRIBUTORS +3 -0
  119. {holidays-0.77.dist-info → holidays-0.79.dist-info}/WHEEL +0 -0
  120. {holidays-0.77.dist-info → holidays-0.79.dist-info}/licenses/LICENSE +0 -0
  121. {holidays-0.77.dist-info → holidays-0.79.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,168 @@
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 gettext import gettext as tr
14
+
15
+ from holidays.calendars import _CustomIslamicHolidays
16
+ from holidays.calendars.gregorian import APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
17
+ from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
18
+ from holidays.observed_holiday_base import ObservedHolidayBase, SAT_SUN_TO_NEXT_MON
19
+
20
+
21
+ class Gambia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays):
22
+ """Gambia holidays.
23
+
24
+ References:
25
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_the_Gambia>
26
+ * <https://web.archive.org/web/20230610113952/https://www.visitthegambia.gm/public-holidays/>
27
+ * <https://web.archive.org/web/20250803084358/https://www.op.gov.gm/media-advisory-public-holidays>
28
+ """
29
+
30
+ country = "GM"
31
+ default_language = "en_GM"
32
+ # %s (estimated).
33
+ estimated_label = tr("%s (estimated)")
34
+ # %s (observed).
35
+ observed_label = tr("%s (observed)")
36
+ # %s (observed, estimated).
37
+ observed_estimated_label = tr("%s (observed, estimated)")
38
+ start_year = 1966
39
+ supported_languages = ("en_GM", "en_US")
40
+
41
+ def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
42
+ """
43
+ Args:
44
+ islamic_show_estimated:
45
+ Whether to add "estimated" label to Islamic holidays name
46
+ if holiday date is estimated.
47
+ """
48
+ ChristianHolidays.__init__(self)
49
+ InternationalHolidays.__init__(self)
50
+ IslamicHolidays.__init__(
51
+ self, cls=GambiaIslamicHolidays, show_estimated=islamic_show_estimated
52
+ )
53
+ kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_MON)
54
+ kwargs.setdefault("observed_since", 2021)
55
+ super().__init__(*args, **kwargs)
56
+
57
+ def _populate_public_holidays(self):
58
+ # New Year's Day.
59
+ self._add_observed(self._add_new_years_day(tr("New Year's Day")))
60
+
61
+ # Independence Day.
62
+ self._add_observed(self._add_holiday_feb_18(tr("Independence Day")))
63
+
64
+ # Good Friday.
65
+ self._add_good_friday(tr("Good Friday"))
66
+
67
+ # Easter Monday.
68
+ self._add_easter_monday(tr("Easter Monday"))
69
+
70
+ # Labor Day.
71
+ self._add_observed(self._add_labor_day(tr("Labour Day")))
72
+
73
+ # Africa Liberation Day.
74
+ self._add_observed(self._add_africa_day(tr("Africa Liberation Day")))
75
+
76
+ # July 22 Revolution Day.
77
+ self._add_observed(self._add_holiday_jul_22(tr("July 22 Revolution Day")))
78
+
79
+ # Assumption Day.
80
+ self._add_observed(self._add_assumption_of_mary_day(tr("Feast of the Assumption")))
81
+
82
+ # Christmas Day.
83
+ self._add_christmas_day(tr("Christmas Day"))
84
+
85
+ # Boxing Day.
86
+ self._add_observed(self._add_christmas_day_two(tr("Boxing Day")))
87
+
88
+ # Ashura.
89
+ for dt in self._add_ashura_day(tr("Yawmul Ashura")):
90
+ self._add_observed(dt)
91
+
92
+ # Prophet's Birthday.
93
+ for dt in self._add_mawlid_day(tr("Mawlid Nabi")):
94
+ self._add_observed(dt)
95
+
96
+ # Laylat al-Qadr.
97
+ for dt in self._add_laylat_al_qadr_day(tr("Lialat-Ul-Qadr")):
98
+ self._add_observed(dt)
99
+
100
+ # Eid al-Fitr.
101
+ name = tr("Koriteh")
102
+ self._add_eid_al_fitr_day(name)
103
+ if self._year >= 2021:
104
+ for dt in self._add_eid_al_fitr_day_two(name):
105
+ self._add_observed(dt)
106
+
107
+ # Eid al-Adha.
108
+ name = tr("Tobaski")
109
+ self._add_eid_al_adha_day(name)
110
+ if self._year >= 2021:
111
+ for dt in self._add_eid_al_adha_day_two(name):
112
+ self._add_observed(dt)
113
+
114
+
115
+ class GM(Gambia):
116
+ pass
117
+
118
+
119
+ class GMB(Gambia):
120
+ pass
121
+
122
+
123
+ class GambiaIslamicHolidays(_CustomIslamicHolidays):
124
+ # https://web.archive.org/web/20240716225449/https://www.timeanddate.com/holidays/gambia/ashura
125
+ ASHURA_DATES_CONFIRMED_YEARS = (2015, 2025)
126
+ ASHURA_DATES = {
127
+ 2015: (OCT, 24),
128
+ 2016: (OCT, 12),
129
+ 2017: (OCT, 1),
130
+ 2019: (SEP, 10),
131
+ 2021: (AUG, 19),
132
+ }
133
+
134
+ # https://web.archive.org/web/20241209170416/https://www.timeanddate.com/holidays/gambia/eid-al-adha
135
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2015, 2025)
136
+ EID_AL_ADHA_DATES = {
137
+ 2015: (SEP, 24),
138
+ 2016: (SEP, 13),
139
+ 2017: (SEP, 2),
140
+ 2018: (AUG, 22),
141
+ }
142
+
143
+ # https://web.archive.org/web/20241204114244/https://www.timeanddate.com/holidays/gambia/eid-al-fitr
144
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2015, 2025)
145
+ EID_AL_FITR_DATES = {
146
+ 2015: (JUL, 18),
147
+ 2016: (JUL, 7),
148
+ 2017: (JUN, 26),
149
+ 2020: (MAY, 23),
150
+ }
151
+
152
+ # https://web.archive.org/web/20241209070551/https://www.timeanddate.com/holidays/gambia/laylat-al-qadr
153
+ LAYLAT_AL_QADR_DATES_CONFIRMED_YEARS = (2015, 2025)
154
+ LAYLAT_AL_QADR_DATES = {
155
+ 2016: (JUL, 3),
156
+ 2022: (APR, 29),
157
+ }
158
+
159
+ # https://web.archive.org/web/20240909111449/https://www.timeanddate.com/holidays/gambia/prophet-birthday
160
+ MAWLID_DATES_CONFIRMED_YEARS = (2016, 2024)
161
+ MAWLID_DATES = {
162
+ 2016: (DEC, 12),
163
+ 2017: (DEC, 1),
164
+ 2018: (NOV, 21),
165
+ 2021: (OCT, 19),
166
+ 2023: (SEP, 28),
167
+ 2024: (SEP, 16),
168
+ }
@@ -31,12 +31,17 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
31
31
  "Mariä Himmelfahrt" is only a holiday in Bavaria (BY) and "Fronleichnam"
32
32
  in Saxony (SN) and Thuringia (TH) if municipality is mostly catholic which
33
33
  in term depends on census data. It's listed in "CATHOLIC" category for these provinces.
34
+
35
+ References:
36
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_Germany>
37
+ * [Bavaria's Feiertagsgesetz](https://web.archive.org/web/20250724092008/https://www.gesetze-bayern.de/Content/Document/BayFTG-1)
34
38
  """
35
39
 
36
40
  country = "DE"
37
41
  default_language = "de"
38
42
  start_year = 1990
39
43
  subdivisions = (
44
+ # States.
40
45
  "BB", # Brandenburg.
41
46
  "BE", # Berlin.
42
47
  "BW", # Baden-Württemberg.
@@ -53,6 +58,8 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
53
58
  "SN", # Sachsen.
54
59
  "ST", # Sachsen-Anhalt.
55
60
  "TH", # Thüringen.
61
+ # Cities.
62
+ "Augsburg",
56
63
  )
57
64
  subdivisions_aliases = {
58
65
  "Brandenburg": "BB",
@@ -147,9 +154,13 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
147
154
 
148
155
  def _populate_subdiv_by_public_holidays(self):
149
156
  if self._year >= 1991:
157
+ # Epiphany.
150
158
  self._add_epiphany_day(tr("Heilige Drei Könige"))
159
+
160
+ # Corpus Christi.
151
161
  self._add_corpus_christi_day(tr("Fronleichnam"))
152
162
 
163
+ # All Saints' Day.
153
164
  self._add_all_saints_day(tr("Allerheiligen"))
154
165
 
155
166
  def _populate_subdiv_by_catholic_holidays(self):
@@ -159,63 +170,83 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
159
170
 
160
171
  def _populate_subdiv_hb_public_holidays(self):
161
172
  if self._year >= 2018:
173
+ # Reformation Day.
162
174
  self._add_holiday_oct_31(tr("Reformationstag"))
163
175
 
164
176
  def _populate_subdiv_he_public_holidays(self):
165
177
  if self._year >= 1991:
178
+ # Corpus Christi.
166
179
  self._add_corpus_christi_day(tr("Fronleichnam"))
167
180
 
168
181
  def _populate_subdiv_hh_public_holidays(self):
169
182
  if self._year >= 2018:
183
+ # Reformation Day.
170
184
  self._add_holiday_oct_31(tr("Reformationstag"))
171
185
 
172
186
  def _populate_subdiv_mv_public_holidays(self):
173
187
  if self._year >= 2023:
188
+ # International Women's Day.
174
189
  self._add_womens_day(tr("Internationaler Frauentag"))
175
190
 
191
+ # Reformation Day.
176
192
  self._add_holiday_oct_31(tr("Reformationstag"))
177
193
 
178
194
  def _populate_subdiv_ni_public_holidays(self):
179
195
  if self._year >= 2018:
196
+ # Reformation Day.
180
197
  self._add_holiday_oct_31(tr("Reformationstag"))
181
198
 
182
199
  def _populate_subdiv_nw_public_holidays(self):
183
200
  if self._year >= 1991:
201
+ # Corpus Christi.
184
202
  self._add_corpus_christi_day(tr("Fronleichnam"))
185
203
 
204
+ # All Saints' Day.
186
205
  self._add_all_saints_day(tr("Allerheiligen"))
187
206
 
188
207
  def _populate_subdiv_rp_public_holidays(self):
189
208
  if self._year >= 1991:
209
+ # Corpus Christi.
190
210
  self._add_corpus_christi_day(tr("Fronleichnam"))
191
211
 
212
+ # All Saints' Day.
192
213
  self._add_all_saints_day(tr("Allerheiligen"))
193
214
 
194
215
  def _populate_subdiv_sh_public_holidays(self):
195
216
  if self._year >= 2018:
217
+ # Reformation Day.
196
218
  self._add_holiday_oct_31(tr("Reformationstag"))
197
219
 
198
220
  def _populate_subdiv_sl_public_holidays(self):
199
221
  if self._year >= 1991:
222
+ # Corpus Christi.
200
223
  self._add_corpus_christi_day(tr("Fronleichnam"))
224
+
225
+ # Assumption Day.
201
226
  self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
202
227
 
228
+ # All Saints' Day.
203
229
  self._add_all_saints_day(tr("Allerheiligen"))
204
230
 
205
231
  def _populate_subdiv_sn_public_holidays(self):
232
+ # Reformation Day.
206
233
  self._add_holiday_oct_31(tr("Reformationstag"))
207
234
 
208
235
  if self._year >= 1995:
236
+ # Repentance and Prayer Day.
209
237
  self._add_holiday_1st_wed_before_nov_22(tr("Buß- und Bettag"))
210
238
 
211
239
  def _populate_subdiv_sn_catholic_holidays(self):
212
240
  if self._year >= 1991:
241
+ # Corpus Christi.
213
242
  self._add_corpus_christi_day(tr("Fronleichnam"))
214
243
 
215
244
  def _populate_subdiv_st_public_holidays(self):
216
245
  if self._year >= 1991:
246
+ # Epiphany.
217
247
  self._add_epiphany_day(tr("Heilige Drei Könige"))
218
248
 
249
+ # Reformation Day.
219
250
  self._add_holiday_oct_31(tr("Reformationstag"))
220
251
 
221
252
  def _populate_subdiv_th_public_holidays(self):
@@ -223,12 +254,21 @@ class Germany(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
223
254
  # World Children's Day.
224
255
  self._add_holiday_sep_20(tr("Weltkindertag"))
225
256
 
257
+ # Reformation Day.
226
258
  self._add_holiday_oct_31(tr("Reformationstag"))
227
259
 
228
260
  def _populate_subdiv_th_catholic_holidays(self):
229
261
  if self._year >= 1991:
262
+ # Corpus Christi.
230
263
  self._add_corpus_christi_day(tr("Fronleichnam"))
231
264
 
265
+ def _populate_subdiv_augsburg_public_holidays(self):
266
+ self._populate_subdiv_by_public_holidays()
267
+
268
+ if self._year >= 1991:
269
+ # Augsburg Peace Festival.
270
+ self._add_holiday_aug_8(tr("Augsburger Hohes Friedensfest"))
271
+
232
272
 
233
273
  class DE(Germany):
234
274
  pass
@@ -248,6 +288,7 @@ class GermanyStaticHolidays:
248
288
  """
249
289
 
250
290
  special_public_holidays = {
291
+ # Reformation Day.
251
292
  2017: (OCT, 31, tr("Reformationstag")),
252
293
  }
253
294
 
@@ -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, OCT, NOV, DEC
16
+ from holidays.calendars.gregorian import MAR, APR, JUN, JUL, AUG, SEP, NOV, DEC
17
17
  from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
18
18
  from holidays.observed_holiday_base import ObservedHolidayBase, SUN_TO_NEXT_MON
19
19
 
@@ -125,58 +125,36 @@ class GIN(Guinea):
125
125
 
126
126
 
127
127
  class GuineaIslamicHolidays(_CustomIslamicHolidays):
128
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2015, 2025)
128
129
  EID_AL_ADHA_DATES = {
129
130
  2015: (SEP, 24),
130
131
  2016: (SEP, 13),
131
132
  2017: (SEP, 2),
132
133
  2018: (AUG, 22),
133
- 2019: (AUG, 11),
134
- 2020: (JUL, 31),
135
- 2021: (JUL, 20),
136
134
  2022: (JUL, 10),
137
- 2023: (JUN, 28),
138
- 2024: (JUN, 16),
139
135
  2025: (JUN, 7),
140
136
  }
141
137
 
138
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2015, 2025)
142
139
  EID_AL_FITR_DATES = {
143
140
  2015: (JUL, 18),
144
141
  2016: (JUL, 7),
145
142
  2017: (JUN, 26),
146
- 2018: (JUN, 15),
147
- 2019: (JUN, 4),
148
- 2020: (MAY, 24),
149
- 2021: (MAY, 13),
150
- 2022: (MAY, 2),
151
- 2023: (APR, 21),
152
- 2024: (APR, 10),
153
143
  2025: (MAR, 31),
154
144
  }
155
145
 
146
+ MAWLID_DATES_CONFIRMED_YEARS = (2015, 2025)
156
147
  MAWLID_DATES = {
157
148
  2015: (DEC, 24),
158
149
  2016: (DEC, 12),
159
150
  2017: (DEC, 1),
160
- 2018: (NOV, 20),
161
151
  2019: (NOV, 10),
162
- 2020: (OCT, 29),
163
- 2021: (OCT, 18),
164
- 2022: (OCT, 8),
165
- 2023: (SEP, 27),
166
- 2024: (SEP, 15),
167
152
  2025: (SEP, 5),
168
153
  }
169
154
 
155
+ LAYLAT_AL_QADR_DATES_CONFIRMED_YEARS = (2015, 2025)
170
156
  LAYLAT_AL_QADR_DATES = {
171
- 2015: (JUL, 14),
172
157
  2016: (JUL, 3),
173
- 2017: (JUN, 22),
174
158
  2018: (JUN, 12),
175
- 2019: (JUN, 1),
176
- 2020: (MAY, 20),
177
- 2021: (MAY, 9),
178
159
  2022: (APR, 29),
179
- 2023: (APR, 18),
180
- 2024: (APR, 6),
181
- 2025: (MAR, 27),
182
160
  }
@@ -0,0 +1,100 @@
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 gettext import gettext as tr
14
+
15
+ from holidays.calendars import _CustomIslamicHolidays
16
+ from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
17
+ from holidays.holiday_base import HolidayBase
18
+
19
+
20
+ class GuineaBissau(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays):
21
+ """Guinea-Bissau holidays.
22
+
23
+ References:
24
+ * [Ley núm. 7/2022, de 18 de julio, que aprueba el Código del Trabajo](https://archive.org/details/742984686-co-digo-de-trabalho-lei-no-7-2022)
25
+ """
26
+
27
+ country = "GW"
28
+ default_language = "pt_GW"
29
+ # %s (estimated).
30
+ estimated_label = tr("%s (prevista)")
31
+ # %s (observed).
32
+ observed_label = tr("%s (ponte)")
33
+ # %s (estimated, observed).
34
+ observed_estimated_label = tr("%s (prevista, ponte)")
35
+ supported_languages = ("en_US", "pt_GW")
36
+ start_year = 2023
37
+
38
+ def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
39
+ """
40
+ Args:
41
+ islamic_show_estimated:
42
+ Whether to add "estimated" label to Islamic holidays name
43
+ if holiday date is estimated.
44
+ """
45
+ ChristianHolidays.__init__(self)
46
+ InternationalHolidays.__init__(self)
47
+ IslamicHolidays.__init__(
48
+ self, cls=GuineaBissauIslamicHolidays, show_estimated=islamic_show_estimated
49
+ )
50
+ super().__init__(*args, **kwargs)
51
+
52
+ def _populate_public_holidays(self):
53
+ # New Year's Day.
54
+ self._add_new_years_day(tr("Ano Novo"))
55
+
56
+ # National Heroes' Day.
57
+ self._add_holiday_jan_20(tr("Dia dos Heróis Nacionais"))
58
+
59
+ # Day of the Beginning of the Armed Struggle.
60
+ self._add_holiday_jan_23(tr("Dia do Início da Luta Armada"))
61
+
62
+ # International Women's Day.
63
+ self._add_womens_day(tr("Dia Internacional da Mulher"))
64
+
65
+ # Easter Sunday.
66
+ self._add_easter_sunday(tr("Páscoa"))
67
+
68
+ # Worker's Day.
69
+ self._add_labor_day(tr("Dia do Trabalhador"))
70
+
71
+ # Pidjiguiti Day.
72
+ self._add_holiday_aug_3(tr("Dia de Pidjiguiti"))
73
+
74
+ # Independence Day.
75
+ self._add_holiday_sep_24(tr("Dia da Independência"))
76
+
77
+ # Christmas Day.
78
+ self._add_christmas_day(tr("Dia de Natal"))
79
+
80
+ # Eid al-Fitr.
81
+ self._add_eid_al_fitr_day(tr("Korité"))
82
+
83
+ # Eid al-Adha.
84
+ self._add_eid_al_adha_day(tr("Tabaski"))
85
+
86
+
87
+ class GW(GuineaBissau):
88
+ pass
89
+
90
+
91
+ class GNB(GuineaBissau):
92
+ pass
93
+
94
+
95
+ class GuineaBissauIslamicHolidays(_CustomIslamicHolidays):
96
+ # http://web.archive.org/web/20250811201914/https://www.timeanddate.com/holidays/guinea-bissau/eid-al-adha
97
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2023, 2025)
98
+
99
+ # http://web.archive.org/web/20250811202225/https://www.timeanddate.com/holidays/guinea-bissau/eid-al-fitr
100
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2023, 2025)
@@ -208,56 +208,41 @@ class GuyanaHinduHolidays(_CustomHinduHolidays):
208
208
 
209
209
  class GuyanaIslamicHolidays(_CustomIslamicHolidays):
210
210
  # https://web.archive.org/web/20250424074512/https://www.timeanddate.com/holidays/guyana/eid-al-adha
211
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2001, 2025)
211
212
  EID_AL_ADHA_DATES = {
212
213
  2001: (MAR, 6),
213
214
  2002: (FEB, 23),
214
215
  2003: (FEB, 12),
215
216
  2004: (FEB, 2),
216
- 2005: (JAN, 21),
217
- 2006: ((JAN, 10), (DEC, 31)),
218
- 2007: (DEC, 20),
219
217
  2008: (DEC, 9),
220
218
  2009: (NOV, 28),
221
219
  2010: (NOV, 17),
222
220
  2011: (NOV, 7),
223
- 2012: (OCT, 26),
224
- 2013: (OCT, 15),
225
221
  2014: (OCT, 5),
226
222
  2015: (SEP, 24),
227
223
  2016: (SEP, 13),
228
224
  2017: (SEP, 2),
229
225
  2018: (AUG, 22),
230
- 2019: (AUG, 11),
231
- 2020: (JUL, 31),
232
226
  2021: (JUL, 21),
233
- 2022: (JUL, 9),
234
227
  2023: (JUN, 29),
235
228
  2024: (JUN, 17),
236
229
  2025: (JUN, 7),
237
230
  }
238
231
 
239
232
  # https://web.archive.org/web/20241006104125/https://www.timeanddate.com/holidays/guyana/prophet-birthday
233
+ MAWLID_DATES_CONFIRMED_YEARS = (2001, 2025)
240
234
  MAWLID_DATES = {
241
- 2001: (JUN, 4),
242
- 2002: (MAY, 24),
243
235
  2003: (MAY, 14),
244
236
  2004: (MAY, 2),
245
- 2005: (APR, 21),
246
237
  2006: (APR, 11),
247
- 2007: (MAR, 31),
248
- 2008: (MAR, 20),
249
- 2009: (MAR, 9),
250
- 2010: (FEB, 26),
251
238
  2011: (FEB, 16),
252
239
  2012: (FEB, 5),
253
- 2013: (JAN, 24),
254
240
  2014: (JAN, 14),
255
241
  2015: ((JAN, 3), (DEC, 24)),
256
242
  2016: (DEC, 12),
257
243
  2017: (DEC, 1),
258
244
  2018: (NOV, 21),
259
245
  2019: (NOV, 10),
260
- 2020: (OCT, 29),
261
246
  2021: (OCT, 19),
262
247
  2022: (OCT, 9),
263
248
  2023: (SEP, 28),
@@ -501,17 +501,20 @@ class India(
501
501
  self._add_holiday_may_9(tr("Rabindra Jayanti"))
502
502
 
503
503
 
504
+ class IN(India):
505
+ pass
506
+
507
+
508
+ class IND(India):
509
+ pass
510
+
511
+
504
512
  class IndiaIslamicHolidays(_CustomIslamicHolidays):
505
- # Muharram / Day of Ashura.
513
+ ASHURA_DATES_CONFIRMED_YEARS = (2001, 2025)
506
514
  ASHURA_DATES = {
507
- 2001: (APR, 4),
508
- 2002: (MAR, 24),
509
515
  2003: (MAR, 14),
510
516
  2004: (MAR, 2),
511
- 2005: (FEB, 19),
512
- 2006: (FEB, 9),
513
517
  2007: (JAN, 30),
514
- 2008: (JAN, 19),
515
518
  2009: ((JAN, 7), (DEC, 28)),
516
519
  2010: (DEC, 17),
517
520
  2011: (DEC, 6),
@@ -531,15 +534,13 @@ class IndiaIslamicHolidays(_CustomIslamicHolidays):
531
534
  2025: (JUL, 6),
532
535
  }
533
536
 
534
- # Bakrid / Eid-al-Adha.
537
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2001, 2025)
535
538
  EID_AL_ADHA_DATES = {
536
539
  2001: (MAR, 6),
537
540
  2002: (FEB, 23),
538
541
  2003: (FEB, 12),
539
542
  2004: (FEB, 2),
540
- 2005: (JAN, 21),
541
543
  2006: ((JAN, 11), (DEC, 31)),
542
- 2007: (DEC, 20),
543
544
  2008: (DEC, 9),
544
545
  2009: (NOV, 28),
545
546
  2010: (NOV, 17),
@@ -560,21 +561,16 @@ class IndiaIslamicHolidays(_CustomIslamicHolidays):
560
561
  2025: (JUN, 7),
561
562
  }
562
563
 
563
- # Id-ul-Fitr / Eid-al-Fitr.
564
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2001, 2025)
564
565
  EID_AL_FITR_DATES = {
565
566
  2001: (DEC, 17),
566
567
  2002: (DEC, 6),
567
568
  2003: (NOV, 26),
568
- 2004: (NOV, 14),
569
- 2005: (NOV, 3),
570
569
  2006: (OCT, 24),
571
- 2007: (OCT, 13),
572
570
  2008: (OCT, 2),
573
571
  2009: (SEP, 21),
574
- 2010: (SEP, 10),
575
572
  2011: (AUG, 31),
576
573
  2012: (AUG, 20),
577
- 2013: (AUG, 8),
578
574
  2014: (JUL, 29),
579
575
  2015: (JUL, 18),
580
576
  2016: (JUL, 7),
@@ -589,7 +585,7 @@ class IndiaIslamicHolidays(_CustomIslamicHolidays):
589
585
  2025: (MAR, 31),
590
586
  }
591
587
 
592
- # Milad-un-Nabi / Mawlid.
588
+ MAWLID_DATES_CONFIRMED_YEARS = (2001, 2025)
593
589
  MAWLID_DATES = {
594
590
  2001: (JUN, 5),
595
591
  2002: (MAY, 25),
@@ -599,7 +595,6 @@ class IndiaIslamicHolidays(_CustomIslamicHolidays):
599
595
  2006: (APR, 11),
600
596
  2007: (APR, 1),
601
597
  2008: (MAR, 21),
602
- 2009: (MAR, 9),
603
598
  2010: (FEB, 27),
604
599
  2011: (FEB, 16),
605
600
  2012: (FEB, 5),
@@ -617,11 +612,3 @@ class IndiaIslamicHolidays(_CustomIslamicHolidays):
617
612
  2024: (SEP, 16),
618
613
  2025: (SEP, 5),
619
614
  }
620
-
621
-
622
- class IN(India):
623
- pass
624
-
625
-
626
- class IND(India):
627
- pass