holidays 0.55__py3-none-any.whl → 0.56__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 (99) hide show
  1. holidays/__init__.py +1 -1
  2. holidays/countries/__init__.py +2 -0
  3. holidays/countries/australia.py +1 -1
  4. holidays/countries/austria.py +10 -10
  5. holidays/countries/bosnia_and_herzegovina.py +8 -12
  6. holidays/countries/brunei.py +6 -0
  7. holidays/countries/cambodia.py +20 -3
  8. holidays/countries/canada.py +6 -6
  9. holidays/countries/croatia.py +1 -1
  10. holidays/countries/cyprus.py +1 -1
  11. holidays/countries/dominica.py +130 -0
  12. holidays/countries/dominican_republic.py +7 -12
  13. holidays/countries/haiti.py +134 -0
  14. holidays/countries/hongkong.py +1 -1
  15. holidays/countries/hungary.py +6 -0
  16. holidays/countries/ireland.py +6 -6
  17. holidays/countries/isle_of_man.py +1 -0
  18. holidays/countries/italy.py +113 -5
  19. holidays/countries/laos.py +24 -62
  20. holidays/countries/liechtenstein.py +1 -1
  21. holidays/countries/luxembourg.py +1 -1
  22. holidays/countries/malaysia.py +16 -38
  23. holidays/countries/malta.py +3 -3
  24. holidays/countries/new_zealand.py +68 -43
  25. holidays/countries/philippines.py +215 -26
  26. holidays/countries/portugal.py +7 -7
  27. holidays/countries/russia.py +382 -3
  28. holidays/countries/slovakia.py +1 -1
  29. holidays/countries/spain.py +8 -8
  30. holidays/countries/switzerland.py +3 -3
  31. holidays/countries/united_kingdom.py +12 -22
  32. holidays/countries/united_states.py +2 -2
  33. holidays/groups/christian.py +19 -0
  34. holidays/locale/ar/LC_MESSAGES/CA.mo +0 -0
  35. holidays/locale/ar/LC_MESSAGES/CA.po +6 -6
  36. holidays/locale/de/LC_MESSAGES/AT.po +6 -6
  37. holidays/locale/de/LC_MESSAGES/CH.po +3 -3
  38. holidays/locale/de/LC_MESSAGES/LI.po +1 -1
  39. holidays/locale/de/LC_MESSAGES/LU.po +1 -1
  40. holidays/locale/en_CA/LC_MESSAGES/CA.po +6 -6
  41. holidays/locale/en_US/LC_MESSAGES/AT.mo +0 -0
  42. holidays/locale/en_US/LC_MESSAGES/AT.po +14 -14
  43. holidays/locale/en_US/LC_MESSAGES/BG.mo +0 -0
  44. holidays/locale/en_US/LC_MESSAGES/BG.po +3 -3
  45. holidays/locale/en_US/LC_MESSAGES/CA.mo +0 -0
  46. holidays/locale/en_US/LC_MESSAGES/CA.po +11 -11
  47. holidays/locale/en_US/LC_MESSAGES/CH.mo +0 -0
  48. holidays/locale/en_US/LC_MESSAGES/CH.po +9 -8
  49. holidays/locale/en_US/LC_MESSAGES/ES.mo +0 -0
  50. holidays/locale/en_US/LC_MESSAGES/ES.po +16 -16
  51. holidays/locale/en_US/LC_MESSAGES/HR.mo +0 -0
  52. holidays/locale/en_US/LC_MESSAGES/HR.po +4 -4
  53. holidays/locale/en_US/LC_MESSAGES/HT.mo +0 -0
  54. holidays/locale/en_US/LC_MESSAGES/HT.po +127 -0
  55. holidays/locale/en_US/LC_MESSAGES/LI.mo +0 -0
  56. holidays/locale/en_US/LC_MESSAGES/LI.po +4 -4
  57. holidays/locale/en_US/LC_MESSAGES/LU.mo +0 -0
  58. holidays/locale/en_US/LC_MESSAGES/LU.po +4 -4
  59. holidays/locale/en_US/LC_MESSAGES/MT.mo +0 -0
  60. holidays/locale/en_US/LC_MESSAGES/MT.po +8 -8
  61. holidays/locale/en_US/LC_MESSAGES/PT.mo +0 -0
  62. holidays/locale/en_US/LC_MESSAGES/PT.po +16 -16
  63. holidays/locale/en_US/LC_MESSAGES/SK.mo +0 -0
  64. holidays/locale/en_US/LC_MESSAGES/SK.po +4 -4
  65. holidays/locale/es/LC_MESSAGES/ES.po +7 -7
  66. holidays/locale/es/LC_MESSAGES/HT.mo +0 -0
  67. holidays/locale/es/LC_MESSAGES/HT.po +127 -0
  68. holidays/locale/fr/LC_MESSAGES/CA.mo +0 -0
  69. holidays/locale/fr/LC_MESSAGES/CA.po +6 -6
  70. holidays/locale/fr/LC_MESSAGES/CH.po +3 -3
  71. holidays/locale/fr/LC_MESSAGES/LU.mo +0 -0
  72. holidays/locale/fr/LC_MESSAGES/LU.po +2 -2
  73. holidays/locale/fr_HT/LC_MESSAGES/HT.mo +0 -0
  74. holidays/locale/fr_HT/LC_MESSAGES/HT.po +127 -0
  75. holidays/locale/hr/LC_MESSAGES/HR.po +1 -1
  76. holidays/locale/ht/LC_MESSAGES/HT.mo +0 -0
  77. holidays/locale/ht/LC_MESSAGES/HT.po +127 -0
  78. holidays/locale/it/LC_MESSAGES/CH.po +3 -3
  79. holidays/locale/lb/LC_MESSAGES/LU.po +1 -1
  80. holidays/locale/mt/LC_MESSAGES/MT.po +3 -3
  81. holidays/locale/pt_PT/LC_MESSAGES/PT.po +7 -7
  82. holidays/locale/sk/LC_MESSAGES/SK.po +1 -1
  83. holidays/locale/th/LC_MESSAGES/CA.mo +0 -0
  84. holidays/locale/th/LC_MESSAGES/CA.po +6 -6
  85. holidays/locale/uk/LC_MESSAGES/AT.po +6 -6
  86. holidays/locale/uk/LC_MESSAGES/CH.po +3 -3
  87. holidays/locale/uk/LC_MESSAGES/ES.po +7 -7
  88. holidays/locale/uk/LC_MESSAGES/HR.po +1 -1
  89. holidays/locale/uk/LC_MESSAGES/LI.po +1 -1
  90. holidays/locale/uk/LC_MESSAGES/LU.po +1 -1
  91. holidays/locale/uk/LC_MESSAGES/PT.po +7 -7
  92. holidays/locale/uk/LC_MESSAGES/SK.po +1 -1
  93. holidays/registry.py +2 -0
  94. {holidays-0.55.dist-info → holidays-0.56.dist-info}/METADATA +17 -7
  95. {holidays-0.55.dist-info → holidays-0.56.dist-info}/RECORD +99 -89
  96. {holidays-0.55.dist-info → holidays-0.56.dist-info}/WHEEL +1 -1
  97. {holidays-0.55.dist-info → holidays-0.56.dist-info}/AUTHORS +0 -0
  98. {holidays-0.55.dist-info → holidays-0.56.dist-info}/LICENSE +0 -0
  99. {holidays-0.55.dist-info → holidays-0.56.dist-info}/top_level.txt +0 -0
