holidays 0.76__py3-none-any.whl → 0.77__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 (85) hide show
  1. holidays/countries/__init__.py +19 -0
  2. holidays/countries/australia.py +6 -8
  3. holidays/countries/british_virgin_islands.py +6 -6
  4. holidays/countries/cabo_verde.py +293 -0
  5. holidays/countries/cayman_islands.py +162 -0
  6. holidays/countries/central_african_republic.py +143 -0
  7. holidays/countries/christmas_island.py +215 -0
  8. holidays/countries/cocos_islands.py +4 -4
  9. holidays/countries/dr_congo.py +139 -0
  10. holidays/countries/faroe_islands.py +102 -0
  11. holidays/countries/georgia.py +11 -5
  12. holidays/countries/gibraltar.py +219 -0
  13. holidays/countries/guernsey.py +6 -6
  14. holidays/countries/japan.py +6 -8
  15. holidays/countries/jersey.py +2 -2
  16. holidays/countries/lebanon.py +448 -0
  17. holidays/countries/mali.py +151 -0
  18. holidays/countries/montserrat.py +177 -0
  19. holidays/countries/nepal.py +8 -8
  20. holidays/countries/new_zealand.py +2 -2
  21. holidays/countries/niue.py +115 -0
  22. holidays/countries/norfolk_island.py +129 -0
  23. holidays/countries/palau.py +1 -1
  24. holidays/countries/palestine.py +177 -0
  25. holidays/countries/peru.py +12 -0
  26. holidays/countries/saint_vincent_and_the_grenadines.py +130 -0
  27. holidays/countries/seychelles.py +1 -1
  28. holidays/countries/solomon_islands.py +2 -2
  29. holidays/countries/tokelau.py +66 -0
  30. holidays/countries/turks_and_caicos_islands.py +2 -2
  31. holidays/countries/united_kingdom.py +2 -2
  32. holidays/countries/united_states.py +2 -5
  33. holidays/groups/christian.py +10 -10
  34. holidays/groups/hebrew.py +2 -2
  35. holidays/groups/islamic.py +17 -0
  36. holidays/holiday_base.py +1 -1
  37. holidays/locale/ar/LC_MESSAGES/LB.mo +0 -0
  38. holidays/locale/ar/LC_MESSAGES/PS.mo +0 -0
  39. holidays/locale/da/LC_MESSAGES/FO.mo +0 -0
  40. holidays/locale/de/LC_MESSAGES/CV.mo +0 -0
  41. holidays/locale/en_CX/LC_MESSAGES/CX.mo +0 -0
  42. holidays/locale/en_GB/LC_MESSAGES/GI.mo +0 -0
  43. holidays/locale/en_GB/LC_MESSAGES/KY.mo +0 -0
  44. holidays/locale/en_MS/LC_MESSAGES/MS.mo +0 -0
  45. holidays/locale/en_NF/LC_MESSAGES/NF.mo +0 -0
  46. holidays/locale/en_NU/LC_MESSAGES/NU.mo +0 -0
  47. holidays/locale/en_TK/LC_MESSAGES/TK.mo +0 -0
  48. holidays/locale/en_US/LC_MESSAGES/CD.mo +0 -0
  49. holidays/locale/en_US/LC_MESSAGES/CF.mo +0 -0
  50. holidays/locale/en_US/LC_MESSAGES/CV.mo +0 -0
  51. holidays/locale/en_US/LC_MESSAGES/CX.mo +0 -0
  52. holidays/locale/en_US/LC_MESSAGES/FO.mo +0 -0
  53. holidays/locale/en_US/LC_MESSAGES/GI.mo +0 -0
  54. holidays/locale/en_US/LC_MESSAGES/KY.mo +0 -0
  55. holidays/locale/en_US/LC_MESSAGES/LB.mo +0 -0
  56. holidays/locale/en_US/LC_MESSAGES/ML.mo +0 -0
  57. holidays/locale/en_US/LC_MESSAGES/MS.mo +0 -0
  58. holidays/locale/en_US/LC_MESSAGES/NF.mo +0 -0
  59. holidays/locale/en_US/LC_MESSAGES/NU.mo +0 -0
  60. holidays/locale/en_US/LC_MESSAGES/PE.mo +0 -0
  61. holidays/locale/en_US/LC_MESSAGES/PS.mo +0 -0
  62. holidays/locale/en_US/LC_MESSAGES/TK.mo +0 -0
  63. holidays/locale/en_US/LC_MESSAGES/VC.mo +0 -0
  64. holidays/locale/en_VC/LC_MESSAGES/VC.mo +0 -0
  65. holidays/locale/es/LC_MESSAGES/CV.mo +0 -0
  66. holidays/locale/fo/LC_MESSAGES/FO.mo +0 -0
  67. holidays/locale/fr/LC_MESSAGES/CD.mo +0 -0
  68. holidays/locale/fr/LC_MESSAGES/CF.mo +0 -0
  69. holidays/locale/fr/LC_MESSAGES/CV.mo +0 -0
  70. holidays/locale/fr/LC_MESSAGES/ML.mo +0 -0
  71. holidays/locale/is/LC_MESSAGES/FO.mo +0 -0
  72. holidays/locale/no/LC_MESSAGES/FO.mo +0 -0
  73. holidays/locale/pt_CV/LC_MESSAGES/CV.mo +0 -0
  74. holidays/locale/sv/LC_MESSAGES/FO.mo +0 -0
  75. holidays/locale/tkl/LC_MESSAGES/TK.mo +0 -0
  76. holidays/locale/uk/LC_MESSAGES/PE.mo +0 -0
  77. holidays/observed_holiday_base.py +3 -1
  78. holidays/registry.py +15 -0
  79. holidays/version.py +1 -1
  80. {holidays-0.76.dist-info → holidays-0.77.dist-info}/METADATA +107 -2
  81. {holidays-0.76.dist-info → holidays-0.77.dist-info}/RECORD +85 -32
  82. {holidays-0.76.dist-info → holidays-0.77.dist-info}/licenses/CONTRIBUTORS +3 -0
  83. {holidays-0.76.dist-info → holidays-0.77.dist-info}/WHEEL +0 -0
  84. {holidays-0.76.dist-info → holidays-0.77.dist-info}/licenses/LICENSE +0 -0
  85. {holidays-0.76.dist-info → holidays-0.77.dist-info}/top_level.txt +0 -0
