holidays 0.60__py3-none-any.whl → 0.62__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 (156) hide show
  1. holidays/constants.py +3 -0
  2. holidays/countries/__init__.py +1 -0
  3. holidays/countries/albania.py +2 -4
  4. holidays/countries/angola.py +2 -4
  5. holidays/countries/argentina.py +23 -1
  6. holidays/countries/armenia.py +1 -3
  7. holidays/countries/aruba.py +2 -4
  8. holidays/countries/australia.py +1 -0
  9. holidays/countries/azerbaijan.py +31 -8
  10. holidays/countries/bahamas.py +2 -4
  11. holidays/countries/barbados.py +2 -4
  12. holidays/countries/belarus.py +2 -4
  13. holidays/countries/belize.py +2 -4
  14. holidays/countries/bolivia.py +1 -3
  15. holidays/countries/botswana.py +1 -3
  16. holidays/countries/brazil.py +151 -116
  17. holidays/countries/brunei.py +159 -72
  18. holidays/countries/bulgaria.py +1 -6
  19. holidays/countries/burkina_faso.py +3 -5
  20. holidays/countries/burundi.py +1 -3
  21. holidays/countries/cambodia.py +13 -4
  22. holidays/countries/cameroon.py +2 -4
  23. holidays/countries/canada.py +7 -11
  24. holidays/countries/chad.py +2 -4
  25. holidays/countries/chile.py +1 -3
  26. holidays/countries/china.py +23 -12
  27. holidays/countries/congo.py +2 -4
  28. holidays/countries/croatia.py +1 -3
  29. holidays/countries/cuba.py +2 -4
  30. holidays/countries/curacao.py +2 -7
  31. holidays/countries/cyprus.py +1 -9
  32. holidays/countries/djibouti.py +2 -4
  33. holidays/countries/dominica.py +2 -4
  34. holidays/countries/dominican_republic.py +2 -4
  35. holidays/countries/eswatini.py +1 -4
  36. holidays/countries/ethiopia.py +1 -3
  37. holidays/countries/finland.py +6 -3
  38. holidays/countries/france.py +1 -0
  39. holidays/countries/gabon.py +2 -4
  40. holidays/countries/georgia.py +1 -3
  41. holidays/countries/germany.py +4 -56
  42. holidays/countries/ghana.py +1 -4
  43. holidays/countries/guernsey.py +328 -0
  44. holidays/countries/haiti.py +2 -8
  45. holidays/countries/hongkong.py +2 -3
  46. holidays/countries/indonesia.py +1 -3
  47. holidays/countries/iran.py +1 -3
  48. holidays/countries/ireland.py +1 -3
  49. holidays/countries/israel.py +1 -18
  50. holidays/countries/japan.py +2 -6
  51. holidays/countries/jersey.py +2 -4
  52. holidays/countries/kazakhstan.py +2 -4
  53. holidays/countries/kenya.py +1 -3
  54. holidays/countries/laos.py +2 -13
  55. holidays/countries/latvia.py +1 -3
  56. holidays/countries/lesotho.py +1 -3
  57. holidays/countries/lithuania.py +1 -3
  58. holidays/countries/luxembourg.py +1 -1
  59. holidays/countries/madagascar.py +1 -4
  60. holidays/countries/malawi.py +1 -4
  61. holidays/countries/malaysia.py +1 -6
  62. holidays/countries/malta.py +2 -4
  63. holidays/countries/moldova.py +2 -4
  64. holidays/countries/mozambique.py +1 -3
  65. holidays/countries/namibia.py +1 -3
  66. holidays/countries/netherlands.py +1 -0
  67. holidays/countries/new_zealand.py +1 -3
  68. holidays/countries/nigeria.py +1 -3
  69. holidays/countries/pakistan.py +1 -3
  70. holidays/countries/palau.py +5 -7
  71. holidays/countries/papua_new_guinea.py +2 -4
  72. holidays/countries/paraguay.py +32 -31
  73. holidays/countries/philippines.py +1 -3
  74. holidays/countries/poland.py +1 -3
  75. holidays/countries/portugal.py +23 -0
  76. holidays/countries/russia.py +1 -3
  77. holidays/countries/saint_kitts_and_nevis.py +2 -4
  78. holidays/countries/seychelles.py +2 -4
  79. holidays/countries/slovakia.py +2 -4
  80. holidays/countries/slovenia.py +1 -3
  81. holidays/countries/south_africa.py +2 -4
  82. holidays/countries/south_korea.py +1 -6
  83. holidays/countries/switzerland.py +2 -1
  84. holidays/countries/taiwan.py +1 -3
  85. holidays/countries/tanzania.py +2 -8
  86. holidays/countries/thailand.py +12 -8
  87. holidays/countries/timor_leste.py +4 -8
  88. holidays/countries/tonga.py +2 -4
  89. holidays/countries/turkey.py +2 -7
  90. holidays/countries/ukraine.py +2 -4
  91. holidays/countries/united_kingdom.py +2 -8
  92. holidays/countries/united_states.py +20 -23
  93. holidays/countries/uruguay.py +2 -7
  94. holidays/countries/uzbekistan.py +1 -2
  95. holidays/countries/vanuatu.py +2 -4
  96. holidays/countries/vatican_city.py +1 -3
  97. holidays/countries/venezuela.py +1 -0
  98. holidays/countries/zambia.py +1 -4
  99. holidays/countries/zimbabwe.py +1 -3
  100. holidays/financial/__init__.py +1 -0
  101. holidays/financial/brasil_bolsa_balcao.py +108 -0
  102. holidays/financial/european_central_bank.py +2 -5
  103. holidays/financial/ice_futures_europe.py +2 -5
  104. holidays/financial/ny_stock_exchange.py +20 -21
  105. holidays/groups/international.py +11 -0
  106. holidays/helpers.py +4 -4
  107. holidays/holiday_base.py +10 -4
  108. holidays/locale/de/LC_MESSAGES/CH.po +1 -1
  109. holidays/locale/en_US/LC_MESSAGES/BN.mo +0 -0
  110. holidays/locale/en_US/LC_MESSAGES/BN.po +29 -18
  111. holidays/locale/en_US/LC_MESSAGES/BR.mo +0 -0
  112. holidays/locale/en_US/LC_MESSAGES/BR.po +263 -0
  113. holidays/locale/en_US/LC_MESSAGES/BVMF.mo +0 -0
  114. holidays/locale/en_US/LC_MESSAGES/BVMF.po +79 -0
  115. holidays/locale/en_US/LC_MESSAGES/CH.mo +0 -0
  116. holidays/locale/en_US/LC_MESSAGES/CH.po +1 -1
  117. holidays/locale/en_US/LC_MESSAGES/KH.mo +0 -0
  118. holidays/locale/en_US/LC_MESSAGES/KH.po +7 -3
  119. holidays/locale/en_US/LC_MESSAGES/PY.mo +0 -0
  120. holidays/locale/en_US/LC_MESSAGES/PY.po +18 -14
  121. holidays/locale/es/LC_MESSAGES/PY.mo +0 -0
  122. holidays/locale/es/LC_MESSAGES/PY.po +17 -13
  123. holidays/locale/fr/LC_MESSAGES/CH.mo +0 -0
  124. holidays/locale/fr/LC_MESSAGES/CH.po +1 -1
  125. holidays/locale/it/LC_MESSAGES/CH.mo +0 -0
  126. holidays/locale/it/LC_MESSAGES/CH.po +1 -1
  127. holidays/locale/km/LC_MESSAGES/KH.mo +0 -0
  128. holidays/locale/km/LC_MESSAGES/KH.po +7 -3
  129. holidays/locale/ms/LC_MESSAGES/BN.mo +0 -0
  130. holidays/locale/ms/LC_MESSAGES/BN.po +26 -17
  131. holidays/locale/pt_BR/LC_MESSAGES/BR.mo +0 -0
  132. holidays/locale/pt_BR/LC_MESSAGES/BR.po +263 -0
  133. holidays/locale/pt_BR/LC_MESSAGES/BVMF.mo +0 -0
  134. holidays/locale/pt_BR/LC_MESSAGES/BVMF.po +79 -0
  135. holidays/locale/th/LC_MESSAGES/BN.mo +0 -0
  136. holidays/locale/th/LC_MESSAGES/BN.po +28 -17
  137. holidays/locale/th/LC_MESSAGES/KH.mo +0 -0
  138. holidays/locale/th/LC_MESSAGES/KH.po +7 -3
  139. holidays/locale/uk/LC_MESSAGES/BR.mo +0 -0
  140. holidays/locale/uk/LC_MESSAGES/BR.po +263 -0
  141. holidays/locale/uk/LC_MESSAGES/BVMF.mo +0 -0
  142. holidays/locale/uk/LC_MESSAGES/BVMF.po +79 -0
  143. holidays/locale/uk/LC_MESSAGES/CH.mo +0 -0
  144. holidays/locale/uk/LC_MESSAGES/CH.po +1 -1
  145. holidays/locale/uk/LC_MESSAGES/PY.mo +0 -0
  146. holidays/locale/uk/LC_MESSAGES/PY.po +18 -14
  147. holidays/observed_holiday_base.py +2 -1
  148. holidays/registry.py +2 -0
  149. holidays/utils.py +1 -1
  150. holidays/version.py +1 -1
  151. {holidays-0.60.dist-info → holidays-0.62.dist-info}/AUTHORS +1 -0
  152. {holidays-0.60.dist-info → holidays-0.62.dist-info}/METADATA +20 -7
  153. {holidays-0.60.dist-info → holidays-0.62.dist-info}/RECORD +156 -142
  154. {holidays-0.60.dist-info → holidays-0.62.dist-info}/WHEEL +1 -1
  155. {holidays-0.60.dist-info → holidays-0.62.dist-info}/LICENSE +0 -0
  156. {holidays-0.60.dist-info → holidays-0.62.dist-info}/top_level.txt +0 -0