@@ -10,89 +10,146 @@
10
10
  # Website: https://github.com/vacanza/python-holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
+ from holidays.calendars import _CustomChineseHolidays, _CustomIslamicHolidays
14
+ from holidays.calendars.gregorian import JAN, FEB, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
13
15
  from holidays.groups import (
14
16
  ChineseCalendarHolidays,
15
17
  ChristianHolidays,
16
18
  InternationalHolidays,
17
19
  IslamicHolidays,
20
+ StaticHolidays,
18
21
  )
19
22
  from holidays.holiday_base import HolidayBase
20
23
 
21
24
 
22
25
  class Philippines(
23
- HolidayBase, ChineseCalendarHolidays, ChristianHolidays, InternationalHolidays, IslamicHolidays
26
+ HolidayBase,
27
+ ChineseCalendarHolidays,
28
+ ChristianHolidays,
29
+ InternationalHolidays,
30
+ IslamicHolidays,
31
+ StaticHolidays,
24
32
  ):
25
33
  """
26
34
  Philippines holidays.
27
35
 
28
36
  References:
29
37
  - https://en.wikipedia.org/wiki/Public_holidays_in_the_Philippines
38
+ - `Revised Administrative Code of 1987 <https://www.officialgazette.gov.ph/1987/07/25/executive-order-no-292-book-ichapter-7-regular-holidays-and-nationwide-special-days/>`_
39
+ - `Republic Act No. 9177 <https://www.officialgazette.gov.ph/2002/11/13/republic-act-no-9177/>`_
40
+ - `Republic Act No. 9492 <https://www.officialgazette.gov.ph/2007/07/24/republic-act-no-9492/>`_
41
+ - `Republic Act No. 9849 <https://www.officialgazette.gov.ph/2009/12/11/republic-act-no-9849/>`_
42
+ - `Republic Act No. 10966 <https://www.officialgazette.gov.ph/2017/12/28/republic-act-no-10966/>`_
43
+ - `Nationwide holidays 2018-2024 <https://www.officialgazette.gov.ph/nationwide-holidays/2018/>`_
30
44
  """
