holidays 0.66__py3-none-any.whl → 0.67__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 (90) hide show
  1. holidays/countries/__init__.py +2 -0
  2. holidays/countries/australia.py +6 -6
  3. holidays/countries/cambodia.py +1 -1
  4. holidays/countries/chile.py +1 -1
  5. holidays/countries/cuba.py +1 -1
  6. holidays/countries/denmark.py +1 -1
  7. holidays/countries/finland.py +19 -19
  8. holidays/countries/greenland.py +22 -19
  9. holidays/countries/guatemala.py +1 -1
  10. holidays/countries/haiti.py +3 -3
  11. holidays/countries/hongkong.py +124 -174
  12. holidays/countries/isle_of_man.py +15 -11
  13. holidays/countries/kazakhstan.py +1 -1
  14. holidays/countries/laos.py +2 -2
  15. holidays/countries/nicaragua.py +1 -1
  16. holidays/countries/panama.py +69 -31
  17. holidays/countries/peru.py +1 -1
  18. holidays/countries/saint_lucia.py +88 -0
  19. holidays/countries/seychelles.py +4 -4
  20. holidays/countries/singapore.py +1 -1
  21. holidays/countries/spain.py +9 -9
  22. holidays/countries/sri_lanka.py +1 -1
  23. holidays/countries/switzerland.py +1 -1
  24. holidays/countries/tuvalu.py +174 -0
  25. holidays/countries/united_kingdom.py +72 -56
  26. holidays/countries/united_states.py +141 -10
  27. holidays/countries/uruguay.py +1 -1
  28. holidays/financial/brasil_bolsa_balcao.py +1 -1
  29. holidays/holiday_base.py +62 -13
  30. holidays/locale/da/LC_MESSAGES/GL.mo +0 -0
  31. holidays/locale/en_GB/LC_MESSAGES/GB.mo +0 -0
  32. holidays/locale/en_GB/LC_MESSAGES/IM.mo +0 -0
  33. holidays/locale/en_GB/LC_MESSAGES/TV.mo +0 -0
  34. holidays/locale/en_HK/LC_MESSAGES/HK.mo +0 -0
  35. holidays/locale/en_LC/LC_MESSAGES/LC.mo +0 -0
  36. holidays/locale/en_US/LC_MESSAGES/AR.mo +0 -0
  37. holidays/locale/en_US/LC_MESSAGES/CH.mo +0 -0
  38. holidays/locale/en_US/LC_MESSAGES/CL.mo +0 -0
  39. holidays/locale/en_US/LC_MESSAGES/CO.mo +0 -0
  40. holidays/locale/en_US/LC_MESSAGES/CU.mo +0 -0
  41. holidays/locale/en_US/LC_MESSAGES/DK.mo +0 -0
  42. holidays/locale/en_US/LC_MESSAGES/ES.mo +0 -0
  43. holidays/locale/en_US/LC_MESSAGES/FI.mo +0 -0
  44. holidays/locale/en_US/LC_MESSAGES/GB.mo +0 -0
  45. holidays/locale/en_US/LC_MESSAGES/GL.mo +0 -0
  46. holidays/locale/en_US/LC_MESSAGES/GT.mo +0 -0
  47. holidays/locale/en_US/LC_MESSAGES/HK.mo +0 -0
  48. holidays/locale/en_US/LC_MESSAGES/HT.mo +0 -0
  49. holidays/locale/en_US/LC_MESSAGES/IM.mo +0 -0
  50. holidays/locale/en_US/LC_MESSAGES/KH.mo +0 -0
  51. holidays/locale/en_US/LC_MESSAGES/KZ.mo +0 -0
  52. holidays/locale/en_US/LC_MESSAGES/LA.mo +0 -0
  53. holidays/locale/en_US/LC_MESSAGES/LC.mo +0 -0
  54. holidays/locale/en_US/LC_MESSAGES/LK.mo +0 -0
  55. holidays/locale/en_US/LC_MESSAGES/NI.mo +0 -0
  56. holidays/locale/en_US/LC_MESSAGES/PA.mo +0 -0
  57. holidays/locale/en_US/LC_MESSAGES/PE.mo +0 -0
  58. holidays/locale/en_US/LC_MESSAGES/RU.mo +0 -0
  59. holidays/locale/en_US/LC_MESSAGES/SC.mo +0 -0
  60. holidays/locale/en_US/LC_MESSAGES/TV.mo +0 -0
  61. holidays/locale/en_US/LC_MESSAGES/UY.mo +0 -0
  62. holidays/locale/es/LC_MESSAGES/PA.mo +0 -0
  63. holidays/locale/fi/LC_MESSAGES/GL.mo +0 -0
  64. holidays/locale/is/LC_MESSAGES/GL.mo +0 -0
  65. holidays/locale/kl/LC_MESSAGES/GL.mo +0 -0
  66. holidays/locale/no/LC_MESSAGES/GL.mo +0 -0
  67. holidays/locale/sv/LC_MESSAGES/GL.mo +0 -0
  68. holidays/locale/th/LC_MESSAGES/GB.mo +0 -0
  69. holidays/locale/th/LC_MESSAGES/HK.mo +0 -0
  70. holidays/locale/th/LC_MESSAGES/IM.mo +0 -0
  71. holidays/locale/tvl/LC_MESSAGES/TV.mo +0 -0
  72. holidays/locale/uk/LC_MESSAGES/CR.mo +0 -0
  73. holidays/locale/uk/LC_MESSAGES/DK.mo +0 -0
  74. holidays/locale/uk/LC_MESSAGES/ES.mo +0 -0
  75. holidays/locale/uk/LC_MESSAGES/GE.mo +0 -0
  76. holidays/locale/uk/LC_MESSAGES/GL.mo +0 -0
  77. holidays/locale/uk/LC_MESSAGES/MC.mo +0 -0
  78. holidays/locale/uk/LC_MESSAGES/MG.mo +0 -0
  79. holidays/locale/uk/LC_MESSAGES/PA.mo +0 -0
  80. holidays/locale/uk/LC_MESSAGES/RO.mo +0 -0
  81. holidays/locale/zh_CN/LC_MESSAGES/HK.mo +0 -0
  82. holidays/locale/zh_HK/LC_MESSAGES/HK.mo +0 -0
  83. holidays/registry.py +2 -0
  84. holidays/version.py +1 -1
  85. {holidays-0.66.dist-info → holidays-0.67.dist-info}/AUTHORS +1 -0
  86. {holidays-0.66.dist-info → holidays-0.67.dist-info}/METADATA +33 -17
  87. {holidays-0.66.dist-info → holidays-0.67.dist-info}/RECORD +90 -64
  88. {holidays-0.66.dist-info → holidays-0.67.dist-info}/LICENSE +0 -0
  89. {holidays-0.66.dist-info → holidays-0.67.dist-info}/WHEEL +0 -0
  90. {holidays-0.66.dist-info → holidays-0.67.dist-info}/top_level.txt +0 -0
