holidays 0.71__py3-none-any.whl → 0.73__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 (260) 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 +194 -6
  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 +140 -47
  23. holidays/countries/angola.py +1 -1
  24. holidays/countries/antigua_and_barbuda.py +1 -1
  25. holidays/countries/argentina.py +15 -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/cocos_islands.py +259 -0
  53. holidays/countries/colombia.py +1 -1
  54. holidays/countries/congo.py +1 -1
  55. holidays/countries/costa_rica.py +1 -1
  56. holidays/countries/croatia.py +1 -1
  57. holidays/countries/cuba.py +1 -1
  58. holidays/countries/curacao.py +1 -1
  59. holidays/countries/cyprus.py +1 -1
  60. holidays/countries/czechia.py +1 -1
  61. holidays/countries/denmark.py +1 -1
  62. holidays/countries/djibouti.py +1 -1
  63. holidays/countries/dominica.py +1 -1
  64. holidays/countries/dominican_republic.py +1 -1
  65. holidays/countries/ecuador.py +1 -1
  66. holidays/countries/egypt.py +1 -1
  67. holidays/countries/el_salvador.py +18 -18
  68. holidays/countries/estonia.py +1 -1
  69. holidays/countries/eswatini.py +1 -1
  70. holidays/countries/ethiopia.py +43 -24
  71. holidays/countries/fiji.py +1 -1
  72. holidays/countries/finland.py +1 -1
  73. holidays/countries/france.py +3 -4
  74. holidays/countries/french_southern_territories.py +1 -1
  75. holidays/countries/gabon.py +1 -1
  76. holidays/countries/georgia.py +1 -1
  77. holidays/countries/germany.py +20 -21
  78. holidays/countries/ghana.py +1 -1
  79. holidays/countries/greece.py +1 -1
  80. holidays/countries/greenland.py +1 -1
  81. holidays/countries/grenada.py +143 -0
  82. holidays/countries/guam.py +2 -1
  83. holidays/countries/guatemala.py +1 -1
  84. holidays/countries/guernsey.py +1 -1
  85. holidays/countries/guinea.py +1 -1
  86. holidays/countries/haiti.py +1 -1
  87. holidays/countries/honduras.py +1 -1
  88. holidays/countries/hongkong.py +2 -2
  89. holidays/countries/hungary.py +1 -1
  90. holidays/countries/iceland.py +1 -1
  91. holidays/countries/india.py +17 -11
  92. holidays/countries/indonesia.py +1 -1
  93. holidays/countries/iran.py +1 -1
  94. holidays/countries/ireland.py +1 -1
  95. holidays/countries/isle_of_man.py +1 -1
  96. holidays/countries/israel.py +1 -1
  97. holidays/countries/italy.py +1 -1
  98. holidays/countries/ivory_coast.py +5 -5
  99. holidays/countries/jamaica.py +1 -1
  100. holidays/countries/japan.py +1 -1
  101. holidays/countries/jersey.py +1 -1
  102. holidays/countries/jordan.py +1 -1
  103. holidays/countries/kazakhstan.py +1 -1
  104. holidays/countries/kenya.py +1 -1
  105. holidays/countries/kuwait.py +1 -1
  106. holidays/countries/kyrgyzstan.py +1 -1
  107. holidays/countries/laos.py +1 -1
  108. holidays/countries/latvia.py +1 -1
  109. holidays/countries/lesotho.py +1 -1
  110. holidays/countries/liechtenstein.py +1 -1
  111. holidays/countries/lithuania.py +1 -1
  112. holidays/countries/luxembourg.py +1 -1
  113. holidays/countries/macau.py +5 -5
  114. holidays/countries/madagascar.py +1 -1
  115. holidays/countries/malawi.py +1 -1
  116. holidays/countries/malaysia.py +21 -29
  117. holidays/countries/maldives.py +1 -1
  118. holidays/countries/malta.py +1 -1
  119. holidays/countries/marshall_islands.py +1 -1
  120. holidays/countries/mauritania.py +1 -1
  121. holidays/countries/mexico.py +1 -1
  122. holidays/countries/moldova.py +1 -1
  123. holidays/countries/monaco.py +1 -1
  124. holidays/countries/montenegro.py +1 -1
  125. holidays/countries/morocco.py +1 -1
  126. holidays/countries/mozambique.py +1 -1
  127. holidays/countries/namibia.py +1 -1
  128. holidays/countries/nepal.py +441 -0
  129. holidays/countries/netherlands.py +1 -1
  130. holidays/countries/new_zealand.py +19 -19
  131. holidays/countries/nicaragua.py +19 -19
  132. holidays/countries/nigeria.py +1 -1
  133. holidays/countries/north_macedonia.py +1 -1
  134. holidays/countries/northern_mariana_islands.py +2 -1
  135. holidays/countries/norway.py +1 -1
  136. holidays/countries/oman.py +1 -1
  137. holidays/countries/pakistan.py +1 -1
  138. holidays/countries/palau.py +1 -1
  139. holidays/countries/panama.py +1 -1
  140. holidays/countries/papua_new_guinea.py +1 -1
  141. holidays/countries/paraguay.py +1 -1
  142. holidays/countries/peru.py +1 -1
  143. holidays/countries/philippines.py +3 -1
  144. holidays/countries/poland.py +1 -1
  145. holidays/countries/portugal.py +23 -25
  146. holidays/countries/puerto_rico.py +2 -1
  147. holidays/countries/qatar.py +1 -1
  148. holidays/countries/romania.py +1 -1
  149. holidays/countries/russia.py +1 -1
  150. holidays/countries/saint_kitts_and_nevis.py +1 -1
  151. holidays/countries/saint_lucia.py +1 -1
  152. holidays/countries/samoa.py +1 -1
  153. holidays/countries/san_marino.py +1 -1
  154. holidays/countries/sao_tome_and_principe.py +112 -0
  155. holidays/countries/saudi_arabia.py +1 -1
  156. holidays/countries/serbia.py +1 -1
  157. holidays/countries/seychelles.py +1 -1
  158. holidays/countries/sierra_leone.py +1 -1
  159. holidays/countries/singapore.py +5 -2
  160. holidays/countries/slovakia.py +1 -1
  161. holidays/countries/slovenia.py +1 -1
  162. holidays/countries/south_africa.py +1 -1
  163. holidays/countries/south_korea.py +3 -31
  164. holidays/countries/spain.py +43 -20
  165. holidays/countries/sri_lanka.py +1 -1
  166. holidays/countries/suriname.py +1 -1
  167. holidays/countries/sweden.py +1 -1
  168. holidays/countries/switzerland.py +61 -28
  169. holidays/countries/taiwan.py +1 -1
  170. holidays/countries/tanzania.py +1 -1
  171. holidays/countries/thailand.py +3 -3
  172. holidays/countries/timor_leste.py +1 -1
  173. holidays/countries/togo.py +182 -0
  174. holidays/countries/tonga.py +1 -1
  175. holidays/countries/trinidad_and_tobago.py +197 -0
  176. holidays/countries/tunisia.py +1 -1
  177. holidays/countries/turkey.py +1 -1
  178. holidays/countries/tuvalu.py +6 -6
  179. holidays/countries/ukraine.py +1 -1
  180. holidays/countries/united_arab_emirates.py +1 -1
  181. holidays/countries/united_kingdom.py +1 -1
  182. holidays/countries/united_states.py +62 -4
  183. holidays/countries/united_states_minor_outlying_islands.py +2 -1
  184. holidays/countries/united_states_virgin_islands.py +2 -1
  185. holidays/countries/uruguay.py +1 -1
  186. holidays/countries/uzbekistan.py +1 -1
  187. holidays/countries/vanuatu.py +1 -1
  188. holidays/countries/vatican_city.py +30 -32
  189. holidays/countries/venezuela.py +1 -1
  190. holidays/countries/vietnam.py +3 -2
  191. holidays/countries/zambia.py +1 -1
  192. holidays/countries/zimbabwe.py +1 -1
  193. holidays/deprecations/v1_incompatibility.py +1 -1
  194. holidays/financial/__init__.py +1 -1
  195. holidays/financial/brasil_bolsa_balcao.py +1 -1
  196. holidays/financial/european_central_bank.py +1 -1
  197. holidays/financial/ice_futures_europe.py +1 -1
  198. holidays/financial/ny_stock_exchange.py +1 -1
  199. holidays/groups/__init__.py +1 -1
  200. holidays/groups/balinese_saka.py +1 -1
  201. holidays/groups/buddhist.py +1 -1
  202. holidays/groups/chinese.py +6 -4
  203. holidays/groups/christian.py +4 -4
  204. holidays/groups/custom.py +1 -1
  205. holidays/groups/eastern.py +1 -1
  206. holidays/groups/hebrew.py +1 -1
  207. holidays/groups/hindu.py +166 -4
  208. holidays/groups/international.py +1 -1
  209. holidays/groups/islamic.py +1 -1
  210. holidays/groups/persian.py +1 -1
  211. holidays/groups/sinhala.py +1 -1
  212. holidays/groups/thai.py +6 -6
  213. holidays/helpers.py +1 -1
  214. holidays/holiday_base.py +1 -1
  215. holidays/ical.py +2 -2
  216. holidays/locale/am/LC_MESSAGES/ET.mo +0 -0
  217. holidays/locale/ar/LC_MESSAGES/CA.mo +0 -0
  218. holidays/locale/ar/LC_MESSAGES/ET.mo +0 -0
  219. holidays/locale/ca/LC_MESSAGES/AD.mo +0 -0
  220. holidays/locale/coa_CC/LC_MESSAGES/CC.mo +0 -0
  221. holidays/locale/en_CA/LC_MESSAGES/CA.mo +0 -0
  222. holidays/locale/en_CC/LC_MESSAGES/CC.mo +0 -0
  223. holidays/locale/en_CI/LC_MESSAGES/CI.mo +0 -0
  224. holidays/locale/en_ET/LC_MESSAGES/ET.mo +0 -0
  225. holidays/locale/en_GD/LC_MESSAGES/GD.mo +0 -0
  226. holidays/locale/en_IN/LC_MESSAGES/IN.mo +0 -0
  227. holidays/locale/en_TT/LC_MESSAGES/TT.mo +0 -0
  228. holidays/locale/en_US/LC_MESSAGES/AD.mo +0 -0
  229. holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
  230. holidays/locale/en_US/LC_MESSAGES/CA.mo +0 -0
  231. holidays/locale/en_US/LC_MESSAGES/CC.mo +0 -0
  232. holidays/locale/en_US/LC_MESSAGES/CI.mo +0 -0
  233. holidays/locale/en_US/LC_MESSAGES/ET.mo +0 -0
  234. holidays/locale/en_US/LC_MESSAGES/GD.mo +0 -0
  235. holidays/locale/en_US/LC_MESSAGES/IN.mo +0 -0
  236. holidays/locale/en_US/LC_MESSAGES/KH.mo +0 -0
  237. holidays/locale/en_US/LC_MESSAGES/ST.mo +0 -0
  238. holidays/locale/en_US/LC_MESSAGES/TG.mo +0 -0
  239. holidays/locale/en_US/LC_MESSAGES/TT.mo +0 -0
  240. holidays/locale/es/LC_MESSAGES/AR.mo +0 -0
  241. holidays/locale/fr/LC_MESSAGES/CA.mo +0 -0
  242. holidays/locale/fr/LC_MESSAGES/TG.mo +0 -0
  243. holidays/locale/hi/LC_MESSAGES/IN.mo +0 -0
  244. holidays/locale/km/LC_MESSAGES/KH.mo +0 -0
  245. holidays/locale/pt_ST/LC_MESSAGES/ST.mo +0 -0
  246. holidays/locale/th/LC_MESSAGES/CA.mo +0 -0
  247. holidays/locale/th/LC_MESSAGES/KH.mo +0 -0
  248. holidays/locale/uk/LC_MESSAGES/AD.mo +0 -0
  249. holidays/locale/uk/LC_MESSAGES/AR.mo +0 -0
  250. holidays/mixins.py +1 -1
  251. holidays/observed_holiday_base.py +1 -1
  252. holidays/registry.py +7 -1
  253. holidays/utils.py +1 -1
  254. holidays/version.py +2 -2
  255. {holidays-0.71.dist-info → holidays-0.73.dist-info}/METADATA +66 -18
  256. {holidays-0.71.dist-info → holidays-0.73.dist-info}/RECORD +260 -239
  257. {holidays-0.71.dist-info → holidays-0.73.dist-info}/WHEEL +1 -1
  258. holidays-0.71.dist-info/licenses/AUTHORS.md → holidays-0.73.dist-info/licenses/CONTRIBUTORS +1 -2
  259. {holidays-0.71.dist-info → holidays-0.73.dist-info}/licenses/LICENSE +1 -1
  260. {holidays-0.71.dist-info → holidays-0.73.dist-info}/top_level.txt +0 -0