31
45
 
32
46
  country = "PH"
33
47
 
34
48
  def __init__(self, *args, **kwargs):
35
- ChineseCalendarHolidays.__init__(self)
49
+ ChineseCalendarHolidays.__init__(self, cls=PhilippinesChineseHolidays)
36
50
  ChristianHolidays.__init__(self)
37
51
  InternationalHolidays.__init__(self)
38
- IslamicHolidays.__init__(self)
52
+ IslamicHolidays.__init__(self, cls=PhilippinesIslamicHolidays)
53
+ StaticHolidays.__init__(self, cls=PhilippinesStaticHolidays)
39
54
  super().__init__(*args, **kwargs)
40
55
 
41
56
  def _populate_public_holidays(self):
57
+ if self._year <= 1987:
58
+ return None
59
+
42
60
  # New Year's Day.
43
61
  self._add_new_years_day("New Year's Day")
44
62
 
45
63
  # Chinese New Year.
46
- self._add_chinese_new_years_day("Chinese New Year")
47
-
48
- # People Power Anniversary.
49
- self._add_holiday_feb_25("EDSA Revolution Anniversary")
64
+ if self._year >= 2012 and self._year != 2023:
65
+ self._add_chinese_new_years_day("Chinese New Year")
50
66
 
51
- # Day of Valor.
52
- self._add_holiday_apr_9("Day of Valor")
67
+ # EDSA People Power Revolution Anniversary.
68
+ if self._year >= 2016 and self._year not in {2017, 2024}:
69
+ dates_obs = {
70
+ 2023: (FEB, 24),
71
+ }
72
+ self._add_holiday(
73
+ "EDSA People Power Revolution Anniversary", dates_obs.get(self._year, (FEB, 25))
74
+ )
53
75
 
54
76
  # Maundy Thursday.
55
77
  self._add_holy_thursday("Maundy Thursday")
78
+
56
79
  # Good Friday.
57
80
  self._add_good_friday("Good Friday")
81
+
58
82
  # Black Saturday.
59
- self._add_holy_saturday("Black Saturday")
83
+ if self._year >= 2013:
84
+ self._add_holy_saturday("Black Saturday")
60
85
 