@@ -46,12 +46,16 @@ from holidays.countries.brunei import Brunei, BN, BRN
46
46
  from holidays.countries.bulgaria import Bulgaria, BG, BLG
47
47
  from holidays.countries.burkina_faso import BurkinaFaso, BF, BFA
48
48
  from holidays.countries.burundi import Burundi, BI, BDI
49
+ from holidays.countries.cabo_verde import CaboVerde, CV, CPV
49
50
  from holidays.countries.cambodia import Cambodia, KH, KHM
50
51
  from holidays.countries.cameroon import Cameroon, CM, CMR
51
52
  from holidays.countries.canada import Canada, CA, CAN
53
+ from holidays.countries.cayman_islands import CaymanIslands, KY, CYM
54
+ from holidays.countries.central_african_republic import CentralAfricanRepublic, CF, CAF
52
55
  from holidays.countries.chad import Chad, TD, TCD
53
56
  from holidays.countries.chile import Chile, CL, CHL
54
57
  from holidays.countries.china import China, CN, CHN
58
+ from holidays.countries.christmas_island import ChristmasIsland, CX, CXR
55
59
  from holidays.countries.cocos_islands import CocosIslands, CC, CCK
56
60
  from holidays.countries.colombia import Colombia, CO, COL
57
61
  from holidays.countries.congo import Congo, CG, COG
@@ -66,6 +70,7 @@ from holidays.countries.denmark import Denmark, DK, DNK
66
70
  from holidays.countries.djibouti import Djibouti, DJ, DJI
67
71
  from holidays.countries.dominica import Dominica, DM, DMA
68
72
  from holidays.countries.dominican_republic import DominicanRepublic, DO, DOM
73
+ from holidays.countries.dr_congo import DRCongo, CD, COD
69
74
  from holidays.countries.ecuador import Ecuador, EC, ECU
70
75
  from holidays.countries.egypt import Egypt, EG, EGY
71
76
  from holidays.countries.el_salvador import ElSalvador, SV, SLV
@@ -74,6 +79,7 @@ from holidays.countries.estonia import Estonia, EE, EST
74
79
  from holidays.countries.eswatini import Eswatini, SZ, SZW, Swaziland
75
80
  from holidays.countries.ethiopia import Ethiopia, ET, ETH
76
81
  from holidays.countries.falkland_islands import FalklandIslands, FK, FLK
82
+ from holidays.countries.faroe_islands import FaroeIslands, FO, FRO
77
83
  from holidays.countries.fiji import Fiji, FJ, FJI
78
84
  from holidays.countries.finland import Finland, FI, FIN
79
85
  from holidays.countries.france import France, FR, FRA
@@ -89,6 +95,7 @@ from holidays.countries.gabon import Gabon, GA, GAB
89
95
  from holidays.countries.georgia import Georgia, GE, GEO
90
96
  from holidays.countries.germany import Germany, DE, DEU
91
97
  from holidays.countries.ghana import Ghana, GH, GHA
98
+ from holidays.countries.gibraltar import Gibraltar, GI, GIB
92
99
  from holidays.countries.greece import Greece, GR, GRC
93
100
  from holidays.countries.greenland import Greenland, GL, GRL
94
101
  from holidays.countries.grenada import Grenada, GD, GRD
@@ -121,6 +128,7 @@ from holidays.countries.kuwait import Kuwait, KW, KWT
121
128
  from holidays.countries.kyrgyzstan import Kyrgyzstan, KG, KGZ
122
129
  from holidays.countries.laos import Laos, LA, LAO
123
130
  from holidays.countries.latvia import Latvia, LV, LVA
