holidays 0.41__py3-none-any.whl → 0.43__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 (306) hide show
  1. holidays/__init__.py +1 -1
  2. holidays/countries/__init__.py +2 -0
  3. holidays/countries/algeria.py +9 -8
  4. holidays/countries/angola.py +2 -4
  5. holidays/countries/argentina.py +2 -2
  6. holidays/countries/armenia.py +1 -1
  7. holidays/countries/aruba.py +2 -4
  8. holidays/countries/austria.py +82 -9
  9. holidays/countries/bahrain.py +8 -11
  10. holidays/countries/belarus.py +1 -1
  11. holidays/countries/belgium.py +2 -2
  12. holidays/countries/bosnia_and_herzegovina.py +16 -16
  13. holidays/countries/cambodia.py +1 -4
  14. holidays/countries/canada.py +1 -1
  15. holidays/countries/chile.py +5 -5
  16. holidays/countries/china.py +15 -2
  17. holidays/countries/colombia.py +3 -3
  18. holidays/countries/costa_rica.py +20 -16
  19. holidays/countries/croatia.py +15 -7
  20. holidays/countries/cuba.py +2 -2
  21. holidays/countries/denmark.py +1 -2
  22. holidays/countries/djibouti.py +2 -2
  23. holidays/countries/dominican_republic.py +1 -1
  24. holidays/countries/ecuador.py +1 -1
  25. holidays/countries/egypt.py +27 -29
  26. holidays/countries/ethiopia.py +4 -3
  27. holidays/countries/georgia.py +1 -1
  28. holidays/countries/germany.py +0 -1
  29. holidays/countries/ghana.py +97 -0
  30. holidays/countries/greece.py +14 -6
  31. holidays/countries/guatemala.py +10 -10
  32. holidays/countries/honduras.py +1 -1
  33. holidays/countries/hungary.py +1 -2
  34. holidays/countries/indonesia.py +4 -3
  35. holidays/countries/iran.py +1 -1
  36. holidays/countries/ireland.py +27 -23
  37. holidays/countries/isle_of_man.py +4 -0
  38. holidays/countries/jersey.py +234 -0
  39. holidays/countries/laos.py +4 -4
  40. holidays/countries/latvia.py +1 -1
  41. holidays/countries/liechtenstein.py +2 -2
  42. holidays/countries/lithuania.py +3 -3
  43. holidays/countries/madagascar.py +1 -1
  44. holidays/countries/moldova.py +5 -5
  45. holidays/countries/monaco.py +4 -4
  46. holidays/countries/morocco.py +1 -1
  47. holidays/countries/nicaragua.py +1 -1
  48. holidays/countries/norway.py +1 -1
  49. holidays/countries/peru.py +4 -4
  50. holidays/countries/poland.py +5 -4
  51. holidays/countries/portugal.py +2 -2
  52. holidays/countries/romania.py +1 -1
  53. holidays/countries/saudi_arabia.py +1 -1
  54. holidays/countries/serbia.py +3 -3
  55. holidays/countries/slovakia.py +1 -2
  56. holidays/countries/spain.py +1 -1
  57. holidays/countries/switzerland.py +289 -43
  58. holidays/countries/taiwan.py +114 -24
  59. holidays/countries/tanzania.py +1 -0
  60. holidays/countries/thailand.py +10 -18
  61. holidays/countries/timor_leste.py +1 -0
  62. holidays/countries/tunisia.py +3 -3
  63. holidays/countries/turkey.py +2 -1
  64. holidays/countries/ukraine.py +3 -3
  65. holidays/countries/united_arab_emirates.py +36 -28
  66. holidays/countries/united_kingdom.py +28 -0
  67. holidays/holiday_base.py +32 -14
  68. holidays/locale/am/LC_MESSAGES/ET.po +4 -3
  69. holidays/locale/ar/LC_MESSAGES/AE.po +3 -3
  70. holidays/locale/ar/LC_MESSAGES/BH.po +4 -4
  71. holidays/locale/ar/LC_MESSAGES/CA.po +1 -1
  72. holidays/locale/ar/LC_MESSAGES/DJ.mo +0 -0
  73. holidays/locale/ar/LC_MESSAGES/DJ.po +8 -8
  74. holidays/locale/ar/LC_MESSAGES/DZ.po +5 -5
  75. holidays/locale/ar/LC_MESSAGES/EG.po +19 -19
  76. holidays/locale/ar/LC_MESSAGES/ET.po +4 -3
  77. holidays/locale/ar/LC_MESSAGES/MA.po +1 -1
  78. holidays/locale/ar/LC_MESSAGES/SA.po +1 -1
  79. holidays/locale/ar/LC_MESSAGES/TN.po +3 -3
  80. holidays/locale/ar/LC_MESSAGES/UA.po +3 -3
  81. holidays/locale/be/LC_MESSAGES/BY.po +1 -1
  82. holidays/locale/bs/LC_MESSAGES/BA.po +5 -5
  83. holidays/locale/da/LC_MESSAGES/DK.po +1 -1
  84. holidays/locale/de/LC_MESSAGES/AT.mo +0 -0
  85. holidays/locale/de/LC_MESSAGES/AT.po +25 -1
  86. holidays/locale/de/LC_MESSAGES/BE.po +2 -2
  87. holidays/locale/de/LC_MESSAGES/CH.mo +0 -0
  88. holidays/locale/de/LC_MESSAGES/CH.po +6 -14
  89. holidays/locale/de/LC_MESSAGES/DE.po +0 -1
  90. holidays/locale/de/LC_MESSAGES/LI.mo +0 -0
  91. holidays/locale/de/LC_MESSAGES/LI.po +5 -5
  92. holidays/locale/de/LC_MESSAGES/LU.mo +0 -0
  93. holidays/locale/de/LC_MESSAGES/LU.po +3 -3
  94. holidays/locale/el/LC_MESSAGES/GR.po +3 -3
  95. holidays/locale/en_CA/LC_MESSAGES/CA.po +1 -1
  96. holidays/locale/en_US/LC_MESSAGES/AE.mo +0 -0
  97. holidays/locale/en_US/LC_MESSAGES/AE.po +8 -8
  98. holidays/locale/en_US/LC_MESSAGES/AM.mo +0 -0
  99. holidays/locale/en_US/LC_MESSAGES/AM.po +7 -7
  100. holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
  101. holidays/locale/en_US/LC_MESSAGES/AR.po +7 -7
  102. holidays/locale/en_US/LC_MESSAGES/AT.mo +0 -0
  103. holidays/locale/en_US/LC_MESSAGES/AT.po +25 -1
  104. holidays/locale/en_US/LC_MESSAGES/BA.mo +0 -0
  105. holidays/locale/en_US/LC_MESSAGES/BA.po +13 -13
  106. holidays/locale/en_US/LC_MESSAGES/BE.mo +0 -0
  107. holidays/locale/en_US/LC_MESSAGES/BE.po +7 -7
  108. holidays/locale/en_US/LC_MESSAGES/BH.po +4 -4
  109. holidays/locale/en_US/LC_MESSAGES/BY.po +1 -1
  110. holidays/locale/en_US/LC_MESSAGES/CA.po +1 -1
  111. holidays/locale/en_US/LC_MESSAGES/CH.mo +0 -0
  112. holidays/locale/en_US/LC_MESSAGES/CH.po +7 -15
  113. holidays/locale/en_US/LC_MESSAGES/CL.mo +0 -0
  114. holidays/locale/en_US/LC_MESSAGES/CL.po +12 -12
  115. holidays/locale/en_US/LC_MESSAGES/CN.mo +0 -0
  116. holidays/locale/en_US/LC_MESSAGES/CN.po +8 -4
  117. holidays/locale/en_US/LC_MESSAGES/CO.mo +0 -0
  118. holidays/locale/en_US/LC_MESSAGES/CO.po +11 -11
  119. holidays/locale/en_US/LC_MESSAGES/CR.mo +0 -0
  120. holidays/locale/en_US/LC_MESSAGES/CR.po +5 -5
  121. holidays/locale/en_US/LC_MESSAGES/CU.mo +0 -0
  122. holidays/locale/en_US/LC_MESSAGES/CU.po +6 -6
  123. holidays/locale/en_US/LC_MESSAGES/CZ.mo +0 -0
  124. holidays/locale/en_US/LC_MESSAGES/CZ.po +1 -1
  125. holidays/locale/en_US/LC_MESSAGES/DE.po +0 -1
  126. holidays/locale/en_US/LC_MESSAGES/DJ.mo +0 -0
  127. holidays/locale/en_US/LC_MESSAGES/DJ.po +5 -5
  128. holidays/locale/en_US/LC_MESSAGES/DK.po +1 -1
  129. holidays/locale/en_US/LC_MESSAGES/DO.mo +0 -0
  130. holidays/locale/en_US/LC_MESSAGES/DO.po +5 -5
  131. holidays/locale/en_US/LC_MESSAGES/DZ.po +5 -5
  132. holidays/locale/en_US/LC_MESSAGES/EC.mo +0 -0
  133. holidays/locale/en_US/LC_MESSAGES/EC.po +5 -5
  134. holidays/locale/en_US/LC_MESSAGES/EG.mo +0 -0
  135. holidays/locale/en_US/LC_MESSAGES/EG.po +25 -25
  136. holidays/locale/en_US/LC_MESSAGES/ES.mo +0 -0
  137. holidays/locale/en_US/LC_MESSAGES/ES.po +3 -3
  138. holidays/locale/en_US/LC_MESSAGES/ET.mo +0 -0
  139. holidays/locale/en_US/LC_MESSAGES/ET.po +10 -9
  140. holidays/locale/en_US/LC_MESSAGES/GE.mo +0 -0
  141. holidays/locale/en_US/LC_MESSAGES/GE.po +5 -5
  142. holidays/locale/en_US/LC_MESSAGES/GR.mo +0 -0
  143. holidays/locale/en_US/LC_MESSAGES/GR.po +5 -5
  144. holidays/locale/en_US/LC_MESSAGES/GT.mo +0 -0
  145. holidays/locale/en_US/LC_MESSAGES/GT.po +16 -16
  146. holidays/locale/en_US/LC_MESSAGES/HN.mo +0 -0
  147. holidays/locale/en_US/LC_MESSAGES/HN.po +4 -4
  148. holidays/locale/en_US/LC_MESSAGES/HR.mo +0 -0
  149. holidays/locale/en_US/LC_MESSAGES/HR.po +17 -15
  150. holidays/locale/en_US/LC_MESSAGES/ID.mo +0 -0
  151. holidays/locale/en_US/LC_MESSAGES/ID.po +10 -9
  152. holidays/locale/en_US/LC_MESSAGES/IL.mo +0 -0
  153. holidays/locale/en_US/LC_MESSAGES/IL.po +1 -0
  154. holidays/locale/en_US/LC_MESSAGES/IR.po +1 -1
  155. holidays/locale/en_US/LC_MESSAGES/LA.mo +0 -0
  156. holidays/locale/en_US/LC_MESSAGES/LA.po +3 -3
  157. holidays/locale/en_US/LC_MESSAGES/LI.mo +0 -0
  158. holidays/locale/en_US/LC_MESSAGES/LI.po +5 -5
  159. holidays/locale/en_US/LC_MESSAGES/LT.mo +0 -0
  160. holidays/locale/en_US/LC_MESSAGES/LT.po +7 -7
  161. holidays/locale/en_US/LC_MESSAGES/LV.mo +0 -0
  162. holidays/locale/en_US/LC_MESSAGES/LV.po +5 -5
  163. holidays/locale/en_US/LC_MESSAGES/MA.po +1 -1
  164. holidays/locale/en_US/LC_MESSAGES/MC.mo +0 -0
  165. holidays/locale/en_US/LC_MESSAGES/MC.po +10 -10
  166. holidays/locale/en_US/LC_MESSAGES/MD.mo +0 -0
  167. holidays/locale/en_US/LC_MESSAGES/MD.po +10 -10
  168. holidays/locale/en_US/LC_MESSAGES/MG.po +1 -0
  169. holidays/locale/en_US/LC_MESSAGES/MX.mo +0 -0
  170. holidays/locale/en_US/LC_MESSAGES/MX.po +4 -4
  171. holidays/locale/en_US/LC_MESSAGES/NI.mo +0 -0
  172. holidays/locale/en_US/LC_MESSAGES/NI.po +4 -4
  173. holidays/locale/en_US/LC_MESSAGES/NO.po +1 -1
  174. holidays/locale/en_US/LC_MESSAGES/PE.mo +0 -0
  175. holidays/locale/en_US/LC_MESSAGES/PE.po +8 -8
  176. holidays/locale/en_US/LC_MESSAGES/PL.mo +0 -0
  177. holidays/locale/en_US/LC_MESSAGES/PL.po +13 -12
  178. holidays/locale/en_US/LC_MESSAGES/PT.mo +0 -0
  179. holidays/locale/en_US/LC_MESSAGES/PT.po +2 -2
  180. holidays/locale/en_US/LC_MESSAGES/RO.mo +0 -0
  181. holidays/locale/en_US/LC_MESSAGES/RO.po +5 -5
  182. holidays/locale/en_US/LC_MESSAGES/RS.mo +0 -0
  183. holidays/locale/en_US/LC_MESSAGES/RS.po +10 -9
  184. holidays/locale/en_US/LC_MESSAGES/SA.po +1 -1
  185. holidays/locale/en_US/LC_MESSAGES/SI.mo +0 -0
  186. holidays/locale/en_US/LC_MESSAGES/SI.po +1 -1
  187. holidays/locale/en_US/LC_MESSAGES/SK.po +1 -0
  188. holidays/locale/en_US/LC_MESSAGES/TH.mo +0 -0
  189. holidays/locale/en_US/LC_MESSAGES/TH.po +4 -4
  190. holidays/locale/en_US/LC_MESSAGES/TL.po +1 -0
  191. holidays/locale/en_US/LC_MESSAGES/TN.po +3 -3
  192. holidays/locale/en_US/LC_MESSAGES/TR.po +2 -1
  193. holidays/locale/en_US/LC_MESSAGES/TW.mo +0 -0
  194. holidays/locale/en_US/LC_MESSAGES/TW.po +14 -5
  195. holidays/locale/en_US/LC_MESSAGES/TZ.po +1 -0
  196. holidays/locale/en_US/LC_MESSAGES/UA.mo +0 -0
  197. holidays/locale/en_US/LC_MESSAGES/UA.po +7 -7
  198. holidays/locale/es/LC_MESSAGES/AR.po +2 -2
  199. holidays/locale/es/LC_MESSAGES/CL.po +5 -5
  200. holidays/locale/es/LC_MESSAGES/CO.po +3 -3
  201. holidays/locale/es/LC_MESSAGES/CU.po +2 -2
  202. holidays/locale/es/LC_MESSAGES/DO.po +1 -1
  203. holidays/locale/es/LC_MESSAGES/EC.po +1 -1
  204. holidays/locale/es/LC_MESSAGES/ES.po +1 -1
  205. holidays/locale/es/LC_MESSAGES/GT.po +10 -10
  206. holidays/locale/es/LC_MESSAGES/HN.po +1 -1
  207. holidays/locale/es/LC_MESSAGES/NI.po +1 -1
  208. holidays/locale/es/LC_MESSAGES/PE.po +4 -4
  209. holidays/locale/fa/LC_MESSAGES/IR.po +1 -1
  210. holidays/locale/fr/LC_MESSAGES/BE.po +2 -2
  211. holidays/locale/fr/LC_MESSAGES/CA.po +1 -1
  212. holidays/locale/fr/LC_MESSAGES/CH.mo +0 -0
  213. holidays/locale/fr/LC_MESSAGES/CH.po +6 -14
  214. holidays/locale/fr/LC_MESSAGES/DJ.po +2 -2
  215. holidays/locale/fr/LC_MESSAGES/DZ.po +5 -5
  216. holidays/locale/fr/LC_MESSAGES/MA.po +1 -1
  217. holidays/locale/fr/LC_MESSAGES/MC.po +4 -4
  218. holidays/locale/hr/LC_MESSAGES/HR.mo +0 -0
  219. holidays/locale/hr/LC_MESSAGES/HR.po +12 -10
  220. holidays/locale/hy/LC_MESSAGES/AM.po +1 -1
  221. holidays/locale/id/LC_MESSAGES/ID.po +4 -3
  222. holidays/locale/it/LC_MESSAGES/CH.mo +0 -0
  223. holidays/locale/it/LC_MESSAGES/CH.po +6 -14
  224. holidays/locale/ka/LC_MESSAGES/GE.po +1 -1
  225. holidays/locale/lo/LC_MESSAGES/LA.po +1 -1
  226. holidays/locale/lt/LC_MESSAGES/LT.po +3 -3
  227. holidays/locale/lv/LC_MESSAGES/LV.po +1 -1
  228. holidays/locale/mg/LC_MESSAGES/MG.po +1 -0
  229. holidays/locale/nl/LC_MESSAGES/BE.po +2 -2
  230. holidays/locale/no/LC_MESSAGES/NO.po +1 -1
  231. holidays/locale/pl/LC_MESSAGES/PL.po +5 -4
  232. holidays/locale/pt_PT/LC_MESSAGES/PT.po +1 -1
  233. holidays/locale/pt_TL/LC_MESSAGES/TL.po +1 -0
  234. holidays/locale/ro/LC_MESSAGES/MD.po +5 -5
  235. holidays/locale/ro/LC_MESSAGES/RO.po +1 -1
  236. holidays/locale/sk/LC_MESSAGES/SK.po +1 -0
  237. holidays/locale/sr/LC_MESSAGES/BA.po +5 -5
  238. holidays/locale/sr/LC_MESSAGES/RS.po +3 -3
  239. holidays/locale/sw/LC_MESSAGES/TZ.po +1 -0
  240. holidays/locale/tet/LC_MESSAGES/TL.po +1 -0
  241. holidays/locale/th/LC_MESSAGES/CA.po +1 -1
  242. holidays/locale/th/LC_MESSAGES/CN.mo +0 -0
  243. holidays/locale/th/LC_MESSAGES/CN.po +8 -4
  244. holidays/locale/th/LC_MESSAGES/LA.po +1 -1
  245. holidays/locale/th/LC_MESSAGES/TH.po +1 -1
  246. holidays/locale/th/LC_MESSAGES/TW.mo +0 -0
  247. holidays/locale/th/LC_MESSAGES/TW.po +14 -5
  248. holidays/locale/tr/LC_MESSAGES/TR.po +2 -1
  249. holidays/locale/uk/LC_MESSAGES/AR.po +2 -2
  250. holidays/locale/uk/LC_MESSAGES/AT.mo +0 -0
  251. holidays/locale/uk/LC_MESSAGES/AT.po +25 -1
  252. holidays/locale/uk/LC_MESSAGES/BA.po +5 -5
  253. holidays/locale/uk/LC_MESSAGES/BE.po +2 -2
  254. holidays/locale/uk/LC_MESSAGES/CH.mo +0 -0
  255. holidays/locale/uk/LC_MESSAGES/CH.po +6 -14
  256. holidays/locale/uk/LC_MESSAGES/CL.mo +0 -0
  257. holidays/locale/uk/LC_MESSAGES/CL.po +6 -6
  258. holidays/locale/uk/LC_MESSAGES/CO.mo +0 -0
  259. holidays/locale/uk/LC_MESSAGES/CO.po +4 -4
  260. holidays/locale/uk/LC_MESSAGES/CU.po +2 -2
  261. holidays/locale/uk/LC_MESSAGES/DE.po +0 -1
  262. holidays/locale/uk/LC_MESSAGES/DK.po +1 -1
  263. holidays/locale/uk/LC_MESSAGES/DO.po +1 -1
  264. holidays/locale/uk/LC_MESSAGES/EC.po +1 -1
  265. holidays/locale/uk/LC_MESSAGES/ES.po +1 -1
  266. holidays/locale/uk/LC_MESSAGES/FR.mo +0 -0
  267. holidays/locale/uk/LC_MESSAGES/FR.po +6 -6
  268. holidays/locale/uk/LC_MESSAGES/GE.po +1 -1
  269. holidays/locale/uk/LC_MESSAGES/GR.po +3 -3
  270. holidays/locale/uk/LC_MESSAGES/HN.po +1 -1
  271. holidays/locale/uk/LC_MESSAGES/HR.mo +0 -0
  272. holidays/locale/uk/LC_MESSAGES/HR.po +14 -12
  273. holidays/locale/uk/LC_MESSAGES/ID.po +4 -3
  274. holidays/locale/uk/LC_MESSAGES/LI.mo +0 -0
  275. holidays/locale/uk/LC_MESSAGES/LI.po +5 -5
  276. holidays/locale/uk/LC_MESSAGES/LT.po +3 -3
  277. holidays/locale/uk/LC_MESSAGES/LV.po +1 -1
  278. holidays/locale/uk/LC_MESSAGES/MC.mo +0 -0
  279. holidays/locale/uk/LC_MESSAGES/MC.po +7 -7
  280. holidays/locale/uk/LC_MESSAGES/MD.po +5 -5
  281. holidays/locale/uk/LC_MESSAGES/MG.po +1 -0
  282. holidays/locale/uk/LC_MESSAGES/NI.po +1 -1
  283. holidays/locale/uk/LC_MESSAGES/NO.po +1 -1
  284. holidays/locale/uk/LC_MESSAGES/PE.po +4 -4
  285. holidays/locale/uk/LC_MESSAGES/PL.mo +0 -0
  286. holidays/locale/uk/LC_MESSAGES/PL.po +11 -10
  287. holidays/locale/uk/LC_MESSAGES/PT.po +1 -1
  288. holidays/locale/uk/LC_MESSAGES/RO.po +1 -1
  289. holidays/locale/uk/LC_MESSAGES/SK.po +1 -0
  290. holidays/locale/uk/LC_MESSAGES/TR.po +2 -1
  291. holidays/locale/uk/LC_MESSAGES/UA.po +3 -3
  292. holidays/locale/zh_CN/LC_MESSAGES/CN.mo +0 -0
  293. holidays/locale/zh_CN/LC_MESSAGES/CN.po +8 -4
  294. holidays/locale/zh_CN/LC_MESSAGES/TW.mo +0 -0
  295. holidays/locale/zh_CN/LC_MESSAGES/TW.po +15 -6
  296. holidays/locale/zh_TW/LC_MESSAGES/CN.mo +0 -0
  297. holidays/locale/zh_TW/LC_MESSAGES/CN.po +8 -4
  298. holidays/locale/zh_TW/LC_MESSAGES/TW.mo +0 -0
  299. holidays/locale/zh_TW/LC_MESSAGES/TW.po +14 -5
  300. holidays/registry.py +2 -0
  301. holidays/utils.py +2 -2
  302. {holidays-0.41.dist-info → holidays-0.43.dist-info}/METADATA +23 -10
  303. {holidays-0.41.dist-info → holidays-0.43.dist-info}/RECORD +306 -304
  304. {holidays-0.41.dist-info → holidays-0.43.dist-info}/LICENSE +0 -0
  305. {holidays-0.41.dist-info → holidays-0.43.dist-info}/WHEEL +0 -0
  306. {holidays-0.41.dist-info → holidays-0.43.dist-info}/top_level.txt +0 -0