61
- # Labour Day.
62
- self._add_labor_day("Labour Day")
86
+ # Day of Valor.
87
+ dates_obs = {
88
+ 2008: (APR, 7),
89
+ 2009: (APR, 6),
90
+ }
91
+ self._add_holiday("Araw ng Kagitingan (Day of Valor)", dates_obs.get(self._year, (APR, 9)))
63
92
 
64
- # Eid al-Fitr.
65
- self._add_eid_al_fitr_day("Eid'l Fitr")
93
+ # Labor Day.
94
+ self._add_labor_day("Labor Day")
66
95
 
67
96
  # Independence Day.
68
- self._add_holiday_jun_12("Independence Day")
69
-
70
- # Eid al-Adha.
71
- self._add_eid_al_adha_day("Eid'l Adha")
97
+ dates_obs = {
98
+ 2007: (JUN, 11),
99
+ 2008: (JUN, 9),
100
+ 2010: (JUN, 14),
101
+ }
102
+ self._add_holiday("Independence Day", dates_obs.get(self._year, (JUN, 12)))
72
103
 
73
104
  # Ninoy Aquino Day.
74
- self._add_holiday_aug_21("Ninoy Aquino Day")
105
+ dates_obs = {
106
+ 2007: (AUG, 20),
107
+ 2008: (AUG, 18),
108
+ 2010: (AUG, 23),
109
+ }
110
+ self._add_holiday("Ninoy Aquino Day", dates_obs.get(self._year, (AUG, 21)))
75
111
 
76
112
  # National Heroes Day.
77
- self._add_holiday_last_mon_of_aug("National Heroes Day")
113
+ name = "National Heroes Day"
114
+ if self._year >= 2007:
115
+ self._add_holiday_last_mon_of_aug(name)
116
+ else:
117
+ self._add_holiday_last_sun_of_aug(name)
78
118
 
79
119
  # All Saints' Day.
80
120
  self._add_all_saints_day("All Saints' Day")
81
121
 
82
122
  # Bonifacio Day.
83
- self._add_holiday_nov_30("Bonifacio Day")
123
+ dates_obs = {
124
+ 2008: (DEC, 1),
125
+ 2010: (NOV, 29),
126
+ }
127
+ self._add_holiday("Bonifacio Day", dates_obs.get(self._year, (NOV, 30)))
84
128
 
85
- # Immaculate Conception Day.
86
- self._add_immaculate_conception_day("Immaculate Conception Day")
129
+ # Immaculate Conception.
130
+ if self._year >= 2019:
131
+ self._add_immaculate_conception_day("Feast of the Immaculate Conception of Mary")
87
132
 
88
133
  # Christmas Day.
89
134
  self._add_christmas_day("Christmas Day")
90
135
 
91
136
  # Rizal Day.
92
- self._add_holiday_dec_30("Rizal Day")
137
+ dates_obs = {
138
+ 2010: (DEC, 27),
139
+ }
140
+ self._add_holiday("Rizal Day", dates_obs.get(self._year, (DEC, 30)))
93
141
 
94
- # New Year's Eve.
95
- self._add_new_years_eve("New Year's Eve")
142
+ # Last Day of the Year.
143
+ if self._year not in {2021, 2022}:
144
+ self._add_new_years_eve("Last Day of the Year")
145
+
146
+ # Eid al-Fitr.
147
+ if self._year >= 2002:
148
+ self._add_eid_al_fitr_day("Eid'l Fitr (Feast of Ramadhan)")
149
+
150
+ # Eid al-Adha.
151
+ if self._year >= 2010:
152
+ self._add_eid_al_adha_day("Eid'l Adha (Feast of Sacrifice)")
96
153
 
97
154
 
98
155
  class PH(Philippines):
@@ -101,3 +158,135 @@ class PH(Philippines):
101
158
 
102
159
  class PHL(Philippines):
103
160
  pass