@@ -27,6 +27,7 @@ class Madagascar(HolidayBase, ChristianHolidays, InternationalHolidays):
27
27
  country = "MG"
28
28
  default_language = "mg"
29
29
  supported_languages = ("en_US", "mg", "uk")
30
+ start_year = 1947
30
31
 
31
32
  def __init__(self, *args, **kwargs):
32
33
  ChristianHolidays.__init__(self)
@@ -34,10 +35,6 @@ class Madagascar(HolidayBase, ChristianHolidays, InternationalHolidays):
34
35
  super().__init__(*args, **kwargs)
35
36
 
36
37
  def _populate_public_holidays(self):
37
- # Observed since 1947
38
- if self._year <= 1946:
39
- return None
40
-
41
38
  # New Year's Day.
42
39
  self._add_new_years_day(tr("Taom-baovao"))
43
40
 
@@ -26,6 +26,7 @@ class Malawi(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
26
26
 
27
27
  country = "MW"
28
28
  observed_label = "%s (observed)"
29
+ start_year = 2000
29
30
 
30
31
  def __init__(self, *args, **kwargs):
31
32
  ChristianHolidays.__init__(self)
@@ -34,10 +35,6 @@ class Malawi(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
34
35
  super().__init__(*args, **kwargs)
35
36
 
36
37
  def _populate_public_holidays(self):
37
- # Observed since 2000
38
- if self._year <= 1999:
39
- return None
40
-
41
38
  self._add_observed(self._add_new_years_day("New Year's Day"))
42
39
 
43
40
  self._add_observed(self._add_holiday_jan_15("John Chilembwe Day"))
@@ -123,6 +123,7 @@ class Malaysia(
123
123
  "PJY": "16",
124
124
  }
125
125
  supported_languages = ("en_US", "ms_MY", "th")
126
+ start_year = 1952
126
127
 
127
128
  def __init__(self, *args, **kwargs):
128
129
  """
@@ -152,9 +153,6 @@ class Malaysia(
152
153
  self.dts_observed = set()
153
154
 
154
155
  def _populate_public_holidays(self):
155
- if self._year <= 1951:
156
- return None
157
-
158
156
  # This must be done for every `_populate_public_holidays()` call.
159
157
  # Otherwise, 2006/2007 Eid al-Adha observance would be miscalculated.
160
158
  self.dts_observed = set()
@@ -212,9 +210,6 @@ class Malaysia(
212
210
  self.dts_observed.update(self._add_eid_al_adha_day(tr("Hari Raya Qurban")))
213
211
 
214
212
  def _populate_subdiv_holidays(self):
215
- if self._year <= 1951:
216
- return None
217
-
218
213
  if self.subdiv and self.subdiv not in {"13", "15"}:
219
214
  # Deepavali.
220
215
  self.dts_observed.add(self._add_diwali(tr("Hari Deepavali")))
@@ -40,6 +40,8 @@ class Malta(HolidayBase, ChristianHolidays, InternationalHolidays):
40
40
  country = "MT"
41
41
  default_language = "mt"
42
42
  supported_languages = ("en_US", "mt")
43
+ # Earliest available source is 1980.
44
+ start_year = 1980
43
45
 
44
46
  def __init__(self, *args, **kwargs):
45
47
  ChristianHolidays.__init__(self)
@@ -47,10 +49,6 @@ class Malta(HolidayBase, ChristianHolidays, InternationalHolidays):
47
49
  super().__init__(*args, **kwargs)
48
50
 
49
51
  def _populate_public_holidays(self):
50
- # Earliest available source is 1980
51
- if self._year <= 1979:
52
- return None
53
-
54
52
  # L-Ewwel tas-Sena
55
53
  # Status: In-Use.
56
54
 
@@ -27,6 +27,7 @@ class Moldova(HolidayBase, ChristianHolidays, InternationalHolidays):
27
27
  country = "MD"
28
28
  default_language = "ro"
29
29
  supported_languages = ("en_US", "ro", "uk")
30
+ start_year = 1991
30
31
 
31
32
  def __init__(self, *args, **kwargs):
32
33
  ChristianHolidays.__init__(self, JULIAN_CALENDAR)
@@ -34,9 +35,6 @@ class Moldova(HolidayBase, ChristianHolidays, InternationalHolidays):
34
35
  super().__init__(*args, **kwargs)
35
36
 
36
37
  def _populate_public_holidays(self):
37
- if self._year <= 1990:
38
- return None
39
-
40
38
  # New Year's Day.
41
39
  self._add_new_years_day(tr("Anul Nou"))
42
40
 
@@ -73,7 +71,7 @@ class Moldova(HolidayBase, ChristianHolidays, InternationalHolidays):
73
71
 
74
72
  if self._year >= 2017:
75
73
  # Europe Day.
76
- self._add_holiday_may_9(tr("Ziua Europei"))
74
+ self._add_europe_day(tr("Ziua Europei"))
77
75
 
78
76
  if self._year >= 2016:
79
77
  # International Children's Day.
@@ -22,6 +22,7 @@ class Mozambique(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
22
22
  # %s (observed).
23
23
  observed_label = tr("%s (ponte)")
24
24
  supported_languages = ("en_US", "pt_MZ", "uk")
25
+ start_year = 1975
25
26
 
26
27
  def __init__(self, *args, **kwargs):
27
28
  ChristianHolidays.__init__(self)
@@ -30,9 +31,6 @@ class Mozambique(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
30
31
  super().__init__(*args, **kwargs)
31
32
 
32
33
  def _populate_public_holidays(self):
33
- if self._year <= 1974:
34
- return None
35
-
36
34
  # International Fraternalism Day.
37
35
  self._add_observed(self._add_new_years_day(tr("Dia da Fraternidade universal")))
38
36
 
@@ -30,6 +30,7 @@ class Namibia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
30
30
  country = "NA"
31
31
  # %s (observed).
32
32
  observed_label = "%s (observed)"
33
+ start_year = 1990
33
34
 
34
35
  def __init__(self, *args, **kwargs):
35
36
  ChristianHolidays.__init__(self)
@@ -40,9 +41,6 @@ class Namibia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Sta
40
41
  super().__init__(*args, **kwargs)
41
42
 
42
43
  def _populate_public_holidays(self):
43
- if self._year <= 1989:
44
- return None
45
-
46
44
  # New Year's Day.
47
45
  self._add_observed(self._add_new_years_day("New Year's Day"))
48
46
 
@@ -32,6 +32,7 @@ class Netherlands(HolidayBase, ChristianHolidays, InternationalHolidays):
32
32
  default_language = "nl"
33
33
  supported_categories = (OPTIONAL, PUBLIC)
34
34
  supported_languages = ("en_US", "nl", "uk")
35
+ start_year = 1801
35
36
 
36
37
  def __init__(self, *args, **kwargs):
37
38
  ChristianHolidays.__init__(self)
@@ -112,6 +112,7 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
112
112
  "STC", # For 'South Canterbury' Subregional Holidays.
113
113
  "WTL", # Westland, Correct code is WTC (for West Coast).
114
114
  )
115
+ start_year = 1894
115
116
 
116
117
  def __init__(self, *args, **kwargs):
117
118
  ChristianHolidays.__init__(self)
@@ -137,9 +138,6 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
137
138
  # Sovereign's Birthday Observance Act 1937, 1952
138
139
  # Holidays Act 1981, 2003
139
140
 
140
- if self._year <= 1893:
141
- return None
142
-
143
141
  # New Year's Day
144
142
  self._add_observed(self._add_new_years_day("New Year's Day"), rule=SAT_SUN_TO_NEXT_MON_TUE)
145
143
  self._add_observed(
@@ -29,6 +29,7 @@ class Nigeria(
29
29
 
30
30
  country = "NG"
31
31
  observed_label = "%s (observed)"
32
+ start_year = 1979
32
33
 
33
34
  def __init__(self, *args, **kwargs):
34
35
  ChristianHolidays.__init__(self)
@@ -40,9 +41,6 @@ class Nigeria(
40
41
  super().__init__(*args, **kwargs)
41
42
 
42
43
  def _populate_public_holidays(self):
43
- if self._year <= 1978:
44
- return None
45
-
46
44
  dts_observed = set()
47
45
 
48
46
  # New Year's Day.
@@ -18,6 +18,7 @@ from holidays.holiday_base import HolidayBase
18
18
 
19
19
  class Pakistan(HolidayBase, InternationalHolidays, IslamicHolidays):
20
20
  country = "PK"
21
+ start_year = 1948
21
22
 
22
23
  def __init__(self, *args, **kwargs):
23
24
  InternationalHolidays.__init__(self)
@@ -25,9 +26,6 @@ class Pakistan(HolidayBase, InternationalHolidays, IslamicHolidays):
25
26
  super().__init__(*args, **kwargs)
26
27
 
27
28
  def _populate_public_holidays(self):
28
- if self._year <= 1947:
29
- return None
30
-
31
29
  # Kashmir Solidarity Day.
32
30
  if self._year >= 1990:
33
31
  self._add_holiday_feb_5("Kashmir Solidarity Day")
@@ -37,6 +37,11 @@ class Palau(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
37
37
  country = "PW"
38
38
  supported_categories = (ARMED_FORCES, HALF_DAY, PUBLIC)
39
39
  observed_label = "%s (observed)"
40
+ # Republic of Palau Public Law No. 2-15.
41
+ # The legislation was first adopted by the 2nd Olbiil Era Kelulau (1984-1988),
42
+ # but since we cannot find any info on its actual adoption date, we may as
43
+ # well use the formation date of the country as the placeholder cut-off date.
44
+ start_year = 1981
40
45
 
41
46
  def __init__(self, *args, **kwargs):
42
47
  ChristianHolidays.__init__(self)
@@ -46,13 +51,6 @@ class Palau(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
46
51
  super().__init__(*args, **kwargs)
47
52
 
48
53
  def _populate_public_holidays(self):
49
- # Republic of Palau Public Law No. 2-15.
50
- # The legislation was first adopted by the 2nd Olbiil Era Kelulau (1984-1988),
51
- # but since we cannot find any info on its actual adoption date, we may as
52
- # well use the formation date of the country as the placeholder cut-off date.
53
- if self._year <= 1980:
54
- return None
55
-
56
54
  # Fixed Date Public Holidays.
57
55
 
58
56
  # New Year's Day.
@@ -42,6 +42,8 @@ class PapuaNewGuinea(
42
42
 
43
43
  country = "PG"
44
44
  observed_label = "%s (observed)"
45
+ # Public Holidays Law 1953 (No. 38 of 1953).
46
+ start_year = 1953
45
47
 
46
48
  def __init__(self, *args, **kwargs):
47
49
  ChristianHolidays.__init__(self)
@@ -51,10 +53,6 @@ class PapuaNewGuinea(
51
53
  super().__init__(*args, **kwargs)
52
54
 
53
55
  def _populate_public_holidays(self):
54
- # Public Holidays Law 1953 (No. 38 of 1953).
55
- if self._year <= 1952:
56
- return None
57
-
58
56
  # Section 1: Public Holidays.
59
57
  # - Easter Saturday is currently not gazetted as a Public Holiday in 2024.
60
58
  # - While Easter Sunday itself is not listed, this is de facto always a day-off.
@@ -10,7 +10,6 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
- from datetime import date
14
13
  from gettext import gettext as tr
15
14
 
16
15
  from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, DEC
@@ -22,8 +21,12 @@ from holidays.holiday_base import HolidayBase
22
21
  class Paraguay(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays):
23
22
  """
24
23
  References:
24
+ - `Ley 8/1990 <https://www.bacn.gov.py/leyes-paraguayas/2358/ley-n-8--por-la-cual-se-determinan-los-feriados-de-la-republica>`_
25
+ - `Ley 715/1995 <https://www.bacn.gov.py/leyes-paraguayas/792/ley-n-715--amplia-la-ley-no-0890->`_
26
+ - `Ley 1.601/2000 <https://www.bacn.gov.py/leyes-paraguayas/1677/ley-n-1601--modifica-el-articulo-1-de-la-ley-no-71595-que-amplia-la-ley-n-0890-por-la-cual-se-determinan-los-feriados-de-la-republica>`_
27
+ - `Ley 1.723/2001 <https://www.bacn.gov.py/leyes-paraguayas/634/ley-n-1723--autoriza-al-poder-ejecutivo-a-trasladar-los-feriados-nacionales-al-dia-lunes>`_
28
+ - `Ley 4.531/2011 <https://www.bacn.gov.py/leyes-paraguayas/3831/ley-n-4531-restablece-el-dia-14-de-mayo-de-cada-ano-como-feriado-nacional>`_
25
29
  - https://es.wikipedia.org/wiki/Anexo:D%C3%ADas_festivos_en_Paraguay
26
- - https://www.ghp.com.py/news/feriados-nacionales-del-ano-2019-en-paraguay
27
30
  - http://www.calendarioparaguay.com/
28
31
  """
29
32
 
@@ -31,6 +34,8 @@ class Paraguay(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
31
34
  default_language = "es"
32
35
  supported_categories = (GOVERNMENT, PUBLIC)
33
36
  supported_languages = ("en_US", "es", "uk")
37
+ # Ley 8/1990.
38
+ start_year = 1991
34
39
 
35
40
  def __init__(self, *args, **kwargs):
36
41
  ChristianHolidays.__init__(self)
@@ -38,21 +43,18 @@ class Paraguay(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
38
43
  StaticHolidays.__init__(self, ParaguayStaticHolidays)
39
44
  super().__init__(*args, **kwargs)
40
45
 
41
- def _move_holiday(self, dt: date) -> None:
42
- if not self.observed and self._is_weekend(dt):
43
- self.pop(dt)
44
-
45
46
  def _populate_public_holidays(self):
46
47
  # New Year's Day.
47
- self._move_holiday(self._add_new_years_day(tr("Año Nuevo")))
48
+ self._add_new_years_day(tr("Año Nuevo"))
48
49
 
49
50
  dates_obs = {
50
51
  2013: (MAR, 4),
51
52
  2016: (FEB, 29),
52
53
  2018: (FEB, 26),
54
+ 2019: (MAR, 4),
53
55
  2022: (FEB, 28),
56
+ 2023: (FEB, 27),
54
57
  }
55
-
56
58
  self._add_holiday(
57
59
  # Patriots Day.
58
60
  tr("Día de los Héroes de la Patria"),
@@ -66,52 +68,51 @@ class Paraguay(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
66
68
  self._add_good_friday(tr("Viernes Santo"))
67
69
 
68
70
  # Easter Sunday.
69
- self._move_holiday(self._add_easter_sunday(tr("Domingo de Resurrección")))
71
+ self._add_easter_sunday(tr("Domingo de Resurrección"))
70
72
 
71
- # Labor Day.
72
- self._move_holiday(self._add_labor_day(tr("Día del Trabajador")))
73
+ # Workers' Day.
74
+ self._add_labor_day(tr("Día de los Trabajadores"))
73
75
 
74
- # Independence Day.
75
- name = tr("Día de la Independencia Nacional")
76
76
  if self._year >= 2012:
77
- self._move_holiday(self._add_holiday_may_14(name))
78
- may_15 = self._add_holiday_may_15(name)
79
- if self._year != 2021:
80
- self._move_holiday(may_15)
77
+ # National Holiday.
78
+ self._add_holiday_may_14(tr("Feriado Nacional"))
79
+
80
+ # Independence Day.
81
+ self._add_holiday_may_15(tr("Día de la Independencia Nacional"))
81
82
 
82
83
  dates_obs = {
83
84
  2014: (JUN, 16),
84
85
  2018: (JUN, 11),
86
+ 2019: (JUN, 17),
87
+ 2024: (JUN, 10),
85
88
  }
86
- self._move_holiday(
87
- # Chaco Armistice Day.
88
- self._add_holiday(tr("Día de la Paz del Chaco"), dates_obs.get(self._year, (JUN, 12)))
89
- )
89
+ # Chaco Armistice Day.
90
+ self._add_holiday(tr("Día de la Paz del Chaco"), dates_obs.get(self._year, (JUN, 12)))
90
91
 
91
92
  # Asuncion Foundation's Day.
92
- self._move_holiday(self._add_holiday_aug_15(tr("Día de la Fundación de Asunción")))
93
+ self._add_holiday_aug_15(tr("Día de la Fundación de Asunción"))
93
94
 
94
- if self._year >= 2000:
95
+ # Ley 715/1995, 1.601/2000.
96
+ if self._year >= 1995:
95
97
  dates_obs = {
96
98
  2015: (SEP, 28),
97
99
  2016: (OCT, 3),
98
100
  2017: (OCT, 2),
99
101
  2021: (SEP, 27),
100
102
  2022: (OCT, 3),
103
+ 2024: (SEP, 30),
101
104
  }
102
- self._move_holiday(
103
- self._add_holiday(
104
- # Boqueron Battle Day.
105
- tr("Día de la Batalla de Boquerón"),
106
- dates_obs.get(self._year, (SEP, 29)),
107
- )
105
+ self._add_holiday(
106
+ # Boqueron Battle Day.
107
+ tr("Día de la Batalla de Boquerón"),
108
+ dates_obs.get(self._year, (SEP, 29)),
108
109
  )
109
110
 
110
111
  # Caacupe Virgin Day.
111
- self._move_holiday(self._add_holiday_dec_8(tr("Día de la Virgen de Caacupé")))
112
+ self._add_holiday_dec_8(tr("Día de la Virgen de Caacupé"))
112
113
 
113
114
  # Christmas Day.
114
- self._add_christmas_day(tr("Navidad"))
115
+ self._add_christmas_day(tr("Día de la Navidad"))
115
116
 
116
117
 
117
118
  class PY(Paraguay):
@@ -58,6 +58,7 @@ class Philippines(
58
58
  # %s (estimated).
59
59
  estimated_label = tr("%s (estimated)")
60
60
  supported_languages = ("en_PH", "en_US", "fil", "th")
61
+ start_year = 1988
61
62
 
62
63
  def __init__(self, *args, **kwargs):
63
64
  ChineseCalendarHolidays.__init__(self, cls=PhilippinesChineseHolidays)
@@ -68,9 +69,6 @@ class Philippines(
68
69
  super().__init__(*args, **kwargs)
69
70
 
70
71
  def _populate_public_holidays(self):
71
- if self._year <= 1987:
72
- return None
73
-
74
72
  # New Year's Day.
75
73
  self._add_new_years_day(tr("New Year's Day"))
76
74
 
@@ -25,6 +25,7 @@ class Poland(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolida
25
25
  country = "PL"
26
26
  default_language = "pl"
27
27
  supported_languages = ("en_US", "pl", "uk")
28
+ start_year = 1925
28
29
 
29
30
  def __init__(self, *args, **kwargs):
30
31
  ChristianHolidays.__init__(self)
@@ -33,9 +34,6 @@ class Poland(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolida
33
34
  super().__init__(*args, **kwargs)
34
35
 
35
36
  def _populate_public_holidays(self):
36
- if self._year <= 1924:
37
- return None
38
-
39
37
  # New Year's Day.
40
38
  self._add_new_years_day(tr("Nowy Rok"))
41
39
 
@@ -39,6 +39,7 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
39
39
  country = "PT"
40
40
  default_language = "pt_PT"
41
41
  supported_categories = (OPTIONAL, PUBLIC)
42
+ start_year = 1801
42
43
 
43
44
  # https://en.wikipedia.org/wiki/ISO_3166-2:PT
44
45
  subdivisions = (
@@ -63,6 +64,28 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
63
64
  "20",
64
65
  "30",
65
66
  )
67
+ subdivisions_aliases = {
68
+ "Aveiro": "01",
69
+ "Beja": "02",
70
+ "Braga": "03",
71
+ "Bragança": "04",
72
+ "Castelo Branco": "05",
73
+ "Coimbra": "06",
74
+ "Évora": "07",
75
+ "Faro": "08",
76
+ "Guarda": "09",
77
+ "Leiria": "10",
78
+ "Lisboa": "11",
79
+ "Portalegre": "12",
80
+ "Porto": "13",
81
+ "Santarém": "14",
82
+ "Setúbal": "15",
83
+ "Viana do Castelo": "16",
84
+ "Vila Real": "17",
85
+ "Viseu": "18",
86
+ "Região Autónoma dos Açores": "20",
87
+ "Região Autónoma da Madeira": "30",
88
+ }
66
89
  _deprecated_subdivisions = ("Ext",)
67
90
  supported_languages = ("en_US", "pt_PT", "uk")
68
91
 
@@ -27,6 +27,7 @@ class Russia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
27
27
  country = "RU"
28
28
  default_language = "ru"
29
29
  supported_languages = ("en_US", "ru")
30
+ start_year = 1991
30
31
 
31
32
  def __init__(self, *args, **kwargs):
32
33
  ChristianHolidays.__init__(self, JULIAN_CALENDAR)
@@ -35,9 +36,6 @@ class Russia(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
35
36
  super().__init__(*args, **kwargs)
36
37
 
37
38
  def _populate_public_holidays(self):
38
- if self._year <= 1990:
39
- return None
40
-
41
39
  if self._year <= 2004:
42
40
  # New Year's Day.
43
41
  name = tr("Новый год")
@@ -47,6 +47,8 @@ class SaintKittsAndNevis(
47
47
  # %s (observed).
48
48
  observed_label = "%s (observed)"
49
49
  weekend = {SUN}
50
+ # Public Holidays Act, Act 7 of 1983 Amendment.
51
+ start_year = 1983
50
52
 
51
53
  def __init__(self, *args, **kwargs):
52
54
  ChristianHolidays.__init__(self)
@@ -56,10 +58,6 @@ class SaintKittsAndNevis(
56
58
  super().__init__(*args, **kwargs)
57
59
 
58
60
  def _populate_public_holidays(self):
59
- # Public Holidays Act, Act 7 of 1983 Amendment.
60
- if self._year <= 1982:
61
- return None
62
-
63
61
  # Carnival Day.
64
62
  self._add_observed(self._add_new_years_day("Carnival Day"), rule=SUN_TO_NEXT_TUE)
65
63
 
@@ -41,6 +41,8 @@ class Seychelles(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
41
41
  # %s (observed).
42
42
  observed_label = tr("%s (observed)")
43
43
  supported_languages = ("en_SC", "en_US")
44
+ # Earliest source is the 1994 amendment of Seychelles Public Holidays Act.
45
+ start_year = 1994
44
46
 
45
47
  def __init__(self, *args, **kwargs):
46
48
  ChristianHolidays.__init__(self)
@@ -50,10 +52,6 @@ class Seychelles(ObservedHolidayBase, ChristianHolidays, InternationalHolidays):
50
52
  super().__init__(*args, **kwargs)
51
53
 
52
54
  def _populate_public_holidays(self):
53
- # Earliest source is the 1994 amendment of Seychelles Public Holidays Act.
54
- if self._year <= 1993:
55
- return None
56
-
57
55
  # New Year's Day.
58
56
  self._add_new_years_day(tr("New Year's Day"))
59
57
 
@@ -29,6 +29,8 @@ class Slovakia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
29
29
  default_language = "sk"
30
30
  supported_categories = (PUBLIC, WORKDAY)
31
31
  supported_languages = ("en_US", "sk", "uk")
32
+ # Independent Slovak Republic established on Jan 01, 1993
33
+ start_year = 1993
32
34
 
33
35
  def __init__(self, *args, **kwargs):
34
36
  ChristianHolidays.__init__(self)
@@ -37,10 +39,6 @@ class Slovakia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
37
39
  super().__init__(*args, **kwargs)
38
40
 
39
41
  def _populate_public_holidays(self):
40
- # Independent Slovak Republic established on Jan 01, 1993
41
- if self._year <= 1992:
42
- return None
43
-
44
42
  # Day of the Establishment of the Slovak Republic.
45
43
  self._add_holiday_jan_1(tr("Deň vzniku Slovenskej republiky"))
46
44
 
@@ -31,6 +31,7 @@ class Slovenia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
31
31
  country = "SI"
32
32
  default_language = "sl"
33
33
  supported_languages = ("en_US", "sl", "uk")
34
+ start_year = 1991
34
35
 
35
36
  def __init__(self, *args, **kwargs):
36
37
  ChristianHolidays.__init__(self)
@@ -39,9 +40,6 @@ class Slovenia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHoli
39
40
  super().__init__(*args, **kwargs)
40
41
 
41
42
  def _populate_public_holidays(self):
42
- if self._year <= 1990:
43
- return None
44
-
45
43
  # New Year's Day.
46
44
  name = tr("novo leto")
47
45
  self._add_new_years_day(name)
@@ -25,6 +25,8 @@ class SouthAfrica(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
25
25
 
26
26
  country = "ZA"
27
27
  observed_label = "%s (observed)"
28
+ # Observed since 1910, with a few name changes
29
+ start_year = 1910
28
30
 
29
31
  def __init__(self, *args, **kwargs):
30
32
  ChristianHolidays.__init__(self)
@@ -35,10 +37,6 @@ class SouthAfrica(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
35
37
  super().__init__(*args, **kwargs)
36
38
 
37
39
  def _populate_public_holidays(self):
38
- # Observed since 1910, with a few name changes
39
- if self._year <= 1909:
40
- return None
41
-
42
40
  self._add_observed(self._add_new_years_day("New Year's Day"))
43
41
 
44
42
  self._add_good_friday("Good Friday")
@@ -92,6 +92,7 @@ class SouthKorea(
92
92
  # Alternative holiday for %s.
93
93
  observed_label = tr("%s 대체 휴일")
94
94
  supported_languages = ("en_US", "ko", "th")
95
+ start_year = 1948
95
96
 
96
97
  def __init__(self, *args, **kwargs):
97
98
  ChineseCalendarHolidays.__init__(self, cls=SouthKoreaLunisolarHolidays)
@@ -134,9 +135,6 @@ class SouthKorea(
134
135
  ):
135
136
  three_days_holidays[dt_alt] = name
136
137
 
137
- if self._year <= 1947:
138
- return None
139
-
140
138
  dts_observed = set()
141
139
  three_days_holidays = {}
142
140
 
@@ -281,9 +279,6 @@ class SouthKorea(
281
279
  self._populate_observed(dts_observed, three_days_holidays)
282
280
 
283
281
  def _populate_bank_holidays(self):
284
- if self._year <= 1947:
285
- return None
286
-
287
282
  # Workers' Day.
288
283
  name = tr("근로자의날")
289
284
  if self._year >= 1994:
@@ -58,6 +58,7 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays)
58
58
  )
59
59
  supported_categories = (HALF_DAY, OPTIONAL, PUBLIC)
60
60
  supported_languages = ("de", "en_US", "fr", "it", "uk")
61
+ start_year = 1801
61
62
 
62
63
  def __init__(self, *args, **kwargs):
63
64
  ChristianHolidays.__init__(self)
@@ -66,7 +67,7 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays)
66
67
 
67
68
  def _populate_public_holidays(self):
68
69
  # New Year's Day.
69
- self._add_new_years_day(tr("Neujahrestag"))
70
+ self._add_new_years_day(tr("Neujahrstag"))
70
71
 
71
72
  # Ascension Day.
72
73
  self._add_ascension_thursday(tr("Auffahrt"))
@@ -70,6 +70,7 @@ class Taiwan(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays
70
70
  observed_label = tr("%s(慶祝)")
71
71
  default_language = "zh_TW"
72
72
  supported_languages = ("en_US", "th", "zh_CN", "zh_TW")
73
+ start_year = 1912
73
74
 
74
75
  def __init__(self, *args, **kwargs):
75
76
  ChineseCalendarHolidays.__init__(self)
@@ -96,9 +97,6 @@ class Taiwan(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays
96
97
  )
97
98
 
98
99
  def _populate_public_holidays(self):
99
- if self._year <= 1911:
100
- return None
101
-
102
100
  dts_observed = set()
103
101
  dts_observed_forward = set()
104
102