131
+ from holidays.countries.lebanon import Lebanon, LB, LBN
124
132
  from holidays.countries.lesotho import Lesotho, LS, LSO
125
133
  from holidays.countries.libya import Libya, LY, LBY
126
134
  from holidays.countries.liechtenstein import Liechtenstein, LI, LIE
@@ -131,6 +139,7 @@ from holidays.countries.madagascar import Madagascar, MG, MDG
131
139
  from holidays.countries.malawi import Malawi, MW, MWI
132
140
  from holidays.countries.malaysia import Malaysia, MY, MYS
133
141
  from holidays.countries.maldives import Maldives, MV, MDV
142
+ from holidays.countries.mali import Mali, ML, MLI
134
143
  from holidays.countries.malta import Malta, MT, MLT
135
144
  from holidays.countries.marshall_islands import MarshallIslands, MH, MHL, HolidaysMH
136
145
  from holidays.countries.martinique import Martinique, MQ, MTQ, HolidaysMQ
@@ -143,6 +152,7 @@ from holidays.countries.moldova import Moldova, MD, MDA
143
152
  from holidays.countries.monaco import Monaco, MC, MCO
144
153
  from holidays.countries.mongolia import Mongolia, MN, MNG
145
154
  from holidays.countries.montenegro import Montenegro, ME, MNE
155
+ from holidays.countries.montserrat import Montserrat, MS, MSR
146
156
  from holidays.countries.morocco import Morocco, MA, MOR
147
157
  from holidays.countries.mozambique import Mozambique, MZ, MOZ
148
158
  from holidays.countries.namibia import Namibia, NA, NAM
@@ -154,12 +164,15 @@ from holidays.countries.new_zealand import NewZealand, NZ, NZL
154
164
  from holidays.countries.nicaragua import Nicaragua, NI, NIC
155
165
  from holidays.countries.niger import Niger, NE, NER
156
166
  from holidays.countries.nigeria import Nigeria, NG, NGA
167
+ from holidays.countries.niue import Niue, NU, NIU
168
+ from holidays.countries.norfolk_island import NorfolkIsland, NF, NFK
157
169
  from holidays.countries.north_macedonia import NorthMacedonia, MK, MKD
158
170
  from holidays.countries.northern_mariana_islands import NorthernMarianaIslands, MP, MNP, HolidaysMP
159
171
  from holidays.countries.norway import Norway, NO, NOR
160
172
  from holidays.countries.oman import Oman, OM, OMN
161
173
  from holidays.countries.pakistan import Pakistan, PK, PAK
162
174
  from holidays.countries.palau import Palau, PW, PLW
175
+ from holidays.countries.palestine import Palestine, PS, PSE
163
176
  from holidays.countries.panama import Panama, PA, PAN
164
177
  from holidays.countries.papua_new_guinea import PapuaNewGuinea, PG, PNG
165
178
  from holidays.countries.paraguay import Paraguay, PY, PRY
@@ -182,6 +195,11 @@ from holidays.countries.saint_pierre_and_miquelon import (
182
195
  SPM,
183
196
  HolidaysPM,
184
197
  )
198
+ from holidays.countries.saint_vincent_and_the_grenadines import (
199
+ SaintVincentAndTheGrenadines,
200
+ VC,
201
+ VCT,
202
+ )
185
203
  from holidays.countries.samoa import Samoa, WS, WSM
186
204
  from holidays.countries.san_marino import SanMarino, SM, SMR
187
205
  from holidays.countries.sao_tome_and_principe import SaoTomeAndPrincipe, ST, STP
@@ -208,6 +226,7 @@ from holidays.countries.tanzania import Tanzania, TZ, TZA
208
226
  from holidays.countries.thailand import Thailand, TH, THA
209
227
  from holidays.countries.timor_leste import TimorLeste, TL, TLS
210
228
  from holidays.countries.togo import Togo, TG, TGO
229
+ from holidays.countries.tokelau import Tokelau, TK, TKL
211
230
  from holidays.countries.tonga import Tonga, TO, TON
212
231
  from holidays.countries.trinidad_and_tobago import TrinidadAndTobago, TT, TTO
213
232
  from holidays.countries.tunisia import Tunisia, TN, TUN
@@ -529,8 +529,8 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
529
529
  }
530
530
  # The Royal Queensland Show.
531
531
  name = tr("The Royal Queensland Show")
532
- if self._year in ekka_dates:
533
- self._add_holiday(name, ekka_dates[self._year])
532
+ if dt := ekka_dates.get(self._year):
533
+ self._add_holiday(name, dt)
534
534
  else:
535
535
  # [1st FRI after Aug 5] + 5 days = [1st WED after Aug 10]
536
536
  self._add_holiday_1st_wed_from_aug_10(name)
@@ -839,8 +839,8 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
839
839
  }
840
840
  # Grand Final Day.
841
841
  name = tr("Grand Final Day")