@@ -13,17 +13,25 @@ from datetime import timedelta as td
13
13
  from gettext import gettext as tr
14
14
 
15
15
  from holidays.calendars.gregorian import APR, THU, _get_nth_weekday_of_month
16
+ from holidays.constants import HALF_DAY, OPTIONAL, PUBLIC
16
17
  from holidays.groups import ChristianHolidays, InternationalHolidays
17
18
  from holidays.holiday_base import HolidayBase
18
19
 
19
20
 
20
21
  class Switzerland(HolidayBase, ChristianHolidays, InternationalHolidays):
22
+ """
23
+ References:
24
+ - https://www.bj.admin.ch/dam/bj/de/data/publiservice/service/zivilprozessrecht/kant-feiertage.pdf # noqa: E501
25
+ - https://de.wikipedia.org/wiki/Feiertage_in_der_Schweiz
26
+ - https://en.wikipedia.org/wiki/Public_holidays_in_Switzerland
27
+ """
28
+
21
29
  country = "CH"
22
30
  default_language = "de"
23
31
  subdivisions = (
24
32
  "AG", # Aargau
25
- "AR", # Appenzell Ausserrhoden
26
33
  "AI", # Appenzell Innerrhoden
34
+ "AR", # Appenzell Ausserrhoden
27
35
  "BL", # Basel-Landschaft
28
36
  "BS", # Basel-Stadt
29
37
  "BE", # Bern
@@ -48,6 +56,7 @@ class Switzerland(HolidayBase, ChristianHolidays, InternationalHolidays):
48
56
  "ZG", # Zug
49
57
  "ZH", # Zürich
50
58
  )