@@ -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
@@ -29,37 +29,70 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays)
29
29
 
30
30
  country = "CH"
31
31
  default_language = "de"
32
+ start_year = 1801
32
33
  subdivisions = (
33
- "AG", # Aargau
34
- "AI", # Appenzell Innerrhoden
35
- "AR", # Appenzell Ausserrhoden
36
- "BL", # Basel-Landschaft
37
- "BS", # Basel-Stadt
38
- "BE", # Bern
39
- "FR", # Fribourg
40
- "GE", # Geneva
41
- "GL", # Glarus
42
- "GR", # Graubünden
43
- "JU", # Jura
44
- "LU", # Luzern
45
- "NE", # Neuchâtel
46
- "NW", # Nidwalden
47
- "OW", # Obwalden
48
- "SG", # St. Gallen
49
- "SH", # Schaffhausen
50
- "SZ", # Schwyz
51
- "SO", # Solothurn
52
- "TG", # Thurgau
53
- "TI", # Ticino
54
- "UR", # Uri
55
- "VD", # Vaud
56
- "VS", # Valais
57
- "ZG", # Zug
58
- "ZH", # Zürich
34
+ "AG", # Aargau.
35
+ "AI", # Appenzell Innerrhoden.
36
+ "AR", # Appenzell Ausserrhoden.
37
+ "BE", # Bern (Berne).
38
+ "BL", # Basel-Landschaft.
39
+ "BS", # Basel-Stadt.
40
+ "FR", # Freiburg (Fribourg).
41
+ "GE", # Genève.
42
+ "GL", # Glarus.
43
+ "GR", # Graubünden (Grigioni, Grischun).
44
+ "JU", # Jura.
45
+ "LU", # Luzern.
46
+ "NE", # Neuchâtel.
47
+ "NW", # Nidwalden.
48
+ "OW", # Obwalden.
49
+ "SG", # Sankt Gallen.
50
+ "SH", # Schaffhausen.
51
+ "SO", # Solothurn.
52
+ "SZ", # Schwyz.
53
+ "TG", # Thurgau.
54
+ "TI", # Ticino.
55
+ "UR", # Uri.
56
+ "VD", # Vaud.
57
+ "VS", # Valais (Wallis).
58
+ "ZG", # Zug.
59
+ "ZH", # Zürich.
59
60
  )