842
- if self._year in grand_final_dates:
843
- self._add_holiday(name, grand_final_dates[self._year])
842
+ if dt := grand_final_dates.get(self._year):
843
+ self._add_holiday(name, dt)
844
844
  else:
845
845
  self._add_holiday_1_day_prior_last_sat_of_sep(name)
846
846
 
@@ -937,10 +937,8 @@ class Australia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, S
937
937
  2012: (OCT, 1),
938
938
  2024: (SEP, 23),
939
939
  }
940
- if self._year in sovereign_birthday_dates:
941
- self._add_holiday(
942
- self.sovereign_birthday, sovereign_birthday_dates[self._year]
943
- )
940
+ if dt := sovereign_birthday_dates.get(self._year):
941
+ self._add_holiday(self.sovereign_birthday, dt)
944
942
  else:
945
943
  self._add_holiday_last_mon_of_sep(self.sovereign_birthday)
946
944
  else:
@@ -89,8 +89,8 @@ class BritishVirginIslands(
89
89
  2019: (JUN, 7),
90
90
  2023: (JUN, 16),
91
91
  }
92
- if self._year in sovereign_birthday_dates:
93
- self._add_holiday(name, sovereign_birthday_dates[self._year])
92
+ if dt := sovereign_birthday_dates.get(self._year):
93
+ self._add_holiday(name, dt)
94
94
  else:
95
95
  self._add_holiday_2nd_fri_of_jun(name)
96
96
  else:
@@ -110,8 +110,8 @@ class BritishVirginIslands(
110
110
  2015: (JUN, 29),
111
111
  2020: (JUN, 29),
112
112
  }
113
- if self._year in territory_day_dates:
114
- self._add_holiday(name, territory_day_dates[self._year])
113
+ if dt := territory_day_dates.get(self._year):
114
+ self._add_holiday(name, dt)
115
115
  else:
116
116
  if self._year >= 2021:
117
117
  self._add_holiday_1st_mon_of_jul(name)
@@ -151,8 +151,8 @@ class BritishVirginIslands(
151
151
  2015: (OCT, 19),
152
152
  2020: (OCT, 23),
153
153
  }
154
- if self._year in saint_ursula_dates:
155
- self._add_holiday(name, saint_ursula_dates[self._year])
154
+ if dt := saint_ursula_dates.get(self._year):
155
+ self._add_holiday(name, dt)
156
156
  else:
