holidays 0.87__py3-none-any.whl → 0.89__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 (71) hide show
  1. holidays/constants.py +1 -0
  2. holidays/countries/american_samoa.py +2 -0
  3. holidays/countries/argentina.py +49 -37
  4. holidays/countries/australia.py +13 -1
  5. holidays/countries/azerbaijan.py +5 -4
  6. holidays/countries/belarus.py +4 -2
  7. holidays/countries/brazil.py +27 -1
  8. holidays/countries/chile.py +2 -3
  9. holidays/countries/estonia.py +5 -5
  10. holidays/countries/guam.py +2 -0
  11. holidays/countries/italy.py +7 -7
  12. holidays/countries/jordan.py +6 -4
  13. holidays/countries/kyrgyzstan.py +3 -2
  14. holidays/countries/macau.py +39 -45
  15. holidays/countries/malaysia.py +171 -71
  16. holidays/countries/new_zealand.py +4 -3
  17. holidays/countries/northern_mariana_islands.py +2 -0
  18. holidays/countries/puerto_rico.py +4 -2
  19. holidays/countries/qatar.py +4 -5
  20. holidays/countries/sweden.py +35 -11
  21. holidays/countries/taiwan.py +6 -5
  22. holidays/countries/timor_leste.py +14 -20
  23. holidays/countries/turks_and_caicos_islands.py +13 -3
  24. holidays/countries/united_states.py +400 -108
  25. holidays/countries/united_states_minor_outlying_islands.py +2 -0
  26. holidays/countries/united_states_virgin_islands.py +2 -0
  27. holidays/countries/uzbekistan.py +12 -1
  28. holidays/countries/venezuela.py +113 -23
  29. holidays/financial/__init__.py +1 -0
  30. holidays/financial/bombay_stock_exchange.py +33 -0
  31. holidays/financial/national_stock_exchange_of_india.py +1 -1
  32. holidays/holiday_base.py +2 -1
  33. holidays/locale/en_AU/LC_MESSAGES/AU.mo +0 -0
  34. holidays/locale/en_IN/LC_MESSAGES/XBOM.mo +0 -0
  35. holidays/locale/en_TC/LC_MESSAGES/TC.mo +0 -0
  36. holidays/locale/en_TL/LC_MESSAGES/TL.mo +0 -0
  37. holidays/locale/en_US/LC_MESSAGES/AU.mo +0 -0
  38. holidays/locale/en_US/LC_MESSAGES/BR.mo +0 -0
  39. holidays/locale/en_US/LC_MESSAGES/MY.mo +0 -0
  40. holidays/locale/en_US/LC_MESSAGES/SE.mo +0 -0
  41. holidays/locale/en_US/LC_MESSAGES/TC.mo +0 -0
  42. holidays/locale/en_US/LC_MESSAGES/TL.mo +0 -0
  43. holidays/locale/en_US/LC_MESSAGES/US.mo +0 -0
  44. holidays/locale/en_US/LC_MESSAGES/VE.mo +0 -0
  45. holidays/locale/en_US/LC_MESSAGES/XBOM.mo +0 -0
  46. holidays/locale/es/LC_MESSAGES/VE.mo +0 -0
  47. holidays/locale/gu/LC_MESSAGES/XBOM.mo +0 -0
  48. holidays/locale/gu/LC_MESSAGES/XNSE.mo +0 -0
  49. holidays/locale/hi/LC_MESSAGES/XBOM.mo +0 -0
  50. holidays/locale/ms_MY/LC_MESSAGES/MY.mo +0 -0
  51. holidays/locale/pt_BR/LC_MESSAGES/BR.mo +0 -0
  52. holidays/locale/pt_TL/LC_MESSAGES/TL.mo +0 -0
  53. holidays/locale/sv/LC_MESSAGES/SE.mo +0 -0
  54. holidays/locale/tet/LC_MESSAGES/TL.mo +0 -0
  55. holidays/locale/th/LC_MESSAGES/AU.mo +0 -0
  56. holidays/locale/th/LC_MESSAGES/MY.mo +0 -0
  57. holidays/locale/th/LC_MESSAGES/SE.mo +0 -0
  58. holidays/locale/th/LC_MESSAGES/TL.mo +0 -0
  59. holidays/locale/th/LC_MESSAGES/US.mo +0 -0
  60. holidays/locale/uk/LC_MESSAGES/BR.mo +0 -0
  61. holidays/locale/uk/LC_MESSAGES/SE.mo +0 -0
  62. holidays/locale/uk/LC_MESSAGES/VE.mo +0 -0
  63. holidays/registry.py +1 -0
  64. holidays/utils.py +52 -0
  65. holidays/version.py +3 -1
  66. {holidays-0.87.dist-info → holidays-0.89.dist-info}/METADATA +18 -18
  67. {holidays-0.87.dist-info → holidays-0.89.dist-info}/RECORD +71 -65
  68. {holidays-0.87.dist-info → holidays-0.89.dist-info}/licenses/CONTRIBUTORS +7 -0
  69. {holidays-0.87.dist-info → holidays-0.89.dist-info}/WHEEL +0 -0
  70. {holidays-0.87.dist-info → holidays-0.89.dist-info}/licenses/LICENSE +0 -0
  71. {holidays-0.87.dist-info → holidays-0.89.dist-info}/top_level.txt +0 -0