61
+ subdivisions_aliases = {
62
+ "Aargau": "AG",
63
+ "Appenzell Innerrhoden": "AI",
64
+ "Appenzell Ausserrhoden": "AR",
65
+ "Bern": "BE",
66
+ "Berne": "BE",
67
+ "Basel-Landschaft": "BL",
68
+ "Basel-Stadt": "BS",
69
+ "Freiburg": "FR",
70
+ "Fribourg": "FR",
71
+ "Genève": "GE",
72
+ "Glarus": "GL",
73
+ "Graubünden": "GR",
74
+ "Grigioni": "GR",
75
+ "Grischun": "GR",
76
+ "Jura": "JU",
77
+ "Luzern": "LU",
78
+ "Neuchâtel": "NE",
79
+ "Nidwalden": "NW",
80
+ "Obwalden": "OW",
81
+ "Sankt Gallen": "SG",
82
+ "Schaffhausen": "SH",
83
+ "Solothurn": "SO",
84
+ "Schwyz": "SZ",
85
+ "Thurgau": "TG",
86
+ "Ticino": "TI",
87
+ "Uri": "UR",
88
+ "Vaud": "VD",
89
+ "Valais": "VS",
90
+ "Wallis": "VS",
91
+ "Zug": "ZG",
92
+ "Zürich": "ZH",
93
+ }
60
94
  supported_categories = (HALF_DAY, OPTIONAL, PUBLIC)
