holidays 0.87__py3-none-any.whl → 0.88__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 (54) hide show
  1. holidays/constants.py +1 -0
  2. holidays/countries/american_samoa.py +2 -0
  3. holidays/countries/belarus.py +4 -2
  4. holidays/countries/brazil.py +27 -1
  5. holidays/countries/chile.py +2 -3
  6. holidays/countries/guam.py +2 -0
  7. holidays/countries/macau.py +39 -45
  8. holidays/countries/malaysia.py +171 -71
  9. holidays/countries/new_zealand.py +4 -3
  10. holidays/countries/northern_mariana_islands.py +2 -0
  11. holidays/countries/puerto_rico.py +4 -2
  12. holidays/countries/sweden.py +35 -11
  13. holidays/countries/taiwan.py +6 -5
  14. holidays/countries/turks_and_caicos_islands.py +13 -3
  15. holidays/countries/united_states.py +400 -108
  16. holidays/countries/united_states_minor_outlying_islands.py +2 -0
  17. holidays/countries/united_states_virgin_islands.py +2 -0
  18. holidays/countries/uzbekistan.py +12 -1
  19. holidays/countries/venezuela.py +113 -23
  20. holidays/financial/__init__.py +1 -0
  21. holidays/financial/bombay_stock_exchange.py +33 -0
  22. holidays/financial/national_stock_exchange_of_india.py +1 -1
  23. holidays/holiday_base.py +2 -1
  24. holidays/locale/en_IN/LC_MESSAGES/XBOM.mo +0 -0
  25. holidays/locale/en_TC/LC_MESSAGES/TC.mo +0 -0
  26. holidays/locale/en_US/LC_MESSAGES/BR.mo +0 -0
  27. holidays/locale/en_US/LC_MESSAGES/MY.mo +0 -0
  28. holidays/locale/en_US/LC_MESSAGES/SE.mo +0 -0
  29. holidays/locale/en_US/LC_MESSAGES/TC.mo +0 -0
  30. holidays/locale/en_US/LC_MESSAGES/US.mo +0 -0
  31. holidays/locale/en_US/LC_MESSAGES/VE.mo +0 -0
  32. holidays/locale/en_US/LC_MESSAGES/XBOM.mo +0 -0
  33. holidays/locale/es/LC_MESSAGES/VE.mo +0 -0
  34. holidays/locale/gu/LC_MESSAGES/XBOM.mo +0 -0
  35. holidays/locale/gu/LC_MESSAGES/XNSE.mo +0 -0
  36. holidays/locale/hi/LC_MESSAGES/XBOM.mo +0 -0
  37. holidays/locale/ms_MY/LC_MESSAGES/MY.mo +0 -0
  38. holidays/locale/pt_BR/LC_MESSAGES/BR.mo +0 -0
  39. holidays/locale/sv/LC_MESSAGES/SE.mo +0 -0
  40. holidays/locale/th/LC_MESSAGES/MY.mo +0 -0
  41. holidays/locale/th/LC_MESSAGES/SE.mo +0 -0
  42. holidays/locale/th/LC_MESSAGES/US.mo +0 -0
  43. holidays/locale/uk/LC_MESSAGES/BR.mo +0 -0
  44. holidays/locale/uk/LC_MESSAGES/SE.mo +0 -0
  45. holidays/locale/uk/LC_MESSAGES/VE.mo +0 -0
  46. holidays/registry.py +1 -0
  47. holidays/utils.py +52 -0
  48. holidays/version.py +3 -1
  49. {holidays-0.87.dist-info → holidays-0.88.dist-info}/METADATA +18 -11
  50. {holidays-0.87.dist-info → holidays-0.88.dist-info}/RECORD +54 -48
  51. {holidays-0.87.dist-info → holidays-0.88.dist-info}/licenses/CONTRIBUTORS +5 -0
  52. {holidays-0.87.dist-info → holidays-0.88.dist-info}/WHEEL +0 -0
  53. {holidays-0.87.dist-info → holidays-0.88.dist-info}/licenses/LICENSE +0 -0
  54. {holidays-0.87.dist-info → holidays-0.88.dist-info}/top_level.txt +0 -0
@@ -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):
@@ -20,7 +20,7 @@ from holidays.calendars.gregorian import (
20
20
  _get_nth_weekday_from,
21
21
  _timedelta,
22
22
  )
23
- from holidays.constants import BANK, OPTIONAL, PUBLIC
23
+ from holidays.constants import BANK, DE_FACTO, OPTIONAL, PUBLIC
24
24
  from holidays.groups import ChristianHolidays, InternationalHolidays
25
25
  from holidays.holiday_base import HolidayBase
26
26
 
