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
@@ -0,0 +1,160 @@
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.gregorian import APR, MAY, JUN, SEP, OCT, NOV
16
+ from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
17
+ from holidays.observed_holiday_base import (
18
+ ObservedHolidayBase,
19
+ MON_TO_NEXT_TUE,
20
+ SAT_SUN_TO_NEXT_MON,
21
+ SAT_SUN_TO_NEXT_MON_TUE,
22
+ )
23
+
24
+
25
+ class SouthGeorgiaAndTheSouthSandwichIslands(
26
+ ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays
27
+ ):
28
+ """South Georgia and the South Sandwich Islands holidays.
29
+
30
+ References:
31
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_South_Georgia_and_the_South_Sandwich_Islands>
32
+ * [2012-2013](https://web.archive.org/web/20240810165616/https://laws.gov.gs/wp-content/uploads/2022/05/2012.pdf)
33
+ * [2014](https://web.archive.org/web/20250726194445/https://laws.gov.gs/wp-content/uploads/2022/05/2013.pdf)
34
+ * [2015](https://web.archive.org/web/20240810161237/https://laws.gov.gs/wp-content/uploads/2022/05/2014.pdf)
35
+ * [2016](https://web.archive.org/web/20250726193915/https://laws.gov.gs/wp-content/uploads/2022/05/2015.pdf)
36
+ * [2017](https://web.archive.org/web/20250726193700/https://laws.gov.gs/wp-content/uploads/2022/05/2016.pdf)
37
+ * [2018](https://web.archive.org/web/20240810175520/https://laws.gov.gs/wp-content/uploads/2022/05/2017.pdf)
38
+ * [2019](https://web.archive.org/web/20250726193031/https://laws.gov.gs/wp-content/uploads/2022/05/2018.pdf)
39
+ * [2020](https://web.archive.org/web/20250726192724/https://laws.gov.gs/wp-content/uploads/2022/05/2019.pdf)
40
+ * [2021](https://web.archive.org/web/20210911002738/https://www.gov.gs/docsarchive/Legislation/SGSSI%20Gazette%20No%202%20dated%2023%20December%202020.pdf)
41
+ * [2022](https://web.archive.org/web/20250727082227/https://laws.gov.gs/wp-content/uploads/2022/05/2021.pdf)
42
+ * [2023](https://web.archive.org/web/20240810165140/https://laws.gov.gs/wp-content/uploads/2024/03/Gazette2023.pdf)
43
+ * [2024](https://web.archive.org/web/20240810163638/https://laws.gov.gs/wp-content/uploads/2024/02/SGSSI-Gazette-No-1-dated-27-February-2024.pdf)
44
+ * [2025](https://web.archive.org/web/20250404025158/https://laws.gov.gs/wp-content/uploads/2025/01/SGSSI-Gazette-No-1-dated-30-January-2025.pdf)
45
+ """
46
+
47
+ country = "GS"
48
+ default_language = "en_GS"
49
+ # %s (observed).
50
+ observed_label = tr("%s (observed)")
51
+ supported_languages = ("en_GS", "en_US")
52
+ start_year = 2012
53
+
54
+ def __init__(self, *args, **kwargs):
55
+ ChristianHolidays.__init__(self)
56
+ InternationalHolidays.__init__(self)
57
+ StaticHolidays.__init__(self, SouthGeorgiaAndTheSouthSandwichIslandsStaticHolidays)
58
+ kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_MON)
59
+ super().__init__(*args, **kwargs)
60
+
61
+ def _populate_public_holidays(self):
62
+ # New Year's Day.
63
+ self._add_observed(self._add_new_years_day(tr("New Year's Day")))
64
+
65
+ # Possession Day.
66
+ self._add_observed(self._add_holiday_jan_17(tr("Possession Day")))
67
+
68
+ # Good Friday.
69
+ self._add_good_friday(tr("Good Friday"))
70
+
71
+ if self._year <= 2019:
72
+ # Easter Monday.
73
+ self._add_easter_monday(tr("Easter Monday"))
74
+
75
+ if 2018 <= self._year <= 2022:
76
+ # The Queen's Birthday.
77
+ dt = self._add_holiday_apr_21(tr("The Queen's Birthday"))
78
+ if self._year not in {2019, 2020}:
79
+ self._add_observed(dt)
80
+
81
+ # Liberation Day.
82
+ name = tr("Liberation Day")
83
+ self._add_observed(
84
+ self._add_holiday_apr_25(name)
85
+ if self._year >= 2016
86
+ else self._add_holiday_apr_26(name)
87
+ )
88
+
89
+ if self._year >= 2015:
90
+ # Shackleton Day.
91
+ dt = self._add_holiday_may_20(tr("Shackleton Day"))
92
+ if self._year != 2023:
93
+ self._add_observed(dt)
94
+
95
+ # Mid-winter Day.
96
+ dt = self._add_holiday_jun_21(tr("Mid-winter Day"))
97
+ if self._year != 2025:
98
+ self._add_observed(dt)
99
+
100
+ if self._year <= 2021:
101
+ if self._year >= 2015:
102
+ # Toothfish Day.
103
+ self._add_observed(self._add_holiday_sep_4(tr("Toothfish Day")))
104
+ else:
105
+ # Toothfish (End of Season) Day.
106
+ dt = self._add_holiday_sep_14(tr("Toothfish (end of season) Day"))
107
+ if self._year != 2013:
108
+ self._add_observed(dt)
109
+
110
+ if self._year >= 2020:
111
+ # Environment Day.
112
+ dt = self._add_holiday_oct_30(tr("Environment Day"))
113
+ if self._year != 2021:
114
+ self._add_observed(dt)
115
+
116
+ # Placed before Christmas Day for proper observed calculation.
117
+ self._add_observed(
118
+ # Boxing Day.
119
+ self._add_christmas_day_two(tr("Boxing Day")),
120
+ rule=SAT_SUN_TO_NEXT_MON_TUE + MON_TO_NEXT_TUE,
121
+ )
122
+
123
+ # Christmas Day.
124
+ self._add_observed(self._add_christmas_day(tr("Christmas Day")))
125
+
126
+
127
+ class GS(SouthGeorgiaAndTheSouthSandwichIslands):
128
+ pass
129
+
130
+
131
+ class SGS(SouthGeorgiaAndTheSouthSandwichIslands):
132
+ pass
133
+
134
+
135
+ class SouthGeorgiaAndTheSouthSandwichIslandsStaticHolidays:
136
+ """South Georgia and the South Sandwich Islands special holidays."""
137
+
138
+ # The Queen's Platinum Jubilee.
139
+ queens_platinum_jubilee = tr("The Queen's Platinum Jubilee")
140
+
141
+ special_public_holidays = {
142
+ 2022: (
143
+ (JUN, 2, queens_platinum_jubilee),
144
+ (JUN, 3, queens_platinum_jubilee),
145
+ ),
146
+ 2023: (
147
+ # King Charles III's Coronation.
148
+ (MAY, 8, tr("Coronation of King Charles III")),
149
+ # King's Birthday.
150
+ (NOV, 14, tr("King's Birthday")),
151
+ ),
152
+ }
153
+
154
+ special_public_holidays_observed = {
155
+ 2013: (SEP, 13, tr("Toothfish (end of season) Day")),
156
+ 2019: (APR, 23, tr("The Queen's Birthday")),
157
+ 2021: (OCT, 29, tr("Environment Day")),
158
+ 2023: (MAY, 19, tr("Shackleton Day")),
159
+ 2025: (JUN, 20, tr("Mid-winter Day")),
160
+ }
@@ -0,0 +1,133 @@
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 _CustomIslamicHolidays
14
+ from holidays.calendars.gregorian import MAR, MAY, JUN, JUL, AUG
15
+ from holidays.constants import ISLAMIC, PUBLIC
16
+ from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
17
+ from holidays.holiday_base import HolidayBase
18
+
19
+
20
+ class SouthSudan(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays):
21
+ """South Sudan holidays.
22
+
23
+ References:
24
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_South_Sudan>
25
+ * [Guidelines for Opening Schools in South Sudan for the Academic Year, 2024](https://web.archive.org/web/20250716011243/https://mogei.gov.ss/super/assets/documents/calendar/2024_MoGEI_Academic%20calendar%20and%20implemention%20guidelines_%20South%20Sudan_A5_final_Approved%20and%20signed%20-%203.pdf)
26
+ * <https://web.archive.org/web/20241211222746/http://www.doitinafrica.com/south-sudan/events/public-holidays.htm>
27
+ * [2016](https://web.archive.org/web/20250825141310/https://docs.southsudanngoforum.org/sites/default/files/2016-11/2016%20ANNUAL%20HOLIDAYS%20CALENDAR%20.pdf)
28
+ * [2018](https://web.archive.org/web/20250825141312/https://docs.southsudanngoforum.org/sites/default/files/2018-01/Annual%20Holidays%20for%202018.pdf)
29
+ * [2020](https://web.archive.org/web/20250825141316/https://docs.southsudanngoforum.org/sites/default/files/2020-01/South_Sudan_Annual_Holidays_for_2020.pdf)
30
+ * [2021](https://web.archive.org/web/20250514045013/https://docs.southsudanngoforum.org/sites/default/files/2021-02/Public%20Holidays%20Calendar%202021.pdf)
31
+ * [2022](https://web.archive.org/web/20250430165748/https://docs.southsudanngoforum.org/sites/default/files/2022-03/HRPublic%20Holidays%202022HR.pdf)
32
+ * [2025](https://web.archive.org/web/20250426232710/https://www.netherlandsandyou.nl/web/south-sudan/about-us/closing-days)
33
+ """
34
+
35
+ country = "SS"
36
+ # %s (estimated).
37
+ estimated_label = "%s (estimated)"
38
+ # South Sudan became independent on 9 July 2011.
39
+ start_year = 2012
40
+ supported_categories = (ISLAMIC, PUBLIC)
41
+
42
+ def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
43
+ """
44
+ Args:
45
+ islamic_show_estimated:
46
+ Whether to add "estimated" label to Islamic holidays name
47
+ if holiday date is estimated.
48
+ """
49
+ ChristianHolidays.__init__(self)
50
+ InternationalHolidays.__init__(self)
51
+ IslamicHolidays.__init__(
52
+ self, cls=SouthSudanIslamicHolidays, show_estimated=islamic_show_estimated
53
+ )
54
+ super().__init__(*args, **kwargs)
55
+
56
+ def _populate_public_holidays(self):
57
+ # New Year's Day.
58
+ self._add_new_years_day("New Year's Day")
59
+
60
+ # Peace Agreement Day.
61
+ self._add_holiday_jan_9("Peace Agreement Day")
62
+
63
+ # Good Friday.
64
+ self._add_good_friday("Good Friday")
65
+
66
+ # Holy Saturday.
67
+ self._add_holy_saturday("Holy Saturday")
68
+
69
+ # Easter Sunday.
70
+ self._add_easter_sunday("Easter Sunday")
71
+
72
+ # Easter Monday.
73
+ self._add_easter_monday("Easter Monday")
74
+
75
+ # International Labour Day.
76
+ self._add_labor_day("International Labour Day")
77
+
78
+ # SPLA Day.
79
+ self._add_holiday_may_16("SPLA Day")
80
+
81
+ # Independence Day.
82
+ self._add_holiday_jul_9("Independence Day")
83
+
84
+ # Martyrs' Day.
85
+ self._add_holiday_jul_30("Martyrs' Day")
86
+
87
+ # Christmas Eve.
88
+ self._add_christmas_eve("Christmas Eve")
89
+
90
+ # Christmas Day.
91
+ self._add_christmas_day("Christmas Day")
92
+
93
+ # Second Day of Christmas.
94
+ self._add_christmas_day_two("Second Day of Christmas")
95
+
96
+ # Eid al-Fitr.
97
+ self._add_eid_al_fitr_day("Eid al-Fitr")
98
+
99
+ # Eid al-Adha.
100
+ self._add_eid_al_adha_day("Eid al-Adha")
101
+
102
+ def _populate_islamic_holidays(self):
103
+ # Eid al-Fitr Holiday.
104
+ self._add_eid_al_fitr_day_two("Eid al-Fitr Holiday")
105
+
106
+ # Eid al-Adha Holiday.
107
+ self._add_eid_al_adha_day_two("Eid al-Adha Holiday")
108
+
109
+
110
+ class SS(SouthSudan):
111
+ pass
112
+
113
+
114
+ class SSD(SouthSudan):
115
+ pass
116
+
117
+
118
+ class SouthSudanIslamicHolidays(_CustomIslamicHolidays):
119
+ EID_AL_ADHA_DATES = {
120
+ 2018: (AUG, 21),
121
+ 2020: (JUL, 31),
122
+ 2021: (JUL, 18),
123
+ 2022: (JUL, 9),
124
+ 2025: (JUN, 6),
125
+ }
126
+
127
+ EID_AL_FITR_DATES = {
128
+ 2018: (JUN, 14),
129
+ 2020: (MAY, 22),
130
+ 2021: (MAY, 13),
131
+ 2022: (MAY, 3),
132
+ 2025: (MAR, 31),
133
+ }
@@ -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
16
+ from holidays.calendars.gregorian import MAR, MAY, JUN, AUG, SEP, OCT, NOV
17
17
  from holidays.groups import (
18
18
  ChristianHolidays,
19
19
  IslamicHolidays,
@@ -52,6 +52,10 @@ class Spain(
52
52
 
53
53
  country = "ES"
54
54
  default_language = "es"
55
+ # %s (estimated).
56
+ estimated_label = tr("%s (estimado)")
57
+ # Monday following %s (estimated).
58
+ observed_estimated_label = tr("Lunes siguiente a %s (estimado)")
55
59
  # Monday following %s.
56
60
  observed_label = tr("Lunes siguiente a %s")
57
61
  subdivisions = (
@@ -717,28 +721,21 @@ class ESP(Spain):
717
721
 
718
722
 
719
723
  class SpainIslamicHolidays(_CustomIslamicHolidays):
724
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2010, 2025)
720
725
  EID_AL_ADHA_DATES = {
721
726
  2010: (NOV, 17),
722
- 2011: (NOV, 6),
723
727
  2012: (OCT, 25),
724
- 2013: (OCT, 15),
725
- 2014: (OCT, 4),
726
728
  2015: (SEP, 25),
727
729
  2016: (SEP, 12),
728
- 2017: (SEP, 1),
729
730
  2018: (AUG, 22),
730
731
  2019: (AUG, 12),
731
- 2020: (JUL, 31),
732
- 2021: (JUL, 20),
733
- 2022: (JUL, 9),
734
732
  2023: (JUN, 29),
735
733
  2024: (JUN, 17),
736
- 2025: (JUN, 6),
737
734
  }
738
735
 
736
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2022, 2025)
739
737
  EID_AL_FITR_DATES = {
740
738
  2022: (MAY, 3),
741
- 2023: (APR, 21),
742
739
  2025: (MAR, 31),
743
740
  }
744
741
 
@@ -289,10 +289,9 @@ class SriLankaHinduHolidays(_CustomHinduHolidays):
289
289
 
290
290
 
291
291
  class SriLankaIslamicHolidays(_CustomIslamicHolidays):
292
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2003, 2025)
292
293
  EID_AL_ADHA_DATES = {
293
294
  2003: (FEB, 12),
294
- 2004: (FEB, 1),
295
- 2005: (JAN, 21),
296
295
  2006: ((JAN, 11), (DEC, 31)),
297
296
  2007: (DEC, 21),
298
297
  2008: (DEC, 9),
@@ -306,7 +305,6 @@ class SriLankaIslamicHolidays(_CustomIslamicHolidays):
306
305
  2014: (OCT, 5),
307
306
  2015: (SEP, 24),
308
307
  2016: (SEP, 12),
309
- 2017: (SEP, 1),
310
308
  2018: (AUG, 22),
311
309
  2019: (AUG, 12),
312
310
  2020: (AUG, 1),
@@ -317,23 +315,17 @@ class SriLankaIslamicHolidays(_CustomIslamicHolidays):
317
315
  2025: (JUN, 7),
318
316
  }