61
95
  supported_languages = ("de", "en_US", "fr", "it", "uk")
62
- start_year = 1801
63
96
 
64
97
  def __init__(self, *args, **kwargs):
65
98
  ChristianHolidays.__init__(self)
@@ -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
@@ -181,13 +181,13 @@ class Thailand(ObservedHolidayBase, InternationalHolidays, StaticHolidays, ThaiC
181
181
  """
182
182
 
183
183
  country = "TH"
184
- supported_categories = (ARMED_FORCES, BANK, GOVERNMENT, PUBLIC, SCHOOL, WORKDAY)
185
184
  default_language = "th"
186
185
  # %s (in lieu).
187
186
  observed_label = tr("ชดเชย%s")
188
- supported_languages = ("en_US", "th")
189
187
  # First Holiday Decree was promulgated in March 1914.
190
188
  start_year = 1914
189
+ supported_categories = (ARMED_FORCES, BANK, GOVERNMENT, PUBLIC, SCHOOL, WORKDAY)
190
+ supported_languages = ("en_US", "th")
191
191
 
192
192
  def __init__(self, *args, **kwargs):
193
193
  InternationalHolidays.__init__(self)
@@ -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,182 @@
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 MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV
17
+ from holidays.constants import PUBLIC, WORKDAY
18
+ from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays
19
+ from holidays.holiday_base import HolidayBase
20
+
21
+
22
+ class Togo(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays):
23
+ """Togo holidays.
24
+
25
+ References:
26
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_Togo>
27
+ * <https://web.archive.org/web/20250507123116/https://www.timeanddate.com/holidays/togo/>
28
+ * <https://web.archive.org/web/20250507123425/https://www.goethe.de/ins/tg/fr/ueb/fer.html>
29
+ * <https://web.archive.org/web/20250507123619/https://www.republiquetogolaise.com/politique/2309-3579-23-septembre-le-togo-rend-hommage-a-ses-martyrs>
30
+ * <https://web.archive.org/web/20250507123840/https://islam.zmo.de/s/westafrica/item/25841#?xywh=-405%2C-94%2C2376%2C1868>
31
+ * <https://en.wikipedia.org/wiki/1986_Togolese_coup_attempt>
32
+ * <https://web.archive.org/web/20250507131725/https://www.rfi.fr/fr/afrique/20140112-togo-le-13-janvier-est-plus-jour-fete>
33
+ * <https://web.archive.org/web/20250507124528/https://islam.zmo.de/s/afrique_ouest/item/25800#?xywh=-1641%2C0%2C4303%2C2363>
34
+ * <https://web.archive.org/web/20231202052731/https://www.holidayscalendar.com/event/anniversary-of-the-failed-attack-on-lome/>
35
+
36
+ Ramadan start dates:
37
+ * [2015](https://web.archive.org/web/20150825071241/https://www.republicoftogo.com/toutes-les-rubriques/societe/le-mois-du-jeune-debute-le-18-juin)
38
+ * [2016](https://web.archive.org/web/20250507125256/https://www.republicoftogo.com/toutes-les-rubriques/societe/le-ramadan-debute-le-6-juin)
39
+ * [2017](https://web.archive.org/web/20250507125353/https://www.tf1info.fr/societe/le-ramadan-2017-1438-commence-le-samedi-27-mai-comment-la-date-du-debut-du-jeune-est-elle-fixee-1512235.html)
40
+ * [2018](https://web.archive.org/web/20250507125622/https://www.republicoftogo.com/toutes-les-rubriques/societe/debut-du-ramadan-demain)
41
+ * [2019](https://web.archive.org/web/20250507130404/https://www.republiquetogolaise.com/social/0605-3100-la-communaute-musulmane-du-togo-entame-ce-lundi-le-jeune-du-mois-de-ramadan)
42
+ * [2020](https://web.archive.org/web/20250507125837/https://www.republiquetogolaise.com/culture/2404-4278-debut-du-mois-de-ramadan)
43
+ * [2021](https://web.archive.org/web/20250507130643/https://www.republiquetogolaise.com/culture/1304-5393-debut-du-mois-de-ramadan)
44
+ * [2022](https://web.archive.org/web/20250507130847/https://www.republiquetogolaise.com/culture/0304-6745-debut-du-mois-de-ramadan)
45
+ * [2023](https://web.archive.org/web/20250507131022/https://www.republiquetogolaise.com/culture/2303-7864-debut-du-mois-de-ramadan)
46
+ * [2024](https://web.archive.org/web/20250507131215/https://www.republiquetogolaise.com/culture/1103-9017-debut-du-mois-de-ramadan)
47
+ * [2025](https://web.archive.org/web/20250507131439/https://www.republiquetogolaise.com/culture/2802-10360-le-jeune-de-ramadan-debute-le-1er-mars)
48
+ """
49
+
50
+ country = "TG"
51
+ default_language = "fr"
52
+ supported_categories = (PUBLIC, WORKDAY)
53
+ # %s (estimated).
54
+ estimated_label = tr("%s (estimé)")
55
+ supported_languages = ("en_US", "fr")
56
+ # Togo gained independence on April 27, 1960.
57
+ start_year = 1961
58
+
59
+ def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
60
+ """
61
+ Args:
62
+ islamic_show_estimated:
63
+ Whether to add "estimated" label to Islamic holidays name
64
+ if holiday date is estimated.
65
+ """
66
+ ChristianHolidays.__init__(self)
67
+ InternationalHolidays.__init__(self)
68
+ IslamicHolidays.__init__(
69
+ self, cls=TogoIslamicHolidays, show_estimated=islamic_show_estimated
70
+ )
71
+ super().__init__(*args, **kwargs)
72
+
73
+ def _populate_public_holidays(self):
74
+ # New Year's Day.
75
+ self._add_new_years_day(tr("Jour de l'an"))
76
+
77
+ if 1967 <= self._year <= 2013:
78
+ # Liberation Day.
79
+ self._add_holiday_jan_13(tr("Fête de la libération nationale"))
80
+
81
+ # Easter Monday.
82
+ self._add_easter_monday(tr("Lundi de Pâques"))
83
+
84
+ # Independence Day.
85
+ self._add_holiday_apr_27(tr("Fête de l'indépendance"))
86
+
87
+ # Labor Day.
88
+ self._add_holiday_may_1(tr("Fête du travail"))
89
+
90
+ # Ascension Day.
91
+ self._add_ascension_thursday(tr("Fête de l'Ascension"))
92
+
93
+ # Whit Monday.
94
+ self._add_whit_monday(tr("Lundi de Pentecôte"))
95
+
96
+ # Martyrs' Day.
97
+ self._add_holiday_jun_21(tr("Fête des Martyrs"))
98
+
99
+ # Assumption Day.
100
+ self._add_holiday_aug_15(tr("Assomption"))
101
+
102
+ # All Saints' Day.
103
+ self._add_all_saints_day(tr("Toussaint"))
104
+
105
+ # Christmas Day.
106
+ self._add_christmas_day(tr("Noël"))
107
+
108
+ # First Day of Ramadan.
109
+ self._add_ramadan_beginning_day(tr("Ramadan"))
110
+
111
+ # Eid al-Fitr.
112
+ self._add_eid_al_fitr_day(tr("l'Aïd El-Fitr"))
113
+
114
+ # Eid al-Adha.
115
+ self._add_eid_al_adha_day(tr("Tabaski"))
116
+
117
+ def _populate_workday_holidays(self):
118
+ if self._year >= 1987:
119
+ # Anniversary of the Failed Attack on Lomé.
120
+ self._add_holiday_sep_24(tr("Anniversaire de l'attentat manqué contre Lomé"))
121
+
122
+
123
+ class TG(Togo):
124
+ pass
125
+
126
+
127
+ class TGO(Togo):
128
+ pass
129
+
130
+
131
+ class TogoIslamicHolidays(_CustomIslamicHolidays):
132
+ EID_AL_ADHA_DATES = {
133
+ 2010: (NOV, 17),
134
+ 2011: (NOV, 7),
135
+ 2012: (OCT, 26),
136
+ 2013: (OCT, 15),
137
+ 2014: (OCT, 5),
138
+ 2015: (SEP, 24),
139
+ 2016: (SEP, 13),
140
+ 2017: (SEP, 2),
141
+ 2018: (AUG, 22),
142
+ 2019: (AUG, 11),
143
+ 2020: (JUL, 31),
144
+ 2021: (JUL, 20),
145
+ 2022: (JUL, 9),
146
+ 2023: (JUN, 28),
147
+ 2024: (JUN, 16),
148
+ 2025: (JUN, 7),
149
+ }
150
+
151
+ EID_AL_FITR_DATES = {
152
+ 2010: (SEP, 10),
153
+ 2011: (AUG, 31),
154
+ 2012: (AUG, 19),
155
+ 2013: (AUG, 8),
156
+ 2014: (JUL, 29),
157
+ 2015: (JUL, 18),
158
+ 2016: (JUL, 7),
159
+ 2017: (JUN, 26),
160
+ 2018: (JUN, 15),
161
+ 2019: (JUN, 5),
162
+ 2020: (MAY, 24),
163
+ 2021: (MAY, 13),
164
+ 2022: (MAY, 2),
165
+ 2023: (APR, 21),
166
+ 2024: (APR, 10),
167
+ 2025: (MAR, 30),
168
+ }
169
+
170
+ RAMADAN_BEGINNING_DATES = {
171
+ 2015: (JUN, 18),
172
+ 2016: (JUN, 6),
173
+ 2017: (MAY, 27),
174
+ 2018: (MAY, 17),
175
+ 2019: (MAY, 6),
176
+ 2020: (APR, 24),
177
+ 2021: (APR, 13),
178
+ 2022: (APR, 2),
179
+ 2023: (MAR, 23),
180
+ 2024: (MAR, 11),
181
+ 2025: (MAR, 1),
182
+ }
@@ -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,197 @@
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 datetime import date
14
+ from gettext import gettext as tr
15
+
16
+ from holidays.calendars import _CustomHinduHolidays, _CustomIslamicHolidays
17
+ from holidays.calendars.gregorian import MAR, APR, MAY, JUN, JUL, AUG, OCT, NOV
18
+ from holidays.constants import OPTIONAL, PUBLIC
19
+ from holidays.groups import (
20
+ ChristianHolidays,
21
+ HinduCalendarHolidays,
22
+ InternationalHolidays,
23
+ IslamicHolidays,
24
+ )
25
+ from holidays.observed_holiday_base import (
26
+ ObservedHolidayBase,
27
+ SUN_TO_NEXT_WORKDAY,
28
+ SAT_SUN_TO_NEXT_WORKDAY,
29
+ WORKDAY_TO_NEXT_WORKDAY,
30
+ )
31
+
32
+
33
+ class TrinidadAndTobago(
34
+ ObservedHolidayBase,
35
+ ChristianHolidays,
36
+ HinduCalendarHolidays,
37
+ InternationalHolidays,
38
+ IslamicHolidays,
39
+ ):
40
+ """Trinidad and Tobago holidays.
41
+
42
+ References:
43
+ * <https://web.archive.org/web/20250429121623/https://otp.tt/trinidad-and-tobago/national-holidays-and-awards/>
44
+ * <https://web.archive.org/web/20250429120744/https://laws.gov.tt/ttdll-web2/revision/list?offset=380&q=&currentid=322>
45
+ * <https://web.archive.org/web/20250429120707/https://www.guardian.co.tt/article-6.2.448640.3e9e366923>
46
+ * <https://web.archive.org/web/20250429120548/https://www.guardian.co.tt/article-6.2.410311.3fe66fb00f>
47
+ * <https://web.archive.org/web/20250418212357/https://www.nalis.gov.tt/resources/tt-content-guide/labour-day/>
48
+ * <https://web.archive.org/web/20250429120701/https://www.facebook.com/groups/191766699268/posts/10160832951274269/>
49
+ * <https://web.archive.org/web/20250429142054/https://www.facebook.com/plugins/post.php?href=https%3A%2F%2Fwww.facebook.com%2F100064996051675%2Fposts%2F1101755938667598%2F>
50
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_Trinidad_and_Tobago>
51
+ * <https://en.wikipedia.org/wiki/Trinidad_and_Tobago_Carnival>
52
+ * <https://en.wikipedia.org/wiki/Indian_Arrival_Day#Trinidad_and_Tobago>
53
+ * <https://web.archive.org/web/20250429120402/https://www.timeanddate.com/holidays/trinidad/eid-al-fitr>
54
+ * <https://web.archive.org/web/20250429120140/https://www.timeanddate.com/holidays/trinidad/diwali>
55
+ """
56
+
57
+ country = "TT"
58
+ default_language = "en_TT"
59
+ supported_categories = (OPTIONAL, PUBLIC)
60
+ # %s (estimated).
61
+ estimated_label = tr("%s (estimated)")
62
+ # %s (observed).
63
+ observed_label = tr("%s (observed)")
64
+ # %s (observed, estimated).
65
+ observed_estimated_label = tr("%s (observed, estimated)")
66
+ supported_languages = ("en_TT", "en_US")
67
+ # Trinidad and Tobago gained independence on August 31, 1962.
68
+ start_year = 1963
69
+
70
+ def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
71
+ """
72
+ Args:
73
+ islamic_show_estimated:
74
+ Whether to add "estimated" label to Islamic holidays name
75
+ if holiday date is estimated.
76
+ """
77
+ ChristianHolidays.__init__(self)
78
+ HinduCalendarHolidays.__init__(self, cls=TrinidadAndTobagoHinduHolidays)
79
+ InternationalHolidays.__init__(self)
80
+ IslamicHolidays.__init__(
81
+ self, cls=TrinidadAndTobagoIslamicHolidays, show_estimated=islamic_show_estimated
82
+ )
83
+ super().__init__(*args, **kwargs)
84
+
85
+ def _populate_observed(self, dts: set[date], multiple: bool = False) -> None:
86
+ for dt in sorted(dts):
87
+ self._add_observed(
88
+ dt,
89
+ rule=WORKDAY_TO_NEXT_WORKDAY + SAT_SUN_TO_NEXT_WORKDAY
90
+ if len(self.get_list(dt)) > 1
91
+ else SUN_TO_NEXT_WORKDAY,
92
+ )
93
+
94
+ def _populate_public_holidays(self):
95
+ dts_observed = set()
96
+
97
+ # New Year's Day.
98
+ dts_observed.add(self._add_new_years_day(tr("New Year's Day")))
99
+
100
+ # Good Friday.
101
+ dts_observed.add(self._add_good_friday(tr("Good Friday")))
102
+
103
+ # Easter Monday.
104
+ dts_observed.add(self._add_easter_monday(tr("Easter Monday")))
105
+
106
+ if self._year >= 1996:
107
+ # Spiritual Baptist Liberation Day.
108
+ dts_observed.add(self._add_holiday_mar_30(tr("Spiritual Baptist Liberation Day")))
109
+
110
+ # Indian Arrival Day.
111
+ dts_observed.add(self._add_holiday_may_30(tr("Indian Arrival Day")))
112
+
113
+ # Corpus Christi.
114
+ dts_observed.add(self._add_corpus_christi_day(tr("Corpus Christi")))
115
+
116
+ if self._year >= 1973:
117
+ # Labor Day.
118
+ dts_observed.add(self._add_holiday_jun_19(tr("Labour Day")))
119
+
120
+ if self._year >= 1985:
121
+ # African Emancipation Day.
122
+ dts_observed.add(self._add_holiday_aug_1(tr("African Emancipation Day")))
123
+
124
+ # Independence Day.
125
+ dts_observed.add(self._add_holiday_aug_31(tr("Independence Day")))
126
+
127
+ if self._year >= 1976:
128
+ # Republic Day.
129
+ dts_observed.add(self._add_holiday_sep_24(tr("Republic Day")))
130
+
131
+ # Diwali.
132
+ dts_observed.add(self._add_diwali(tr("Divali")))
133
+
134
+ # Christmas Day.
135
+ dts_observed.add(self._add_christmas_day(tr("Christmas Day")))
136
+
137
+ # Boxing Day.
138
+ dts_observed.add(self._add_christmas_day_two(tr("Boxing Day")))
139
+
140
+ # Eid al-Fitr.
141
+ dts_observed.update(self._add_eid_al_fitr_day(tr("Eid-Ul-Fitr")))
142
+
143
+ if self.observed:
144
+ self._populate_observed(dts_observed)
145
+
146
+ def _populate_optional_holidays(self):
147
+ # Carnival Monday.
148
+ self._add_carnival_monday(tr("Carnival Monday"))
149
+
150
+ # Carnival Tuesday.
151
+ self._add_carnival_tuesday(tr("Carnival Tuesday"))
152
+
153
+
154
+ class TT(TrinidadAndTobago):
155
+ pass
156
+
157
+
158
+ class TTO(TrinidadAndTobago):
159
+ pass
160
+
161
+
162
+ class TrinidadAndTobagoHinduHolidays(_CustomHinduHolidays):
163
+ DIWALI_DATES = {
164
+ 2012: (NOV, 13),
165
+ 2013: (NOV, 4),
166
+ 2014: (OCT, 23),
167
+ 2015: (NOV, 11),
168
+ 2016: (OCT, 29),
169
+ 2017: (OCT, 19),
170
+ 2018: (NOV, 7),
171
+ 2019: (OCT, 27),
172
+ 2020: (NOV, 14),
173
+ 2021: (NOV, 4),
174
+ 2022: (OCT, 24),
175
+ 2023: (NOV, 12),
176
+ 2024: (OCT, 31),
177
+ 2025: (OCT, 20),
178
+ }
179
+
180
+
181
+ class TrinidadAndTobagoIslamicHolidays(_CustomIslamicHolidays):
182
+ EID_AL_FITR_DATES = {
183
+ 2012: (AUG, 19),
184
+ 2013: (AUG, 8),
185
+ 2014: (JUL, 29),
186
+ 2015: (JUL, 18),
187
+ 2016: (JUL, 6),
188
+ 2017: (JUN, 26),
189
+ 2018: (JUN, 15),
190
+ 2019: (JUN, 5),
191
+ 2020: (MAY, 24),
192
+ 2021: (MAY, 13),
193
+ 2022: (MAY, 2),
194
+ 2023: (APR, 22),
195
+ 2024: (APR, 10),
196
+ 2025: (MAR, 31),
197
+ }
@@ -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
@@ -39,7 +39,10 @@ class Tuvalu(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
39
39
  default_language = "tvl"
40
40
  # %s (observed).
41
41
  observed_label = tr("%s (fakamatakuga)")
42
- supported_languages = ("en_GB", "en_US", "tvl")
42
+ # Tuvalu became fully independent of the United Kingdom on October 1, 1978
43
+ # Tuvalu's PUBLIC HOLIDAYS (AMENDMENT) ACT 1990 (Act 2 of 1990)
44
+ # It was first proclaimed on FEB 7th, 1990
45
+ start_year = 1990
43
46
  subdivisions = (
44
47
  "FUN", # Funafuti.
45
48
  "NIT", # Niutao.
@@ -62,10 +65,7 @@ class Tuvalu(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
62
65
  "Nui": "NUI",
63
66
  "Vaitupu": "VAI",
64
67
  }
65
- # Tuvalu became fully independent of the United Kingdom on October 1, 1978
66
- # Tuvalu's PUBLIC HOLIDAYS (AMENDMENT) ACT 1990 (Act 2 of 1990)
67
- # It was first proclaimed on FEB 7th, 1990
68
- start_year = 1990
68
+ supported_languages = ("en_GB", "en_US", "tvl")
69
69
 
70
70
  def __init__(self, *args, **kwargs):
71
71
  ChristianHolidays.__init__(self)
@@ -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