File: cabo_verde.py

package info (click to toggle)
python-holidays 0.86-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 57,296 kB
  • sloc: python: 117,830; javascript: 85; makefile: 59
file content (293 lines) | stat: -rw-r--r-- 11,101 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
#  holidays
#  --------
#  A fast, efficient Python library for generating country, province and state
#  specific sets of holidays on the fly. It aims to make determining whether a
#  specific date is a holiday as fast and flexible as possible.
#
#  Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
#           dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
#           ryanss <ryanssdev@icloud.com> (c) 2014-2017
#  Website: https://github.com/vacanza/holidays
#  License: MIT (see LICENSE file)

from gettext import gettext as tr

from holidays.constants import OPTIONAL, PUBLIC
from holidays.groups import ChristianHolidays, InternationalHolidays
from holidays.holiday_base import HolidayBase


class CaboVerde(HolidayBase, ChristianHolidays, InternationalHolidays):
    """Cabo Verde holidays.

    References:
        * [Public holidays in Cape Verde](https://en.wikipedia.org/wiki/Public_holidays_in_Cape_Verde)
        * [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)
        * [Feriados Bancários - Banco de Cabo Verde](https://web.archive.org/web/20250629042854/https://www.bcv.cv/pt/SistemadePagamentos/feriados_bancarios/Paginas/FeriadosBancarios.aspx)
        * [Feriados Públicos - Feel Cabo Verde](https://web.archive.org/web/20250419201823/https://feelcaboverde.com/feriados-publicos/)
        * [Public Holidays - Feel Cape Verde](https://web.archive.org/web/20250419202739/https://feelcaboverde.com/en/public-holidays-cape-verde/)
        * [Democracy Day](https://web.archive.org/web/20250420093850/https://cmsv.cv/dia-da-liberdade-e-democracia-de-cabo-verde/)
    """

    country = "CV"
    default_language = "pt_CV"
    start_year = 1976
    subdivisions = (
        "BR",  # Brava.
        "BV",  # Boa Vista.
        "CA",  # Santa Catarina.
        "CF",  # Santa Catarina do Fogo.
        "CR",  # Santa Cruz.
        "MA",  # Maio.
        "MO",  # Mosteiros.
        "PA",  # Paul.
        "PN",  # Porto Novo.
        "PR",  # Praia.
        "RB",  # Ribeira Brava
        "RG",  # Ribeira Grande.
        "RS",  # Ribeira Grande de Santiago.
        "SD",  # São Domingos.
        "SF",  # São Filipe.
        "SL",  # Sal.
        "SM",  # São Miguel.
        "SO",  # São Lourenço dos Órgãos.
        "SS",  # São Salvador do Mundo.
        "SV",  # São Vicente.
        "TA",  # Tarrafal.
        "TS",  # Tarrafal de São Nicolau.
    )

    subdivisions_aliases = {
        "Brava": "BR",
        "Boa Vista": "BV",
        "Santa Catarina": "CA",
        "Santa Catarina do Fogo": "CF",
        "Santa Cruz": "CR",
        "Maio": "MA",
        "Mosteiros": "MO",
        "Paul": "PA",
        "Porto Novo": "PN",
        "Praia": "PR",
        "Ribeira Brava": "RB",
        "Ribeira Grande": "RG",
        "Ribeira Grande de Santiago": "RS",
        "São Domingos": "SD",
        "São Filipe": "SF",
        "Sal": "SL",
        "São Miguel": "SM",
        "São Lourenço dos Órgãos": "SO",
        "São Salvador do Mundo": "SS",
        "São Vicente": "SV",
        "Tarrafal": "TA",
        "Tarrafal de São Nicolau": "TS",
    }
    supported_categories = (OPTIONAL, PUBLIC)
    supported_languages = ("de", "en_US", "es", "fr", "pt_CV")

    def __init__(self, *args, **kwargs) -> None:
        ChristianHolidays.__init__(self)
        InternationalHolidays.__init__(self)
        super().__init__(*args, **kwargs)

    def _populate_public_holidays(self):
        # New Year's Day.
        self._add_new_years_day(tr("Ano Novo"))

        # Law # 95/V/99 of March 22nd.
        if self._year >= 2000:
            # Democracy and Freedom Day.
            self._add_holiday_jan_13(tr("Dia da Liberdade e da Democracia"))

        # National Heroes Day.
        self._add_holiday_jan_20(tr("Dia da Nacionalidade e dos Heróis Nacionais"))

        # Ash Wednesday.
        self._add_ash_wednesday(tr("Quarta-feira de Cinzas"))

        # Good Friday.
        self._add_good_friday(tr("Sexta-feira Santa"))

        # Easter Sunday.
        self._add_easter_sunday(tr("Páscoa"))

        # Worker's Day.
        self._add_labor_day(tr("Dia do Trabalhador"))

        # Law # 69/VI/2005 of May 31st.
        if self._year >= 2005:
            # International Children's Day.
            self._add_childrens_day(tr("Dia Mundial da Criança"))

        # Independence Day.
        self._add_holiday_jul_5(tr("Dia da Independência Nacional"))

        # Assumption Day.
        self._add_assumption_of_mary_day(tr("Dia da Assunção"))

        # All Saints' Day.
        self._add_all_saints_day(tr("Dia de Todos os Santos"))

        # Christmas Day.
        self._add_christmas_day(tr("Dia do Natal"))

    def _populate_optional_holidays(self):
        # Holy Thursday.
        self._add_holy_thursday(tr("Quinta-Feira Santa"))

        # Mother's Day.
        self._add_holiday_2nd_sun_of_may(tr("Dia das Mães"))

        # Father's Day.
        self._add_holiday_3rd_sun_of_jun(tr("Dia dos Pais"))

    def _populate_subdiv_br_public_holidays(self):
        # Law # 93/82 of November 6th.
        if self._year >= 1983:
            # Brava Municipality Day.
            self._add_holiday_jun_24(tr("Dia do Município da Brava"))

    def _populate_subdiv_bv_public_holidays(self):
        # Law # 93/82 of November 6th.
        if self._year >= 1983:
            # Boa Vista Municipality Day.
            self._add_holiday_jul_4(tr("Dia do Município da Boa Vista"))

    def _populate_subdiv_ca_public_holidays(self):
        # Law # 93/82 of November 6th.
        if self._year >= 1982:
            # Santa Catarina de Santiago Municipality Day.
            self._add_holiday_nov_25(tr("Dia do Município de Santa Catarina de Santiago"))

    def _populate_subdiv_cf_public_holidays(self):
        # Law # 66/VI/2005 of May 9th.
        if self._year >= 2005:
            # Santa Catarina do Fogo Municipality Day.
            self._add_holiday_nov_25(tr("Dia do Município de Santa Catarina do Fogo"))

    def _populate_subdiv_cr_public_holidays(self):
        # Law # 93/82 of November 6th.
        if self._year >= 1983:
            # Santa Cruz Municipality Day.
            self._add_holiday_jul_25(tr("Dia do Município de Santa Cruz"))

    def _populate_subdiv_ma_public_holidays(self):
        # Law # 93/82 of November 6th.
        if self._year >= 1983:
            # Maio Municipality Day.
            self._add_holiday_sep_8(tr("Dia do Município do Maio"))

    def _populate_subdiv_mo_public_holidays(self):
        # Law # 23/IV/91 of December 30th.
        if self._year >= 1992:
            # Mosteiros Municipality Day.
            self._add_holiday_aug_15(tr("Dia do Município dos Mosteiros"))

    def _populate_subdiv_pa_public_holidays(self):
        # Law # 93/82 of November 6th.
        if self._year >= 1983:
            # Santo Antão Island Day.
            self._add_holiday_jan_17(tr("Dia da Ilha de Santo Antão"))

            # Paúl Municipality Day.
            self._add_holiday_jun_13(tr("Dia do Município do Paúl"))

    def _populate_subdiv_pn_public_holidays(self):
        # Law # 93/82 of November 6th.
        if self._year >= 1983:
            # Santo Antão Island Day.
            self._add_holiday_jan_17(tr("Dia da Ilha de Santo Antão"))

            # Porto Novo Municipality Day.
            self._add_holiday_sep_2(tr("Dia do Município do Porto Novo"))

    def _populate_subdiv_pr_public_holidays(self):
        # Law # 93/82 of November 6th.
        if self._year >= 1983:
            # Praia Municipality Day.
            self._add_holiday_may_19(tr("Dia do Município da Praia"))

    def _populate_subdiv_rb_public_holidays(self):
        # Law # 67/VI/2005 of May 9th.
        if self._year >= 2005:
            # Ribeira Brava Municipality Day.
            self._add_holiday_dec_6(tr("Dia do Município de Ribeira Brava"))

    def _populate_subdiv_rg_public_holidays(self):
        # Law # 93/82 of November 6th.
        if self._year >= 1983:
            # Santo Antão Island Day.
            self._add_holiday_jan_17(tr("Dia da Ilha de Santo Antão"))

            # Ribeira Grande Municipality Day.
            self._add_holiday_may_7(tr("Dia do Município de Ribeira Grande"))

    def _populate_subdiv_rs_public_holidays(self):
        # Law # 63/VI/2005 of May 9th.
        if self._year >= 2006:
            # Ribeira Grande de Santiago Municipality Day.
            self._add_holiday_jan_31(tr("Dia do Município de Ribeira Grande de Santiago"))

    def _populate_subdiv_sd_public_holidays(self):
        # Law # 96/IV/93 of December 31st.
        if self._year >= 1994:
            # São Domingos Municipality Day.
            self._add_holiday_mar_13(tr("Dia do Município de São Domingos"))

    def _populate_subdiv_sf_public_holidays(self):
        # Law # 23/IV/91 of December 30th.
        if self._year >= 1992:
            # São Filipe Municipality Day.
            self._add_holiday_may_1(tr("Dia do Município de São Filipe"))

    def _populate_subdiv_sl_public_holidays(self):
        # Law # 93/82 of November 6th.
        if self._year >= 1983:
            # Sal Municipality Day.
            self._add_holiday_sep_15(tr("Dia do Município do Sal"))

    def _populate_subdiv_sm_public_holidays(self):
        # Law # 11/V/96 of November 11th.
        if self._year >= 1997:
            # São Miguel Municipality Day.
            self._add_holiday_sep_29(tr("Dia do Município de São Miguel"))

    def _populate_subdiv_so_public_holidays(self):
        # Law # 64/VI/2005 of May 9th.
        if self._year >= 2005:
            # São Lourenço dos Órgãos Municipality Day.
            self._add_holiday_may_9(tr("Dia do Município de São Lourenço dos Órgãos"))

    def _populate_subdiv_ss_public_holidays(self):
        # Law # 65/VI/2005 of May 9th.
        if self._year >= 2005:
            # São Salvador do Mundo Municipality Day.
            self._add_holiday_jul_19(tr("Dia do Município de São Salvador do Mundo"))

    def _populate_subdiv_sv_public_holidays(self):
        # Law # 93/82 of November 6th.
        if self._year >= 1983:
            # São Vicente Municipality Day.
            self._add_holiday_jan_22(tr("Dia do Município de São Vicente"))

            # Carnival Tuesday.
            self._add_carnival_tuesday(tr("Terça-feira de Carnaval"))

    def _populate_subdiv_ta_public_holidays(self):
        # Law # 93/82 of November 6th.
        if self._year >= 1983:
            # Tarrafal de Santiago Municipality Day.
            self._add_holiday_jan_15(tr("Dia do Município do Tarrafal de Santiago"))

    def _populate_subdiv_ts_public_holidays(self):
        # Law # 67/VI/2005 of May 9th.
        if self._year >= 2005:
            # Tarrafal de São Nicolau Municipality Day.
            self._add_holiday_aug_2(tr("Dia do Município do Tarrafal de São Nicolau"))


class CV(CaboVerde):
    pass


class CPV(CaboVerde):
    pass