59
+ supported_categories = (HALF_DAY, OPTIONAL, PUBLIC)
51
60
  supported_languages = ("de", "en_US", "fr", "it", "uk")
52
61
 
53
62
  def __init__(self, *args, **kwargs):
@@ -59,77 +68,126 @@ class Switzerland(HolidayBase, ChristianHolidays, InternationalHolidays):
59
68
  # New Year's Day.
60
69
  self._add_new_years_day(tr("Neujahrestag"))
61
70
 
62
- # Easter Sunday.
63
- self._add_easter_sunday(tr("Ostern"))
64
-
65
71
  # Ascension Day.
66
72
  self._add_ascension_thursday(tr("Auffahrt"))
67
73
 
68
- # Whit Sunday.
69
- self._add_whit_sunday(tr("Pfingsten"))
70
-
71
- if self._year >= 1291:
72
- # National Day.
73
- self._add_holiday_aug_1(tr("Nationalfeiertag"))
74
+ # National Day.
75
+ self._add_holiday_aug_1(tr("Nationalfeiertag"))
74
76
 
75
77
  # Christmas Day.
76
78
  self._add_christmas_day(tr("Weihnachten"))
77
79
 
78
- def _populate_subdiv_holidays(self):
79
- if not self.subdiv:
80
- return None
80
+ def _populate_subdiv_ag_public_holidays(self):
81
+ # Berchtold's Day.
82
+ self._add_new_years_day_two(tr("Berchtoldstag"))
81
83
 
