holidays 0.76__py3-none-any.whl → 0.78__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 (106) hide show
  1. holidays/calendars/islamic.py +32 -1
  2. holidays/countries/__init__.py +20 -0
  3. holidays/countries/australia.py +6 -8
  4. holidays/countries/british_virgin_islands.py +6 -6
  5. holidays/countries/cabo_verde.py +293 -0
  6. holidays/countries/cayman_islands.py +162 -0
  7. holidays/countries/central_african_republic.py +143 -0
  8. holidays/countries/christmas_island.py +215 -0
  9. holidays/countries/cocos_islands.py +4 -4
  10. holidays/countries/dr_congo.py +139 -0
  11. holidays/countries/egypt.py +203 -47
  12. holidays/countries/faroe_islands.py +102 -0
  13. holidays/countries/georgia.py +11 -5
  14. holidays/countries/germany.py +41 -0
  15. holidays/countries/gibraltar.py +219 -0
  16. holidays/countries/guernsey.py +6 -6
  17. holidays/countries/indonesia.py +5 -2
  18. holidays/countries/japan.py +6 -8
  19. holidays/countries/jersey.py +2 -2
  20. holidays/countries/lebanon.py +448 -0
  21. holidays/countries/luxembourg.py +13 -0
  22. holidays/countries/mali.py +151 -0
  23. holidays/countries/montserrat.py +177 -0
  24. holidays/countries/nepal.py +8 -8
  25. holidays/countries/new_zealand.py +2 -2
  26. holidays/countries/niue.py +115 -0
  27. holidays/countries/norfolk_island.py +129 -0
  28. holidays/countries/pakistan.py +7 -5
  29. holidays/countries/palau.py +1 -1
  30. holidays/countries/palestine.py +177 -0
  31. holidays/countries/peru.py +12 -0
  32. holidays/countries/pitcairn_islands.py +85 -0
  33. holidays/countries/saint_vincent_and_the_grenadines.py +130 -0
  34. holidays/countries/saudi_arabia.py +43 -35
  35. holidays/countries/seychelles.py +1 -1
  36. holidays/countries/solomon_islands.py +2 -2
  37. holidays/countries/tokelau.py +66 -0
  38. holidays/countries/turks_and_caicos_islands.py +2 -2
  39. holidays/countries/united_kingdom.py +2 -2
  40. holidays/countries/united_states.py +2 -5
  41. holidays/groups/christian.py +10 -10
  42. holidays/groups/hebrew.py +2 -2
  43. holidays/groups/islamic.py +17 -10
  44. holidays/holiday_base.py +73 -92
  45. holidays/locale/ar/LC_MESSAGES/LB.mo +0 -0
  46. holidays/locale/ar/LC_MESSAGES/PS.mo +0 -0
  47. holidays/locale/{ar → ar_EG}/LC_MESSAGES/EG.mo +0 -0
  48. holidays/locale/da/LC_MESSAGES/FO.mo +0 -0
  49. holidays/locale/de/LC_MESSAGES/CV.mo +0 -0
  50. holidays/locale/de/LC_MESSAGES/DE.mo +0 -0
  51. holidays/locale/de/LC_MESSAGES/LU.mo +0 -0
  52. holidays/locale/en_CX/LC_MESSAGES/CX.mo +0 -0
  53. holidays/locale/en_GB/LC_MESSAGES/GI.mo +0 -0
  54. holidays/locale/en_GB/LC_MESSAGES/KY.mo +0 -0
  55. holidays/locale/en_MS/LC_MESSAGES/MS.mo +0 -0
  56. holidays/locale/en_NF/LC_MESSAGES/NF.mo +0 -0
  57. holidays/locale/en_NU/LC_MESSAGES/NU.mo +0 -0
  58. holidays/locale/en_TK/LC_MESSAGES/TK.mo +0 -0
  59. holidays/locale/en_US/LC_MESSAGES/CD.mo +0 -0
  60. holidays/locale/en_US/LC_MESSAGES/CF.mo +0 -0
  61. holidays/locale/en_US/LC_MESSAGES/CV.mo +0 -0
  62. holidays/locale/en_US/LC_MESSAGES/CX.mo +0 -0
  63. holidays/locale/en_US/LC_MESSAGES/DE.mo +0 -0
  64. holidays/locale/en_US/LC_MESSAGES/EG.mo +0 -0
  65. holidays/locale/en_US/LC_MESSAGES/FO.mo +0 -0
  66. holidays/locale/en_US/LC_MESSAGES/GI.mo +0 -0
  67. holidays/locale/en_US/LC_MESSAGES/KY.mo +0 -0
  68. holidays/locale/en_US/LC_MESSAGES/LB.mo +0 -0
  69. holidays/locale/en_US/LC_MESSAGES/LU.mo +0 -0
  70. holidays/locale/en_US/LC_MESSAGES/ML.mo +0 -0
  71. holidays/locale/en_US/LC_MESSAGES/MS.mo +0 -0
  72. holidays/locale/en_US/LC_MESSAGES/NF.mo +0 -0
  73. holidays/locale/en_US/LC_MESSAGES/NU.mo +0 -0
  74. holidays/locale/en_US/LC_MESSAGES/PE.mo +0 -0
  75. holidays/locale/en_US/LC_MESSAGES/PS.mo +0 -0
  76. holidays/locale/en_US/LC_MESSAGES/TK.mo +0 -0
  77. holidays/locale/en_US/LC_MESSAGES/VC.mo +0 -0
  78. holidays/locale/en_VC/LC_MESSAGES/VC.mo +0 -0
  79. holidays/locale/es/LC_MESSAGES/CV.mo +0 -0
  80. holidays/locale/fo/LC_MESSAGES/FO.mo +0 -0
  81. holidays/locale/fr/LC_MESSAGES/CD.mo +0 -0
  82. holidays/locale/fr/LC_MESSAGES/CF.mo +0 -0
  83. holidays/locale/fr/LC_MESSAGES/CV.mo +0 -0
  84. holidays/locale/fr/LC_MESSAGES/EG.mo +0 -0
  85. holidays/locale/fr/LC_MESSAGES/LU.mo +0 -0
  86. holidays/locale/fr/LC_MESSAGES/ML.mo +0 -0
  87. holidays/locale/is/LC_MESSAGES/FO.mo +0 -0
  88. holidays/locale/lb/LC_MESSAGES/LU.mo +0 -0
  89. holidays/locale/no/LC_MESSAGES/FO.mo +0 -0
  90. holidays/locale/pt_CV/LC_MESSAGES/CV.mo +0 -0
  91. holidays/locale/sv/LC_MESSAGES/FO.mo +0 -0
  92. holidays/locale/th/LC_MESSAGES/DE.mo +0 -0
  93. holidays/locale/tkl/LC_MESSAGES/TK.mo +0 -0
  94. holidays/locale/uk/LC_MESSAGES/DE.mo +0 -0
  95. holidays/locale/uk/LC_MESSAGES/LU.mo +0 -0
  96. holidays/locale/uk/LC_MESSAGES/PE.mo +0 -0
  97. holidays/observed_holiday_base.py +3 -1
  98. holidays/registry.py +16 -0
  99. holidays/utils.py +18 -18
  100. holidays/version.py +1 -1
  101. {holidays-0.76.dist-info → holidays-0.78.dist-info}/METADATA +118 -6
  102. {holidays-0.76.dist-info → holidays-0.78.dist-info}/RECORD +106 -51
  103. {holidays-0.76.dist-info → holidays-0.78.dist-info}/licenses/CONTRIBUTORS +4 -0
  104. {holidays-0.76.dist-info → holidays-0.78.dist-info}/WHEEL +0 -0
  105. {holidays-0.76.dist-info → holidays-0.78.dist-info}/licenses/LICENSE +0 -0
  106. {holidays-0.76.dist-info → holidays-0.78.dist-info}/top_level.txt +0 -0
