holidays 0.54__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 (115) hide show
  1. holidays/__init__.py +1 -1
  2. holidays/countries/__init__.py +3 -0
  3. holidays/countries/algeria.py +11 -0
  4. holidays/countries/australia.py +1 -1
  5. holidays/countries/austria.py +10 -10
  6. holidays/countries/bangladesh.py +2 -0
  7. holidays/countries/bosnia_and_herzegovina.py +8 -12
  8. holidays/countries/brunei.py +23 -1
  9. holidays/countries/cambodia.py +20 -3
  10. holidays/countries/canada.py +6 -6
  11. holidays/countries/croatia.py +1 -1
  12. holidays/countries/cyprus.py +1 -1
  13. holidays/countries/dominica.py +130 -0
  14. holidays/countries/dominican_republic.py +7 -12
  15. holidays/countries/egypt.py +2 -0
  16. holidays/countries/haiti.py +134 -0
  17. holidays/countries/hongkong.py +1 -1
  18. holidays/countries/hungary.py +6 -0
  19. holidays/countries/ireland.py +6 -6
  20. holidays/countries/isle_of_man.py +1 -0
  21. holidays/countries/israel.py +2 -1
  22. holidays/countries/italy.py +113 -5
  23. holidays/countries/jordan.py +5 -0
  24. holidays/countries/kuwait.py +5 -0
  25. holidays/countries/laos.py +24 -62
  26. holidays/countries/liechtenstein.py +1 -1
  27. holidays/countries/luxembourg.py +1 -1
  28. holidays/countries/malaysia.py +16 -38
  29. holidays/countries/malta.py +3 -3
  30. holidays/countries/new_zealand.py +68 -43
  31. holidays/countries/philippines.py +215 -26
  32. holidays/countries/portugal.py +7 -7
  33. holidays/countries/russia.py +382 -3
  34. holidays/countries/samoa.py +72 -0
  35. holidays/countries/singapore.py +8 -0
  36. holidays/countries/slovakia.py +1 -1
  37. holidays/countries/spain.py +8 -8
  38. holidays/countries/switzerland.py +3 -3
  39. holidays/countries/ukraine.py +48 -43
  40. holidays/countries/united_kingdom.py +12 -22
  41. holidays/countries/united_states.py +2 -2
  42. holidays/groups/christian.py +19 -0
  43. holidays/locale/ar/LC_MESSAGES/CA.mo +0 -0
  44. holidays/locale/ar/LC_MESSAGES/CA.po +6 -6
  45. holidays/locale/ar/LC_MESSAGES/UA.mo +0 -0
  46. holidays/locale/ar/LC_MESSAGES/UA.po +26 -19
  47. holidays/locale/de/LC_MESSAGES/AT.po +6 -6
  48. holidays/locale/de/LC_MESSAGES/CH.po +3 -3
  49. holidays/locale/de/LC_MESSAGES/LI.po +1 -1
  50. holidays/locale/de/LC_MESSAGES/LU.po +1 -1
  51. holidays/locale/en_CA/LC_MESSAGES/CA.po +6 -6
  52. holidays/locale/en_US/LC_MESSAGES/AT.mo +0 -0
  53. holidays/locale/en_US/LC_MESSAGES/AT.po +14 -14
  54. holidays/locale/en_US/LC_MESSAGES/BG.mo +0 -0
  55. holidays/locale/en_US/LC_MESSAGES/BG.po +3 -3
  56. holidays/locale/en_US/LC_MESSAGES/CA.mo +0 -0
  57. holidays/locale/en_US/LC_MESSAGES/CA.po +11 -11
  58. holidays/locale/en_US/LC_MESSAGES/CH.mo +0 -0
  59. holidays/locale/en_US/LC_MESSAGES/CH.po +9 -8
  60. holidays/locale/en_US/LC_MESSAGES/ES.mo +0 -0
  61. holidays/locale/en_US/LC_MESSAGES/ES.po +16 -16
  62. holidays/locale/en_US/LC_MESSAGES/HR.mo +0 -0
  63. holidays/locale/en_US/LC_MESSAGES/HR.po +4 -4
  64. holidays/locale/en_US/LC_MESSAGES/HT.mo +0 -0
  65. holidays/locale/en_US/LC_MESSAGES/HT.po +127 -0
  66. holidays/locale/en_US/LC_MESSAGES/LI.mo +0 -0
  67. holidays/locale/en_US/LC_MESSAGES/LI.po +4 -4
  68. holidays/locale/en_US/LC_MESSAGES/LU.mo +0 -0
  69. holidays/locale/en_US/LC_MESSAGES/LU.po +4 -4
  70. holidays/locale/en_US/LC_MESSAGES/MT.mo +0 -0
  71. holidays/locale/en_US/LC_MESSAGES/MT.po +8 -8
  72. holidays/locale/en_US/LC_MESSAGES/PT.mo +0 -0
  73. holidays/locale/en_US/LC_MESSAGES/PT.po +16 -16
  74. holidays/locale/en_US/LC_MESSAGES/SK.mo +0 -0
  75. holidays/locale/en_US/LC_MESSAGES/SK.po +4 -4
  76. holidays/locale/en_US/LC_MESSAGES/UA.mo +0 -0
  77. holidays/locale/en_US/LC_MESSAGES/UA.po +25 -19
  78. holidays/locale/es/LC_MESSAGES/ES.po +7 -7
  79. holidays/locale/es/LC_MESSAGES/HT.mo +0 -0
  80. holidays/locale/es/LC_MESSAGES/HT.po +127 -0
  81. holidays/locale/fr/LC_MESSAGES/CA.mo +0 -0
  82. holidays/locale/fr/LC_MESSAGES/CA.po +6 -6
  83. holidays/locale/fr/LC_MESSAGES/CH.po +3 -3
  84. holidays/locale/fr/LC_MESSAGES/LU.mo +0 -0
  85. holidays/locale/fr/LC_MESSAGES/LU.po +2 -2
  86. holidays/locale/fr_HT/LC_MESSAGES/HT.mo +0 -0
  87. holidays/locale/fr_HT/LC_MESSAGES/HT.po +127 -0
  88. holidays/locale/hr/LC_MESSAGES/HR.po +1 -1
  89. holidays/locale/ht/LC_MESSAGES/HT.mo +0 -0
  90. holidays/locale/ht/LC_MESSAGES/HT.po +127 -0
  91. holidays/locale/it/LC_MESSAGES/CH.po +3 -3
  92. holidays/locale/lb/LC_MESSAGES/LU.po +1 -1
  93. holidays/locale/mt/LC_MESSAGES/MT.po +3 -3
  94. holidays/locale/pt_PT/LC_MESSAGES/PT.po +7 -7
  95. holidays/locale/sk/LC_MESSAGES/SK.po +1 -1
  96. holidays/locale/th/LC_MESSAGES/CA.mo +0 -0
  97. holidays/locale/th/LC_MESSAGES/CA.po +6 -6
  98. holidays/locale/uk/LC_MESSAGES/AT.po +6 -6
  99. holidays/locale/uk/LC_MESSAGES/CH.po +3 -3
  100. holidays/locale/uk/LC_MESSAGES/ES.po +7 -7
  101. holidays/locale/uk/LC_MESSAGES/HR.po +1 -1
  102. holidays/locale/uk/LC_MESSAGES/LI.po +1 -1
  103. holidays/locale/uk/LC_MESSAGES/LU.po +1 -1
  104. holidays/locale/uk/LC_MESSAGES/PT.po +7 -7
  105. holidays/locale/uk/LC_MESSAGES/SK.po +1 -1
  106. holidays/locale/uk/LC_MESSAGES/UA.mo +0 -0
  107. holidays/locale/uk/LC_MESSAGES/UA.po +24 -18
  108. holidays/registry.py +3 -0
  109. holidays/utils.py +3 -3
  110. {holidays-0.54.dist-info → holidays-0.56.dist-info}/METADATA +24 -9
  111. {holidays-0.54.dist-info → holidays-0.56.dist-info}/RECORD +115 -104
  112. {holidays-0.54.dist-info → holidays-0.56.dist-info}/WHEEL +1 -1
  113. {holidays-0.54.dist-info → holidays-0.56.dist-info}/AUTHORS +0 -0
  114. {holidays-0.54.dist-info → holidays-0.56.dist-info}/LICENSE +0 -0
  115. {holidays-0.54.dist-info → holidays-0.56.dist-info}/top_level.txt +0 -0