161
+
162
+
163
+ class PhilippinesChineseHolidays(_CustomChineseHolidays):
164
+ LUNAR_NEW_YEAR_DATES = {
165
+ 2012: (JAN, 23),
166
+ 2013: (FEB, 10),
167
+ 2014: (JAN, 31),
168
+ 2015: (FEB, 19),
169
+ 2016: (FEB, 8),
170
+ 2017: (JAN, 28),
171
+ 2018: (FEB, 16),
172
+ 2019: (FEB, 5),
173
+ 2020: (JAN, 25),
174
+ 2021: (FEB, 12),
175
+ 2022: (FEB, 1),
176
+ 2023: (JAN, 22),
177
+ 2024: (FEB, 10),
178
+ }
179
+
180
+
181
+ class PhilippinesIslamicHolidays(_CustomIslamicHolidays):
182
+ EID_AL_ADHA_DATES = {
183
+ 2010: (NOV, 17),
184
+ 2011: (NOV, 7),
185
+ 2012: (OCT, 26),
186
+ 2013: (OCT, 15),
187
+ 2014: (OCT, 6),
188
+ 2015: (SEP, 25),
189
+ 2016: (SEP, 10),
190
+ 2017: (SEP, 2),
191
+ 2018: (AUG, 21),
192
+ 2019: (AUG, 12),
193
+ 2020: (JUL, 31),
194
+ 2021: (JUL, 20),
195
+ 2022: (JUL, 9),
196
+ 2023: (JUN, 28),
197
+ 2024: (JUN, 17),
198
+ }
199
+
200
+ EID_AL_FITR_DATES = {
201
+ 2002: (DEC, 6),
202
+ 2003: (NOV, 26),
203
+ 2004: (NOV, 14),
204
+ 2005: (NOV, 4),
205
+ 2006: (OCT, 24),
206
+ 2007: (OCT, 12),
207
+ 2008: (OCT, 1),
208
+ 2009: (SEP, 21),
209
+ 2010: (SEP, 10),
210
+ 2011: (AUG, 30),
211
+ 2012: (AUG, 20),
212
+ 2013: (AUG, 9),
213
+ 2014: (JUL, 29),
214
+ 2015: (JUL, 17),
215
+ 2016: (JUL, 7),
216
+ 2017: (JUN, 26),
217
+ 2018: (JUN, 15),
218
+ 2019: (JUN, 5),
219
+ 2020: (MAY, 25),
220
+ 2021: (MAY, 13),
221
+ 2022: (MAY, 3),
222
+ 2023: (APR, 21),
223
+ 2024: (APR, 10),
224
+ }
225
+
226
+
227
+ class PhilippinesStaticHolidays:
228
+ additional_special = "Additional special (non-working) day"
229
+ election_special = "Elections special (non-working) day"
230
+
231
+ special_public_holidays = {
232
+ 2008: (
233
+ (DEC, 26, additional_special),
234
+ (DEC, 29, additional_special),
235
+ ),
236
+ 2009: (
237
+ (NOV, 2, additional_special),
238
+ (DEC, 24, additional_special),
239
+ ),
240
+ 2010: ((DEC, 24, additional_special),),
241
+ 2012: ((NOV, 2, additional_special),),
242
+ 2013: (
243
+ (NOV, 2, additional_special),
244
+ (DEC, 24, additional_special),
245
+ ),
246
+ 2014: (
247
+ (DEC, 24, additional_special),
248
+ (DEC, 26, additional_special),
249
+ ),
250
+ 2015: (
251
+ (JAN, 2, additional_special),
252
+ (DEC, 24, additional_special),
253
+ ),
254
+ 2016: (
255
+ (JAN, 2, additional_special),
256
+ (OCT, 31, additional_special),
257
+ (DEC, 24, additional_special),
258
+ ),
259
+ 2017: (
260
+ (JAN, 2, additional_special),
261
+ (OCT, 31, additional_special),
262
+ ),
263
+ 2018: (
264
+ (MAY, 14, election_special),
265
+ (NOV, 2, additional_special),
266
+ (DEC, 24, additional_special),
267
+ ),
268
+ 2019: (
269
+ (MAY, 13, election_special),
270
+ (NOV, 2, additional_special),
271
+ (DEC, 24, additional_special),
272
+ ),
273
+ 2020: (
274
+ (NOV, 2, additional_special),
275
+ (DEC, 24, additional_special),
276
+ ),
277
+ 2022: (
278
+ (MAY, 9, election_special),
279
+ (OCT, 31, additional_special),
280
+ ),
281
+ 2023: (
282
+ (JAN, 2, additional_special),
283
+ (OCT, 30, election_special),
284
+ (NOV, 2, additional_special),
285
+ (DEC, 26, additional_special),
286
+ ),
287
+ 2024: (
288
+ (FEB, 9, additional_special),
289
+ (NOV, 2, additional_special),
290
+ (DEC, 24, additional_special),
291
+ ),
292
+ }
@@ -147,7 +147,7 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
147
147
  # Carnival.