82
- if self.subdiv != "VS":
83
- # Good Friday.
84
- self._add_good_friday(tr("Karfreitag"))
84
+ # Good Friday.
85
+ self._add_good_friday(tr("Karfreitag"))
85
86
 
86
- # Easter Monday.
87
- self._add_easter_monday(tr("Ostermontag"))
87
+ # Easter Monday.
88
+ self._add_easter_monday(tr("Ostermontag"))
88
89
 
89
- # Whit Monday.
90
- self._add_whit_monday(tr("Pfingstmontag"))
90
+ # Labor Day.
91
+ self._add_labor_day(tr("Tag der Arbeit"))
91
92
 
92
- if self.subdiv not in {"GE", "JU", "NE", "VD", "VS"}:
93
- # St. Stephen's Day.
94
- self._add_christmas_day_two(tr("Stephanstag"))
93
+ # Whit Monday.
94
+ self._add_whit_monday(tr("Pfingstmontag"))
95
95
 
96
- super()._populate_subdiv_holidays()
96
+ # Corpus Christi.
97
+ self._add_corpus_christi_day(tr("Fronleichnam"))
97
98
 
98
- def _populate_subdiv_ag_public_holidays(self):
99
- # Berchtold's Day.
100
- self._add_new_years_day_two(tr("Berchtoldstag"))
99
+ # Assumption Day.
100
+ self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
101
+
102
+ # All Saints' Day.
103
+ self._add_all_saints_day(tr("Allerheiligen"))
104
+
105
+ # Immaculate Conception.
106
+ self._add_immaculate_conception_day(tr("Mariä Empfängnis"))
107
+
108
+ # St. Stephen's Day.
109
+ self._add_christmas_day_two(tr("Stephanstag"))
101
110
 