@@ -62,7 +62,7 @@ class Malta(HolidayBase, ChristianHolidays, InternationalHolidays):
62
62
  # Started in 1987 via Act LX of 1987.
63
63
 
64
64
  if self._year >= 1987:
65
- # Feast of St. Paul's Shipwreck.
65
+ # Feast of Saint Paul's Shipwreck.
66
66
  self._add_holiday_feb_10(tr("Il-Festa tan-Nawfraġju ta' San Pawl"))
67
67
 
68
68
  # Il-Festa ta' San Ġużepp
@@ -70,7 +70,7 @@ class Malta(HolidayBase, ChristianHolidays, InternationalHolidays):
70
70
  # Started in 1987 via Act LX of 1987.
71
71
 
72
72
  if self._year >= 1987:
73
- # Feast of St. Joseph.
73
+ # Feast of Saint Joseph.
74
74
  self._add_saint_josephs_day(tr("Il-Festa ta' San Ġużepp"))
75
75
 
76
76
  # Jum il-Ħelsien
@@ -107,7 +107,7 @@ class Malta(HolidayBase, ChristianHolidays, InternationalHolidays):
107
107
  # Started in 1987 via Act LX of 1987.
108
108
 
109
109
  if self._year >= 1987:
110
- # Feast of St. Peter and St. Paul.
110
+ # Feast of Saint Peter and Saint Paul.
111
111
  self._add_saints_peter_and_paul_day(tr("Il-Festa ta' San Pietru u San Pawl"))