319
317
 
318
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2003, 2025)
320
319
  EID_AL_FITR_DATES = {
321
320
  2003: (NOV, 26),
322
- 2004: (NOV, 14),
323
321
  2005: (NOV, 4),
324
322
  2006: (OCT, 24),
325
- 2007: (OCT, 13),
326
- 2008: (OCT, 1),
327
323
  2009: (SEP, 21),
328
- 2010: (SEP, 10),
329
324
  2011: (AUG, 31),
330
- 2012: (AUG, 19),
331
325
  2013: (AUG, 9),
332
326
  2014: (JUL, 29),
333
327
  2015: (JUL, 18),
334
- 2016: (JUL, 6),
335
328
  2017: (JUN, 26),
336
- 2018: (JUN, 15),
337
329
  2019: (JUN, 5),
338
330
  2020: (MAY, 25),
339
331
  2021: (MAY, 14),
@@ -343,25 +335,22 @@ class SriLankaIslamicHolidays(_CustomIslamicHolidays):
343
335
  2025: (MAR, 31),
344
336
  }
345
337
 
338
+ MAWLID_DATES_CONFIRMED_YEARS = (2003, 2025)
346
339
  MAWLID_DATES = {
347
340
  2003: (MAY, 14),
348
341
  2004: (MAY, 2),
349
342
  2005: (APR, 22),
350
343
  2006: (APR, 11),
351
344
  2007: (APR, 1),
352
- 2008: (MAR, 20),
353
345
  2009: (MAR, 10),
354
346
  2010: (FEB, 27),
355
347
  2011: (FEB, 16),
356
348
  2012: (FEB, 5),
357
349
  2013: (JAN, 25),
358
350
  2014: (JAN, 14),
359
- # Technically 2015 has both JAN 5 and DEC 24
360
- # but this is only observed for JAN 4.
361
351
  2015: (JAN, 4),
362
352
  2016: (DEC, 12),
363
353
  2017: (DEC, 1),
364
- 2018: (NOV, 20),
365
354
  2019: (NOV, 10),
366
355
  2020: (OCT, 30),
367
356
  2021: (OCT, 19),
@@ -14,7 +14,7 @@ from gettext import gettext as tr
14
14
 
15
15
  from holidays import HolidayBase
16
16
  from holidays.calendars import _CustomHinduHolidays, _CustomIslamicHolidays
17
- from holidays.calendars.gregorian import MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV
17
+ from holidays.calendars.gregorian import MAR, APR, JUN, JUL, AUG, SEP, OCT, NOV
18
18
  from holidays.groups import (
19
19
  ChineseCalendarHolidays,
20
20
  ChristianHolidays,
@@ -142,6 +142,14 @@ class Suriname(
142
142
  self._add_chinese_new_years_day(tr("Chinees Nieuwjaar"))
143
143
 
144
144
 
145
+ class SR(Suriname):
146
+ pass
147
+
148
+
149
+ class SUR(Suriname):
150
+ pass
151
+
152
+
145
153
  class SurinameHinduHolidays(_CustomHinduHolidays):
146
154
  # https://web.archive.org/web/20241104221047/https://www.timeanddate.com/holidays/suriname/holi-phagwa
147
155
  HOLI_DATES = {
@@ -187,41 +195,25 @@ class SurinameHinduHolidays(_CustomHinduHolidays):
187
195
 
188
196
  class SurinameIslamicHolidays(_CustomIslamicHolidays):
189
197
  # https://web.archive.org/web/20241107062349/https://www.timeanddate.com/holidays/suriname/eid-al-fitr
198
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2014, 2025)
190
199
  EID_AL_FITR_DATES = {
191
200
  2014: (JUL, 29),
192
201
  2015: (JUL, 18),
193
202
  2016: (JUL, 7),
194
203
  2017: (JUN, 26),
195
- 2018: (JUN, 15),
196
204
  2019: (JUN, 5),
197
- 2020: (MAY, 24),
198
- 2021: (MAY, 13),
199
- 2022: (MAY, 2),
200
205
  2023: (APR, 22),
201
- 2024: (APR, 10),
202
206
  2025: (MAR, 31),
203
207
  }
204
208
 
205
209
  # https://web.archive.org/web/20241113121535/https://www.timeanddate.com/holidays/suriname/eid-al-adha
210
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2014, 2025)
206
211
  EID_AL_ADHA_DATES = {
207
212
  2014: (OCT, 5),
208
213
  2015: (SEP, 24),
209
214
  2016: (SEP, 13),
210
215
  2017: (SEP, 2),
211
- 2018: (AUG, 21),
212
216
  2019: (AUG, 12),
213
- 2020: (JUL, 31),
214
- 2021: (JUL, 20),
215
- 2022: (JUL, 9),
216
217
  2023: (JUN, 29),
217
- 2024: (JUN, 16),
218
218
  2025: (JUN, 7),
219
219
  }
220
-
221
-
222
- class SR(Suriname):
223
- pass
224
-
225
-
226
- class SUR(Suriname):
227
- pass
@@ -0,0 +1,134 @@
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 GREGORIAN_CALENDAR, MAR, OCT, FRI, SAT
17
+ from holidays.calendars.julian import JULIAN_CALENDAR
18
+ from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
19
+ from holidays.holiday_base import HolidayBase
20
+
21
+
22
+ class SyrianArabRepublic(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays):
23
+ """Syrian Arab Republic holidays.
24
+
25
+ References:
26
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_Syria>
27
+ * [Central Bank of Syria - Public Holidays 2024](https://web.archive.org/web/20250813035705/https://cb.gov.sy/index.php?lang=1&dir=html&ex=1&page=holidays&act=598-)
28
+ * [Christmas and Boxing Day](https://web.archive.org/web/20250414224148/https://en.royanews.tv/news/56308)
29
+ """
30
+
31
+ country = "SY"
32
+ default_language = "ar"
33
+ # %s (estimated).
34
+ estimated_label = tr("%s (المقدرة)")
35
+ # Earliest reliable record dates back to 2004.
36
+ start_year = 2004
37
+ supported_languages = ("ar", "en_US")
38
+ weekend = {FRI, SAT}
39
+
40
+ def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
41
+ """
42
+ Args:
43
+ islamic_show_estimated:
44
+ Whether to add "estimated" label to Islamic holidays name
45
+ if holiday date is estimated.
46
+ """
47
+ ChristianHolidays.__init__(self, calendar=JULIAN_CALENDAR)
48
+ InternationalHolidays.__init__(self)
49
+ IslamicHolidays.__init__(
50
+ self, cls=SyriaIslamicHolidays, show_estimated=islamic_show_estimated
51
+ )
52
+ super().__init__(*args, **kwargs)
53
+
54
+ def _populate_public_holidays(self):
55
+ # New Year's Day.
56
+ self._add_new_years_day(tr("عيد رأس السنة الميلادية"))
57
+
58
+ # Revolution Day.
59
+ self._add_holiday_mar_8(tr("الثورة السورية"))
60
+
61
+ # Mother's Day.
62
+ self._add_holiday_mar_21(tr("عيد الأم"))
63
+
64
+ # Gregorian Easter Sunday.
65
+ self._add_easter_sunday(tr("عيد الفصح حسب التقويم الغربي"), calendar=GREGORIAN_CALENDAR)
66
+
67
+ # Julian Easter Sunday.
68
+ self._add_easter_sunday(tr("عيد الفصح حسب التقويم الشرقي"))
69
+
70
+ # Independence Day.
71
+ self._add_holiday_apr_17(tr("عيد الاستقلال"))
72
+
73
+ # Labor Day.
74
+ self._add_labor_day(tr("عيد العمال"))
75
+
76
+ # Martyrs' Day.
77
+ self._add_holiday_may_6(tr("عيد الشهداء"))
78
+
79
+ # Tishreen Liberation War Day.
80
+ self._add_holiday_oct_6(tr("ذكرى حرب تشرين التحريرية"))
81
+
82
+ if self._year >= 2024:
83
+ # Christmas Day.
84
+ self._add_christmas_day(tr("عيد الميلاد"), calendar=GREGORIAN_CALENDAR)
85
+
86
+ # Boxing Day.
87
+ self._add_christmas_day_two(tr("يوم الصناديق"), calendar=GREGORIAN_CALENDAR)
88
+
89
+ # Islamic New Year.
90
+ self._add_islamic_new_year_day(tr("رأس السنة الهجرية"))
91
+
92
+ # Prophet's Birthday.
93
+ self._add_mawlid_day(tr("عيد المولد النبوي الشريف"))
94
+
95
+ # Eid al-Fitr.
96
+ name = tr("عيد الفطر")
97
+ self._add_eid_al_fitr_day(name)
98
+ self._add_eid_al_fitr_day_two(name)
99
+ self._add_eid_al_fitr_day_three(name)
100
+
101
+ # Eid al-Adha.
102
+ name = tr("عيد الأضحى")
103
+ self._add_arafah_day(name)
104
+ self._add_eid_al_adha_day(name)
105
+ self._add_eid_al_adha_day_two(name)
106
+ self._add_eid_al_adha_day_three(name)
107
+
108
+
109
+ class SY(SyrianArabRepublic):
110
+ pass
111
+
112
+
113
+ class SYR(SyrianArabRepublic):
114
+ pass
115
+
116
+
117
+ class SyriaIslamicHolidays(_CustomIslamicHolidays):
118
+ # https://web.archive.org/web/20250120140034/https://www.timeanddate.com/holidays/syria/muharram-new-year
119
+ HIJRI_NEW_YEAR_DATES_CONFIRMED_YEARS = (2020, 2025)
120
+
121
+ # https://web.archive.org/web/20240808150300/https://www.timeanddate.com/holidays/syria/prophet-birthday
122
+ MAWLID_DATES_CONFIRMED_YEARS = (2020, 2024)
123
+ MAWLID_DATES = {
124
+ 2021: (OCT, 19),
125
+ }
126
+
127
+ # https://web.archive.org/web/20250404011133/https://www.timeanddate.com/holidays/syria/eid-al-fitr
128
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2020, 2025)
129
+ EID_AL_FITR_DATES = {
130
+ 2025: (MAR, 31),
131
+ }
132
+
133
+ # https://web.archive.org/web/20250126132002/https://www.timeanddate.com/holidays/syria/eid-al-adha
134
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2020, 2025)