@@ -24,6 +24,8 @@ from holidays.observed_holiday_base import (
24
24
  ObservedHolidayBase,
25
25
  SUN_TO_NEXT_WORKDAY,
26
26
  SAT_SUN_TO_NEXT_WORKDAY,
27
+ SAT_TO_NONE,
28
+ SUN_TO_NONE,
27
29
  )
28
30
 
29
31
 
@@ -92,19 +94,7 @@ class Macau(
92
94
  kwargs.setdefault("observed_since", 2011)
93
95
  super().__init__(*args, **kwargs)
94
96
 
95
- def _populate_public_holidays(self):
96
- """Macau Mandatory (Statutory) Holidays.
97
-
98
- Decreto-Lei n.º 101/84/M - Earliest Available Version Online.
99
- Decreto-Lei n.º 24/89/M - Added Ching Ming Festival.
100
- Lei n.º 8/2000 - Removed Day of Portugal
101
- - Added Macao S.A.R. Establishment Day.
102
- - Moved Mid-Autumn to Day following Mid-Autumn to match Public Holidays.
103
- Lei n.º 7/2008 - Consolidated with other laws, reaffirming 2000 Amendment list.
104
- """
105
- if self._year <= 1984:
106
- return None
107
-
97
+ def _populate_common(self):
108
98
  # New Year's Day.
109
99
  self._add_new_years_day(tr("元旦"))
110
100
 
@@ -126,6 +116,21 @@ class Macau(
126
116
  # National Day of the People's Republic of China.
127
117
  self._add_holiday_oct_1(tr("中華人民共和國國慶日"))
128
118
 
119
+ def _populate_public_holidays(self):
120
+ """Macau Mandatory (Statutory) Holidays.
121
+
122
+ Decreto-Lei n.º 101/84/M - Earliest Available Version Online.
123
+ Decreto-Lei n.º 24/89/M - Added Ching Ming Festival.
124
+ Lei n.º 8/2000 - Removed Day of Portugal
125
+ - Added Macao S.A.R. Establishment Day.
126
+ - Moved Mid-Autumn to Day following Mid-Autumn to match Public Holidays.
127
+ Lei n.º 7/2008 - Consolidated with other laws, reaffirming 2000 Amendment list.
128
+ """
129
+ if self._year <= 1984:
130
+ return None
131
+
132
+ self._populate_common()
133
+
129
134
  # Decreto-Lei n.º 24/89/M - Adds Ching Ming as a Mandatory Holiday.
130
135
  if self._year >= 1989:
131
136
  # Tomb-Sweeping Day.
@@ -150,17 +155,7 @@ class Macau(
150
155
 
151
156
  def _populate_optional_holidays(self):
152
157
  """Macau General Holidays."""
153
- # New Year's Day.
154
- self._add_new_years_day(tr("元旦"))
155
-
156
- # Chinese New Year's Day.
157
- self._add_chinese_new_years_day(tr("農曆正月初一"))
158
-
159
- # The second day of Chinese New Year.
160
- self._add_chinese_new_years_day_two(tr("農曆正月初二"))
161
-
162
- # The third day of Chinese New Year.
163
- self._add_chinese_new_years_day_three(tr("農曆正月初三"))
158
+ self._populate_common()
164
159
 
165
160
  # Tomb-Sweeping Day.
166
161
  self._add_qingming_festival(tr("清明節"))
@@ -183,21 +178,12 @@ class Macau(
183
178
  else tr("聖周星期六")
184
179
  )
185
180
 
186
- # Labor Day.
187
- self._add_labor_day(tr("勞動節"))
188
-
189
181
  # Dragon Boat Festival.
190
182
  self._add_dragon_boat_festival(tr("端午節"))
191
183
 
192
- # Double Ninth Festival.
193
- self._add_double_ninth_festival(tr("重陽節"))
194
-
195
184
  # The Day following Mid-Autumn Festival.
196
185
  self._add_mid_autumn_festival_day_two(tr("中秋節翌日"))
197
186
 
198
- # National Day of the People's Republic of China.
199
- self._add_holiday_oct_1(tr("中華人民共和國國慶日"))
200
-
201
187
  # All Soul's Day.
202
188
  self._add_all_souls_day(tr("追思節"))
203
189
 
@@ -293,18 +279,12 @@ class Macau(
293
279
  # New Year's Day.
294
280
  dts_observed.add(self._add_new_years_day(tr("元旦")))
295
281
 
296
- if self._year not in {2006, 2007, 2009, 2010, 2012, 2013, 2016, 2023}:
282
+ if not (
283
+ self._is_sunday(self._chinese_new_year) or self._is_monday(self._chinese_new_year)
284
+ ):
297
285
  # Chinese New Year's Eve.
298
286
  self._add_chinese_new_years_eve(begin_time_label % self.tr("農曆除夕"))
299
287
 
300
- if self._year in {2006, 2007, 2010, 2013, 2014, 2017, 2018}:
301
- # The fourth day of Chinese New Year.
302
- self._add_chinese_new_years_day_four(tr("農曆正月初四"))
303
-
304
- if self._year in {2014, 2015, 2017, 2018}:
305
- # The fifth day of Chinese New Year.
306
- self._add_chinese_new_years_day_five(tr("農曆正月初五"))
307
-
308
288
  if self._year >= 2019:
309
289
  # Chinese New Year's Day.
310
290
  dts_observed.add(self._add_chinese_new_years_day(tr("農曆正月初一")))
@@ -314,6 +294,17 @@ class Macau(
314
294
 
315
295
  # The third day of Chinese New Year.
316
296
  dts_observed.add(self._add_chinese_new_years_day_three(tr("農曆正月初三")))
297
+ else:
298
+ if self._is_friday(self._chinese_new_year) or self._is_weekend(self._chinese_new_year):
299
+ # The fourth day of Chinese New Year.
300
+ self._add_chinese_new_years_day_four(tr("農曆正月初四"))
301
+ if self._year >= 2012 and (
302
+ self._is_thursday(self._chinese_new_year)
303
+ or self._is_friday(self._chinese_new_year)
304
+ or self._is_saturday(self._chinese_new_year)
305
+ ):
306
+ # The fifth day of Chinese New Year.
307
+ self._add_chinese_new_years_day_five(tr("農曆正月初五"))
317
308
 
318
309
  # The Day before Easter.
319
310
  dts_observed.add(self._add_holy_saturday(tr("復活節前日")))
@@ -361,9 +352,12 @@ class Macau(
361
352
  dts_observed.add(self._add_christmas_day(tr("聖誕節")))
362
353
 
363
354
  # 2012's Full-Day New Year's Eve is declared discretely.
364
- if self._year >= 2007 and self._year not in {2011, 2012, 2016, 2017, 2022, 2023}:
365
- # New Year's Eve.
366
- self._add_new_years_eve(begin_time_label % self.tr("除夕"))
355
+ if self._year >= 2007 and self._year != 2012:
356
+ self._move_holiday(
357
+ # New Year's Eve.
358
+ self._add_new_years_eve(begin_time_label % self.tr("除夕")),
359
+ rule=SAT_TO_NONE + SUN_TO_NONE,
360
+ )
367
361
 
368
362
  if self.observed:
369
363
  self.observed_label = (
@@ -74,9 +74,27 @@ class Malaysia(
74
74
  * [Holidays Act 1951](https://web.archive.org/web/20241202103403/https://www.kabinet.gov.my/bkpp/pdf/akta_warta/1951_12_31_act369.pdf)
75
75
  * [Holidays Ordinance (Sabah Cap. 56)](https://web.archive.org/web/20201028045259/https://sagc.sabah.gov.my/sites/default/files/law/HolidaysOrdinance.pdf)
76
76
  * [Public Holidays Ordinance (Sarawak Cap. 8)](https://web.archive.org/web/20221208142318/https://www.kabinet.gov.my/bkpp/pdf/akta_warta/sarawak_public_holidays_ord_chapter8.pdf)
77
- * [Wikipedia](https://en.wikipedia.org/wiki/Public_holidays_in_Malaysia)
77
+ * <https://en.wikipedia.org/wiki/Public_holidays_in_Malaysia>
78
78
  * <https://web.archive.org/web/20250123115300/https://www.nst.com.my/news/nation/2020/03/571660/agongs-birthday-moved-june-6-june-8>
79
79
  * <https://web.archive.org/web/20240228225038/https://www.nst.com.my/news/nation/2024/02/1014012/melaka-cm-suggests-declaring-feb-20-federal-public-holiday-mark>
80
+ * <https://web.archive.org/web/20251216120554/https://www.kabinet.gov.my/storage/2025/08/HKA-2026.pdf>
81
+
82
+ Subdivisions Holidays References:
83
+ * Sabah:
84
+ * [2001](https://web.archive.org/web/20230605164302/https://www.sabah.gov.my/gazette/docs/000207.pdf)
85
+ * [2002](https://web.archive.org/web/20230605173234/https://www.sabah.gov.my/gazette/docs/000968.pdf)
86
+ * [2003](https://web.archive.org/web/20230418041718/https://www.sabah.gov.my/gazette/docs/001736.pdf)
87
+ * [2004](https://web.archive.org/web/20230414022317/https://www.sabah.gov.my/gazette/docs/001546.pdf)
88
+ * [2005](https://web.archive.org/web/20230420233014/https://www.sabah.gov.my/gazette/docs/001714.pdf)
89
+ * [2006](https://web.archive.org/web/20230414141628/https://www.sabah.gov.my/gazette/docs/001803.pdf)
90
+ * [2007](https://web.archive.org/web/20230414125605/https://www.sabah.gov.my/gazette/docs/001866.pdf)
91
+ * [2008](https://web.archive.org/web/20230605175854/https://www.sabah.gov.my/gazette/docs/001942.pdf)
92
+ * [2009](https://web.archive.org/web/20230605180330/https://www.sabah.gov.my/gazette/docs/001998.pdf)
93
+ * [Christmas Eve since 2019](https://web.archive.org/web/20221207071317/https://www.sabah.gov.my/gazette/docs/002712.pdf)
94
+ * [Birthday of the Governor of Sabah update 2010](https://web.archive.org/web/20230414125515/https://www.sabah.gov.my/gazette/docs/002114.pdf)
95
+ * [2025](https://web.archive.org/web/20251216152001/https://www.sabah.gov.my/gazette/docs/003106.pdf)
96
+ * [2025 changes](https://web.archive.org/web/20250330061412/https://www.sabah.gov.my/gazette/docs/003144.pdf)
97
+ * [2026](https://web.archive.org/web/20251010011859/https://www.sabah.gov.my/gazette/docs/003152.pdf)
80
98
 
81
99
  Section 3 of Holidays Act 1951:
82
100
  > If any day specified in the Schedule falls on Sunday then the day following shall be
@@ -505,12 +523,21 @@ class Malaysia(
505
523
  self._add_holiday_may_30(name)
506
524
  self._add_holiday_may_31(name)
507
525
 
508
- # Birthday of the Governor of Sabah.
509
- self._add_holiday_1st_sat_of_oct(tr("Hari Jadi Yang di-Pertua Negeri Sabah"))
526
+ if self._year >= 2001:
527
+ # Birthday of the Governor of Sabah.
528
+ name = tr("Hari Jadi Yang di-Pertua Negeri Sabah")
529
+ if self._year >= 2025:
530
+ self._add_holiday_mar_30(name)
531
+ elif self._year >= 2010:
532
+ self._add_holiday_1st_sat_of_oct(name)
533
+ elif self._year == 2005:
534
+ self._add_holiday_feb_11(name)
535
+ else:
536
+ self._add_holiday_sep_16(name)
510
537
 
511
538
  if self._year >= 2019:
512
539
  # Christmas Eve.
513
- self._add_christmas_eve(tr("Christmas Eve"))
540
+ self._add_christmas_eve(tr("Krismas (Eve)"))
514
541
 
515
542
  def _populate_subdiv_13_public_holidays(self):
516
543
  # New Year's Day.
@@ -616,11 +643,12 @@ class MalaysiaBuddhistHolidays(_CustomBuddhistHolidays):
616
643
  2023: (MAY, 4),
617
644
  2024: (MAY, 22),
618
645
  2025: (MAY, 12),
646
+ 2026: (MAY, 31),
619
647
  }
620
648
 
621
649
 
622
650
  class MalaysiaChineseHolidays(_CustomChineseHolidays):
623
- LUNAR_NEW_YEAR_DATES_CONFIRMED_YEARS = (2001, 2025)
651
+ LUNAR_NEW_YEAR_DATES_CONFIRMED_YEARS = (2001, 2026)
624
652
 
625
653
 
626
654
  class MalaysiaHinduHolidays(_CustomHinduHolidays):
@@ -650,6 +678,7 @@ class MalaysiaHinduHolidays(_CustomHinduHolidays):
650
678
  2023: (NOV, 12),
651
679
  2024: (OCT, 31),
652
680
  2025: (OCT, 20),
681
+ 2026: (NOV, 8),
653
682
  }
654
683
 
655
684
  THAIPUSAM_DATES = {
@@ -667,7 +696,7 @@ class MalaysiaHinduHolidays(_CustomHinduHolidays):
667
696
 
668
697
 
669
698
  class MalaysiaIslamicHolidays(_CustomIslamicHolidays):
670
- EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2001, 2025)
699
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2001, 2026)
671
700
  EID_AL_ADHA_DATES = {
672
701
  2001: (MAR, 6),
673
702
  2002: (FEB, 23),
@@ -687,7 +716,7 @@ class MalaysiaIslamicHolidays(_CustomIslamicHolidays):
687
716
  2025: (JUN, 7),
688
717
  }
689
718
 
690
- EID_AL_FITR_DATES_CONFIRMED_YEARS = (2001, 2025)
719
+ EID_AL_FITR_DATES_CONFIRMED_YEARS = (2001, 2026)
691
720
  EID_AL_FITR_DATES = {
692
721
  2001: (DEC, 17),
693
722
  2002: (DEC, 6),
@@ -697,9 +726,10 @@ class MalaysiaIslamicHolidays(_CustomIslamicHolidays):
697
726
  2019: (JUN, 5),
698
727
  2023: (APR, 22),
699
728
  2025: (MAR, 31),
729
+ 2026: (MAR, 21),
700
730
  }
701
731
 
702
- HARI_HOL_JOHOR_DATES_CONFIRMED_YEARS = (2011, 2025)
732
+ HARI_HOL_JOHOR_DATES_CONFIRMED_YEARS = (2011, 2026)
703
733
  HARI_HOL_JOHOR_DATES = {
704
734
  2011: (JAN, 12),
705
735
  2012: (DEC, 20),
@@ -712,9 +742,10 @@ class MalaysiaIslamicHolidays(_CustomIslamicHolidays):
712
742
  2022: (SEP, 3),
713
743
  2023: (AUG, 23),
714
744
  2024: (AUG, 11),
745
+ 2026: (JUL, 21),
715
746
  }
716
747
 
717
- HIJRI_NEW_YEAR_DATES_CONFIRMED_YEARS = (2001, 2025)
748
+ HIJRI_NEW_YEAR_DATES_CONFIRMED_YEARS = (2001, 2026)
718
749
  HIJRI_NEW_YEAR_DATES = {
719
750
  2003: (MAR, 5),
720
751
  2004: (FEB, 22),
@@ -725,9 +756,10 @@ class MalaysiaIslamicHolidays(_CustomIslamicHolidays):
725
756
  2019: (SEP, 1),
726
757
  2021: (AUG, 10),
727
758
  2025: (JUN, 27),
759
+ 2026: (JUN, 17),
728
760
  }
729
761
 
730
- ISRA_AND_MIRAJ_DATES_CONFIRMED_YEARS = (2001, 2025)
762
+ ISRA_AND_MIRAJ_DATES_CONFIRMED_YEARS = (2001, 2026)
731
763
  ISRA_AND_MIRAJ_DATES = {
732
764
  2001: (OCT, 15),
733
765
  2006: (AUG, 22),
@@ -737,9 +769,10 @@ class MalaysiaIslamicHolidays(_CustomIslamicHolidays):
737
769
  2016: (MAY, 5),
738
770
  2018: (APR, 14),
739
771
  2022: (MAR, 1),
772
+ 2026: (JAN, 17),
740
773
  }
741
774
 
742
- MAWLID_DATES_CONFIRMED_YEARS = (2001, 2025)
775
+ MAWLID_DATES_CONFIRMED_YEARS = (2001, 2026)
743
776
  MAWLID_DATES = {
744
777
  2003: (MAY, 14),
745
778
  2004: (MAY, 2),
@@ -757,7 +790,7 @@ class MalaysiaIslamicHolidays(_CustomIslamicHolidays):
757
790
  2025: (SEP, 5),
758
791
  }
759
792
 
760
- NUZUL_AL_QURAN_DATES_CONFIRMED_YEARS = (2001, 2025)
793
+ NUZUL_AL_QURAN_DATES_CONFIRMED_YEARS = (2001, 2026)
761
794
  NUZUL_AL_QURAN_DATES = {
762
795
  2001: (DEC, 3),
763
796
  2003: (NOV, 12),
@@ -769,9 +802,10 @@ class MalaysiaIslamicHolidays(_CustomIslamicHolidays):
769
802
  2022: (APR, 19),
770
803
  2024: (MAR, 28),
771
804
  2025: (MAR, 18),
805
+ 2026: (MAR, 7),
772
806
  }
773
807
 
774
- RAMADAN_BEGINNING_DATES_CONFIRMED_YEARS = (2001, 2025)
808
+ RAMADAN_BEGINNING_DATES_CONFIRMED_YEARS = (2001, 2026)
775
809
  RAMADAN_BEGINNING_DATES = {
776
810
  2001: (NOV, 17),
777
811
  2003: (OCT, 27),
@@ -784,15 +818,16 @@ class MalaysiaIslamicHolidays(_CustomIslamicHolidays):
784
818
  2022: (APR, 3),
785
819
  2024: (MAR, 12),
786
820
  2025: (MAR, 2),
821
+ 2026: (FEB, 19),
787
822
  }
788
823
 
789
824
 
790
825
  class MalaysiaStaticHolidays:
791
826
  # General election additional holiday.
792
- election_polling_day = tr("Cuti Peristiwa (pilihan raya umum)")
827
+ general_election_additional_holiday = tr("Cuti Peristiwa (pilihan raya umum)")
793
828
 
794
829
  # Additional holiday.
795
- election_additional_holiday = "Cuti Peristiwa"
830
+ additional_holiday = tr("Cuti Peristiwa")
796
831
 
797
832
  # Eid al-Adha.
798
833
  eid_al_adha = tr("Hari Raya Qurban")
@@ -803,117 +838,182 @@ class MalaysiaStaticHolidays:
803
838
  # Malaysia Cup Holiday.
804
839
  malaysia_cup_holiday = tr("Cuti Piala Malaysia")
805
840
 
806
- # Day of Installation of the 15th Yang di-Pertuan Agong.
807
- yang_di_pertuan_agong_15_installation = tr("Hari Pertabalan Yang di-Pertuan Agong ke-15")
808
-
809
- # Day of Installation of the 16th Yang di-Pertuan Agong.
810
- yang_di_pertuan_agong_16_installation = tr("Hari Pertabalan Yang di-Pertuan Agong ke-16")
811
-
812
- # Eid al-Fitr (additional holiday).
813
- eid_al_fitr_additional_holiday = tr("Hari Raya Puasa (pergantian hari)")
814
-
815
- # Arafat Day.
816
- arafat_day = tr("Hari Arafah")
817
-
818
- # Additional holiday in commemoration of the 2017 SEA Games.
819
- additional_holiday_2017_sea_games = tr("Cuti tambahan sempena memperingati SAT 2017")
820
-
821
841
  special_public_holidays = {
822
- 1999: (NOV, 29, election_polling_day),
842
+ 1999: (NOV, 29, general_election_additional_holiday),
823
843
  2017: (
824
- (APR, 24, yang_di_pertuan_agong_15_installation),
825
- (SEP, 4, additional_holiday_2017_sea_games),
844
+ # Day of Installation of the 15th Yang di-Pertuan Agong.
845
+ (APR, 24, tr("Hari Pertabalan Yang di-Pertuan Agong ke-15")),
846
+ # Additional holiday in commemoration of the 2017 SEA Games.
847
+ (SEP, 4, tr("Cuti tambahan sempena memperingati SAT 2017")),
826
848
  ),
827
- 2018: (MAY, 9, election_polling_day),
828
- 2019: (JUL, 30, yang_di_pertuan_agong_16_installation),
849
+ 2018: (MAY, 9, general_election_additional_holiday),
850
+ # Day of Installation of the 16th Yang di-Pertuan Agong.
851
+ 2019: (JUL, 30, tr("Hari Pertabalan Yang di-Pertuan Agong ke-16")),
829
852
  2022: (
830
- (NOV, 18, election_polling_day),
831
- (NOV, 19, election_polling_day),
832
- (NOV, 28, election_additional_holiday),
853
+ (NOV, 18, general_election_additional_holiday),
854
+ (NOV, 19, general_election_additional_holiday),
855
+ (NOV, 28, additional_holiday),
833
856
  ),
834
- 2023: (APR, 21, eid_al_fitr_additional_holiday),
835
- }
836
-
837
- special_14_public_holidays = {
838
- 2021: (DEC, 3, malaysia_cup_holiday),
839
- }
840
-
841
- special_15_public_holidays = {
842
- 2021: (DEC, 3, malaysia_cup_holiday),
857
+ # Eid al-Fitr (additional holiday).
858
+ 2023: (APR, 21, tr("Hari Raya Puasa (pergantian hari)")),
859
+ 2025: (SEP, 15, additional_holiday),
843
860
  }
844
861
 
845
- special_16_public_holidays = {
846
- 2021: (DEC, 3, malaysia_cup_holiday),
847
- }
848
-
849
- special_13_public_holidays = {
862
+ special_01_public_holidays = {
850
863
  2018: (
851
- (MAY, 17, election_additional_holiday),
852
- (MAY, 18, election_additional_holiday),
864
+ (MAY, 10, additional_holiday),
865
+ (MAY, 13, additional_holiday),
853
866
  ),
854
867
  }
855
-
856
868
  special_01_public_holidays_observed = {
857
869
  2022: (MAY, 4, labor_day),
858
870
  }
859
871
 
872
+ special_02_public_holidays = {
873
+ 2018: (
874
+ (MAY, 10, additional_holiday),
875
+ (MAY, 13, additional_holiday),
876
+ ),
877
+ }
860
878
  special_02_public_holidays_observed = {
861
879
  2022: (MAY, 4, labor_day),
862
880
  }
863
881
 
882
+ special_03_public_holidays = {
883
+ 2018: (
884
+ (MAY, 10, additional_holiday),
885
+ (MAY, 13, additional_holiday),
886
+ ),
887
+ }
864
888
  special_03_public_holidays_observed = {
865
889
  2022: (MAY, 4, labor_day),
866
890
  }
867
891
 
868
- special_14_public_holidays_observed = {
869
- 2007: (JAN, 2, eid_al_adha),
870
- }
871
-
872
- special_15_public_holidays_observed = {
873
- 2007: (JAN, 2, eid_al_adha),
892
+ special_04_public_holidays = {
893
+ 2018: (
894
+ (MAY, 10, additional_holiday),
895
+ (MAY, 11, additional_holiday),
896
+ ),
874
897
  }
875
-
876
898
  special_04_public_holidays_observed = {
877
899
  2007: (JAN, 2, eid_al_adha),
878
900
  }
879
901
 
902
+ special_05_public_holidays = {
903
+ 2018: (
904
+ (MAY, 10, additional_holiday),
905
+ (MAY, 11, additional_holiday),
906
+ ),
907
+ }
880
908
  special_05_public_holidays_observed = {
881
909
  2007: (JAN, 2, eid_al_adha),
882
910
  }
883
911
 
912
+ special_06_public_holidays = {
913
+ 2018: (
914
+ (MAY, 10, additional_holiday),
915
+ (MAY, 11, additional_holiday),
916
+ ),
917
+ }
884
918
  special_06_public_holidays_observed = {
885
919
  2007: (JAN, 2, eid_al_adha),
886
920
  }
887
921
 
888
- special_16_public_holidays_observed = {
922
+ special_07_public_holidays = {
923
+ 2018: (
924
+ (MAY, 10, additional_holiday),
925
+ (MAY, 11, additional_holiday),
926
+ ),
927
+ }
928
+ special_07_public_holidays_observed = {
889
929
  2007: (JAN, 2, eid_al_adha),
890
930
  }
891
931
 
892
- special_09_public_holidays_observed = {
932
+ special_08_public_holidays = {
933
+ 2018: (
934
+ (MAY, 10, additional_holiday),
935
+ (MAY, 11, additional_holiday),
936
+ ),
937
+ }
938
+ special_08_public_holidays_observed = {
893
939
  2007: (JAN, 2, eid_al_adha),
894
940
  }
895
941
 
896
- special_07_public_holidays_observed = {
942
+ special_09_public_holidays = {
943
+ 2018: (
944
+ (MAY, 10, additional_holiday),
945
+ (MAY, 11, additional_holiday),
946
+ ),
947
+ }
948
+ special_09_public_holidays_observed = {
897
949
  2007: (JAN, 2, eid_al_adha),
898
950
  }
899
951
 
900
- special_08_public_holidays_observed = {
952
+ special_10_public_holidays = {
953
+ 2018: (
954
+ (MAY, 10, additional_holiday),
955
+ (MAY, 11, additional_holiday),
956
+ ),
957
+ }
958
+ special_10_public_holidays_observed = {
901
959
  2007: (JAN, 2, eid_al_adha),
902
960
  }
903
961
 
962
+ special_11_public_holidays = {
963
+ 2018: (
964
+ (MAY, 10, additional_holiday),
965
+ (MAY, 13, additional_holiday),
966
+ ),
967
+ }
968
+ special_11_public_holidays_observed = {
969
+ # Arafat Day.
970
+ 2007: (JAN, 2, tr("Hari Arafah")),
971
+ 2022: (MAY, 4, labor_day),
972
+ }
973
+
904
974
  special_12_public_holidays_observed = {
905
975
  2007: (JAN, 2, eid_al_adha),
906
976
  }
907
977
 
908
- special_10_public_holidays_observed = {
978
+ special_13_public_holidays = {
979
+ 2018: (
980
+ (MAY, 17, additional_holiday),
981
+ (MAY, 18, additional_holiday),
982
+ ),
983
+ }
984
+ special_13_public_holidays_observed = {
909
985
  2007: (JAN, 2, eid_al_adha),
910
986
  }
911
987
 
912
- special_13_public_holidays_observed = {
988
+ special_14_public_holidays = {
989
+ 2018: (
990
+ (MAY, 10, additional_holiday),
991
+ (MAY, 11, additional_holiday),
992
+ ),
993
+ 2021: (DEC, 3, malaysia_cup_holiday),
994
+ }
995
+ special_14_public_holidays_observed = {
913
996
  2007: (JAN, 2, eid_al_adha),
914
997
  }
915
998
 
916
- special_11_public_holidays_observed = {
917
- 2007: (JAN, 2, arafat_day),
918
- 2022: (MAY, 4, labor_day),
999
+ special_15_public_holidays = {
1000
+ 2018: (
1001
+ (MAY, 10, additional_holiday),
1002
+ (MAY, 11, additional_holiday),
1003
+ ),
1004
+ 2021: (DEC, 3, malaysia_cup_holiday),
1005
+ }
1006
+ special_15_public_holidays_observed = {
1007
+ 2007: (JAN, 2, eid_al_adha),
1008
+ }
1009
+
1010
+ special_16_public_holidays = {
1011
+ 2018: (
1012
+ (MAY, 10, additional_holiday),
1013
+ (MAY, 11, additional_holiday),
1014
+ ),
1015
+ 2021: (DEC, 3, malaysia_cup_holiday),
1016
+ }
1017
+ special_16_public_holidays_observed = {
1018
+ 2007: (JAN, 2, eid_al_adha),
919
1019
  }
@@ -243,8 +243,8 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
243
243
 
244
244
  if self.subdiv == "New Plymouth":
245
245
  self._populate_subdiv_tki_public_holidays()
246
- elif self.subdiv == "South Canterbury":
247
- self._populate_subdiv_stc_public_holidays()
246
+ elif self.subdiv == "STC":
247
+ self._populate_subdiv_south_canterbury_public_holidays()
248
248
  elif self.subdiv in {"WTL", "Westland"}:
249
249
  self._populate_subdiv_wtc_public_holidays()
250
250
 
@@ -304,7 +304,8 @@ class NewZealand(ObservedHolidayBase, ChristianHolidays, InternationalHolidays,
304
304
  # Otago Anniversary Day.
305
305
  self._add_holiday("Otago Anniversary Day", dt)
306
306
 
307
- def _populate_subdiv_stc_public_holidays(self):
307
+ def _populate_subdiv_south_canterbury_public_holidays(self):
308
+ # South Canterbury Anniversary Day.
308
309
  self._add_holiday_4th_mon_of_sep("South Canterbury Anniversary Day")
309
310
 
310
311
  def _populate_subdiv_stl_public_holidays(self):
@@ -10,6 +10,7 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
+ from holidays.constants import PUBLIC, UNOFFICIAL
13
14
  from holidays.countries.united_states import UnitedStates
14
15
  from holidays.mixins.child_entity import ChildEntity
15
16
 
@@ -25,6 +26,7 @@ class NorthernMarianaIslands(ChildEntity, UnitedStates):
25
26
  parent_entity = UnitedStates
26
27
  # UNSC Resolution 21 on April 2nd, 1947.
27
28
  start_year = 1948
29
+ supported_categories = (PUBLIC, UNOFFICIAL)
28
30
 
29
31
 
30
32
  class HolidaysMP(NorthernMarianaIslands):
@@ -10,6 +10,7 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
+ from holidays.constants import HALF_DAY, PUBLIC, UNOFFICIAL
13
14
  from holidays.countries.united_states import UnitedStates
14
15
  from holidays.mixins.child_entity import ChildEntity
15
16
 
@@ -23,8 +24,9 @@ class PuertoRico(ChildEntity, UnitedStates):
23
24
 
24
25
  country = "PR"
25
26
  parent_entity = UnitedStates
26
- # Became a U.S. Territory on April 11th, 1899.
27
- start_year = 1900
27
+ # Art. 387 of the 1902 Political Code of Puerto Rico.
28
+ start_year = 1903
29
+ supported_categories = (HALF_DAY, PUBLIC, UNOFFICIAL)
28
30
 
29
31
 
30
32
  class HolidaysPR(PuertoRico):
@@ -96,8 +96,8 @@ class QAT(Qatar):
96
96
 
97
97
 
98
98
  class QatarIslamicHolidays(_CustomIslamicHolidays):
99
- # https://web.archive.org/web/20250422212912/https://www.timeanddate.com/holidays/qatar/eid-al-adha
100
- EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2005, 2024)
99
+ # https://web.archive.org/web/20260107122007/https://www.timeanddate.com/holidays/qatar/eid-al-adha
100
+ EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2005, 2025)
101
101
  EID_AL_ADHA_DATES = {
102
102
  2008: (DEC, 9),
103
103
  2009: (NOV, 28),
@@ -126,8 +126,7 @@ class QatarStaticHolidays:
126
126
  * [New Year's Holiday](https://web.archive.org/web/20250119073018/https://www.expatica.com/qa/lifestyle/holidays/qatar-public-holidays-74585/)
127
127
  """
128
128
 
129
- # New Year's Holiday.
130
- name = tr("عطلة رأس السنة")
131
129
  special_public_holidays = {
132
- 2025: (JAN, 2, name),
130
+ # New Year's Holiday.
131
+ 2025: (JAN, 2, tr("عطلة رأس السنة")),
133
132
  }