112
112
 
113
113
  # Il-Festa ta' Santa Marija
@@ -27,6 +27,7 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
27
27
  country = "NZ"
28
28
  observed_label = "%s (observed)"
29
29
  subdivisions = (
30
+ # ISO 3166-2: Regions and Special Island Authorities.
30
31
  # https://en.wikipedia.org/wiki/ISO_3166-2:NZ
31
32
  "AUK", # Auckland / Tāmaki-makaurau
32
33
  "BOP", # Bay of Plenty / Toi Moana
@@ -35,7 +36,7 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
35
36
  "GIS", # Gisborne / Te Tairāwhiti
36
37
  "HKB", # Hawke's Bay / Te Matau a Māui
37
38
  "MBH", # Marlborough
38
- "MWT", # Manawatū Whanganui
39
+ "MWT", # Manawatū-Whanganui / Manawatū Whanganui
39
40
  "NSN", # Nelson / Whakatū
40
41
  "NTL", # Northland / Te Tai tokerau
41
42
  "OTA", # Otago / Ō Tākou
@@ -45,27 +46,71 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
45
46
  "WGN", # Greater Wellington / Te Pane Matua Taiao
46
47
  "WKO", # Waikato
47
48
  "WTC", # West Coast / Te Tai o Poutini
49
+ # Subregions:
50
+ # https://www.govt.nz/browse/work/public-holidays-and-work/public-holidays-and-anniversary-dates/
51
+ "South Canterbury",
48
52
  )