157
157
  self._add_observed(
158
158
  self._add_holiday_oct_21(name), rule=SAT_TO_PREV_FRI + SUN_TO_NEXT_MON
@@ -0,0 +1,293 @@
1
+ # holidays
2
+ # --------
3
+ # A fast, efficient Python library for generating country, province and state
4
+ # specific sets of holidays on the fly. It aims to make determining whether a
5
+ # specific date is a holiday as fast and flexible as possible.
6
+ #
7
+ # Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
8
+ # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
+ # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
+ # Website: https://github.com/vacanza/holidays
11
+ # License: MIT (see LICENSE file)
12
+
13
+ from gettext import gettext as tr
14
+
15
+ from holidays.constants import OPTIONAL, PUBLIC
16
+ from holidays.groups import ChristianHolidays, InternationalHolidays
17
+ from holidays.holiday_base import HolidayBase
18
+
19
+
20
+ class CaboVerde(HolidayBase, ChristianHolidays, InternationalHolidays):
21
+ """Cabo Verde holidays.
22
+
23
+ References:
24
+ * [Public holidays in Cape Verde](https://en.wikipedia.org/wiki/Public_holidays_in_Cape_Verde)
25
+ * [Legislação Municipal Cabo-Verdiana](https://web.archive.org/web/20180820172827/http://www.interface.gov.cv/index.php?option=com_docman&task=doc_download&gid=12&Itemid=314)
26
+ * [Feriados Bancários - Banco de Cabo Verde](https://web.archive.org/web/20250629042854/https://www.bcv.cv/pt/SistemadePagamentos/feriados_bancarios/Paginas/FeriadosBancarios.aspx)
27
+ * [Feriados Públicos - Feel Cabo Verde](https://web.archive.org/web/20250419201823/https://feelcaboverde.com/feriados-publicos/)
28
+ * [Public Holidays - Feel Cape Verde](https://web.archive.org/web/20250419202739/https://feelcaboverde.com/en/public-holidays-cape-verde/)
29
+ * [Democracy Day](https://web.archive.org/web/20250420093850/https://cmsv.cv/dia-da-liberdade-e-democracia-de-cabo-verde/)
30
+ """
31
+
32
+ country = "CV"
33
+ default_language = "pt_CV"
34
+ start_year = 1976
35
+ subdivisions = (
36
+ "BR", # Brava.
37
+ "BV", # Boa Vista.
38
+ "CA", # Santa Catarina.
39
+ "CF", # Santa Catarina do Fogo.
40
+ "CR", # Santa Cruz.
41
+ "MA", # Maio.
42
+ "MO", # Mosteiros.
43
+ "PA", # Paul.
44
+ "PN", # Porto Novo.
45
+ "PR", # Praia.
46
+ "RB", # Ribeira Brava
47
+ "RG", # Ribeira Grande.
48
+ "RS", # Ribeira Grande de Santiago.
49
+ "SD", # São Domingos.
50
+ "SF", # São Filipe.
51
+ "SL", # Sal.
52
+ "SM", # São Miguel.
53
+ "SO", # São Lourenço dos Órgãos.
54
+ "SS", # São Salvador do Mundo.
55
+ "SV", # São Vicente.
56
+ "TA", # Tarrafal.
57
+ "TS", # Tarrafal de São Nicolau.
58
+ )
59
+
60
+ subdivisions_aliases = {
61
+ "Brava": "BR",
62
+ "Boa Vista": "BV",
63
+ "Santa Catarina": "CA",
64
+ "Santa Catarina do Fogo": "CF",
65
+ "Santa Cruz": "CR",
66
+ "Maio": "MA",
67
+ "Mosteiros": "MO",
68
+ "Paul": "PA",
69
+ "Porto Novo": "PN",
70
+ "Praia": "PR",
71
+ "Ribeira Brava": "RB",
72
+ "Ribeira Grande": "RG",
73
+ "Ribeira Grande de Santiago": "RS",
74
+ "São Domingos": "SD",
75
+ "São Filipe": "SF",
76
+ "Sal": "SL",
77
+ "São Miguel": "SM",
78
+ "São Lourenço dos Órgãos": "SO",
79
+ "São Salvador do Mundo": "SS",
80
+ "São Vicente": "SV",
81
+ "Tarrafal": "TA",
82
+ "Tarrafal de São Nicolau": "TS",
83
+ }
84
+ supported_categories = (OPTIONAL, PUBLIC)
85
+ supported_languages = ("de", "en_US", "es", "fr", "pt_CV")
86
+
87
+ def __init__(self, *args, **kwargs) -> None:
88
+ ChristianHolidays.__init__(self)
89
+ InternationalHolidays.__init__(self)
90
+ super().__init__(*args, **kwargs)
91
+
92
+ def _populate_public_holidays(self):
93
+ # New Year's Day.
94
+ self._add_new_years_day(tr("Ano Novo"))
95
+
96
+ # Law # 95/V/99 of March 22nd.
97
+ if self._year >= 2000:
98
+ # Democracy and Freedom Day.
99
+ self._add_holiday_jan_13(tr("Dia da Liberdade e da Democracia"))
100
+
101
+ # National Heroes Day.
102
+ self._add_holiday_jan_20(tr("Dia da Nacionalidade e dos Heróis Nacionais"))
103
+
104
+ # Ash Wednesday.
105
+ self._add_ash_wednesday(tr("Quarta-feira de Cinzas"))
106
+
107
+ # Good Friday.
108
+ self._add_good_friday(tr("Sexta-feira Santa"))
109
+
110
+ # Easter Sunday.
111
+ self._add_easter_sunday(tr("Páscoa"))
112
+
113
+ # Worker's Day.
114
+ self._add_labor_day(tr("Dia do Trabalhador"))
115
+
116
+ # Law # 69/VI/2005 of May 31st.
117
+ if self._year >= 2005:
118
+ # International Children's Day.
119
+ self._add_childrens_day(tr("Dia Mundial da Criança"))
120
+
121
+ # Independence Day.
122
+ self._add_holiday_jul_5(tr("Dia da Independência Nacional"))
123
+
124
+ # Assumption Day.
125
+ self._add_assumption_of_mary_day(tr("Dia da Assunção"))
126
+
127
+ # All Saints' Day.
128
+ self._add_all_saints_day(tr("Dia de Todos os Santos"))
129
+
130
+ # Christmas Day.
131
+ self._add_christmas_day(tr("Dia do Natal"))
132
+
133
+ def _populate_optional_holidays(self):
134
+ # Holy Thursday.
135
+ self._add_holy_thursday(tr("Quinta-Feira Santa"))
136
+
137
+ # Mother's Day.
138
+ self._add_holiday_2nd_sun_of_may(tr("Dia das Mães"))
139
+
140
+ # Father's Day.
141
+ self._add_holiday_3rd_sun_of_jun(tr("Dia dos Pais"))
142
+
143
+ def _populate_subdiv_br_public_holidays(self):
144
+ # Law # 93/82 of November 6th.
145
+ if self._year >= 1983:
146
+ # Brava Municipality Day.
147
+ self._add_holiday_jun_24(tr("Dia do Município da Brava"))
148
+
149
+ def _populate_subdiv_bv_public_holidays(self):
150
+ # Law # 93/82 of November 6th.
151
+ if self._year >= 1983:
152
+ # Boa Vista Municipality Day.
153
+ self._add_holiday_jul_4(tr("Dia do Município da Boa Vista"))
154
+
155
+ def _populate_subdiv_ca_public_holidays(self):
156
+ # Law # 93/82 of November 6th.
157
+ if self._year >= 1982:
158
+ # Santa Catarina de Santiago Municipality Day.
159
+ self._add_holiday_nov_25(tr("Dia do Município de Santa Catarina de Santiago"))
160
+
161
+ def _populate_subdiv_cf_public_holidays(self):
162
+ # Law # 66/VI/2005 of May 9th.
163
+ if self._year >= 2005:
164
+ # Santa Catarina do Fogo Municipality Day.
165
+ self._add_holiday_nov_25(tr("Dia do Município de Santa Catarina do Fogo"))
166
+
167
+ def _populate_subdiv_cr_public_holidays(self):
168
+ # Law # 93/82 of November 6th.
169
+ if self._year >= 1983:
170
+ # Santa Cruz Municipality Day.
171
+ self._add_holiday_jul_25(tr("Dia do Município de Santa Cruz"))
172
+
173
+ def _populate_subdiv_ma_public_holidays(self):
174
+ # Law # 93/82 of November 6th.
175
+ if self._year >= 1983:
176
+ # Maio Municipality Day.
177
+ self._add_holiday_sep_8(tr("Dia do Município do Maio"))
178
+
179
+ def _populate_subdiv_mo_public_holidays(self):
180
+ # Law # 23/IV/91 of December 30th.
181
+ if self._year >= 1992:
182
+ # Mosteiros Municipality Day.
183
+ self._add_holiday_aug_15(tr("Dia do Município dos Mosteiros"))
184
+
185
+ def _populate_subdiv_pa_public_holidays(self):
186
+ # Law # 93/82 of November 6th.
187
+ if self._year >= 1983:
188
+ # Santo Antão Island Day.
189
+ self._add_holiday_jan_17(tr("Dia da Ilha de Santo Antão"))
190
+
191
+ # Paúl Municipality Day.
192
+ self._add_holiday_jun_13(tr("Dia do Município do Paúl"))
193
+
194
+ def _populate_subdiv_pn_public_holidays(self):
195
+ # Law # 93/82 of November 6th.
196
+ if self._year >= 1983:
197
+ # Santo Antão Island Day.
198
+ self._add_holiday_jan_17(tr("Dia da Ilha de Santo Antão"))
199
+
200
+ # Porto Novo Municipality Day.
201
+ self._add_holiday_sep_2(tr("Dia do Município do Porto Novo"))
202
+
203
+ def _populate_subdiv_pr_public_holidays(self):
204
+ # Law # 93/82 of November 6th.
205
+ if self._year >= 1983:
206
+ # Praia Municipality Day.
207
+ self._add_holiday_may_19(tr("Dia do Município da Praia"))
208
+
209
+ def _populate_subdiv_rb_public_holidays(self):
210
+ # Law # 67/VI/2005 of May 9th.
211
+ if self._year >= 2005:
212
+ # Ribeira Brava Municipality Day.
213
+ self._add_holiday_dec_6(tr("Dia do Município de Ribeira Brava"))
214
+
215
+ def _populate_subdiv_rg_public_holidays(self):
216
+ # Law # 93/82 of November 6th.
217
+ if self._year >= 1983:
218
+ # Santo Antão Island Day.
219
+ self._add_holiday_jan_17(tr("Dia da Ilha de Santo Antão"))
220
+
221
+ # Ribeira Grande Municipality Day.
222
+ self._add_holiday_may_7(tr("Dia do Município de Ribeira Grande"))
223
+
224
+ def _populate_subdiv_rs_public_holidays(self):
225
+ # Law # 63/VI/2005 of May 9th.
226
+ if self._year >= 2006:
227
+ # Ribeira Grande de Santiago Municipality Day.
228
+ self._add_holiday_jan_31(tr("Dia do Município de Ribeira Grande de Santiago"))
229
+
230
+ def _populate_subdiv_sd_public_holidays(self):
231
+ # Law # 96/IV/93 of December 31st.
232
+ if self._year >= 1994:
233
+ # São Domingos Municipality Day.
234
+ self._add_holiday_mar_13(tr("Dia do Município de São Domingos"))
235
+
236
+ def _populate_subdiv_sf_public_holidays(self):
237
+ # Law # 23/IV/91 of December 30th.
238
+ if self._year >= 1992:
239
+ # São Filipe Municipality Day.
240
+ self._add_holiday_may_1(tr("Dia do Município de São Filipe"))
241
+
242
+ def _populate_subdiv_sl_public_holidays(self):
243
+ # Law # 93/82 of November 6th.
244
+ if self._year >= 1983:
245
+ # Sal Municipality Day.
246
+ self._add_holiday_sep_15(tr("Dia do Município do Sal"))
247
+
248
+ def _populate_subdiv_sm_public_holidays(self):
249
+ # Law # 11/V/96 of November 11th.
250
+ if self._year >= 1997:
251
+ # São Miguel Municipality Day.
252
+ self._add_holiday_sep_29(tr("Dia do Município de São Miguel"))
253
+
254
+ def _populate_subdiv_so_public_holidays(self):
255
+ # Law # 64/VI/2005 of May 9th.
256
+ if self._year >= 2005:
257
+ # São Lourenço dos Órgãos Municipality Day.
258
+ self._add_holiday_may_9(tr("Dia do Município de São Lourenço dos Órgãos"))
259
+
260
+ def _populate_subdiv_ss_public_holidays(self):
261
+ # Law # 65/VI/2005 of May 9th.
262
+ if self._year >= 2005:
263
+ # São Salvador do Mundo Municipality Day.
264
+ self._add_holiday_jul_19(tr("Dia do Município de São Salvador do Mundo"))
265
+
266
+ def _populate_subdiv_sv_public_holidays(self):
267
+ # Law # 93/82 of November 6th.
268
+ if self._year >= 1983:
269
+ # São Vicente Municipality Day.
270
+ self._add_holiday_jan_22(tr("Dia do Município de São Vicente"))
271
+
272
+ # Carnival Tuesday.
273
+ self._add_carnival_tuesday(tr("Terça-feira de Carnaval"))
274
+
275
+ def _populate_subdiv_ta_public_holidays(self):
276
+ # Law # 93/82 of November 6th.
277
+ if self._year >= 1983:
278
+ # Tarrafal de Santiago Municipality Day.
279
+ self._add_holiday_jan_15(tr("Dia do Município do Tarrafal de Santiago"))
280
+
281
+ def _populate_subdiv_ts_public_holidays(self):
282
+ # Law # 67/VI/2005 of May 9th.
283
+ if self._year >= 2005:
284
+ # Tarrafal de São Nicolau Municipality Day.
285
+ self._add_holiday_aug_2(tr("Dia do Município do Tarrafal de São Nicolau"))
286
+
287
+
288
+ class CV(CaboVerde):
289
+ pass
290
+
291
+
292
+ class CPV(CaboVerde):
293
+ pass
@@ -0,0 +1,162 @@
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 import APR, MAY, JUN, JUL, SEP, NOV, DEC
16
+ from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
17
+ from holidays.observed_holiday_base import (
18
+ ObservedHolidayBase,
19
+ SAT_SUN_TO_NEXT_MON,
20
+ SAT_SUN_TO_NEXT_MON_TUE,
21
+ )
22
+
23
+
24
+ class CaymanIslands(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
25
+ """Cayman Islands holidays.
26
+
27
+ References:
28
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_the_Cayman_Islands>
29
+ * [Public Holidays Law (2007 Revision)](https://web.archive.org/web/20250227060525/https://legislation.gov.ky/cms/images/LEGISLATION/PRINCIPAL/1964/1964-0140/PublicHolidaysAct_2007%20Revision_g.pdf)
30
+ * [Public Holidays Order, 2024](https://web.archive.org/web/20240518181823/https://legislation.gov.ky/cms/images/LEGISLATION/AMENDING/2024/2024-O004/PublicHolidaysOrder2024SL4of2024.pdf)
31
+ * [2006-2015](https://web.archive.org/web/20151014061601/http://www.gov.ky/portal/page?_pageid=1142,1592653&_dad=portal&_schema=PORTAL)
32
+ * [2016-2018](https://web.archive.org/web/20180330170202/http://www.gov.ky:80/portal/page/portal/cighome/cayman/islands/publicholidays)
33
+ * [2021](http://archive.today/2025.07.09-033240/https://www.gov.ky/news/press-release-details/public-holidays-for-2021)
34
+ * [2022](http://archive.today/2025.07.09-033515/https://www.gov.ky/news/press-release-details/public-holidays-2022)
35
+ * [2024](http://archive.today/2025.01.06-110234/https://www.gov.ky/calendar/public-holidays)
36
+ * [2025](http://archive.today/2025.07.09-033853/https://www.gov.ky/calendar/public-holidays)
37
+ """
38
+
39
+ country = "KY"
40
+ default_language = "en_GB"
41
+ # %s observed.
42
+ observed_label = tr("%s (observed)")
43
+ # Earliest year of holidays with an accessible online record.
44
+ start_year = 2006
45
+ supported_languages = ("en_GB", "en_US")
46
+
47
+ def __init__(self, *args, **kwargs):
48
+ ChristianHolidays.__init__(self)
49
+ InternationalHolidays.__init__(self)
50
+ StaticHolidays.__init__(self, cls=CaymanIslandsStaticHolidays)
51
+ kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_MON)
52
+ super().__init__(*args, **kwargs)
53
+
54
+ def _populate_public_holidays(self):
55
+ # New Year's Day.
56
+ self._add_observed(self._add_new_years_day(tr("New Year's Day")))
57
+
58
+ # National Heroes Day.
59
+ self._add_holiday_4th_mon_of_jan(tr("National Heroes Day"))
60
+
61
+ # Ash Wednesday.
62
+ self._add_ash_wednesday(tr("Ash Wednesday"))
63
+
64
+ # Good Friday.
65
+ self._add_good_friday(tr("Good Friday"))
66
+
67
+ # Easter Monday.
68
+ self._add_easter_monday(tr("Easter Monday"))
69
+
70
+ if self._year >= 2024:
71
+ # Emancipation Day.
72
+ self._add_holiday_1st_mon_of_may(tr("Emancipation Day"))
73
+
74
+ # Discovery Day.
75
+ self._add_holiday_3rd_mon_of_may(tr("Discovery Day"))
76
+
77
+ if self._year <= 2022:
78
+ queens_birthday_dates = {
79
+ 2007: (JUN, 18),
80
+ 2012: (JUN, 18),
81
+ 2013: (JUN, 17),
82
+ 2017: (JUN, 19),
83
+ 2022: (JUN, 6),
84
+ }
85
+ # Queen's Birthday.
86
+ name = tr("Queen's Birthday")
87
+ if dt := queens_birthday_dates.get(self._year):
88
+ self._add_holiday(name, dt)
89
+ else:
90
+ self._add_holiday_2_days_past_2nd_sat_of_jun(name)
91
+ else:
92
+ # King's Birthday.
93
+ self._add_holiday_2_days_past_3rd_sat_of_jun(tr("King's Birthday"))
94
+
95
+ # Constitution Day.
96
+ self._add_holiday_1st_mon_of_jul(tr("Constitution Day"))
97
+
98
+ # Remembrance Day.
99
+ self._add_holiday_2nd_mon_of_nov(tr("Remembrance Day"))
100
+
101
+ self._add_observed(
102
+ # Christmas Day.
103
+ self._add_christmas_day(tr("Christmas Day")),
104
+ rule=SAT_SUN_TO_NEXT_MON_TUE,
105
+ )
106
+
107
+ self._add_observed(
108
+ # Boxing Day.
109
+ self._add_christmas_day_two(tr("Boxing Day")),
110
+ rule=SAT_SUN_TO_NEXT_MON_TUE,
111
+ )
112
+
113
+
114
+ class KY(CaymanIslands):
115
+ pass
116
+
117
+
118
+ class CYM(CaymanIslands):
119
+ pass
120
+
121
+
122
+ class CaymanIslandsStaticHolidays:
123
+ """Cayman Islands special holidays.
124
+
125
+ References:
126
+ * [Public Holidays Order, 2009](https://archive.org/details/public-holidays-order-2009-sl-33-of-2009)
127
+ * [Public Holidays Order (No. 2), 2019](https://archive.org/details/public-holidays-no.-2-order-2019-sl-38-of-2019)
128
+ * [Public Holidays Order, 2025](https://archive.org/details/public-holidays-order-2025-sl-15-of-2025)
129
+ * [Referendum Day 2019](https://web.archive.org/web/20250711121821/https://www.facebook.com/ElectionsOffice/posts/reminder-the-referendum-vote-has-been-postponed-and-will-no-longer-take-place-th/2619995141431734/?_rdc=2&_rdr)
130
+ * [UK Royal Wedding](https://en.wikipedia.org/wiki/Wedding_of_Prince_William_and_Catherine_Middleton)
131
+ * [Queen Elizabeth II's Diamond Jubilee](https://web.archive.org/web/20210803202236/https://www.caymancompass.com/2012/06/06/queens-diamond-jubilee-feted/)
132
+ * [Queen Elizabeth II's Funeral](https://web.archive.org/web/20231226055510/https://www.caymancompass.com/2022/09/12/cayman-declares-public-holiday-for-queens-funeral/)
133
+ * [King Charles III's Coronation](https://web.archive.org/web/20250601214328/https://www.radiocayman.gov.ky/news/public-holidays-for-2023-unconfirmed)
134
+ """
135
+
136
+ # Referendum Day.
137
+ referendum_day_name = tr("Referendum Day")
138
+ # General Election Day.
139
+ general_election_day_name = tr("General Election Day")
140
+ special_public_holidays = {
141
+ 2009: (
142
+ # 2009 Cayman Islands Constitution Day.
143
+ (NOV, 6, tr("2009 Cayman Islands Constitution Day")),
144
+ (MAY, 20, general_election_day_name),
145
+ ),
146
+ # UK Royal Wedding.
147
+ 2011: (APR, 29, tr("UK Royal Wedding")),
148
+ 2012: (
149
+ # Queen Elizabeth II's Diamond Jubilee.
150
+ (JUN, 4, tr("Queen Elizabeth II's Diamond Jubilee")),
151
+ (JUL, 18, referendum_day_name),
152
+ ),
153
+ 2013: (MAY, 22, general_election_day_name),
154
+ 2017: (MAY, 24, general_election_day_name),
155
+ 2019: (DEC, 19, referendum_day_name),
156
+ 2021: (APR, 14, general_election_day_name),
157
+ # Queen Elizabeth II's Funeral.
158
+ 2022: (SEP, 19, tr("Queen Elizabeth II's Funeral")),
159
+ # King Charles III's Coronation.
160
+ 2023: (MAY, 8, tr("Coronation of His Majesty King Charles III")),
161
+ 2025: (APR, 30, general_election_day_name),
162
+ }