@@ -12,20 +12,63 @@
12
12
 
13
13
  from gettext import gettext as tr
14
14
 
15
- from holidays.calendars.gregorian import FRI, SAT
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
+ MON,
27
+ TUE,
28
+ WED,
29
+ FRI,
30
+ SAT,
31
+ SUN,
32
+ )
16
33
  from holidays.calendars.julian import JULIAN_CALENDAR
17
- from holidays.groups import ChristianHolidays, IslamicHolidays, InternationalHolidays
18
- from holidays.holiday_base import HolidayBase
34
+ from holidays.constants import GOVERNMENT, PUBLIC, SCHOOL
35
+ from holidays.groups import (
36
+ ChristianHolidays,
37
+ IslamicHolidays,
38
+ InternationalHolidays,
39
+ StaticHolidays,
40
+ )
41
+ from holidays.observed_holiday_base import ObservedHolidayBase, ObservedRule
19
42
 
43
+ EG_OBSERVED_RULE = ObservedRule({MON: +3, TUE: +2, WED: +1, SUN: +4})
20
44
 
21
- class Egypt(HolidayBase, ChristianHolidays, IslamicHolidays, InternationalHolidays):
22
- """Egypt holidays."""
45
+
46
+ class Egypt(
47
+ ObservedHolidayBase, ChristianHolidays, IslamicHolidays, InternationalHolidays, StaticHolidays
48
+ ):
49
+ """Egypt holidays.
50
+
51
+ References:
52
+ * <https://ar.wikipedia.org/wiki/قائمة_العطل_الرسمية_في_مصر>
53
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_Egypt>
54
+ * [National Holidays (Arabic)](https://web.archive.org/web/20250614072551/https://www.presidency.eg/ar/مصر/العطلات-الرسمية/)
55
+ * [National Holidays (English)](https://web.archive.org/web/20250529043734/https://www.presidency.eg/en/مصر/العطلات-الرسمية/)
56
+ * [National Holidays (French)](https://web.archive.org/web/20250608173134/https://www.presidency.eg/fr/مصر/العطلات-الرسمية/)
57
+ * [Ministerial Decision 1193](https://web.archive.org/web/20250423073350/https://manshurat.org/node/44922)
58
+ """
23
59
 