@@ -10,66 +10,94 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
- from holidays.groups import ChristianHolidays, InternationalHolidays
13
+ from gettext import gettext as tr
14
+
15
+ from holidays.calendars.gregorian import JUL
16
+ from holidays.constants import BANK, PUBLIC
17
+ from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
14
18
  from holidays.observed_holiday_base import ObservedHolidayBase, SUN_TO_NEXT_MON
15
19
 
16
20
 
17
- class Panama(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
21
+ class Panama(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
18
22
  """
19
23
  References:
20
- - https://en.wikipedia.org/wiki/Public_holidays_in_Panama
21
- - https://publicholidays.com.pa/
24
+ - https://en.wikipedia.org/wiki/Public_holidays_in_Panama
25
+ - `Labor Code 1947 <https://docs.panama.justia.com/federales/leyes/67-de-1947-nov-26-1947.pdf>`_
26
+ - `Cabinet Decree #347 of 1969 <https://docs.panama.justia.com/federales/decretos-de-gabinete/decreto-de-gabinete-347-de-1969-nov-14-1969.pdf>`_
27
+ - `Labor Code 1971 <https://www.mitradel.gob.pa/wp-content/uploads/2016/12/c%C3%B3digo-detrabajo.pdf>`_
28
+ - `Law #4 of Jun 25, 1990 <https://s3-legispan.asamblea.gob.pa/legispan/NORMAS/1990/1990/LEY/Administrador%20Legispan_21570_1990_7_2_ASAMBLEA%20LEGISLATIVA_4.pdf>`_
29
+ - `Law #55 of Nov 7, 2001 <https://docs.panama.justia.com/federales/leyes/55-de-2001-nov-14-2001.pdf>`_
22
30
  """
23
31
 
24
32
  country = "PA"
25
- observed_label = "%s (observed)"
33
+ default_language = "es"
34
+ # %s (observed).
35
+ observed_label = tr("%s (puente)")
36
+ supported_categories = (BANK, PUBLIC)
37
+ supported_languages = ("en_US", "es", "uk")
38
+ start_year = 1948
26
39
 
27
40
  def __init__(self, *args, **kwargs):
28
41
  ChristianHolidays.__init__(self)
29
42
  InternationalHolidays.__init__(self)
43
+ StaticHolidays.__init__(self, PanamaStaticHolidays)
30
44
  kwargs.setdefault("observed_rule", SUN_TO_NEXT_MON)
45
+ kwargs.setdefault("observed_since", 1972)
31
46
  super().__init__(*args, **kwargs)
32
47
 
33
48
  def _populate_public_holidays(self):
34
- # New Year's Day
35
- self._add_observed(self._add_new_years_day("New Year's Day"))
49
+ # New Year's Day.
50
+ self._add_observed(self._add_new_years_day(tr("Año Nuevo")))
36
51
 
37
- # Martyrs' Day
38
- self._add_observed(self._add_holiday_jan_9("Martyrs' Day"))
52
+ if self._year >= 1972:
53
+ # Martyrs' Day.
54
+ self._add_observed(self._add_holiday_jan_9(tr("Día de los Mártires")))
39
55
 
40
- # Carnival
41
- self._add_carnival_tuesday("Carnival")
56
+ if self._year <= 1971:
57
+ # Constitution Day.
58
+ self._add_holiday_mar_1(tr("Día de la Constitución"))
42
59
 
43
- # Good Friday
44
- self._add_good_friday("Good Friday")
60
+ # Carnival Tuesday.
61
+ self._add_carnival_tuesday(tr("Martes de Carnaval"))
45
62
 
46
- # Labour Day
47
- self._add_observed(self._add_labor_day("Labour Day"))
63
+ # Good Friday.
64
+ self._add_good_friday(tr("Viernes Santo"))
48
65
 
49
- # Separation Day
50
- self._add_holiday_nov_3("Separation Day")
66
+ # Labor Day.
67
+ self._add_observed(self._add_labor_day(tr("Día del Trabajo")))
51
68
 
52
- # National Symbols Day
53
- self._add_holiday_nov_4("National Symbols Day")
69
+ # Separation Day.
70
+ self._add_observed(self._add_holiday_nov_3(tr("Separación de Panamá de Colombia")))
54
71
 
55
- # Colon Day
56
- self._add_holiday_nov_5("Colon Day")
72
+ # Law #55 of Nov 7, 2001.
73
+ if self._year >= 2002:
74
+ # Colon Day.
75
+ self._add_observed(self._add_holiday_nov_5(tr("Día de Colón")))
57
76
 
58
- # Los Santos Uprising Day
59
- self._add_holiday_nov_10("Los Santos Uprising Day")
77
+ # Cabinet Decree #347 of 1969.
78
+ if self._year >= 1969:
79
+ # Los Santos Uprising Day.
80
+ self._add_observed(self._add_holiday_nov_10(tr("Primer Grito de Independencia")))
60
81
 
61
- # Independence Day
62
- self._add_observed(self._add_holiday_nov_28("Independence Day"))
82
+ # Independence Day.
83
+ self._add_observed(self._add_holiday_nov_28(tr("Independencia de Panamá de España")))
63
84
 
64
- # Mother's Day
65
- self._add_observed(self._add_holiday_dec_8("Mother's Day"))
85
+ # Mother's Day.
86
+ self._add_observed(self._add_holiday_dec_8(tr("Día de la Madre")))
66
87
 
67
- # National Mourning Day
68
88
  if self._year >= 2022:
69
- self._add_observed(self._add_holiday_dec_20("National Mourning Day"))
89
+ # National Mourning Day.
90
+ self._add_observed(self._add_holiday_dec_20(tr("Día de Duelo Nacional")))
91
+
92
+ # Christmas Day.
93
+ self._add_observed(self._add_christmas_day(tr("Navidad")))
94
+
95
+ def _populate_bank_holidays(self):
96
+ # Carnival Monday.
97
+ self._add_carnival_monday(tr("Lunes de Carnaval"))
70
98
 
71
- # Christmas Day
72
- self._add_observed(self._add_christmas_day("Christmas Day"))
99
+ # National Symbols Day.
100
+ self._add_holiday_nov_4(tr("Día de los Símbolos Patrios"))
73
101
 
74
102
 
75
103
  class PA(Panama):
@@ -78,3 +106,13 @@ class PA(Panama):
78
106
 
79
107
  class PAN(Panama):
80
108
  pass
109
+
110
+
111
+ class PanamaStaticHolidays:
112
+ # Presidential Inauguration Day.
113
+ presidential_inauguration_day = tr("Toma posesión del Presidente de la república")
114
+ special_public_holidays = {
115
+ 2014: (JUL, 1, presidential_inauguration_day),
116
+ 2019: (JUL, 1, presidential_inauguration_day),
117
+ 2024: (JUL, 1, presidential_inauguration_day),
118
+ }
@@ -50,7 +50,7 @@ class Peru(HolidayBase, ChristianHolidays, InternationalHolidays):
50
50
  # Labor Day.
51
51
  self._add_labor_day(tr("Día del Trabajo"))
52
52
 
53
- # Saint Peter and Saint Paul.
53
+ # Saint Peter and Saint Paul's Day.
54
54
  self._add_saints_peter_and_paul_day(tr("San Pedro y San Pablo"))
55
55
 
56
56
  # Independence Day.
@@ -0,0 +1,88 @@
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 AUTHORS file)
8
+ # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
+ # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
+ # Website: https://github.com/vacanza/holidays
11
+ # License: MIT (see LICENSE file)
12
+
13
+ from gettext import gettext as tr
14
+
15
+ from holidays.groups import ChristianHolidays, InternationalHolidays
16
+ from holidays.observed_holiday_base import ObservedHolidayBase, SUN_TO_NEXT_MON, SUN_TO_NEXT_TUE
17
+
18
+
19
+ class SaintLucia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
20
+ """
21
+ References:
22
+ - https://en.wikipedia.org/wiki/Public_holidays_in_Saint_Lucia
23
+ - https://www.timeanddate.com/holidays/saint-lucia/
24
+ - https://archive.stlucia.gov.lc/saint_lucia/public_holidays.htm
25
+ - https://archive.stlucia.gov.lc/stluciasilver/national_holidays.htm
26
+ - https://web.archive.org/web/20160314100648/http://www.stluciachamber.org/uploadedImages/contentImg/file/List%20of%20Holidays%20for%202015%20(1).pdf
27
+ """
28
+
29
+ country = "LC"
30
+ default_language = "en_LC"
31
+ # %s (observed).
32
+ observed_label = tr("%s (observed)")
33
+ supported_languages = ("en_LC", "en_US")
34
+ start_year = 1979
35
+
36
+ def __init__(self, *args, **kwargs):
37
+ ChristianHolidays.__init__(self)
38
+ InternationalHolidays.__init__(self)
39
+ kwargs.setdefault("observed_rule", SUN_TO_NEXT_MON)
40
+ super().__init__(*args, **kwargs)
41
+
42
+ def _populate_public_holidays(self):
43
+ # New Year's Day.
44
+ self._add_observed(self._add_new_years_day(tr("New Year's Day")), rule=SUN_TO_NEXT_TUE)
45
+
46
+ # New Year's Holiday.
47
+ self._add_observed(self._add_new_years_day_two(tr("New Year's Holiday")))
48
+
49
+ # Independence Day.
50
+ self._add_observed(self._add_holiday_feb_22(tr("Independence Day")))
51
+
52
+ # Good Friday.
53
+ self._add_good_friday(tr("Good Friday"))
54
+
55
+ # Easter Monday.
56
+ self._add_easter_monday(tr("Easter Monday"))
57
+
58
+ # Labor Day.
59
+ self._add_observed(self._add_labor_day(tr("Labour Day")))
60
+
61
+ # Whit Monday.
62
+ self._add_whit_monday(tr("Whit Monday"))
63
+
64
+ # Corpus Christi.
65
+ self._add_corpus_christi_day(tr("Corpus Christi"))
66
+
67
+ # Emancipation Day.
68
+ self._add_observed(self._add_holiday_aug_1(tr("Emancipation Day")))
69
+
70
+ # Thanksgiving Day.
71
+ self._add_holiday_1st_mon_of_oct(tr("Thanksgiving Day"))
72
+
73
+ # National Day.
74
+ self._add_observed(self._add_holiday_dec_13(tr("National Day")))
75
+
76
+ # Christmas Day.
77
+ self._add_observed(self._add_christmas_day(tr("Christmas Day")), rule=SUN_TO_NEXT_TUE)
78
+
79
+ # Boxing Day.
80
+ self._add_observed(self._add_christmas_day_two(tr("Boxing Day")))
81
+
82
+
83
+ class LC(SaintLucia):
84
+ pass
85
+
86
+
87
+ class LCA(SaintLucia):
88
+ pass
@@ -68,10 +68,10 @@ class Seychelles(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
68
68
  # Easter Monday.
69
69
  self._add_easter_monday(tr("Easter Monday"))
70
70
 
71
- # Labour Day.
71
+ # Labor Day.
72
72
  self._add_observed(self._add_labor_day(tr("Labour Day")))
73
73
 
74
- # The Fete Dieu.
74
+ # Corpus Christi.
75
75
  self._add_corpus_christi_day(tr("The Fete Dieu"))
76
76
 
77
77
  if self._year <= 2016:
@@ -101,11 +101,11 @@ class Seychelles(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
101
101
  # Assumption Day.
102
102
  self._add_observed(self._add_assumption_of_mary_day(tr("Assumption Day")))
103
103
 
104
- # All Saints Day.
104
+ # All Saints' Day.
105
105
  self._add_observed(self._add_all_saints_day(tr("All Saints Day")))
106
106
 
107
107
  self._add_observed(
108
- # The Feast of the Immaculate Conception.
108
+ # Immaculate Conception.
109
109
  self._add_immaculate_conception_day(tr("The Feast of the Immaculate Conception"))
110
110
  )
111
111
 
@@ -142,7 +142,7 @@ class Singapore(
142
142
  dts_observed.add(self._add_christmas_day(tr("Christmas Day")))
143
143
 
144
144
  if self._year <= 1968:
145
- # Boxing day.
145
+ # Boxing Day.
146
146
  self._add_christmas_day_two(tr("Boxing Day"))
147
147
 
148
148
  if self.observed:
@@ -89,7 +89,7 @@ class Spain(
89
89
  def _populate_public_holidays(self):
90
90
  if self._year not in {2012, 2017, 2023}:
91
91
  # New Year's Day.
92
- self._add_new_years_day(tr("Año nuevo"))
92
+ self._add_new_years_day(tr("Año Nuevo"))
93
93
 
94
94
  if self._year not in {2013, 2019}:
95
95
  # Epiphany.
@@ -127,7 +127,7 @@ class Spain(
127
127
 
128
128
  def _populate_subdiv_an_public_holidays(self):
129
129
  if self._year in {2012, 2017, 2023}:
130
- self._move_holiday(self._add_new_years_day(tr("Año nuevo")))
130
+ self._move_holiday(self._add_new_years_day(tr("Año Nuevo")))
131
131
 
132
132
  if self._year in {2013, 2019}:
133
133
  self._move_holiday(self._add_epiphany_day(tr("Epifanía del Señor")))
@@ -161,7 +161,7 @@ class Spain(
161
161
 
162
162
  def _populate_subdiv_ar_public_holidays(self):
163
163
  if self._year in {2012, 2017, 2023}:
164
- self._move_holiday(self._add_new_years_day(tr("Año nuevo")))
164
+ self._move_holiday(self._add_new_years_day(tr("Año Nuevo")))
165
165
 
166
166
  if self._year in {2013, 2019}:
167
167
  self._move_holiday(self._add_epiphany_day(tr("Epifanía del Señor")))
@@ -194,7 +194,7 @@ class Spain(
194
194
 
195
195
  def _populate_subdiv_as_public_holidays(self):
196
196
  if self._year in {2012, 2017, 2023}:
197
- self._move_holiday(self._add_new_years_day(tr("Año nuevo")))
197
+ self._move_holiday(self._add_new_years_day(tr("Año Nuevo")))
198
198
 
199
199
  if self._year in {2013, 2019}:
200
200
  self._move_holiday(self._add_epiphany_day(tr("Epifanía del Señor")))
@@ -262,7 +262,7 @@ class Spain(
262
262
 
263
263
  def _populate_subdiv_ce_public_holidays(self):
264
264
  if self._year == 2012:
265
- self._move_holiday(self._add_new_years_day(tr("Año nuevo")))
265
+ self._move_holiday(self._add_new_years_day(tr("Año Nuevo")))
266
266
 
267
267
  if self._year in {2013, 2019}:
268
268
  self._move_holiday(self._add_epiphany_day(tr("Epifanía del Señor")))
@@ -306,7 +306,7 @@ class Spain(
306
306
 
307
307
  def _populate_subdiv_cl_public_holidays(self):
308
308
  if self._year in {2017, 2023}:
309
- self._move_holiday(self._add_new_years_day(tr("Año nuevo")))
309
+ self._move_holiday(self._add_new_years_day(tr("Año Nuevo")))
310
310
 
311
311
  if self._year in {2013, 2019}:
312
312
  self._move_holiday(self._add_epiphany_day(tr("Epifanía del Señor")))
@@ -417,7 +417,7 @@ class Spain(
417
417
 
418
418
  def _populate_subdiv_ex_public_holidays(self):
419
419
  if self._year == 2012:
420
- self._move_holiday(self._add_new_years_day(tr("Año nuevo")))
420
+ self._move_holiday(self._add_new_years_day(tr("Año Nuevo")))
421
421
 
422
422
  if self._year in {2013, 2019}:
423
423
  self._move_holiday(self._add_epiphany_day(tr("Epifanía del Señor")))
@@ -498,7 +498,7 @@ class Spain(
498
498
 
499
499
  def _populate_subdiv_mc_public_holidays(self):
500
500
  if self._year in {2017, 2023}:
501
- self._move_holiday(self._add_new_years_day(tr("Año nuevo")))
501
+ self._move_holiday(self._add_new_years_day(tr("Año Nuevo")))
502
502
 
503
503
  if self._year in {2013, 2019}:
504
504
  self._move_holiday(self._add_epiphany_day(tr("Epifanía del Señor")))
@@ -557,7 +557,7 @@ class Spain(
557
557
 
558
558
  def _populate_subdiv_ml_public_holidays(self):
559
559
  if self._year == 2017:
560
- self._move_holiday(self._add_new_years_day(tr("Año nuevo")))
560
+ self._move_holiday(self._add_new_years_day(tr("Año Nuevo")))
561
561
 
562
562
  if self._year in {2013, 2019}:
563
563
  self._move_holiday(self._add_epiphany_day(tr("Epifanía del Señor")))
@@ -239,7 +239,7 @@ class SriLanka(
239
239
  # Eid al-Adha.
240
240
  self._add_eid_al_adha_day(tr("ඊදුල් අල්හා"))
241
241
 
242
- # The Prophet's Birthday.
242
+ # Prophet's Birthday.
243
243
  self._add_mawlid_day(tr("නබි නායකතුමාගේ උපන් දිනය"))
244
244
 
245
245
 
@@ -79,7 +79,7 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays)
79
79
  self._add_christmas_day(tr("Weihnachten"))
80
80
 
81
81
  def _populate_subdiv_ag_public_holidays(self):
82
- # Berchtold's Day.
82
+ # Saint Berchtold's Day.
83
83
  self._add_new_years_day_two(tr("Berchtoldstag"))
84
84
 
85
85
  # Good Friday.
@@ -0,0 +1,174 @@
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 AUTHORS file)
8
+ # dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
9
+ # ryanss <ryanssdev@icloud.com> (c) 2014-2017
10
+ # Website: https://github.com/vacanza/holidays
11
+ # License: MIT (see LICENSE file)
12
+
13
+ from gettext import gettext as tr
14
+
15
+ from holidays.groups import ChristianHolidays, InternationalHolidays
16
+ from holidays.observed_holiday_base import (
17
+ ObservedHolidayBase,
18
+ SAT_SUN_TO_NEXT_MON,
19
+ SAT_SUN_TO_NEXT_MON_TUE,
20
+ )
21
+
22
+
23
+ class Tuvalu(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
24
+ """
25
+ References:
26
+ - `Public holidays in Tuvalu <https://en.wikipedia.org/wiki/Public_holidays_in_Tuvalu>`_
27
+ - `Today's and Upcoming Holidays in Tuvalu <https://www.timeanddate.com/holidays/tuvalu/>`_
28
+ - `Public Holidays (Amendment) Act 1990 <https://www.paclii.org/cgi-bin/sinodisp/tv/legis/num_act/pha1990243/pha1990243.html>`_
29
+ - `Public Holidays Act 1 <https://tuvalu-legislation.tv/cms/images/LEGISLATION/PRINCIPAL/1937/1937-0005/1937-0005_1.pdf>`_
30
+ - `Public Holidays (Amendment) Act 2018 <https://tuvalu-legislation.tv/cms/images/LEGISLATION/AMENDING/Public%20Holidays%20(Amendment)%20Act/Public%20Holidays%20(Amendment)%20Act%202018/Public%20Holidays%20(Amendment)%20Act%202018.pdf>`_
31
+ - `Public Holidays (Amendment) Act 2020 <https://tuvalu-legislation.tv/cms/images/LEGISLATION/AMENDING/2020/2020-0013/2020-0013.pdf>`_
32
+ - `Public Holidays Act 2 <https://tuvalu-legislation.tv/cms/images/LEGISLATION/PRINCIPAL/1937/1937-0005/1937-0005_2.pdf>`_
33
+ - `Codes for the representation of names of countries and their subdivisions <https://www.iso.org/obp/ui/#iso:code:3166:TV>`_
34
+ - `TUVALU-NEWS.TV <https://web.archive.org/web/20140915180104/http://www.tuvalu-news.tv/archives/2007/01/island_special_public_holidays.html>`_
35
+ """
36
+
37
+ country = "TV"
38
+ default_language = "tvl"
39
+ # %s (observed).
40
+ observed_label = tr("%s (fakamatakuga)")
41
+ supported_languages = ("en_GB", "en_US", "tvl")
42
+ subdivisions = (
43
+ "FUN", # Funafuti.
44
+ "NIT", # Niutao.
45
+ "NKF", # Nukufetau.
46
+ "NKL", # Nukulaelae.
47
+ "NMA", # Nanumea.
48
+ "NMG", # Nanumaga.
49
+ "NUI", # Nui.
50
+ "VAI", # Vaitupu.
51
+ )
52
+ subdivisions_aliases = {
53
+ # Town/Island Councils.
54
+ "Funafuti": "FUN",
55
+ "Niutao": "NIT",
56
+ "Nukufetau": "NKF",
57
+ "Nukulaelae": "NKL",
58
+ "Nanumea": "NMA",
59
+ "Nanumaga": "NMG",
60
+ "Nanumanga": "NMG", # Ex-ISO code alias
61
+ "Nui": "NUI",
62
+ "Vaitupu": "VAI",
63
+ }
64
+ # Tuvalu became fully independent of the United Kingdom on October 1, 1978
65
+ # Tuvalu's PUBLIC HOLIDAYS (AMENDMENT) ACT 1990 (Act 2 of 1990)
66
+ # It was first proclaimed on FEB 7th, 1990
67
+ start_year = 1990
68
+
69
+ def __init__(self, *args, **kwargs):
70
+ ChristianHolidays.__init__(self)
71
+ InternationalHolidays.__init__(self)
72
+ kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_MON)
73
+ super().__init__(*args, **kwargs)
74
+
75
+ def _populate_public_holidays(self):
76
+ # New Year's Day.
77
+ self._add_observed(self._add_new_years_day(tr("Tausaga Fou")))
78
+
79
+ if self._year <= 2020:
80
+ # Commonwealth Day.
81
+ self._add_holiday_2nd_mon_of_mar(tr("Aso Atefenua"))
82
+
83
+ # Good Friday.
84
+ self._add_good_friday(tr("Aso toe tu"))
85
+
86
+ # Easter Monday.
87
+ self._add_easter_monday(tr("Toe Tu aso gafua"))
88
+
89
+ # Gospel Day.
90
+ self._add_holiday_1_day_past_2nd_sun_of_may(tr("Te Aso o te Tala Lei"))
91
+
92
+ self._add_holiday_2nd_sat_of_jun(
93
+ # King's Birthday.
94
+ tr("Asofanau Tupu")
95
+ if self._year >= 2023
96
+ # Queen's Birthday.
97
+ else tr("Asofanau Fafine")
98
+ )
99
+
100
+ # National Children's Day.
101
+ name = tr("Aso Tamaliki")
102
+ if self._year >= 2019:
103
+ # National Youth Day.
104
+ self._add_holiday_1st_mon_of_aug(tr("Aso tupulaga"))
105
+
106
+ # National Children's Day.
107
+ self._add_holiday_1_day_past_2nd_sun_of_oct(name)
108
+ else:
109
+ # National Children's Day.
110
+ self._add_holiday_1st_mon_of_aug(name)
111
+
112
+ # Tuvalu Day.
113
+ name = tr("Tutokotasi")
114
+ self._add_observed(self._add_holiday_oct_1(name), rule=SAT_SUN_TO_NEXT_MON_TUE)
115
+ self._add_observed(self._add_holiday_oct_2(name), rule=SAT_SUN_TO_NEXT_MON_TUE)
116
+
117
+ # https://en.wikipedia.org/wiki/King%27s_Official_Birthday#Tuvalu
118
+ if self._year <= 2022:
119
+ # Heir to the Throne's Birthday.
120
+ self._add_holiday_2nd_mon_of_nov(tr("Aso fanau o te sui ote Tupu"))
121
+
122
+ # Christmas Day.
123
+ self._add_observed(self._add_christmas_day(tr("Kilisimasi")), rule=SAT_SUN_TO_NEXT_MON_TUE)
124
+ self._add_observed(
125
+ # Boxing Day.
126
+ self._add_christmas_day_two(tr("Aso Faipele")),
127
+ rule=SAT_SUN_TO_NEXT_MON_TUE,
128
+ )
129
+
130
+ def _populate_subdiv_fun_public_holidays(self):
131
+ # The Day of the Bombing.
132
+ self._add_holiday_apr_23(tr("Te Aso o te Paula"))
133
+
134
+ # Cyclone Day.
135
+ self._add_holiday_oct_21(tr("Aso o te matagi"))
136
+
137
+ def _populate_subdiv_nit_public_holidays(self):
138
+ # Niutao Day.
139
+ self._add_holiday_sep_17(tr("Te Aso o te Setema"))
140
+
141
+ def _populate_subdiv_nkf_public_holidays(self):
142
+ # Nukufetau Day.
143
+ self._add_holiday_feb_11(tr("Te Aso O Tutasi"))
144
+
145
+ def _populate_subdiv_nkl_public_holidays(self):
146
+ # Gospel Day.
147
+ self._add_holiday_may_10(tr("Te Aso o te Tala Lei"))
148
+
149
+ def _populate_subdiv_nma_public_holidays(self):
150
+ # Golden Jubilee.
151
+ self._add_holiday_jan_8(tr("Te Po o Tefolaha"))
152
+
153
+ # Big Day.
154
+ self._add_holiday_feb_3(tr("Po Lahi"))
155
+
156
+ def _populate_subdiv_nmg_public_holidays(self):
157
+ # Nanumaga Day.
158
+ self._add_holiday_apr_15(tr("Aho o te Fakavae"))
159
+
160
+ def _populate_subdiv_nui_public_holidays(self):
161
+ # Day of the Flood.
162
+ self._add_holiday_feb_16(tr("Bogin te Ieka"))
163
+
164
+ def _populate_subdiv_vai_public_holidays(self):
165
+ # Happy Day.
166
+ self._add_holiday_nov_25(tr("Te Aso Fiafia"))
167
+
168
+
169
+ class TV(Tuvalu):
170
+ pass
171
+
172
+
173
+ class TUV(Tuvalu):
174
+ pass