148
148
  self._add_carnival_tuesday(tr("Carnaval"))
149
149
 
150
- # St. Anthony's Day.
150
+ # Saint Anthony's Day.
151
151
  self._add_holiday_jun_13(tr("Dia de Santo António"))
152
152
 
153
153
  # Christmas Eve.
@@ -167,7 +167,7 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
167
167
  self._populate_optional_holidays()
168
168
 
169
169
  def _populate_subdiv_01_public_holidays(self):
170
- # St. Joanna's Day.
170
+ # Saint Joanna's Day.
171
171
  self._add_holiday_may_12(tr("Dia de Santa Joana"))
172
172
 
173
173
  def _populate_subdiv_02_public_holidays(self):
@@ -175,7 +175,7 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
175
175
  self._add_ascension_thursday(tr("Quinta-feira da Ascensão"))
176
176
 
177
177
  def _populate_subdiv_03_public_holidays(self):
178
- # St. John's Day.
178
+ # Saint John's Day.
179
179
  self._add_saint_johns_day(tr("Dia de São João"))
180
180
 
181
181
  def _populate_subdiv_04_public_holidays(self):
@@ -187,11 +187,11 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
187
187
  self._add_holiday_16_days_past_easter(tr("Dia de Nossa Senhora de Mércoles"))
188
188
 
189
189
  def _populate_subdiv_06_public_holidays(self):
190
- # St. Elizabeth's Day.
190
+ # Saint Elizabeth's Day.
191
191
  self._add_holiday_jul_4(tr("Dia de Santa Isabel"))
192
192
 
193
193
  def _populate_subdiv_07_public_holidays(self):
194
- # St. Peter's Day.
194
+ # Saint Peter's Day.
195
195
  self._add_saints_peter_and_paul_day(tr("Dia de São Pedro"))
196
196
 
197
197
  def _populate_subdiv_08_public_holidays(self):
@@ -217,7 +217,7 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
217
217
  self._add_saint_johns_day(tr("Dia de São João"))
218
218
 
219
219
  def _populate_subdiv_14_public_holidays(self):
220
- # St. Joseph's Day.
220
+ # Saint Joseph's Day.
221
221
  self._add_saint_josephs_day(tr("Dia de São José"))
222
222
 
223
223
  def _populate_subdiv_15_public_holidays(self):
@@ -232,7 +232,7 @@ class Portugal(HolidayBase, ChristianHolidays, InternationalHolidays):
232
232
  self._add_holiday_jun_13(tr("Dia de Santo António"))
233
233
 
234
234
  def _populate_subdiv_18_public_holidays(self):
235
- # St. Matthew's Day.
235
+ # Saint Matthew's Day.
236
236
  self._add_holiday_sep_21(tr("Dia de São Mateus"))
237
237
 
238
238
  def _populate_subdiv_20_public_holidays(self):