24
60
  country = "EG"
25
- default_language = "ar"
61
+ default_language = "ar_EG"
26
62
  # %s (estimated).
27
63
  estimated_label = tr("%s (المقدرة)")
28
- supported_languages = ("ar", "en_US")
64
+ # %s (observed).
65
+ observed_label = tr("%s (ملاحظة)")
66
+ # %s (observed, estimated).
67
+ observed_estimated_label = tr("%s (المقدرة، ملاحظة)")
68
+ # Republic of Egypt was declared on 18 June 1953.
69
+ start_year = 1954
70
+ supported_categories = (GOVERNMENT, PUBLIC, SCHOOL)
71
+ supported_languages = ("ar_EG", "en_US", "fr")
29
72
  weekend = {FRI, SAT}
30
73
 
31
74
  def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
@@ -37,67 +80,98 @@ class Egypt(HolidayBase, ChristianHolidays, IslamicHolidays, InternationalHolida
37
80
  """
38
81
  ChristianHolidays.__init__(self, JULIAN_CALENDAR)
39
82
  InternationalHolidays.__init__(self)
40
- IslamicHolidays.__init__(self, show_estimated=islamic_show_estimated)
83
+ IslamicHolidays.__init__(
84
+ self, cls=EgyptIslamicHolidays, show_estimated=islamic_show_estimated
85
+ )
86
+ StaticHolidays.__init__(self, cls=EgyptStaticHolidays)
87
+ kwargs.setdefault("observed_rule", EG_OBSERVED_RULE)
88
+ kwargs.setdefault("observed_since", 2020)
41
89
  super().__init__(*args, **kwargs)
42
90
 
43
91
  def _populate_public_holidays(self):
44
- # New Year's Day.
45
- self._add_new_years_day(tr("رأس السنة الميلادية"))
46
-
47
- # Coptic Christmas Day.
48
- self._add_christmas_day(tr("عيد الميلاد المجيد (تقويم قبطي)"))
92
+ if self._year >= 2002 and self._year not in {2022, 2023}:
93
+ # Coptic Christmas Day.
94
+ self._add_christmas_day(tr("عيد الميلاد المجيد"))
49
95
 
50
- if self._year >= 2012:
51
- # January 25th Revolution.
52
- self._add_holiday_jan_25(tr("عيد ثورة 25 يناير"))
53
- elif self._year >= 2009:
54
- # National Police Day.
55
- self._add_holiday_jan_25(tr("عيد الشرطة"))
96
+ if self._year >= 2009:
97
+ self._move_holiday(
98
+ self._add_holiday_jan_25(
99
+ # January 25th Revolution and National Police Day.
100
+ tr("ثورة ٢٥ يناير وعيد الشرطة")
101
+ if self._year >= 2012
102
+ # National Police Day.
103
+ else tr("عيد الشرطة")
104
+ )
105
+ )
56
106
 
57
- # Coptic Easter.
58
- self._add_easter_sunday(tr("عيد الفصح القبطي"))
107
+ if self._year >= 1983:
108
+ # Sinai Liberation Day.
109
+ dt = self._add_holiday_apr_25(tr("عيد تحرير سيناء"))
110
+ if self._year != 2022:
111
+ self._move_holiday(dt)
59
112
 
60
113
  # Spring Festival.
61
- self._add_easter_monday(tr("شم النسيم"))
62
-
63
- if self._year > 1982:
64
- # Sinai Liberation Day.
65
- self._add_holiday_apr_25(tr("عيد تحرير سيناء"))
114
+ self._add_easter_monday(tr("عيد شم النسيم"))
66
115
 
67
116
  # Labor Day.
68
- self._add_labor_day(tr("عيد العمال"))
69
-
70
- # Armed Forces Day.
71
- self._add_holiday_oct_6(tr("عيد القوات المسلحة"))
117
+ if self._year != 2024:
118
+ self._move_holiday(self._add_labor_day(tr("عيد العمال")))
72
119
 
73
120
  if self._year >= 2014:
74
121
  # June 30 Revolution Day.
75
- self._add_holiday_jun_30(tr("عيد ثورة 30 يونيو"))
122
+ dt = self._add_holiday_jun_30(tr("عيد ثورة ٣٠ يونيو"))
123
+ if self._year != 2024:
124
+ self._move_holiday(dt)
76
125
 
77
- if self._year > 1952:
78
- # July 23 Revolution Day.
79
- self._add_holiday_jul_23(tr("عيد ثورة 23 يوليو"))
126
+ # July 23 Revolution Day.
127
+ dt = self._add_holiday_jul_23(tr("عيد ثورة ٢٣ يوليو"))
128
+ if self._year != 2023:
129
+ self._move_holiday(dt)
130
+
131
+ # Armed Forces Day.
132
+ dt = self._add_holiday_oct_6(tr("عيد القوات المسلحة"))
133
+ if self._year != 2024:
134
+ self._move_holiday(dt)
135
+
136
+ # Islamic New Year.
137
+ for dt in self._add_islamic_new_year_day(tr("رأس السنة الهجرية")):
138
+ self._move_holiday(dt)
139
+
140
+ # Prophet's Birthday.
141
+ self._add_mawlid_day(tr("المولد النبوي الشريف"))
80
142
 
81
143
  # Eid al-Fitr.
82
- self._add_eid_al_fitr_day(tr("عيد الفطر"))
83
- # Eid al-Fitr Holiday.
84
- self._add_eid_al_fitr_day_two(tr("عطلة عيد الفطر"))
85
- self._add_eid_al_fitr_day_three(tr("عطلة عيد الفطر"))
144
+ name = tr("عيد الفطر المبارك")
145
+ self._add_eid_al_fitr_day(name)
146
+ self._add_eid_al_fitr_day_two(name)
86
147
 
87
148
  # Arafat Day.
88
- self._add_arafah_day(tr("يوم عرفة"))
149
+ self._add_arafah_day(tr("وقفة عيد الأضحى المبارك"))
89
150
 
90
151
  # Eid al-Adha.
91
- self._add_eid_al_adha_day(tr("عيد الأضحى"))
92
- # Eid al-Adha Holiday.
93
- self._add_eid_al_adha_day_two(tr("عطلة عيد الأضحى"))
94
- self._add_eid_al_adha_day_three(tr("عطلة عيد الأضحى"))
152
+ name = tr("عيد الأضحى المبارك")
153
+ self._add_eid_al_adha_day(name)
154
+ self._add_eid_al_adha_day_two(name)
155
+ self._add_eid_al_adha_day_three(name)
95
156
 
96
- # Islamic New Year.
97
- self._add_islamic_new_year_day(tr("رأس السنة الهجرية"))
157
+ def _populate_government_holidays(self):
158
+ if self._year >= 2019:
159
+ # Eid al-Fitr.
160
+ name = tr("عيد الفطر المبارك")
161
+ self._add_eid_al_fitr_eve(name)
162
+ self._add_eid_al_fitr_day_three(name)
98
163
 
99
- # Prophet's Birthday.
100
- self._add_mawlid_day(tr("عيد المولد النبوي"))
164
+ if self._year >= 2018:
165
+ # Eid al-Adha.
166
+ self._add_eid_al_adha_day_four(tr("عيد الأضحى المبارك"))
167
+
168
+ def _populate_school_holidays(self):
169
+ if self._year >= 2019:
170
+ # Taba Liberation Day.
171
+ self._add_holiday_mar_19(tr("عيد تحرير طابا"))
172
+
173
+ # Evacuation Day.
174
+ self._add_holiday_jun_18(tr("عيد الجلاء"))
101
175
 
102
176
 
103
177
  class EG(Egypt):
@@ -106,3 +180,85 @@ class EG(Egypt):
106
180
 
107
181
  class EGY(Egypt):
108
182
  pass
183
+
184
+
185
+ class EgyptIslamicHolidays(_CustomIslamicHolidays):
186
+ EID_AL_ADHA_DATES = {
187
+ 2020: (JUL, 31),
188
+ 2021: (JUL, 20),
189
+ 2022: (JUL, 10),
190
+ 2023: (JUN, 28),
191
+ 2024: (JUN, 16),
192
+ 2025: (JUN, 6),
193
+ }
194
+
195
+ EID_AL_FITR_DATES = {
196
+ 2020: (MAY, 24),
197
+ 2021: (MAY, 13),
198
+ 2022: (MAY, 1),
199
+ 2023: (APR, 21),
200
+ 2024: (APR, 10),
201
+ 2025: (MAR, 30),
202
+ }
203
+
204
+ HIJRI_NEW_YEAR_DATES = {
205
+ 2020: (AUG, 20),
206
+ 2021: (AUG, 11),
207
+ 2022: (JUL, 30),
208
+ 2023: (JUL, 19),
209
+ 2024: (JUL, 7),
210
+ 2025: (JUN, 26),
211
+ }
212
+
213
+ MAWLID_DATES = {
214
+ 2020: (OCT, 29),
215
+ 2021: (OCT, 18),
216
+ 2022: (OCT, 8),
217
+ 2023: (SEP, 28),
218
+ 2024: (SEP, 15),
219
+ 2025: (SEP, 4),
220
+ }
221
+
222
+
223
+ class EgyptStaticHolidays:
224
+ """Egypt special holidays.
225
+
226
+ References:
227
+ * [2022 Coptic Christmas](https://web.archive.org/web/20240227004025/https://english.ahram.org.eg/NewsContent/1/2/454491/Egypt/Society/Thursday-paid-day-off-at-public-sector-in-Egypt-fo.aspx)
228
+ """
229
+
230
+ # Coptic Christmas Day.
231
+ coptic_christmas_day = tr("عيد الميلاد المجيد")
232
+
233
+ # Eid al-Adha.
234
+ eid_al_adha = tr("عيد الأضحى المبارك")
235
+
236
+ # Eid al-Fitr.
237
+ eid_al_fitr = tr("عيد الفطر المبارك")
238
+
239
+ special_public_holidays = {
240
+ 2021: (
241
+ (JUL, 17, eid_al_adha),
242
+ (JUL, 18, eid_al_adha),
243
+ ),
244
+ 2022: (
245
+ (JUL, 13, eid_al_adha),
246
+ (JUL, 14, eid_al_adha),
247
+ ),
248
+ }
249
+
250
+ special_public_holidays_observed = {
251
+ 2022: (
252
+ (JAN, 6, coptic_christmas_day),
253
+ (MAY, 4, eid_al_fitr),
254
+ ),
255
+ 2023: (
256
+ (JAN, 8, coptic_christmas_day),
257
+ (APR, 24, eid_al_fitr),
258
+ # June 30 Revolution Day.
259
+ (JUL, 2, tr("عيد ثورة ٣٠ يونيو")),
260
+ (JUL, 3, eid_al_adha),
261
+ ),
262
+ # Labor Day.
263
+ 2024: (MAY, 5, tr("عيد العمال")),
264
+ }
@@ -0,0 +1,102 @@
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.constants import HALF_DAY, PUBLIC
16
+ from holidays.groups import ChristianHolidays, InternationalHolidays
17
+ from holidays.holiday_base import HolidayBase
18
+
19
+
20
+ class FaroeIslands(HolidayBase, ChristianHolidays, InternationalHolidays):
21
+ """Faroe Islands holidays.
22
+
23
+ References:
24
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_the_Faroe_Islands>
25
+ * [Decree no. 52 of 23 April 2003](https://web.archive.org/web/20241204233745/https://logir.fo/Kunngerd/52-fra-23-04-2003-um-flagging-fra-landsins-bygningum)
26
+ * [2007](https://web.archive.org/web/20250125193236/https://www.framtak.com/info/holidays.html))
27
+ * [2024](https://web.archive.org/web/20250615193008/https://visitfaroeislands.com/en/plan-your-stay/get-ready-for-your-trip/general-facts/public-holidays)
28
+ * [2025](https://web.archive.org/web/20250615193215/https://guidetofaroeislands.fo/travel-information/faroe-islands-holiday/)
29
+ """
30
+
31
+ country = "FO"
32
+ default_language = "fo"
33
+ # Denmark granted home rule to the Faroe Islands on 30 March 1948.
34
+ start_year = 1949
35
+ supported_categories = (HALF_DAY, PUBLIC)
36
+ supported_languages = ("da", "en_US", "fo", "is", "no", "sv")
37
+
38
+ def __init__(self, *args, **kwargs):
39
+ ChristianHolidays.__init__(self)
40
+ InternationalHolidays.__init__(self)
41
+ super().__init__(*args, **kwargs)
42
+
43
+ def _populate_public_holidays(self):
44
+ # New Year's Day.
45
+ self._add_new_years_day(tr("Nýggjársdagur"))
46
+
47
+ # Maundy Thursday.
48
+ self._add_holy_thursday(tr("Skírhósdagur"))
49
+
50
+ # Good Friday.
51
+ self._add_good_friday(tr("Langifríggjadagur"))
52
+
53
+ # Easter Sunday.
54
+ self._add_easter_sunday(tr("Páskadagur"))
55
+
56
+ # Easter Monday.
57
+ self._add_easter_monday(tr("Annar páskadagur"))
58
+
59
+ # Great Prayer Day.
60
+ self._add_holiday_26_days_past_easter(tr("Dýri biðidagur"))
61
+
62
+ # Ascension Day.
63
+ self._add_ascension_thursday(tr("Kristi himmalsferðardagur"))
64
+
65
+ # Whit Sunday.
66
+ self._add_whit_sunday(tr("Hvítusunnudagur"))
67
+
68
+ # Whit Monday.
69
+ self._add_whit_monday(tr("Annar hvítusunnudagur"))
70
+
71
+ # Saint Olaf's Day.
72
+ self._add_holiday_jul_29(tr("Ólavsøkudagur"))
73
+
74
+ # Christmas Eve.
75
+ self._add_christmas_eve(tr("Jólaaftan"))
76
+
77
+ # Christmas Day.
78
+ self._add_christmas_day(tr("Jóladagur"))
79
+
80
+ # Second Day of Christmas.
81
+ self._add_christmas_day_two(tr("Annar jóladagur"))
82
+
83
+ # New Year's Eve.
84
+ self._add_new_years_eve(tr("Nýggjársaftan"))
85
+
86
+ def _populate_half_day_holidays(self):
87
+ # National Flag Day.
88
+ self._add_holiday_apr_25(tr("Flaggdagur"))
89
+
90
+ # Constitution Day.
91
+ self._add_holiday_jun_5(tr("Grundlógardagur"))
92
+
93
+ # Saint Olaf's Eve.
94
+ self._add_holiday_jul_28(tr("Ólavsøkuaftan"))
95
+
96
+
97
+ class FO(FaroeIslands):
98
+ pass
99
+
100
+
101
+ class FRO(FaroeIslands):
102
+ pass
@@ -19,12 +19,13 @@ from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHoli
19
19
  from holidays.holiday_base import HolidayBase
20
20
 
21
21
 
22
- class Georgia(HolidayBase, ChristianHolidays, InternationalHolidays):
22
+ class Georgia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
23
23
  """Georgia holidays.
24
24
 
25
25
  References:
26
26
  * <https://en.wikipedia.org/wiki/Public_holidays_in_Georgia_(country)>
27
- * <https://web.archive.org/web/20250121212149/https://matsne.gov.ge/en/document/view/1155567?publication=24>
27
+ * [Labour Code of Georgia](https://web.archive.org/web/20250121212149/https://matsne.gov.ge/en/document/view/1155567?publication=24)
28
+ * [Organic Law 4455-XVIმს-Xმპ](https://web.archive.org/web/20250421162538/https://matsne.gov.ge/ka/document/view/6283937?publication=0)
28
29
  """
29
30
 
30
31
  country = "GE"
@@ -57,6 +58,9 @@ class Georgia(HolidayBase, ChristianHolidays, InternationalHolidays):
57
58
  # International Women's Day.
58
59
  self._add_womens_day(tr("ქალთა საერთაშორისო დღე"))
59
60
 
61
+ # National Unity Day.
62
+ self._add_holiday_apr_9(tr("ეროვნული ერთიანობის დღე"))
63
+
60
64
  # Good Friday.
61
65
  self._add_good_friday(tr("წითელი პარასკევი"))
62
66
 
@@ -69,15 +73,17 @@ class Georgia(HolidayBase, ChristianHolidays, InternationalHolidays):
69
73
  # Easter Monday.
70
74
  self._add_easter_monday(tr("შავი ორშაბათი"))
71
75
 
72
- # National Unity Day.
73
- self._add_holiday_apr_9(tr("ეროვნული ერთიანობის დღე"))
74
-
75
76
  # Day of Victory over Fascism.
76
77
  self._add_world_war_two_victory_day(tr("ფაშიზმზე გამარჯვების დღე"), is_western=False)
77
78
 
78
79
  # Saint Andrew's Day.
79
80
  self._add_holiday_may_12(tr("წმინდა ანდრია პირველწოდებულის დღე"))
80
81
 
82
+ # Established by Organic Law 4455-XVIმს-Xმპ.
83
+ if self._year >= 2025:
84
+ # Day of Family Sanctity and Respect for Parents.
85
+ self._add_holiday_may_17(tr("ოჯახის სიწმინდისა და მშობლების პატივისცემის დღე"))
86
+
81
87
  # Independence Day.
82
88
  self._add_holiday_may_26(tr("დამოუკიდებლობის დღე"))
83
89
 
@@ -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