49
-
53
+ subdivisions_aliases = {
54
+ # Fullnames in English and Maori, as well as HASC.
55
+ "Auckland": "AUK",
56
+ "Tāmaki-Makaurau": "AUK",
57
+ "AU": "AUK",
58
+ "Bay of Plenty": "BOP",
59
+ "Toi Moana": "BOP",
60
+ "BP": "BOP",
61
+ "Canterbury": "CAN",
62
+ "Waitaha": "CAN",
63
+ "CA": "CAN",
64
+ "Chatham Islands Territory": "CIT",
65
+ "Chatham Islands": "CIT", # 1901-1994, as County
66
+ "Wharekauri": "CIT",
67
+ "CI": "CIT",
68
+ "Gisborne": "GIS",
69
+ "Te Tairāwhiti": "GIS",
70
+ "GI": "GIS",
71
+ "Hawke's Bay": "HKB",
72
+ "Te Matau-a-Māui": "HKB",
73
+ "HB": "HKB",
74
+ "Marlborough": "MBH",
75
+ "MA": "MBH",
76
+ "Manawatū Whanganui": "MWT",
77
+ "Manawatū-Whanganui": "MWT",
78
+ "MW": "MWT",
79
+ "Nelson": "NSN",
80
+ "Whakatū": "NSN",
81
+ "NE": "NSN",
82
+ "Northland": "NTL",
83
+ "Te Taitokerau": "NTL",
84
+ "NO": "NTL",
85
+ "Otago": "OTA",
86
+ "Ō Tākou": "OTA",
87
+ "OT": "OTA",
88
+ "Southland": "STL",
89
+ "Te Taiao Tonga": "STL",
90
+ "SO": "STL",
91
+ "Tasman": "TAS",
92
+ "Te tai o Aorere": "TAS",
93
+ "TS": "TAS",
94
+ "Taranaki": "TKI",
95
+ "TK": "TKI",
96
+ "Greater Wellington": "WGN",
97
+ "Te Pane Matua Taiao": "WGN",
98
+ "Wellington": "WGN", # Prev. ISO code from 2010-2015.
99
+ "Te Whanganui-a-Tara": "WGN", # Prev. ISO code from 2010-2015.
100
+ "WG": "WGN",
101
+ "Waikato": "WKO",
102
+ "WK": "WKO",
103
+ "West Coast": "WTC",
104
+ "Te Tai o Poutini": "WTC",
105
+ "WC": "WTC",
106
+ }
50
107
  _deprecated_subdivisions = (
51
- "Auckland",
52
- "Canterbury",
53
- "Chatham Islands",
54
- "Hawke's Bay",
55
- "Marlborough",
56
- "Nelson",
57
- "New Plymouth",
58
- "Northland",
59
- "Otago",
60
- "South Canterbury",
61
- "STC",
62
- "Southland",
63
- "Taranaki",
64
- "Waitangi",
65
- "Wellington",
66
- "West Coast",
67
- "Westland", # Correct name is West Coast
68
- "WTL", # Correct code is WTC
108
+ # Pre-1893 Naming in Previous Implementations.
109
+ "New Plymouth", # 1853-1859, Now Taranaki.
110
+ "Westland", # 1873-1876, Now West Coast.
111
+ # Unofficial Code.
112
+ "STC", # For 'South Canterbury' Subregional Holidays.
113
+ "WTL", # Westland, Correct code is WTC (for West Coast).
69
114
  )
70
115
 
71
116
  def __init__(self, *args, **kwargs):
@@ -186,31 +231,11 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
186
231
  # Boxing Day
187
232
  self._add_observed(self._add_christmas_day_two("Boxing Day"), rule=SAT_SUN_TO_NEXT_MON_TUE)
188
233
 
189
- if self.subdiv == "Auckland":
190
- self._populate_subdiv_auk_public_holidays()
191
- elif self.subdiv == "Canterbury":
192
- self._populate_subdiv_can_public_holidays()
193
- elif self.subdiv == "Chatham Islands":
194
- self._populate_subdiv_cit_public_holidays()
195
- elif self.subdiv == "Hawke's Bay":
196
- self._populate_subdiv_hkb_public_holidays()
197
- elif self.subdiv == "Marlborough":
198
- self._populate_subdiv_mbh_public_holidays()
199
- elif self.subdiv == "Nelson":
200
- self._populate_subdiv_nsn_public_holidays()
201
- elif self.subdiv == "Northland":
202
- self._populate_subdiv_ntl_public_holidays()
203
- elif self.subdiv == "Otago":
204
- self._populate_subdiv_ota_public_holidays()
205
- elif self.subdiv in {"New Plymouth", "Taranaki"}:
234
+ if self.subdiv == "New Plymouth":
206
235
  self._populate_subdiv_tki_public_holidays()
207
236
  elif self.subdiv == "South Canterbury":
208
237
  self._populate_subdiv_stc_public_holidays()
209
- elif self.subdiv == "Southland":
210
- self._populate_subdiv_stl_public_holidays()
211
- elif self.subdiv == "Wellington":
212
- self._populate_subdiv_wgn_public_holidays()
213
- elif self.subdiv in {"West Coast", "WTL", "Westland"}:
238
+ elif self.subdiv in {"WTL", "Westland"}:
214
239
  self._populate_subdiv_wtc_public_holidays()
215
240
 
216
241
  def _populate_subdiv_auk_public_holidays(self):
@@ -253,7 +278,7 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
253
278
  def _populate_subdiv_stl_public_holidays(self):
254
279
  name = "Southland Anniversary Day"
255
280
  if self._year >= 2012:
256
- self._add_holiday_2_days_past_easter(name)
281
+ self._add_easter_tuesday(name)
257
282
  else:
258
283
  self._add_holiday(name, self._get_nearest_monday(JAN, 17))
259
284
 
@@ -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):