holidays 0.70__py3-none-any.whl → 0.72__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 (254) hide show
  1. holidays/__init__.py +1 -2
  2. holidays/calendars/__init__.py +1 -1
  3. holidays/calendars/balinese_saka.py +1 -1
  4. holidays/calendars/buddhist.py +5 -3
  5. holidays/calendars/chinese.py +101 -13
  6. holidays/calendars/custom.py +1 -1
  7. holidays/calendars/gregorian.py +1 -1
  8. holidays/calendars/hebrew.py +1 -1
  9. holidays/calendars/hindu.py +47 -3
  10. holidays/calendars/islamic.py +1 -1
  11. holidays/calendars/julian.py +1 -1
  12. holidays/calendars/julian_revised.py +1 -1
  13. holidays/calendars/persian.py +1 -1
  14. holidays/calendars/sinhala.py +1 -1
  15. holidays/calendars/thai.py +1 -1
  16. holidays/constants.py +1 -1
  17. holidays/countries/__init__.py +7 -1
  18. holidays/countries/afghanistan.py +1 -1
  19. holidays/countries/albania.py +2 -2
  20. holidays/countries/algeria.py +1 -1
  21. holidays/countries/american_samoa.py +2 -1
  22. holidays/countries/andorra.py +10 -1
  23. holidays/countries/angola.py +1 -1
  24. holidays/countries/antigua_and_barbuda.py +1 -1
  25. holidays/countries/argentina.py +5 -5
  26. holidays/countries/armenia.py +1 -1
  27. holidays/countries/aruba.py +1 -1
  28. holidays/countries/australia.py +16 -5
  29. holidays/countries/austria.py +3 -3
  30. holidays/countries/azerbaijan.py +1 -1
  31. holidays/countries/bahamas.py +1 -1
  32. holidays/countries/bahrain.py +1 -1
  33. holidays/countries/bangladesh.py +1 -1
  34. holidays/countries/barbados.py +1 -1
  35. holidays/countries/belarus.py +1 -1
  36. holidays/countries/belgium.py +1 -1
  37. holidays/countries/belize.py +1 -1
  38. holidays/countries/bolivia.py +23 -12
  39. holidays/countries/bosnia_and_herzegovina.py +5 -5
  40. holidays/countries/botswana.py +1 -1
  41. holidays/countries/brazil.py +3 -4
  42. holidays/countries/brunei.py +1 -1
  43. holidays/countries/bulgaria.py +1 -1
  44. holidays/countries/burkina_faso.py +1 -1
  45. holidays/countries/burundi.py +1 -1
  46. holidays/countries/cambodia.py +22 -22
  47. holidays/countries/cameroon.py +1 -1
  48. holidays/countries/canada.py +91 -57
  49. holidays/countries/chad.py +1 -1
  50. holidays/countries/chile.py +36 -18
  51. holidays/countries/china.py +1 -1
  52. holidays/countries/colombia.py +1 -1
  53. holidays/countries/congo.py +1 -1
  54. holidays/countries/costa_rica.py +1 -1
  55. holidays/countries/croatia.py +1 -1
  56. holidays/countries/cuba.py +1 -1
  57. holidays/countries/curacao.py +1 -1
  58. holidays/countries/cyprus.py +1 -1
  59. holidays/countries/czechia.py +1 -1
  60. holidays/countries/denmark.py +1 -1
  61. holidays/countries/djibouti.py +1 -1
  62. holidays/countries/dominica.py +1 -1
  63. holidays/countries/dominican_republic.py +1 -1
  64. holidays/countries/ecuador.py +1 -1
  65. holidays/countries/egypt.py +1 -1
  66. holidays/countries/el_salvador.py +18 -18
  67. holidays/countries/estonia.py +1 -1
  68. holidays/countries/eswatini.py +1 -1
  69. holidays/countries/ethiopia.py +43 -24
  70. holidays/countries/fiji.py +1 -1
  71. holidays/countries/finland.py +1 -1
  72. holidays/countries/france.py +4 -5
  73. holidays/countries/french_southern_territories.py +53 -0
  74. holidays/countries/gabon.py +1 -1
  75. holidays/countries/georgia.py +1 -1
  76. holidays/countries/germany.py +20 -21
  77. holidays/countries/ghana.py +1 -1
  78. holidays/countries/greece.py +1 -1
  79. holidays/countries/greenland.py +1 -1
  80. holidays/countries/guam.py +2 -1
  81. holidays/countries/guatemala.py +1 -1
  82. holidays/countries/guernsey.py +1 -1
  83. holidays/countries/guinea.py +1 -1
  84. holidays/countries/haiti.py +1 -1
  85. holidays/countries/honduras.py +1 -1
  86. holidays/countries/hongkong.py +2 -2
  87. holidays/countries/hungary.py +1 -1
  88. holidays/countries/iceland.py +1 -1
  89. holidays/countries/india.py +17 -11
  90. holidays/countries/indonesia.py +1 -1
  91. holidays/countries/iran.py +1 -1
  92. holidays/countries/ireland.py +1 -1
  93. holidays/countries/isle_of_man.py +1 -1
  94. holidays/countries/israel.py +1 -1
  95. holidays/countries/italy.py +1 -1
  96. holidays/countries/ivory_coast.py +5 -5
  97. holidays/countries/jamaica.py +1 -1
  98. holidays/countries/japan.py +1 -1
  99. holidays/countries/jersey.py +1 -1
  100. holidays/countries/jordan.py +1 -1
  101. holidays/countries/kazakhstan.py +1 -1
  102. holidays/countries/kenya.py +1 -1
  103. holidays/countries/kuwait.py +1 -1
  104. holidays/countries/kyrgyzstan.py +1 -1
  105. holidays/countries/laos.py +1 -1
  106. holidays/countries/latvia.py +1 -1
  107. holidays/countries/lesotho.py +1 -1
  108. holidays/countries/liechtenstein.py +1 -1
  109. holidays/countries/lithuania.py +1 -1
  110. holidays/countries/luxembourg.py +1 -1
  111. holidays/countries/macau.py +5 -5
  112. holidays/countries/madagascar.py +1 -1
  113. holidays/countries/malawi.py +1 -1
  114. holidays/countries/malaysia.py +26 -22
  115. holidays/countries/maldives.py +1 -1
  116. holidays/countries/malta.py +1 -1
  117. holidays/countries/marshall_islands.py +1 -1
  118. holidays/countries/mauritania.py +1 -1
  119. holidays/countries/mexico.py +1 -1
  120. holidays/countries/moldova.py +1 -1
  121. holidays/countries/monaco.py +1 -1
  122. holidays/countries/montenegro.py +1 -1
  123. holidays/countries/morocco.py +1 -1
  124. holidays/countries/mozambique.py +1 -1
  125. holidays/countries/namibia.py +1 -1
  126. holidays/countries/netherlands.py +1 -1
  127. holidays/countries/new_zealand.py +19 -19
  128. holidays/countries/nicaragua.py +19 -19
  129. holidays/countries/nigeria.py +1 -1
  130. holidays/countries/north_macedonia.py +1 -1
  131. holidays/countries/northern_mariana_islands.py +2 -1
  132. holidays/countries/norway.py +1 -1
  133. holidays/countries/oman.py +185 -0
  134. holidays/countries/pakistan.py +8 -1
  135. holidays/countries/palau.py +1 -1
  136. holidays/countries/panama.py +1 -1
  137. holidays/countries/papua_new_guinea.py +1 -1
  138. holidays/countries/paraguay.py +1 -1
  139. holidays/countries/peru.py +1 -1
  140. holidays/countries/philippines.py +1 -1
  141. holidays/countries/poland.py +1 -1
  142. holidays/countries/portugal.py +23 -25
  143. holidays/countries/puerto_rico.py +2 -1
  144. holidays/countries/qatar.py +1 -1
  145. holidays/countries/romania.py +1 -1
  146. holidays/countries/russia.py +1 -1
  147. holidays/countries/saint_kitts_and_nevis.py +1 -1
  148. holidays/countries/saint_lucia.py +1 -1
  149. holidays/countries/samoa.py +1 -1
  150. holidays/countries/san_marino.py +1 -1
  151. holidays/countries/sao_tome_and_principe.py +112 -0
  152. holidays/countries/saudi_arabia.py +1 -1
  153. holidays/countries/serbia.py +1 -1
  154. holidays/countries/seychelles.py +1 -1
  155. holidays/countries/sierra_leone.py +149 -0
  156. holidays/countries/singapore.py +5 -2
  157. holidays/countries/slovakia.py +1 -1
  158. holidays/countries/slovenia.py +1 -1
  159. holidays/countries/south_africa.py +1 -1
  160. holidays/countries/south_korea.py +17 -46
  161. holidays/countries/spain.py +43 -20
  162. holidays/countries/sri_lanka.py +1 -1
  163. holidays/countries/suriname.py +227 -0
  164. holidays/countries/sweden.py +1 -1
  165. holidays/countries/switzerland.py +61 -28
  166. holidays/countries/taiwan.py +3 -2
  167. holidays/countries/tanzania.py +1 -1
  168. holidays/countries/thailand.py +3 -3
  169. holidays/countries/timor_leste.py +1 -1
  170. holidays/countries/tonga.py +1 -1
  171. holidays/countries/trinidad_and_tobago.py +197 -0
  172. holidays/countries/tunisia.py +1 -1
  173. holidays/countries/turkey.py +1 -1
  174. holidays/countries/tuvalu.py +6 -6
  175. holidays/countries/ukraine.py +1 -1
  176. holidays/countries/united_arab_emirates.py +1 -1
  177. holidays/countries/united_kingdom.py +1 -1
  178. holidays/countries/united_states.py +62 -4
  179. holidays/countries/united_states_minor_outlying_islands.py +2 -1
  180. holidays/countries/united_states_virgin_islands.py +2 -1
  181. holidays/countries/uruguay.py +1 -1
  182. holidays/countries/uzbekistan.py +1 -1
  183. holidays/countries/vanuatu.py +1 -1
  184. holidays/countries/vatican_city.py +1 -1
  185. holidays/countries/venezuela.py +1 -1
  186. holidays/countries/vietnam.py +3 -2
  187. holidays/countries/zambia.py +1 -1
  188. holidays/countries/zimbabwe.py +1 -1
  189. holidays/deprecations/v1_incompatibility.py +1 -1
  190. holidays/financial/__init__.py +1 -1
  191. holidays/financial/brasil_bolsa_balcao.py +1 -1
  192. holidays/financial/european_central_bank.py +1 -1
  193. holidays/financial/ice_futures_europe.py +1 -1
  194. holidays/financial/ny_stock_exchange.py +1 -1
  195. holidays/groups/__init__.py +1 -1
  196. holidays/groups/balinese_saka.py +1 -1
  197. holidays/groups/buddhist.py +1 -1
  198. holidays/groups/chinese.py +6 -4
  199. holidays/groups/christian.py +1 -1
  200. holidays/groups/custom.py +1 -1
  201. holidays/groups/eastern.py +1 -1
  202. holidays/groups/hebrew.py +1 -1
  203. holidays/groups/hindu.py +45 -3
  204. holidays/groups/international.py +1 -1
  205. holidays/groups/islamic.py +11 -1
  206. holidays/groups/persian.py +1 -1
  207. holidays/groups/sinhala.py +1 -1
  208. holidays/groups/thai.py +6 -6
  209. holidays/helpers.py +1 -1
  210. holidays/holiday_base.py +32 -6
  211. holidays/ical.py +2 -2
  212. holidays/locale/am/LC_MESSAGES/ET.mo +0 -0
  213. holidays/locale/ar/LC_MESSAGES/CA.mo +0 -0
  214. holidays/locale/ar/LC_MESSAGES/ET.mo +0 -0
  215. holidays/locale/ar/LC_MESSAGES/OM.mo +0 -0
  216. holidays/locale/en_CA/LC_MESSAGES/CA.mo +0 -0
  217. holidays/locale/en_CI/LC_MESSAGES/CI.mo +0 -0
  218. holidays/locale/en_ET/LC_MESSAGES/ET.mo +0 -0
  219. holidays/locale/en_IN/LC_MESSAGES/IN.mo +0 -0
  220. holidays/locale/en_SL/LC_MESSAGES/SL.mo +0 -0
  221. holidays/locale/en_TT/LC_MESSAGES/TT.mo +0 -0
  222. holidays/locale/en_US/LC_MESSAGES/CA.mo +0 -0
  223. holidays/locale/en_US/LC_MESSAGES/CI.mo +0 -0
  224. holidays/locale/en_US/LC_MESSAGES/ET.mo +0 -0
  225. holidays/locale/en_US/LC_MESSAGES/IN.mo +0 -0
  226. holidays/locale/en_US/LC_MESSAGES/KH.mo +0 -0
  227. holidays/locale/en_US/LC_MESSAGES/OM.mo +0 -0
  228. holidays/locale/en_US/LC_MESSAGES/PK.mo +0 -0
  229. holidays/locale/en_US/LC_MESSAGES/SL.mo +0 -0
  230. holidays/locale/en_US/LC_MESSAGES/SR.mo +0 -0
  231. holidays/locale/en_US/LC_MESSAGES/ST.mo +0 -0
  232. holidays/locale/en_US/LC_MESSAGES/TF.mo +0 -0
  233. holidays/locale/en_US/LC_MESSAGES/TT.mo +0 -0
  234. holidays/locale/fr/LC_MESSAGES/CA.mo +0 -0
  235. holidays/locale/fr/LC_MESSAGES/TF.mo +0 -0
  236. holidays/locale/hi/LC_MESSAGES/IN.mo +0 -0
  237. holidays/locale/km/LC_MESSAGES/KH.mo +0 -0
  238. holidays/locale/nl/LC_MESSAGES/SR.mo +0 -0
  239. holidays/locale/pt_ST/LC_MESSAGES/ST.mo +0 -0
  240. holidays/locale/th/LC_MESSAGES/CA.mo +0 -0
  241. holidays/locale/th/LC_MESSAGES/KH.mo +0 -0
  242. holidays/locale/uk/LC_MESSAGES/TF.mo +0 -0
  243. holidays/locale/ur_PK/LC_MESSAGES/PK.mo +0 -0
  244. holidays/mixins.py +1 -1
  245. holidays/observed_holiday_base.py +6 -2
  246. holidays/registry.py +7 -1
  247. holidays/utils.py +61 -9
  248. holidays/version.py +2 -2
  249. {holidays-0.70.dist-info → holidays-0.72.dist-info}/METADATA +64 -16
  250. {holidays-0.70.dist-info → holidays-0.72.dist-info}/RECORD +254 -234
  251. {holidays-0.70.dist-info → holidays-0.72.dist-info}/WHEEL +1 -1
  252. holidays-0.70.dist-info/licenses/AUTHORS.md → holidays-0.72.dist-info/licenses/CONTRIBUTORS +4 -2
  253. {holidays-0.70.dist-info → holidays-0.72.dist-info}/licenses/LICENSE +1 -1
  254. {holidays-0.70.dist-info → holidays-0.72.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,185 @@
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 (
17
+ JAN,
18
+ FEB,
19
+ MAR,
20
+ APR,
21
+ MAY,
22
+ JUN,
23
+ JUL,
24
+ AUG,
25
+ SEP,
26
+ OCT,
27
+ NOV,
28
+ THU,
29
+ FRI,
30
+ SAT,
31
+ _timedelta,
32
+ )
33
+ from holidays.groups import IslamicHolidays
34
+ from holidays.holiday_base import HolidayBase
35
+
36
+
37
+ class Oman(HolidayBase, IslamicHolidays):
38
+ """Oman holidays.
39
+
40
+ References:
41
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_Oman>
42
+ * [Independence](https://www.omaninfo.om/pages/175/show/572)
43
+ * [Weekend](https://abnnews.com/the-sultanate-of-oman-changes-weekend-days-from-01-may-2013/)
44
+ * [Decree 56/2020](https://decree.om/2020/rd20200056/)
45
+ * [Decree 88/2022](https://decree.om/2022/rd20220088/)
46
+ * [Decree 15/2025 (National day is moved)](https://decree.om/2025/rd20250015/)
47
+ """
48
+
49
+ country = "OM"
50
+ default_language = "ar"
51
+ # %s (estimated).
52
+ estimated_label = tr("%s (مُقدَّر)")
53
+ start_year = 1970
54
+ supported_languages = ("ar", "en_US")
55
+
56
+ def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
57
+ """
58
+ Args:
59
+ islamic_show_estimated:
60
+ Whether to add "estimated" label to Islamic holidays name
61
+ if holiday date is estimated.
62
+ """
63
+ IslamicHolidays.__init__(
64
+ self, cls=OmanIslamicHolidays, show_estimated=islamic_show_estimated
65
+ )
66
+ super().__init__(*args, **kwargs)
67
+
68
+ def _populate_public_holidays(self):
69
+ # Oman switches from THU-FRI to FRI-SAT on May 1, 2013.
70
+ self.weekend = {THU, FRI} if self._year <= 2013 else {FRI, SAT}
71
+
72
+ if self._year >= 2020:
73
+ # Sultan's Accession Day.
74
+ self._add_holiday_jan_11(tr("اليوم الوطني لتولي السلطان"))
75
+
76
+ if self._year <= 2019:
77
+ # Renaissance Day.
78
+ self._add_holiday_jul_23(tr("يوم النهضة"))
79
+
80
+ if self._year >= 2020:
81
+ # National Day.
82
+ name = tr("يوم وطني")
83
+ if self._year <= 2024:
84
+ self._add_holiday_nov_18(name)
85
+ self._add_holiday_nov_19(name)
86
+ else:
87
+ self._add_holiday_nov_20(name)
88
+ self._add_holiday_nov_21(name)
89
+
90
+ # Islamic New Year.
91
+ self._add_islamic_new_year_day(tr("رأس السنة الهجرية"))
92
+
93
+ # Prophet's Birthday.
94
+ self._add_mawlid_day(tr("مولد النبي"))
95
+
96
+ # Isra' and Mi'raj.
97
+ self._add_isra_and_miraj_day(tr("الإسراء والمعراج"))
98
+
99
+ # Eid al-Fitr.
100
+ name = tr("عيد الفطر")
101
+ self._add_eid_al_fitr_day(name)
102
+ self._add_eid_al_fitr_day_two(name)
103
+ self._add_eid_al_fitr_day_three(name)
104
+ for dt in self._add_holiday_29_ramadan(name):
105
+ if _timedelta(dt, +1) not in self:
106
+ self._add_eid_al_fitr_eve(name)
107
+
108
+ # Eid al-Adha.
109
+ name = tr("عيد الأضحى")
110
+ self._add_arafah_day(name)
111
+ self._add_eid_al_adha_day(name)
112
+ self._add_eid_al_adha_day_two(name)
113
+ self._add_eid_al_adha_day_three(name)
114
+
115
+
116
+ class OM(Oman):
117
+ pass
118
+
119
+
120
+ class OMN(Oman):
121
+ pass
122
+
123
+
124
+ class OmanIslamicHolidays(_CustomIslamicHolidays):
125
+ # https://www.timeanddate.com/holidays/oman/muharram-new-year
126
+ HIJRI_NEW_YEAR_DATES = {
127
+ 2018: (SEP, 11),
128
+ 2019: (SEP, 1),
129
+ 2020: (AUG, 21),
130
+ 2021: (AUG, 10),
131
+ 2022: (JUL, 30),
132
+ 2023: (JUL, 20),
133
+ 2024: (JUL, 7),
134
+ }
135
+
136
+ # https://www.timeanddate.com/holidays/oman/prophet-birthday
137
+ MAWLID_DATES = {
138
+ 2018: (NOV, 20),
139
+ 2019: (NOV, 9),
140
+ 2020: (OCT, 29),
141
+ 2021: (OCT, 19),
142
+ 2022: (OCT, 9),
143
+ 2023: (SEP, 28),
144
+ 2024: (SEP, 15),
145
+ }
146
+
147
+ # https://www.timeanddate.com/holidays/oman/isra-miraj
148
+ ISRA_AND_MIRAJ_DATES = {
149
+ 2018: (APR, 13),
150
+ 2019: (APR, 3),
151
+ 2020: (MAR, 22),
152
+ 2021: (MAR, 11),
153
+ 2022: (MAR, 1),
154
+ 2023: (FEB, 19),
155
+ 2024: (FEB, 8),
156
+ 2025: (JAN, 27),
157
+ }
158
+
159
+ # https://www.timeanddate.com/holidays/oman/eid-al-adha
160
+ EID_AL_ADHA_DATES = {
161
+ 2019: (AUG, 11),
162
+ 2020: (JUL, 31),
163
+ 2021: (JUL, 20),
164
+ 2022: (JUL, 9),
165
+ 2023: (JUN, 28),
166
+ 2024: (JUN, 17),
167
+ }
168
+
169
+ # https://www.timeanddate.com/holidays/oman/eid-al-fitr
170
+ EID_AL_FITR_DATES = {
171
+ 2019: (JUN, 4),
172
+ 2020: (MAY, 24),
173
+ 2021: (MAY, 13),
174
+ 2022: (MAY, 2),
175
+ 2023: (APR, 22),
176
+ 2024: (APR, 10),
177
+ 2025: (MAR, 31),
178
+ }
179
+
180
+ # https://www.timeanddate.com/holidays/oman/ramadan-begins
181
+ RAMADAN_BEGINNING_DATES = {
182
+ 2023: (MAR, 23),
183
+ 2024: (MAR, 12),
184
+ 2025: (MAR, 1),
185
+ }
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -24,6 +24,8 @@ class Pakistan(HolidayBase, InternationalHolidays, IslamicHolidays):
24
24
  References:
25
25
  * <https://en.wikipedia.org/wiki/Public_holidays_in_Pakistan>
26
26
  * <https://ur.wikipedia.org/wiki/تعطیلات_پاکستان>
27
+ * [Public and optional holidays](https://cabinet.gov.pk/Detail/OTE2ODBiYmItZmI0MS00NDAwLWE5NGUtYmE1MGVjYzllMzAz)
28
+ * [No.10-01/2024-Min-II](https://cabinet.gov.pk/SiteImage/Misc/files/Holidays/28-5-24.pdf)
27
29
  """
28
30
 
29
31
  country = "PK"
@@ -59,6 +61,10 @@ class Pakistan(HolidayBase, InternationalHolidays, IslamicHolidays):
59
61
  # Labor Day.
60
62
  self._add_labor_day(tr("Labour Day"))
61
63
 
64
+ if self._year >= 2024:
65
+ # Youm-e-Takbeer.
66
+ self._add_holiday_may_28(tr("Youm-e-Takbeer"))
67
+
62
68
  # Independence Day.
63
69
  self._add_holiday_aug_14(tr("Independence Day"))
64
70
 
@@ -170,6 +176,7 @@ class PakistanIslamicHolidays(_CustomIslamicHolidays):
170
176
  2022: (MAY, 3),
171
177
  2023: (APR, 22),
172
178
  2024: (APR, 10),
179
+ 2025: (MAR, 31),
173
180
  }
174
181
 
175
182
  # https://www.timeanddate.com/holidays/pakistan/eid-milad-un-nabi
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -38,29 +38,27 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
38
38
  default_language = "pt_PT"
39
39
  supported_categories = (OPTIONAL, PUBLIC)
40
40
  start_year = 1801
41
-
42
- # https://en.wikipedia.org/wiki/ISO_3166-2:PT
43
41
  subdivisions = (
44
- "01",
45
- "02",
46
- "03",
47
- "04",
48
- "05",
49
- "06",
50
- "07",
51
- "08",
52
- "09",
53
- "10",
54
- "11",
55
- "12",
56
- "13",
57
- "14",
58
- "15",
59
- "16",
60
- "17",
61
- "18",
62
- "20",
63
- "30",
42
+ "01", # Aveiro.
43
+ "02", # Beja.
44
+ "03", # Braga.
45
+ "04", # Bragança.
46
+ "05", # Castelo Branco.
47
+ "06", # Coimbra.
48
+ "07", # Évora.
49
+ "08", # Faro.
50
+ "09", # Guarda.
51
+ "10", # Leiria.
52
+ "11", # Lisboa.
53
+ "12", # Portalegre.
54
+ "13", # Porto.
55
+ "14", # Santarém.
56
+ "15", # Setúbal.
57
+ "16", # Viana do Castelo.
58
+ "17", # Vila Real.
59
+ "18", # Viseu.
60
+ "20", # Região Autónoma dos Açores.
61
+ "30", # Região Autónoma da Madeira.
64
62
  )
65
63
  subdivisions_aliases = {
66
64
  "Aveiro": "01",
@@ -84,8 +82,8 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
84
82
  "Região Autónoma dos Açores": "20",
85
83
  "Região Autónoma da Madeira": "30",
86
84
  }
87
- _deprecated_subdivisions = ("Ext",)
88
85
  supported_languages = ("en_US", "pt_PT", "uk")
86
+ _deprecated_subdivisions = ("Ext",)
89
87
 
90
88
  def __init__(self, *args, **kwargs) -> None:
91
89
  ChristianHolidays.__init__(self)
@@ -105,7 +103,7 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
105
103
  # Easter Sunday.
106
104
  self._add_easter_sunday(tr("Páscoa"))
107
105
 
108
- # Revoked holidays in 20132015.
106
+ # Revoked holidays in 2013-2015.
109
107
  if self._year <= 2012 or self._year >= 2016:
110
108
  # Corpus Christi.
111
109
  self._add_corpus_christi_day(tr("Corpo de Deus"))
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -24,6 +24,7 @@ class HolidaysPR(US):
24
24
  country = "PR"
25
25
  supported_categories = (GOVERNMENT, PUBLIC, UNOFFICIAL)
26
26
  subdivisions = () # Override US subdivisions.
27
+ subdivisions_aliases = {} # Override US subdivisions aliases.
27
28
 
28
29
  def _populate_public_holidays(self) -> None:
29
30
  self.subdiv = "PR"
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -0,0 +1,112 @@
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.groups import ChristianHolidays, InternationalHolidays
16
+ from holidays.observed_holiday_base import ObservedHolidayBase, SAT_TO_PREV_FRI, SUN_TO_NEXT_MON
17
+
18
+
19
+ class SaoTomeAndPrincipe(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
20
+ """Sao Tome and Principe holidays.
21
+
22
+ References:
23
+ * <https://web.archive.org/web/20190319201800/http://www.mnec.gov.st/index.php/o-pais?showall=1>
24
+ * <https://visitsaotomeprincipe.st/pt/informacoes-uteis/feriados>
25
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_São_Tomé_and_Príncipe>
26
+ * <https://www.timeanddate.com/holidays/sao-tome-and-principe/>
27
+ """
28
+
29
+ country = "ST"
30
+ default_language = "pt_ST"
31
+ # %s (observed).
32
+ observed_label = tr("%s (observado)")
33
+ start_year = 2014
34
+ subdivisions = (
35
+ "01", # Água Grande.
36
+ "02", # Cantagalo.
37
+ "03", # Caué.
38
+ "04", # Lembá.
39
+ "05", # Lobata.
40
+ "06", # Mé-Zóchi.
41
+ "P", # Príncipe.
42
+ )
43
+ subdivisions_aliases = {
44
+ # Districts.
45
+ "Água Grande": "01",
46
+ "Cantagalo": "02",
47
+ "Caué": "03",
48
+ "Lembá": "04",
49
+ "Lobata": "05",
50
+ "Mé-Zóchi": "06",
51
+ # Autonomous Region.
52
+ "Príncipe": "P",
53
+ }
54
+ supported_languages = ("en_US", "pt_ST")
55
+
56
+ def __init__(self, *args, **kwargs):
57
+ ChristianHolidays.__init__(self)
58
+ InternationalHolidays.__init__(self)
59
+ kwargs.setdefault("observed_rule", SUN_TO_NEXT_MON + SAT_TO_PREV_FRI)
60
+ # Holidays are observed on the next Monday if on Sunday, or previous Friday if on Saturday.
61
+ # Based on common government practices since at least 2020.
62
+ kwargs.setdefault("observed_since", 2020)
63
+ super().__init__(*args, **kwargs)
64
+
65
+ def _populate_public_holidays(self):
66
+ # New Year's Day.
67
+ name = tr("Ano Novo")
68
+ self._add_observed(self._add_new_years_day(name))
69
+ self._add_observed(self._next_year_new_years_day, name=name, rule=SAT_TO_PREV_FRI)
70
+
71
+ # Day of King Amador.
72
+ self._add_observed(self._add_holiday_jan_4(tr("Dia do Rei Amador")))
73
+
74
+ # Martyrs' Day.
75
+ self._add_observed(self._add_holiday_feb_3(tr("Dia dos Mártires")))
76
+
77
+ # Worker's Day.
78
+ self._add_observed(self._add_labor_day(tr("Dia do Trabalhador")))
79
+
80
+ # Independence Day.
81
+ self._add_observed(self._add_holiday_jul_12(tr("Dia da Independência")))
82
+
83
+ # Armed Forces Day.
84
+ self._add_observed(self._add_holiday_sep_6(tr("Dia das Forças Armadas")))
85
+
86
+ # Agricultural Reform Day.
87
+ self._add_observed(self._add_holiday_sep_30(tr("Dia da Reforma Agrária")))
88
+
89
+ if self._year >= 2019:
90
+ # São Tomé Day.
91
+ self._add_observed(self._add_holiday_dec_21(tr("Dia de São Tomé")))
92
+
93
+ # Christmas Day.
94
+ self._add_observed(self._add_christmas_day(tr("Natal")))
95
+
96
+ def _populate_subdiv_p_public_holidays(self):
97
+ # Discovery of Príncipe Island.
98
+ self._add_observed(self._add_holiday_jan_17(tr("Descobrimento da Ilha do Príncipe")))
99
+
100
+ # Autonomy Day.
101
+ self._add_observed(self._add_holiday_apr_29(tr("Dia da Autonomia do Príncipe")))
102
+
103
+ # São Lourenço Day.
104
+ self._add_observed(self._add_holiday_aug_15(tr("Dia de São Lourenço")))
105
+
106
+
107
+ class ST(SaoTomeAndPrincipe):
108
+ pass
109
+
110
+
111
+ class STP(SaoTomeAndPrincipe):
112
+ pass
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays
@@ -4,7 +4,7 @@
4
4
  # specific sets of holidays on the fly. It aims to make determining whether a
5
5
  # specific date is a holiday as fast and flexible as possible.
6
6
  #
7
- # Authors: Vacanza Team and individual contributors (see AUTHORS.md file)
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
8
  # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
9
  # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
10
  # Website: https://github.com/vacanza/holidays