102
111
  def _populate_subdiv_ar_public_holidays(self):
103
- pass
112
+ self._add_good_friday(tr("Karfreitag"))
113
+
114
+ self._add_easter_monday(tr("Ostermontag"))
115
+
116
+ self._add_whit_monday(tr("Pfingstmontag"))
117
+
118
+ if not self._is_monday(self._christmas_day) and not self._is_friday(self._christmas_day):
119
+ self._add_christmas_day_two(tr("Stephanstag"))
104
120
 
105
121
  def _populate_subdiv_ai_public_holidays(self):
106
- # Corpus Christi.
122
+ self._add_good_friday(tr("Karfreitag"))
123
+
124
+ self._add_easter_monday(tr("Ostermontag"))
125
+
126
+ self._add_whit_monday(tr("Pfingstmontag"))
127
+
107
128
  self._add_corpus_christi_day(tr("Fronleichnam"))
108
129
 
109
- # Assumption of Mary.
110
130
  self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
111
131
 
112
- # All Saints' Day.
113
132
  self._add_all_saints_day(tr("Allerheiligen"))
114
133
 
115
- # Immaculate Conception.
116
134
  self._add_immaculate_conception_day(tr("Mariä Empfängnis"))
117
135
 
136
+ if not self._is_monday(self._christmas_day) and not self._is_friday(self._christmas_day):
137
+ self._add_christmas_day_two(tr("Stephanstag"))
138
+
118
139
  def _populate_subdiv_bl_public_holidays(self):