@@ -37,9 +37,31 @@ class Sweden(HolidayBase, ChristianHolidays, InternationalHolidays):
37
37
  * <https://sv.wikipedia.org/wiki/Sveriges_nationaldag>
38
38
  * <https://sv.wikipedia.org/wiki/Midsommarafton>
39
39
  * [Bank Holidays 2025](https://web.archive.org/web/20250811112642/https://www.riksbank.se/sv/press-och-publicerat/kalender/helgdagar-2025/)
40
+ * [Swedish Annual Leave Law (SFS 1977:480)](https://www.riksdagen.se/sv/dokument-och-lagar/dokument/svensk-forfattningssamling/semesterlag-1977480_sfs-1977-480/)
40
41
 
41
42
  In Sweden, ALL sundays are considered a holiday.
42
43
  Initialize this class with `include_sundays=False` to not include sundays as a holiday.
44
+
45
+ Supported holiday categories:
46
+
47
+ - PUBLIC: Official public holidays with general time off
48
+ - DE_FACTO: Holidays treated equivalently to public holidays by law
49
+ - BANK: Banking institution holidays
50
+ - OPTIONAL: Optional or cultural observances
51
+
52
+ The DE_FACTO category includes:
53
+ - Midsommarafton (Midsummer Eve)
54
+ - Julafton (Christmas Eve)
55
+ - Nyårsafton (New Year's Eve)
56
+
57
+ According to Swedish Annual Leave Law (SFS 1977:480, Section 7): "Med söndag
58
+ jämställs allmän helgdag samt midsommarafton, julafton och nyårsafton"
59
+ (Sundays are equivalent to public holidays as well as Midsummer's Eve,
60
+ Christmas Eve, and New Year's Eve).
61
+
62
+ These holidays are not official public holidays but must be treated as
63
+ non-working days. For accurate `is_working_day()` calculations, use:
64
+ `Sweden(categories=(PUBLIC, DE_FACTO))`
43
65
  """
44
66
 
45
67
  # %s (from 2pm).
@@ -48,7 +70,7 @@ class Sweden(HolidayBase, ChristianHolidays, InternationalHolidays):
48
70
  default_language = "sv"
49
71
  # Act 1952:48.
50
72
  start_year = 1953
51
- supported_categories = (BANK, OPTIONAL, PUBLIC)
73
+ supported_categories = (BANK, DE_FACTO, OPTIONAL, PUBLIC)
52
74
  supported_languages = ("en_US", "sv", "th", "uk")
53
75
 
54
76
  def __init__(self, *args, include_sundays: bool = True, **kwargs):
@@ -126,6 +148,16 @@ class Sweden(HolidayBase, ChristianHolidays, InternationalHolidays):
126
148
  # Sunday.
127
149
  self._add_holiday(tr("Söndag"), dt)
128
150
 
151
+ def _populate_de_facto_holidays(self):
152
+ # Midsummer Eve.
153
+ self._add_holiday_1st_fri_from_jun_19(tr("Midsommarafton"))
154
+
155
+ # Christmas Eve.
156
+ self._add_christmas_eve(tr("Julafton"))
157
+
158
+ # New Year's Eve.
159
+ self._add_new_years_eve(tr("Nyårsafton"))
160
+
129
161
  def _populate_common(self):
130
162
  """Populate holidays that are both optional and bank holidays."""
131
163
 
@@ -138,22 +170,14 @@ class Sweden(HolidayBase, ChristianHolidays, InternationalHolidays):
138
170
  # Walpurgis Night.
139
171
  self._add_holiday_apr_30(self.tr(self.begin_time_label) % self.tr("Valborgsmässoafton"))
140
172
 
141
- # Midsummer Eve.
142
- self._add_holiday_1st_fri_from_jun_19(tr("Midsommarafton"))
143
-
144
173
  self._add_holiday_1st_fri_from_oct_30(
145
174
  # All Saints' Eve.
146
175
  self.tr(self.begin_time_label) % self.tr("Allahelgonsafton")
147
176
  )
148
177
 
149
- # Christmas Eve.
150
- self._add_christmas_eve(tr("Julafton"))
151
-
152
- # New Year's Eve.
153
- self._add_new_years_eve(tr("Nyårsafton"))
154
-
155
178
  def _populate_bank_holidays(self):
156
179
  self._populate_common()
180
+ self._populate_de_facto_holidays()
157
181
 
158
182
  self._add_holiday_38_days_past_easter(
159
183
  # Day before Ascension Day.
@@ -168,7 +168,7 @@ class Taiwan(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays
168
168
 
169
169
  if self._year >= 2026:
170
170
  # Labor Day.
171
- self._add_labor_day(tr("勞動節"))
171
+ dts_observed.add(self._add_labor_day(tr("勞動節")))
172
172
 
173
173
  # Dragon Boat Festival.
174
174
  dts_observed.add(self._add_dragon_boat_festival(tr("端午節")))
@@ -178,17 +178,17 @@ class Taiwan(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays
178
178
 
179
179
  if self._year >= 2025:
180
180
  # Confucius' Birthday.
181
- self._add_holiday_sep_28(tr("孔子誕辰紀念日"))
181
+ dts_observed.add(self._add_holiday_sep_28(tr("孔子誕辰紀念日")))
182
182
 
183
183
  # National Day.
184
184
  dts_observed.add(self._add_holiday_oct_10(tr("國慶日")))
185
185
 
186
186
  if self._year >= 2025:
187
187
  # Taiwan Restoration and Guningtou Victory Memorial Day.
188
- self._add_holiday_oct_25(tr("臺灣光復暨金門古寧頭大捷紀念日"))
188
+ dts_observed.add(self._add_holiday_oct_25(tr("臺灣光復暨金門古寧頭大捷紀念日")))
189
189
 
190
190
  # Constitution Day.
191
- self._add_holiday_dec_25(tr("行憲紀念日"))
191
+ dts_observed.add(self._add_holiday_dec_25(tr("行憲紀念日")))
192
192
 
193
193
  if self.observed:
194
194
  self._populate_observed(dts_observed)
@@ -338,7 +338,8 @@ class TaiwanStaticHolidays:
338
338
  * [2022](https://web.archive.org/web/20220809133226/https://www.dgpa.gov.tw/en/information?uid=353&pid=10659)
339
339
  * [2023](https://web.archive.org/web/20220809133225/https://www.dgpa.gov.tw/en/information?uid=353&pid=11016)
340
340
  * [2024](https://web.archive.org/web/20250414165829/https://www.dgpa.gov.tw/en/information?uid=353&pid=11402)
341
- * [2025](https://web.archive.org/web/20250121091032/https://www.dgpa.gov.tw/en/information?uid=353&pid=11979)
341
+ * [2025](https://web.archive.org/web/20251220073230/https://www.dgpa.gov.tw/en/information?uid=353&pid=12579)
342
+ * [2026](https://web.archive.org/web/20251220074207/https://www.dgpa.gov.tw/en/information?uid=353&pid=12580)
342
343
  """
343
344
 
344
345
  # Date format (see strftime() Format Codes).
@@ -39,6 +39,7 @@ class TurksAndCaicosIslands(ObservedHolidayBase, ChristianHolidays, Internationa
39
39
  * [2025](https://web.archive.org/web/20250608202433/https://www.facebook.com/photo/?fbid=1019082573584944&set=a.353200576839817)
40
40
  * [Destination TCI](https://web.archive.org/web/20250429024708/https://destinationtci.tc/turks-and-caicos-islands-public-holidays/)
41
41
  * [Time and Date](https://web.archive.org/web/20250429024853/https://www.timeanddate.com/holidays/turks-and-caicos-islands/)
42
+ * [Constitution Day](https://web.archive.org/web/20251230163946/https://www.visittci.com/news/turks-and-caicos-public-holiday-changes-2026)
42
43
  """
43
44
 
44
45
  country = "TC"
@@ -99,6 +100,18 @@ class TurksAndCaicosIslands(ObservedHolidayBase, ChristianHolidays, Internationa
99
100
  # Emancipation Day.
100
101
  self._add_observed(self._add_holiday_aug_1(tr("Emancipation Day")))
101
102
 
103
+ if self._year >= 2014:
104
+ # National Day of Thanksgiving.
105
+ name = tr("National Day of Thanksgiving")
106
+ if self._year >= 2026:
107
+ self._add_holiday_1_day_prior_last_mon_of_aug(name)
108
+ else:
109
+ self._add_holiday_4th_fri_of_nov(name)
110
+
111
+ if self._year >= 2026:
112
+ # Constitution Day.
113
+ self._add_holiday_last_mon_of_aug(tr("Constitution Day"))
114
+
102
115
  # National Youth Day.
103
116
  self._add_holiday_last_fri_of_sep(tr("National Youth Day"))
104
117
 
@@ -110,9 +123,6 @@ class TurksAndCaicosIslands(ObservedHolidayBase, ChristianHolidays, Internationa
110
123
  else tr("Columbus Day")
111
124
  )
112
125
 
113
- # National Day of Thanksgiving.
114
- self._add_holiday_4th_fri_of_nov(tr("National Day of Thanksgiving"))
115
-
116
126
  self._add_observed(
117
127
  # Christmas Day.
118
128
  self._add_christmas_day(tr("Christmas Day")),