119
- # Labor Day.
140
+ self._add_good_friday(tr("Karfreitag"))
141
+
142
+ self._add_easter_monday(tr("Ostermontag"))
143
+
120
144
  self._add_labor_day(tr("Tag der Arbeit"))
121
145
 
146
+ self._add_whit_monday(tr("Pfingstmontag"))
147
+
148
+ self._add_christmas_day_two(tr("Stephanstag"))
149
+
122
150
  def _populate_subdiv_bs_public_holidays(self):
151
+ self._add_good_friday(tr("Karfreitag"))
152
+
153
+ self._add_easter_monday(tr("Ostermontag"))
154
+
123
155
  self._add_labor_day(tr("Tag der Arbeit"))
124
156
 
157
+ self._add_whit_monday(tr("Pfingstmontag"))
158
+
159
+ self._add_christmas_day_two(tr("Stephanstag"))
160
+
125
161
  def _populate_subdiv_be_public_holidays(self):
126
162
  self._add_new_years_day_two(tr("Berchtoldstag"))
127
163
 
164
+ self._add_good_friday(tr("Karfreitag"))
165
+
166
+ self._add_easter_monday(tr("Ostermontag"))
167
+
168
+ self._add_whit_monday(tr("Pfingstmontag"))
169
+
170
+ self._add_christmas_day_two(tr("Stephanstag"))
171
+
128
172
  def _populate_subdiv_fr_public_holidays(self):
173
+ self._add_good_friday(tr("Karfreitag"))
174
+
175
+ def _populate_subdiv_fr_optional_holidays(self):
129
176
  self._add_new_years_day_two(tr("Berchtoldstag"))
130
177
 
178
+ self._add_easter_monday(tr("Ostermontag"))
179
+
180
+ self._add_whit_monday(tr("Pfingstmontag"))
181
+
182
+ self._add_christmas_day_two(tr("Stephanstag"))
183
+
131
184
  def _populate_subdiv_ge_public_holidays(self):
132
- # Thursday after the first Sunday of September
185
+ self._add_good_friday(tr("Karfreitag"))
186
+
187
+ self._add_easter_monday(tr("Ostermontag"))
188
+
189
+ self._add_whit_monday(tr("Pfingstmontag"))
190
+
133
191
  # Genevan Fast.
134
192
  self._add_holiday_4_days_past_1st_sun_of_sep(tr("Genfer Bettag"))
135
193
 
@@ -137,8 +195,6 @@ class Switzerland(HolidayBase, ChristianHolidays, InternationalHolidays):
137
195
  self._add_holiday_dec_31(tr("Wiederherstellung der Republik"))
138
196
 
139
197
  def _populate_subdiv_gl_public_holidays(self):
140
- self._add_new_years_day_two(tr("Berchtoldstag"))
141
-
142
198
  # Näfelser Fahrt (first Thursday in April but not in Holy Week)
143
199
  if self._year >= 1835:
144
200
  dt = _get_nth_weekday_of_month(1, THU, APR, self._year)
@@ -148,125 +204,315 @@ class Switzerland(HolidayBase, ChristianHolidays, InternationalHolidays):
148
204
  dt + td(days=+7) if dt == self._easter_sunday + td(days=-3) else dt,
149
205
  )
150
206
 
207
+ self._add_good_friday(tr("Karfreitag"))
208
+
209
+ self._add_easter_monday(tr("Ostermontag"))
210
+
211
+ self._add_whit_monday(tr("Pfingstmontag"))
212
+
151
213
  self._add_all_saints_day(tr("Allerheiligen"))
152
214
 
215
+ self._add_christmas_day_two(tr("Stephanstag"))
216
+
217
+ def _populate_subdiv_gl_optional_holidays(self):
218
+ self._add_new_years_day_two(tr("Berchtoldstag"))
219
+
153
220
  def _populate_subdiv_gr_public_holidays(self):
154
- pass
221
+ self._add_easter_monday(tr("Ostermontag"))
222
+
223
+ self._add_whit_monday(tr("Pfingstmontag"))
224
+
225
+ self._add_christmas_day_two(tr("Stephanstag"))
226
+
227
+ def _populate_subdiv_gr_optional_holidays(self):
228
+ self._add_good_friday(tr("Karfreitag"))
155
229
 
156
230
  def _populate_subdiv_ju_public_holidays(self):
157
231
  self._add_new_years_day_two(tr("Berchtoldstag"))
232
+
233
+ self._add_good_friday(tr("Karfreitag"))
234
+
235
+ self._add_easter_monday(tr("Ostermontag"))
236
+
158
237
  self._add_labor_day(tr("Tag der Arbeit"))
238
+
239
+ self._add_whit_monday(tr("Pfingstmontag"))
240
+
159
241
  self._add_corpus_christi_day(tr("Fronleichnam"))
160
242
 
161
243
  # Independence Day.
162
244
  self._add_holiday_jun_23(tr("Fest der Unabhängigkeit"))
245
+
163
246
  self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
247
+
164
248
  self._add_all_saints_day(tr("Allerheiligen"))
165
249
 
166
250
  def _populate_subdiv_lu_public_holidays(self):
167
251
  self._add_new_years_day_two(tr("Berchtoldstag"))
252
+
253
+ self._add_good_friday(tr("Karfreitag"))
254
+
255
+ self._add_easter_monday(tr("Ostermontag"))
256
+
257
+ self._add_whit_monday(tr("Pfingstmontag"))
258
+
168
259
  self._add_corpus_christi_day(tr("Fronleichnam"))
260
+
169
261
  self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
262
+
170
263
  self._add_all_saints_day(tr("Allerheiligen"))
264
+
171
265
  self._add_immaculate_conception_day(tr("Mariä Empfängnis"))
172
266
 
267
+ self._add_christmas_day_two(tr("Stephanstag"))
268
+
173
269
  def _populate_subdiv_ne_public_holidays(self):
174
- self._add_new_years_day_two(tr("Berchtoldstag"))
270
+ dt = self._add_new_years_day_two(tr("Berchtoldstag"))
271
+ # Jan 2 is public holiday only when it falls on Monday (Jan 1 falls on Sunday).
272
+ if not self._is_monday(dt):
273
+ self.pop(dt)
175
274
 
176
275
  # Republic Day.
177
276
  self._add_holiday_mar_1(tr("Jahrestag der Ausrufung der Republik"))
277
+
278
+ self._add_good_friday(tr("Karfreitag"))
279
+
178
280
  self._add_labor_day(tr("Tag der Arbeit"))
179
281
 
282
+ self._add_corpus_christi_day(tr("Fronleichnam"))
283
+
180
284
  if self._is_sunday(self._christmas_day):
181
285
  self._add_christmas_day_two(tr("Stephanstag"))
182
286
 
183
287
  def _populate_subdiv_nw_public_holidays(self):
184
288
  # St. Joseph's Day.
185
289
  self._add_saint_josephs_day(tr("Josefstag"))
290
+
291
+ self._add_good_friday(tr("Karfreitag"))
292
+
186
293
  self._add_corpus_christi_day(tr("Fronleichnam"))
294
+
187
295
  self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
296
+
188
297
  self._add_all_saints_day(tr("Allerheiligen"))
298
+
189
299
  self._add_immaculate_conception_day(tr("Mariä Empfängnis"))
190
300
 
191
- def _populate_subdiv_ow_public_holidays(self):
301
+ def _populate_subdiv_nw_optional_holidays(self):
192
302
  self._add_new_years_day_two(tr("Berchtoldstag"))
303
+
304
+ self._add_easter_monday(tr("Ostermontag"))
305
+
306
+ self._add_whit_monday(tr("Pfingstmontag"))
307
+
308
+ self._add_christmas_day_two(tr("Stephanstag"))
309
+
310
+ def _populate_subdiv_ow_public_holidays(self):
311
+ self._add_good_friday(tr("Karfreitag"))
312
+
193
313
  self._add_corpus_christi_day(tr("Fronleichnam"))
314
+
194
315
  self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
195
316
 
196
317
  # St. Nicholas of Flüe.
197
318
  self._add_holiday_sep_25(tr("Bruder Klaus"))
319
+
198
320
  self._add_all_saints_day(tr("Allerheiligen"))
321
+
199
322
  self._add_immaculate_conception_day(tr("Mariä Empfängnis"))
200
323
 
324
+ def _populate_subdiv_ow_optional_holidays(self):
325
+ self._add_new_years_day_two(tr("Berchtoldstag"))
326
+
327
+ self._add_easter_monday(tr("Ostermontag"))
328
+
329
+ self._add_whit_monday(tr("Pfingstmontag"))
330
+
331
+ self._add_christmas_day_two(tr("Stephanstag"))
332
+
201
333
  def _populate_subdiv_sg_public_holidays(self):
334
+ self._add_good_friday(tr("Karfreitag"))
335
+
336
+ self._add_easter_monday(tr("Ostermontag"))
337
+
338
+ self._add_whit_monday(tr("Pfingstmontag"))
339
+
202
340
  self._add_all_saints_day(tr("Allerheiligen"))
203
341
 
204
- def _populate_subdiv_sh_public_holidays(self):
342
+ self._add_christmas_day_two(tr("Stephanstag"))
343
+
344
+ def _populate_subdiv_sg_optional_holidays(self):
205
345
  self._add_new_years_day_two(tr("Berchtoldstag"))
346
+
347
+ def _populate_subdiv_sh_public_holidays(self):
348
+ self._add_good_friday(tr("Karfreitag"))
349
+
350
+ self._add_easter_monday(tr("Ostermontag"))
351
+
206
352
  self._add_labor_day(tr("Tag der Arbeit"))
207
353
 
354
+ self._add_whit_monday(tr("Pfingstmontag"))
355
+
356
+ self._add_christmas_day_two(tr("Stephanstag"))
357
+
358
+ def _populate_subdiv_sh_optional_holidays(self):
359
+ self._add_new_years_day_two(tr("Berchtoldstag"))
360
+
208
361
  def _populate_subdiv_sz_public_holidays(self):
209
362
  # Epiphany.
210
363
  self._add_epiphany_day(tr("Heilige Drei Könige"))
364
+
211
365
  self._add_saint_josephs_day(tr("Josefstag"))
366
+
367
+ self._add_good_friday(tr("Karfreitag"))
368
+
369
+ self._add_easter_monday(tr("Ostermontag"))
370
+
371
+ self._add_whit_monday(tr("Pfingstmontag"))
372
+
212
373
  self._add_corpus_christi_day(tr("Fronleichnam"))
374
+
213
375
  self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
376
+
214
377
  self._add_all_saints_day(tr("Allerheiligen"))
378
+
215
379
  self._add_immaculate_conception_day(tr("Mariä Empfängnis"))
216
380
 
381
+ self._add_christmas_day_two(tr("Stephanstag"))
382
+
217
383
  def _populate_subdiv_so_public_holidays(self):
218
- self._add_new_years_day_two(tr("Berchtoldstag"))
384
+ self._add_good_friday(tr("Karfreitag"))
385
+
386
+ def _populate_subdiv_so_half_day_holidays(self):
219
387
  self._add_labor_day(tr("Tag der Arbeit"))
220
388
 
389
+ def _populate_subdiv_so_optional_holidays(self):
390
+ self._add_new_years_day_two(tr("Berchtoldstag"))
391
+
221
392
  def _populate_subdiv_tg_public_holidays(self):
222
393
  self._add_new_years_day_two(tr("Berchtoldstag"))
394
+
223
395
  self._add_labor_day(tr("Tag der Arbeit"))
224
396
 
397
+ self._add_good_friday(tr("Karfreitag"))
398
+
399
+ self._add_easter_monday(tr("Ostermontag"))
400
+
401
+ self._add_whit_monday(tr("Pfingstmontag"))
402
+
403
+ self._add_christmas_day_two(tr("Stephanstag"))
404
+
225
405
  def _populate_subdiv_ti_public_holidays(self):
226
406
  self._add_epiphany_day(tr("Heilige Drei Könige"))
407
+
227
408
  self._add_saint_josephs_day(tr("Josefstag"))
409
+
410
+ self._add_easter_monday(tr("Ostermontag"))
411
+
228
412
  self._add_labor_day(tr("Tag der Arbeit"))
413
+
414
+ self._add_whit_monday(tr("Pfingstmontag"))
415
+
229
416
  self._add_corpus_christi_day(tr("Fronleichnam"))
230
417
 
231
418
  # Saints Peter and Paul.
232
419
  self._add_saints_peter_and_paul_day(tr("Peter und Paul"))
420
+
233
421
  self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
422
+
234
423
  self._add_all_saints_day(tr("Allerheiligen"))
424
+
235
425
  self._add_immaculate_conception_day(tr("Mariä Empfängnis"))
236
426
 
427
+ self._add_christmas_day_two(tr("Stephanstag"))
428
+
237
429
  def _populate_subdiv_ur_public_holidays(self):
238
430
  self._add_epiphany_day(tr("Heilige Drei Könige"))
431
+
239
432
  self._add_saint_josephs_day(tr("Josefstag"))
433
+
434
+ self._add_good_friday(tr("Karfreitag"))
435
+
436
+ self._add_easter_monday(tr("Ostermontag"))
437
+
438
+ self._add_whit_monday(tr("Pfingstmontag"))
439
+
240
440
  self._add_corpus_christi_day(tr("Fronleichnam"))
441
+
241
442
  self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
443
+
242
444
  self._add_all_saints_day(tr("Allerheiligen"))
445
+
243
446
  self._add_immaculate_conception_day(tr("Mariä Empfängnis"))
244
447
 
448
+ if not self._is_monday(self._christmas_day) and not self._is_friday(self._christmas_day):
449
+ self._add_christmas_day_two(tr("Stephanstag"))
450
+
245
451
  def _populate_subdiv_vd_public_holidays(self):
246
452
  self._add_new_years_day_two(tr("Berchtoldstag"))
247
453
 
248
- # Monday after the third Sunday of September
454
+ self._add_good_friday(tr("Karfreitag"))
455
+
456
+ self._add_easter_monday(tr("Ostermontag"))
457
+
458
+ self._add_whit_monday(tr("Pfingstmontag"))
459
+
249
460
  # Prayer Monday.
250
461
  self._add_holiday_1_day_past_3rd_sun_of_sep(tr("Bettagsmontag"))
251
462
 
252
463
  def _populate_subdiv_vs_public_holidays(self):
253
464
  self._add_saint_josephs_day(tr("Josefstag"))
465
+
254
466
  self._add_corpus_christi_day(tr("Fronleichnam"))
467
+
255
468
  self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
469
+
256
470
  self._add_all_saints_day(tr("Allerheiligen"))
471
+
257
472
  self._add_immaculate_conception_day(tr("Mariä Empfängnis"))
258
473
 
259
- def _populate_subdiv_zg_public_holidays(self):
474
+ def _populate_subdiv_vs_optional_holidays(self):
260
475
  self._add_new_years_day_two(tr("Berchtoldstag"))
476
+
477
+ self._add_easter_monday(tr("Ostermontag"))
478
+
479
+ self._add_whit_monday(tr("Pfingstmontag"))
480
+
481
+ self._add_christmas_day_two(tr("Stephanstag"))
482
+
483
+ def _populate_subdiv_zg_public_holidays(self):
484
+ self._add_good_friday(tr("Karfreitag"))
485
+
261
486
  self._add_corpus_christi_day(tr("Fronleichnam"))
487
+
262
488
  self._add_assumption_of_mary_day(tr("Mariä Himmelfahrt"))
489
+
263
490
  self._add_all_saints_day(tr("Allerheiligen"))
491
+
264
492
  self._add_immaculate_conception_day(tr("Mariä Empfängnis"))
265
493
 
494
+ def _populate_subdiv_zg_optional_holidays(self):
495
+ self._add_new_years_day_two(tr("Berchtoldstag"))
496
+
497
+ self._add_easter_monday(tr("Ostermontag"))
498
+
499
+ self._add_whit_monday(tr("Pfingstmontag"))
500
+
501
+ self._add_christmas_day_two(tr("Stephanstag"))
502
+
266
503
  def _populate_subdiv_zh_public_holidays(self):
267
504
  self._add_new_years_day_two(tr("Berchtoldstag"))
505
+
506
+ self._add_good_friday(tr("Karfreitag"))
507
+
508
+ self._add_easter_monday(tr("Ostermontag"))
509
+
268
510
  self._add_labor_day(tr("Tag der Arbeit"))
269
511
 
512
+ self._add_whit_monday(tr("Pfingstmontag"))
513
+
514
+ self._add_christmas_day_two(tr("Stephanstag"))
515
+
270
516
 
271
517
  class CH(Switzerland):
272
518
  pass