From 8a35942306343d7e1a0d0f0e2ad3fde7b6f57c24 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 18 Aug 2025 12:07:41 -0700 Subject: [PATCH 01/48] Initialize v0.80 --- holidays/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/holidays/version.py b/holidays/version.py index 5d9561ab83..bb5505f033 100644 --- a/holidays/version.py +++ b/holidays/version.py @@ -10,4 +10,4 @@ # Website: https://github.com/vacanza/holidays # License: MIT (see LICENSE file) -__version__ = "0.79" +__version__ = "0.80" From acd64c1fd27969470e77f4381f6876cdf61edeca Mon Sep 17 00:00:00 2001 From: ~Jhellico Date: Tue, 19 Aug 2025 20:57:19 +0300 Subject: [PATCH 02/48] Refactor Australia holidays (#2828) --- holidays/countries/australia.py | 486 ++++++++++++------------------ snapshots/countries/AU_NSW.json | 9 - snapshots/countries/AU_NT.json | 8 +- snapshots/countries/AU_VIC.json | 8 +- tests/countries/test_australia.py | 11 +- 5 files changed, 203 insertions(+), 319 deletions(-) diff --git a/holidays/countries/australia.py b/holidays/countries/australia.py index e958ef557e..4cd65132f0 100644 --- a/holidays/countries/australia.py +++ b/holidays/countries/australia.py @@ -18,10 +18,12 @@ from holidays.observed_holiday_base import ( ObservedHolidayBase, MON_TO_NEXT_TUE, + SAT_TO_NEXT_MON, SUN_TO_NEXT_MON, SUN_TO_NEXT_TUE, SAT_SUN_TO_NEXT_MON, SAT_SUN_TO_NEXT_MON_TUE, + ALL_TO_NEXT_MON, ) @@ -151,17 +153,15 @@ def _populate_subdiv_act_public_holidays(self): # from 2015: SAT, SUN - add MON. # New Year's Day. - name = tr("New Year's Day") + dt = self._add_new_years_day(tr("New Year's Day")) if self._year >= 2015: - self._add_observed(self._add_new_years_day(name)) + self._add_observed(dt) elif self._year >= 1959: - jan_1 = (JAN, 1) - if self._is_sunday(jan_1) or (self._year >= 1993 and self._is_saturday(jan_1)): - self._add_holiday_1st_mon_from_jan_1(name) - else: - self._add_new_years_day(name) - else: - self._add_new_years_day(name) + self._move_holiday( + dt, + rule=SAT_SUN_TO_NEXT_MON if self._year >= 1993 else SUN_TO_NEXT_MON, + show_observed_label=False, + ) # Australia Day. # 1959-1989: not MON - move to MON. @@ -169,10 +169,13 @@ def _populate_subdiv_act_public_holidays(self): # Australia Day. if self._year >= 1888: - if 1959 <= self._year <= 1989 or (self._year >= 1990 and self._is_weekend(JAN, 26)): - self._add_holiday_1st_mon_from_jan_26(self.australia_day) - else: - self._add_holiday_jan_26(self.australia_day) + dt = self._add_holiday_jan_26(self.australia_day) + if self._year >= 1959: + self._move_holiday( + dt, + rule=SAT_SUN_TO_NEXT_MON if self._year >= 1990 else ALL_TO_NEXT_MON, + show_observed_label=False, + ) if self._year >= 1913: # Canberra Day. @@ -184,6 +187,15 @@ def _populate_subdiv_act_public_holidays(self): else: self._add_holiday_2nd_mon_of_mar(name) + # ANZAC Day. + # from 1959: SUN - move to MON. + + if self._year >= 1921: + # ANZAC Day. + dt = self._add_anzac_day(tr("ANZAC Day")) + if self._year >= 1959: + self._move_holiday(dt, rule=SUN_TO_NEXT_MON, show_observed_label=False) + # Easter Saturday. self._add_holy_saturday(tr("Easter Saturday")) @@ -191,17 +203,6 @@ def _populate_subdiv_act_public_holidays(self): # Easter Sunday. self._add_easter_sunday(tr("Easter Sunday")) - # ANZAC Day. - # from 1959: SUN - move to MON. - - if self._year >= 1921: - # ANZAC Day. - name = tr("ANZAC Day") - if self._year >= 1959 and self._is_sunday(APR, 25): - self._add_holiday_1st_mon_from_apr_25(name) - else: - self._add_anzac_day(name) - if self._year >= 2018: # Reconciliation Day. self._add_holiday_1st_mon_from_may_27(tr("Reconciliation Day")) @@ -231,51 +232,40 @@ def _populate_subdiv_act_public_holidays(self): # Labor Day. self._add_holiday_1st_mon_of_oct(tr("Labour Day")) - # Christmas Day. - # 1958-1991: SUN - to MON. - # 1992-2013: SAT, SUN - to MON. + # Boxing Day. + # 1958-1991: SUN - to MON, MON - to TUE. + # 1992-2013: SAT - to MON, SUN - to TUE, MON - to TUE. # from 2014: SAT - add MON, SUN - add TUE. + # (Placed before Christmas Day for proper observed calculation). - # Christmas Day. - name = tr("Christmas Day") + # Boxing Day. + dt = self._add_christmas_day_two(tr("Boxing Day")) if self._year >= 2014: - self._add_observed(self._add_christmas_day(name), rule=SAT_SUN_TO_NEXT_MON_TUE) + self._add_observed(dt, rule=SAT_SUN_TO_NEXT_MON_TUE) elif self._year >= 1958: - dec_25 = (DEC, 25) - if self._is_sunday(dec_25) or (self._year >= 1992 and self._is_saturday(dec_25)): - self._add_holiday_1st_mon_from_dec_25(name) - else: - self._add_christmas_day(name) - else: - self._add_christmas_day(name) + self._move_holiday( + dt, + rule=(SAT_SUN_TO_NEXT_MON_TUE + MON_TO_NEXT_TUE) + if self._year >= 1992 + else (SUN_TO_NEXT_MON + MON_TO_NEXT_TUE), + show_observed_label=False, + ) - # Boxing Day. - # 1958-1991: SUN - to MON, MON - to TUE. - # 1992-2013: SAT - to MON, SUN - to TUE, MON - to TUE. + # Christmas Day. + # 1958-1991: SUN - to MON. + # 1992-2013: SAT, SUN - to MON. # from 2014: SAT - add MON, SUN - add TUE. - # Boxing Day. - name = tr("Boxing Day") + # Christmas Day. + dt = self._add_christmas_day(tr("Christmas Day")) if self._year >= 2014: - self._add_observed(self._add_christmas_day_two(name), rule=SAT_SUN_TO_NEXT_MON_TUE) + self._add_observed(dt, rule=SAT_SUN_TO_NEXT_MON_TUE) elif self._year >= 1958: - dec_26 = (DEC, 26) - if self._year >= 1992: - if self._is_saturday(dec_26): - self._add_holiday_1st_mon_from_dec_26(name) - elif self._is_sunday(dec_26) or self._is_monday(dec_26): - self._add_holiday_1st_tue_from_dec_26(name) - else: - self._add_christmas_day_two(name) - else: - if self._is_sunday(dec_26): - self._add_holiday_1st_mon_from_dec_26(name) - elif self._is_monday(dec_26): - self._add_holiday_1st_tue_from_dec_26(name) - else: - self._add_christmas_day_two(name) - else: - self._add_christmas_day_two(name) + self._move_holiday( + dt, + rule=SAT_SUN_TO_NEXT_MON if self._year >= 1992 else SUN_TO_NEXT_MON, + show_observed_label=False, + ) def _populate_subdiv_act_bank_holidays(self): # Bank Holiday. @@ -297,7 +287,7 @@ def _populate_subdiv_nsw_public_holidays(self): # from 2011: SAT, SUN - to MON. if self._year >= 1888: - name = ( + dt = self._add_holiday_jan_26( # Australia Day. tr("Australia Day") if self._year >= 1946 @@ -305,12 +295,9 @@ def _populate_subdiv_nsw_public_holidays(self): else tr("Anniversary Day") ) if self._year >= 2011: - if self._is_weekend(JAN, 26): - self._add_holiday_1st_mon_from_jan_26(name) - else: - self._add_holiday_jan_26(name) + self._move_holiday(dt, show_observed_label=False) else: - self._add_observed(self._add_holiday_jan_26(name), rule=SUN_TO_NEXT_MON) + self._add_observed(dt, rule=SUN_TO_NEXT_MON) # Easter Saturday. self._add_holy_saturday(tr("Easter Saturday")) @@ -325,9 +312,9 @@ def _populate_subdiv_nsw_public_holidays(self): if self._year >= 1921: # ANZAC Day. - apr_25 = self._add_anzac_day(tr("ANZAC Day")) + dt = self._add_anzac_day(tr("ANZAC Day")) if self._year <= 2010: - self._add_observed(apr_25) + self._add_observed(dt, rule=SUN_TO_NEXT_MON) # Labor Day. self._add_holiday_1st_mon_of_oct(tr("Labour Day")) @@ -371,23 +358,29 @@ def _populate_subdiv_nt_public_holidays(self): # from 2017: SAT, SUN - add MON. # New Year's Day. - name = tr("New Year's Day") + dt = self._add_new_years_day(tr("New Year's Day")) if self._year >= 2017: - self._add_observed(self._add_new_years_day(name)) - elif self._year >= 1982 and self._is_weekend(JAN, 1): - self._add_holiday_1st_mon_from_jan_1(name) - else: - self._add_new_years_day(name) + self._add_observed(dt) + elif self._year >= 1982: + self._move_holiday(dt, show_observed_label=False) # Australia Day. # from 1982: SAT, SUN - move to MON. # Australia Day. if self._year >= 1888: - if self._year >= 1982 and self._is_weekend(JAN, 26): - self._add_holiday_1st_mon_from_jan_26(self.australia_day) - else: - self._add_holiday_jan_26(self.australia_day) + dt = self._add_holiday_jan_26(self.australia_day) + if self._year >= 1982: + self._move_holiday(dt, show_observed_label=False) + + # ANZAC Day. + # from 1982: SUN - to MON. + + if self._year >= 1921: + # ANZAC Day. + dt = self._add_anzac_day(tr("ANZAC Day")) + if self._year >= 1982: + self._move_holiday(dt, rule=SUN_TO_NEXT_MON, show_observed_label=False) # Easter Saturday. self._add_holy_saturday(tr("Easter Saturday")) @@ -396,17 +389,6 @@ def _populate_subdiv_nt_public_holidays(self): # Easter Sunday. self._add_easter_sunday(tr("Easter Sunday")) - # ANZAC Day. - # from 1982: SUN - to MON. - - if self._year >= 1921: - # ANZAC Day. - name = tr("ANZAC Day") - if self._year >= 1982 and self._is_sunday(APR, 25): - self._add_holiday_1st_mon_from_apr_25(name) - else: - self._add_anzac_day(name) - # May Day. self._add_holiday_1st_mon_of_may(tr("May Day")) @@ -417,39 +399,30 @@ def _populate_subdiv_nt_public_holidays(self): # Picnic Day. self._add_holiday_1st_mon_of_aug(tr("Picnic Day")) - # Christmas Day. - # 1981-2015: SAT, SUN - to MON. - # from 2016: SAT, SUN - add MON. - - # Christmas Day. - name = tr("Christmas Day") - if self._year >= 2016: - self._add_observed(self._add_christmas_day(name)) - elif self._year >= 1981 and self._is_weekend(DEC, 25): - self._add_holiday_1st_mon_from_dec_25(name) - else: - self._add_christmas_day(name) - # Boxing Day. # 1981-2022: SAT - to MON, SUN - to TUE, MON - to TUE. # from 2023: SAT - add MON, SUN - add TUE, MON - add TUE. + # (Placed before Christmas Day for proper observed calculation). # Boxing Day. - name = tr("Boxing Day") + dt = self._add_christmas_day_two(tr("Boxing Day")) if self._year >= 2023: - self._add_observed( - self._add_christmas_day_two(name), rule=SAT_SUN_TO_NEXT_MON_TUE + MON_TO_NEXT_TUE + self._add_observed(dt, rule=SAT_SUN_TO_NEXT_MON_TUE + MON_TO_NEXT_TUE) + elif self._year >= 1981: + self._move_holiday( + dt, rule=SAT_SUN_TO_NEXT_MON_TUE + MON_TO_NEXT_TUE, show_observed_label=False ) + + # Christmas Day. + # 1981-2015: SAT, SUN - to MON. + # from 2016: SAT, SUN - add MON. + + # Christmas Day. + dt = self._add_christmas_day(tr("Christmas Day")) + if self._year >= 2016: + self._add_observed(dt) elif self._year >= 1981: - dec_26 = (DEC, 26) - if self._is_saturday(dec_26): - self._add_holiday_1st_mon_from_dec_26(name) - elif self._is_sunday(dec_26) or self._is_monday(dec_26): - self._add_holiday_1st_tue_from_dec_26(name) - else: - self._add_christmas_day_two(name) - else: - self._add_christmas_day_two(name) + self._move_holiday(dt, show_observed_label=False) def _populate_subdiv_nt_half_day_holidays(self): if self._year >= 2016: @@ -468,13 +441,11 @@ def _populate_subdiv_qld_public_holidays(self): # from 2012: SAT, SUN - add MON. # New Year's Day. - name = tr("New Year's Day") + dt = self._add_new_years_day(tr("New Year's Day")) if self._year >= 2012: - self._add_observed(self._add_new_years_day(name)) - elif self._year >= 1984 and self._is_sunday(JAN, 1): - self._add_holiday_1st_mon_from_jan_1(name) - else: - self._add_new_years_day(name) + self._add_observed(dt) + elif self._year >= 1984: + self._move_holiday(dt, rule=SUN_TO_NEXT_MON, show_observed_label=False) # Australia Day. # 1984-1995: not MON - move to MON. @@ -482,10 +453,22 @@ def _populate_subdiv_qld_public_holidays(self): # Australia Day. if self._year >= 1888: - if 1984 <= self._year <= 1995 or (self._year >= 1996 and self._is_weekend(JAN, 26)): - self._add_holiday_1st_mon_from_jan_26(self.australia_day) - else: - self._add_holiday_jan_26(self.australia_day) + dt = self._add_holiday_jan_26(self.australia_day) + if self._year >= 1984: + self._move_holiday( + dt, + rule=SAT_SUN_TO_NEXT_MON if self._year >= 1996 else ALL_TO_NEXT_MON, + show_observed_label=False, + ) + + # ANZAC Day. + # from 1984: SUN - move to MON. + + if self._year >= 1921: + # ANZAC Day. + dt = self._add_anzac_day(tr("ANZAC Day")) + if self._year >= 1984: + self._move_holiday(dt, rule=SUN_TO_NEXT_MON, show_observed_label=False) # Easter Saturday. self._add_holy_saturday(tr("Easter Saturday")) @@ -494,17 +477,6 @@ def _populate_subdiv_qld_public_holidays(self): # Easter Sunday. self._add_easter_sunday(tr("Easter Sunday")) - # ANZAC Day. - # from 1984: SUN - move to MON. - - if self._year >= 1921: - # ANZAC Day. - name = tr("ANZAC Day") - if self._year >= 1984 and self._is_sunday(APR, 25): - self._add_holiday_1st_mon_from_apr_25(name) - else: - self._add_anzac_day(name) - # Labor Day. name = tr("Labour Day") if 2013 <= self._year <= 2015: @@ -535,37 +507,30 @@ def _populate_subdiv_qld_public_holidays(self): # [1st FRI after Aug 5] + 5 days = [1st WED after Aug 10] self._add_holiday_1st_wed_from_aug_10(name) - # Christmas Day. - # 1984-2010: SUN - to MON. + # Boxing Day. + # 1984-2010: SUN - to MON, MON - to TUE. # from 2011: SAT - add MON, SUN - add TUE. + # (Placed before Christmas Day for proper observed calculation). - # Christmas Day. - name = tr("Christmas Day") + # Boxing Day. + dt = self._add_christmas_day_two(tr("Boxing Day")) if self._year >= 2011: - self._add_observed(self._add_christmas_day(name), rule=SAT_SUN_TO_NEXT_MON_TUE) - elif self._year >= 1984 and self._is_sunday(DEC, 25): - self._add_holiday_1st_mon_from_dec_25(name) - else: - self._add_christmas_day(name) + self._add_observed(dt, rule=SAT_SUN_TO_NEXT_MON_TUE) + elif self._year >= 1984: + self._move_holiday( + dt, rule=SUN_TO_NEXT_MON + MON_TO_NEXT_TUE, show_observed_label=False + ) - # Boxing Day. - # 1984-1910: SUN - to MON, MON - to TUE. + # Christmas Day. + # 1984-2010: SUN - to MON. # from 2011: SAT - add MON, SUN - add TUE. - # Boxing Day. - name = tr("Boxing Day") + # Christmas Day. + dt = self._add_christmas_day(tr("Christmas Day")) if self._year >= 2011: - self._add_observed(self._add_christmas_day_two(name), rule=SAT_SUN_TO_NEXT_MON_TUE) + self._add_observed(dt, rule=SAT_SUN_TO_NEXT_MON_TUE) elif self._year >= 1984: - dec_26 = (DEC, 26) - if self._is_sunday(dec_26): - self._add_holiday_1st_mon_from_dec_26(name) - elif self._is_monday(dec_26): - self._add_holiday_1st_tue_from_dec_26(name) - else: - self._add_christmas_day_two(name) - else: - self._add_christmas_day_two(name) + self._move_holiday(dt, rule=SUN_TO_NEXT_MON, show_observed_label=False) def _populate_subdiv_sa_public_holidays(self): # New Year's Day. @@ -574,19 +539,14 @@ def _populate_subdiv_sa_public_holidays(self): # from 2024: SAT, SUN - add MON. # New Year's Day. - name = tr("New Year's Day") - jan_1 = (JAN, 1) + dt = self._add_new_years_day(tr("New Year's Day")) if self._year >= 2024: - self._add_observed(self._add_new_years_day(name)) + self._add_observed(dt) elif self._year >= 2004: - if self._is_saturday(jan_1): - self._add_holiday_1st_mon_from_jan_1(name) - else: - self._add_observed(self._add_new_years_day(name), rule=SUN_TO_NEXT_MON) - elif self._year >= 1984 and self._is_weekend(jan_1): - self._add_holiday_1st_mon_from_jan_1(name) - else: - self._add_new_years_day(name) + self._add_observed(dt, rule=SUN_TO_NEXT_MON) + self._move_holiday(dt, rule=SAT_TO_NEXT_MON, show_observed_label=False) + elif self._year >= 1984: + self._move_holiday(dt, show_observed_label=False) # Australia Day. # 1984-1993: not MON - move to MON. @@ -596,22 +556,14 @@ def _populate_subdiv_sa_public_holidays(self): if self._year >= 1935: # Australia Day. - name = tr("Australia Day") - jan_26 = (JAN, 26) + dt = self._add_holiday_jan_26(self.australia_day) if 1994 <= self._year <= 2003 or self._year >= 2024: - if self._is_weekend(jan_26): - self._add_holiday_1st_mon_from_jan_26(name) - else: - self._add_holiday_jan_26(name) + self._move_holiday(dt, show_observed_label=False) elif self._year >= 2004: - if self._is_saturday(jan_26): - self._add_holiday_1st_mon_from_jan_26(name) - else: - self._add_observed(self._add_holiday_jan_26(name), rule=SUN_TO_NEXT_MON) + self._add_observed(dt, rule=SUN_TO_NEXT_MON) + self._move_holiday(dt, rule=SAT_TO_NEXT_MON, show_observed_label=False) elif self._year >= 1984: - self._add_holiday_1st_mon_from_jan_26(name) - else: - self._add_holiday_jan_26(name) + self._move_holiday(dt, rule=ALL_TO_NEXT_MON, show_observed_label=False) # Adelaide Cup Day. # First observed as Public Holidays in 1973: https://racingsa.com.au/blog/2020/03/06/2380/a-little-adelaide-cup-history @@ -635,9 +587,9 @@ def _populate_subdiv_sa_public_holidays(self): if self._year >= 1921: # ANZAC Day. - apr_25 = self._add_anzac_day(tr("ANZAC Day")) + dt = self._add_anzac_day(tr("ANZAC Day")) if self._year <= 2023: - self._add_observed(apr_25, rule=SUN_TO_NEXT_MON) + self._add_observed(dt, rule=SUN_TO_NEXT_MON) # Sovereign's Birthday. if self._year >= 1936: @@ -654,30 +606,18 @@ def _populate_subdiv_sa_public_holidays(self): # (Placed before Christmas Day for proper observed calculation). # Proclamation Day. - name = tr("Proclamation Day") - dec_26 = (DEC, 26) + dt = self._add_christmas_day_two(tr("Proclamation Day")) if self._year >= 2024: - self._add_observed( - self._add_christmas_day_two(name), rule=SAT_SUN_TO_NEXT_MON_TUE + MON_TO_NEXT_TUE - ) + self._add_observed(dt, rule=SAT_SUN_TO_NEXT_MON_TUE + MON_TO_NEXT_TUE) elif self._year >= 2003: - if self._is_saturday(dec_26): - self._add_holiday_1st_mon_from_dec_26(name) - else: - self._add_observed( - self._add_christmas_day_two(name), rule=SUN_TO_NEXT_TUE + MON_TO_NEXT_TUE - ) + self._add_observed(dt, rule=SUN_TO_NEXT_TUE + MON_TO_NEXT_TUE) + self._move_holiday(dt, rule=SAT_TO_NEXT_MON, show_observed_label=False) elif self._year >= 1993: - if self._is_saturday(dec_26): - self._add_holiday_1st_mon_from_dec_26(name) - elif self._is_sunday(dec_26) or self._is_monday(dec_26): - self._add_holiday_1st_tue_from_dec_26(name) - else: - self._add_christmas_day_two(name) - elif self._year >= 1984 and self._is_weekend(dec_26): - self._add_holiday_1st_mon_from_dec_26(name) - else: - self._add_christmas_day_two(name) + self._move_holiday( + dt, rule=SAT_SUN_TO_NEXT_MON_TUE + MON_TO_NEXT_TUE, show_observed_label=False + ) + elif self._year >= 1984: + self._move_holiday(dt, show_observed_label=False) # Christmas Day. # 1984-2002: SAT, SUN - move to MON. @@ -685,19 +625,14 @@ def _populate_subdiv_sa_public_holidays(self): # from 2024: SAT, SUN - add MON. # Christmas Day. - name = tr("Christmas Day") - dec_25 = (DEC, 25) + dt = self._add_christmas_day(tr("Christmas Day")) if self._year >= 2024: - self._add_observed(self._add_christmas_day(name)) + self._add_observed(dt) elif self._year >= 2003: - if self._is_saturday(dec_25): - self._add_holiday_1st_mon_from_dec_25(name) - else: - self._add_observed(self._add_christmas_day(name), rule=SUN_TO_NEXT_MON) - elif self._year >= 1984 and self._is_weekend(dec_25): - self._add_holiday_1st_mon_from_dec_25(name) - else: - self._add_christmas_day(name) + self._add_observed(dt, rule=SUN_TO_NEXT_MON) + self._move_holiday(dt, rule=SAT_TO_NEXT_MON, show_observed_label=False) + elif self._year >= 1984: + self._move_holiday(dt, show_observed_label=False) def _populate_subdiv_sa_half_day_holidays(self): if self._year >= 2012: @@ -715,21 +650,18 @@ def _populate_subdiv_tas_public_holidays(self): # from 2001: SAT, SUN - move to MON. # New Year's Day. - name = tr("New Year's Day") - if self._year >= 2001 and self._is_weekend(JAN, 1): - self._add_holiday_1st_mon_from_jan_1(name) - else: - self._add_new_years_day(name) + dt = self._add_new_years_day(tr("New Year's Day")) + if self._year >= 2001: + self._move_holiday(dt, show_observed_label=False) # Australia Day. # from 2001: SAT, SUN - move to MON. # Australia Day. if self._year >= 1888: - if self._year >= 2001 and self._is_weekend(JAN, 26): - self._add_holiday_1st_mon_from_jan_26(self.australia_day) - else: - self._add_holiday_jan_26(self.australia_day) + dt = self._add_holiday_jan_26(self.australia_day) + if self._year >= 2001: + self._move_holiday(dt, show_observed_label=False) # Eight Hours Day. self._add_holiday_2nd_mon_of_mar(tr("Eight Hours Day")) @@ -751,35 +683,19 @@ def _populate_subdiv_tas_public_holidays(self): # from 2010: SAT - add MON, SUN - add TUE. # Christmas Day. - name = tr("Christmas Day") + dt = self._add_christmas_day(tr("Christmas Day")) if self._year >= 2010: - self._add_observed(self._add_christmas_day(name), rule=SAT_SUN_TO_NEXT_MON_TUE) + self._add_observed(dt, rule=SAT_SUN_TO_NEXT_MON_TUE) elif self._year >= 2000: - dec_25 = (DEC, 25) - if self._is_saturday(dec_25): - self._add_holiday_1st_mon_from_dec_25(name) - elif self._is_sunday(dec_25): - self._add_holiday_1st_tue_from_dec_25(name) - else: - self._add_christmas_day(name) - else: - self._add_christmas_day(name) + self._move_holiday(dt, rule=SAT_SUN_TO_NEXT_MON_TUE, show_observed_label=False) # Boxing Day. # from 2000: SAT - to MON, SUN - to TUE. # Boxing Day. - name = tr("Boxing Day") + dt = self._add_christmas_day_two(tr("Boxing Day")) if self._year >= 2000: - dec_26 = (DEC, 26) - if self._is_saturday(dec_26): - self._add_holiday_1st_mon_from_dec_26(name) - elif self._is_sunday(dec_26): - self._add_holiday_1st_tue_from_dec_26(name) - else: - self._add_christmas_day_two(name) - else: - self._add_christmas_day_two(name) + self._move_holiday(dt, rule=SAT_SUN_TO_NEXT_MON_TUE, show_observed_label=False) def _populate_subdiv_vic_public_holidays(self): # New Year's Day. @@ -788,28 +704,22 @@ def _populate_subdiv_vic_public_holidays(self): # from 2009: SAT, SUN - add MON. # New Year's Day. - name = tr("New Year's Day") + dt = self._add_new_years_day(tr("New Year's Day")) if self._year >= 2009: - self._add_observed(self._add_new_years_day(name)) + self._add_observed(dt) elif self._year >= 1998: - if self._is_sunday(JAN, 1): - self._add_holiday_1st_mon_from_jan_1(name) - else: - self._add_new_years_day(name) + self._move_holiday(dt, rule=SUN_TO_NEXT_MON, show_observed_label=False) elif self._year >= 1994: - self._add_observed(self._add_new_years_day(name), rule=SUN_TO_NEXT_MON) - else: - self._add_new_years_day(name) + self._add_observed(dt, rule=SUN_TO_NEXT_MON) # Australia Day. # from 2009: SAT, SUN - move to MON. # Australia Day. if self._year >= 1888: - if self._year >= 2009 and self._is_weekend(JAN, 26): - self._add_holiday_1st_mon_from_jan_26(self.australia_day) - else: - self._add_holiday_jan_26(self.australia_day) + dt = self._add_holiday_jan_26(self.australia_day) + if self._year >= 2009: + self._move_holiday(dt, show_observed_label=False) # Labor Day. self._add_holiday_2nd_mon_of_mar(tr("Labour Day")) @@ -853,41 +763,31 @@ def _populate_subdiv_vic_public_holidays(self): # from 2019: SAT - add MON, SUN - add TUE. # Christmas Day. - name = tr("Christmas Day") + dt = self._add_christmas_day(tr("Christmas Day")) if self._year >= 2019: - self._add_observed(self._add_christmas_day(name), rule=SAT_SUN_TO_NEXT_MON_TUE) - elif self._year >= 2000: - dec_25 = (DEC, 25) - if self._is_saturday(dec_25): - self._add_holiday_1st_mon_from_dec_25(name) - elif self._is_sunday(dec_25): - self._add_holiday_1st_tue_from_dec_25(name) - else: - self._add_christmas_day(name) - else: - self._add_christmas_day(name) + self._add_observed(dt, rule=SAT_SUN_TO_NEXT_MON_TUE) + elif self._year >= 2008: + self._move_holiday(dt, rule=SAT_SUN_TO_NEXT_MON_TUE, show_observed_label=False) # Boxing Day. - # 1994-2008: SUN - to MON. - # from 2009: SAT - add MON, SUN - add TUE. + # 1994-2007: SUN - to MON. + # from 2008: SAT - add MON, SUN - add TUE. # Boxing Day. - name = tr("Boxing Day") - if self._year >= 2009: - self._add_observed(self._add_christmas_day_two(name), rule=SAT_SUN_TO_NEXT_MON_TUE) - elif self._year >= 1994 and self._is_sunday(DEC, 26): - self._add_holiday_1st_tue_from_dec_26(name) - else: - self._add_christmas_day_two(name) + dt = self._add_christmas_day_two(tr("Boxing Day")) + if self._year >= 2008: + self._add_observed(dt, rule=SAT_SUN_TO_NEXT_MON_TUE) + elif self._year >= 1994: + self._move_holiday(dt, rule=SUN_TO_NEXT_MON, show_observed_label=False) def _populate_subdiv_wa_public_holidays(self): # New Year's Day. # from 1973: SAT, SUN - add MON. # New Year's Day. - jan_1 = self._add_new_years_day(tr("New Year's Day")) + dt = self._add_new_years_day(tr("New Year's Day")) if self._year >= 1973: - self._add_observed(jan_1) + self._add_observed(dt) # Australia Day. # 1973-1993: not MON - move to MON. @@ -895,15 +795,11 @@ def _populate_subdiv_wa_public_holidays(self): # Australia Day. if self._year >= 1888: + dt = self._add_holiday_jan_26(self.australia_day) if self._year >= 1994: - if self._is_weekend(JAN, 26): - self._add_holiday_1st_mon_from_jan_26(self.australia_day) - else: - self._add_holiday_jan_26(self.australia_day) + self._move_holiday(dt, show_observed_label=False) elif self._year >= 1973: - self._add_holiday_1st_mon_from_jan_26(self.australia_day) - else: - self._add_holiday_jan_26(self.australia_day) + self._move_holiday(dt, rule=ALL_TO_NEXT_MON, show_observed_label=False) # Labor Day. self._add_holiday_1st_mon_of_mar(tr("Labour Day")) @@ -914,9 +810,9 @@ def _populate_subdiv_wa_public_holidays(self): if self._year >= 1921: # ANZAC Day. - apr_25 = self._add_anzac_day(tr("ANZAC Day")) + dt = self._add_anzac_day(tr("ANZAC Day")) if self._year >= 1973: - self._add_observed(apr_25) + self._add_observed(dt) if self._year >= 1833: self._add_holiday_1st_mon_of_jun( @@ -950,10 +846,10 @@ def _populate_subdiv_wa_public_holidays(self): # (Placed before Christmas Day for proper observed calculation). # Boxing Day. - dec_26 = self._add_christmas_day_two(tr("Boxing Day")) + dt = self._add_christmas_day_two(tr("Boxing Day")) if self._year >= 1972: self._add_observed( - dec_26, + dt, rule=SAT_SUN_TO_NEXT_MON_TUE + MON_TO_NEXT_TUE if self._year >= 1976 else SAT_SUN_TO_NEXT_MON_TUE, @@ -963,9 +859,9 @@ def _populate_subdiv_wa_public_holidays(self): # from 1972: SAT, SUN - add MON. # Christmas Day. - dec_25 = self._add_christmas_day(tr("Christmas Day")) + dt = self._add_christmas_day(tr("Christmas Day")) if self._year >= 1972: - self._add_observed(dec_25) + self._add_observed(dt) class AU(Australia): diff --git a/snapshots/countries/AU_NSW.json b/snapshots/countries/AU_NSW.json index b5318d70af..b3c9f1455a 100644 --- a/snapshots/countries/AU_NSW.json +++ b/snapshots/countries/AU_NSW.json @@ -39,7 +39,6 @@ "1953-04-04": "Easter Saturday", "1953-04-06": "Easter Monday", "1953-04-25": "ANZAC Day", - "1953-04-27": "ANZAC Day (observed)", "1953-06-08": "Queen's Birthday", "1953-08-03": "Bank Holiday", "1953-10-05": "Labor Day", @@ -111,7 +110,6 @@ "1959-03-28": "Easter Saturday", "1959-03-30": "Easter Monday", "1959-04-25": "ANZAC Day", - "1959-04-27": "ANZAC Day (observed)", "1959-06-08": "Queen's Birthday", "1959-08-03": "Bank Holiday", "1959-10-05": "Labor Day", @@ -170,7 +168,6 @@ "1964-03-28": "Easter Saturday", "1964-03-30": "Easter Monday", "1964-04-25": "ANZAC Day", - "1964-04-27": "ANZAC Day (observed)", "1964-06-08": "Queen's Birthday", "1964-08-03": "Bank Holiday", "1964-10-05": "Labor Day", @@ -242,7 +239,6 @@ "1970-03-28": "Easter Saturday", "1970-03-30": "Easter Monday", "1970-04-25": "ANZAC Day", - "1970-04-27": "ANZAC Day (observed)", "1970-06-08": "Queen's Birthday", "1970-08-03": "Bank Holiday", "1970-10-05": "Labor Day", @@ -371,7 +367,6 @@ "1981-04-18": "Easter Saturday", "1981-04-20": "Easter Monday", "1981-04-25": "ANZAC Day", - "1981-04-27": "ANZAC Day (observed)", "1981-06-08": "Queen's Birthday", "1981-08-03": "Bank Holiday", "1981-10-05": "Labor Day", @@ -443,7 +438,6 @@ "1987-04-18": "Easter Saturday", "1987-04-20": "Easter Monday", "1987-04-25": "ANZAC Day", - "1987-04-27": "ANZAC Day (observed)", "1987-06-08": "Queen's Birthday", "1987-08-03": "Bank Holiday", "1987-10-05": "Labor Day", @@ -502,7 +496,6 @@ "1992-04-18": "Easter Saturday", "1992-04-20": "Easter Monday", "1992-04-25": "ANZAC Day", - "1992-04-27": "ANZAC Day (observed)", "1992-06-08": "Queen's Birthday", "1992-08-03": "Bank Holiday", "1992-10-05": "Labor Day", @@ -574,7 +567,6 @@ "1998-04-11": "Easter Saturday", "1998-04-13": "Easter Monday", "1998-04-25": "ANZAC Day", - "1998-04-27": "ANZAC Day (observed)", "1998-06-08": "Queen's Birthday", "1998-08-03": "Bank Holiday", "1998-10-05": "Labor Day", @@ -703,7 +695,6 @@ "2009-04-11": "Easter Saturday", "2009-04-13": "Easter Monday", "2009-04-25": "ANZAC Day", - "2009-04-27": "ANZAC Day (observed)", "2009-06-08": "Queen's Birthday", "2009-08-03": "Bank Holiday", "2009-10-05": "Labor Day", diff --git a/snapshots/countries/AU_NT.json b/snapshots/countries/AU_NT.json index 40081252a7..f68f153db7 100644 --- a/snapshots/countries/AU_NT.json +++ b/snapshots/countries/AU_NT.json @@ -981,7 +981,7 @@ "2033-12-24": "Christmas Eve (from 7pm)", "2033-12-25": "Christmas Day", "2033-12-26": "Boxing Day; Christmas Day (observed)", - "2033-12-27": "Boxing Day (observed); Christmas Day (observed) (observed)", + "2033-12-27": "Boxing Day (observed)", "2033-12-31": "New Year's Eve (from 7pm)", "2034-01-01": "New Year's Day", "2034-01-02": "New Year's Day (observed)", @@ -1070,7 +1070,7 @@ "2039-12-24": "Christmas Eve (from 7pm)", "2039-12-25": "Christmas Day", "2039-12-26": "Boxing Day; Christmas Day (observed)", - "2039-12-27": "Boxing Day (observed); Christmas Day (observed) (observed)", + "2039-12-27": "Boxing Day (observed)", "2039-12-31": "New Year's Eve (from 7pm)", "2040-01-01": "New Year's Day", "2040-01-02": "New Year's Day (observed)", @@ -1143,7 +1143,7 @@ "2044-12-24": "Christmas Eve (from 7pm)", "2044-12-25": "Christmas Day", "2044-12-26": "Boxing Day; Christmas Day (observed)", - "2044-12-27": "Boxing Day (observed); Christmas Day (observed) (observed)", + "2044-12-27": "Boxing Day (observed)", "2044-12-31": "New Year's Eve (from 7pm)", "2045-01-01": "New Year's Day", "2045-01-02": "New Year's Day (observed)", @@ -1233,6 +1233,6 @@ "2050-12-24": "Christmas Eve (from 7pm)", "2050-12-25": "Christmas Day", "2050-12-26": "Boxing Day; Christmas Day (observed)", - "2050-12-27": "Boxing Day (observed); Christmas Day (observed) (observed)", + "2050-12-27": "Boxing Day (observed)", "2050-12-31": "New Year's Eve (from 7pm)" } diff --git a/snapshots/countries/AU_VIC.json b/snapshots/countries/AU_VIC.json index 29d3cdf723..5b7a2a7b36 100644 --- a/snapshots/countries/AU_VIC.json +++ b/snapshots/countries/AU_VIC.json @@ -449,7 +449,7 @@ "1999-04-25": "ANZAC Day", "1999-06-14": "Queen's Birthday", "1999-12-25": "Christmas Day", - "1999-12-28": "Boxing Day", + "1999-12-27": "Boxing Day", "2000-01-01": "New Year's Day", "2000-01-26": "Australia Day", "2000-03-13": "Labor Day", @@ -495,8 +495,8 @@ "2004-04-12": "Easter Monday", "2004-04-25": "ANZAC Day", "2004-06-14": "Queen's Birthday", - "2004-12-27": "Christmas Day", - "2004-12-28": "Boxing Day", + "2004-12-25": "Christmas Day", + "2004-12-27": "Boxing Day", "2005-01-01": "New Year's Day", "2005-01-26": "Australia Day", "2005-03-14": "Labor Day", @@ -505,8 +505,8 @@ "2005-03-28": "Easter Monday", "2005-04-25": "ANZAC Day", "2005-06-13": "Queen's Birthday", + "2005-12-25": "Christmas Day", "2005-12-26": "Boxing Day", - "2005-12-27": "Christmas Day", "2006-01-02": "New Year's Day", "2006-01-26": "Australia Day", "2006-03-13": "Labor Day", diff --git a/tests/countries/test_australia.py b/tests/countries/test_australia.py index a93b0cf766..b60ee9efa8 100644 --- a/tests/countries/test_australia.py +++ b/tests/countries/test_australia.py @@ -28,15 +28,12 @@ def setUpClass(cls): subdiv: Australia(subdiv=subdiv, years=years) for subdiv in Australia.subdivisions } - def _assertVariableDays(self, year: int, subdiv_holidays: dict): # noqa: N802 - observed_subdiv_holidays = { - subdiv: Australia(subdiv=subdiv, years=year) for subdiv in Australia.subdivisions - } - for dt, subdivisions in subdiv_holidays.items(): + def _assertVariableDays(self, year: int, subdiv_holidays_mapping: dict): # noqa: N802 + for dt, subdivisions in subdiv_holidays_mapping.items(): dt = date(year, *dt) - for subdiv, subdiv_holidays in observed_subdiv_holidays.items(): + for subdiv, holidays in self.subdiv_holidays.items(): # type: ignore[attr-defined] self.assertEqual( - dt in subdiv_holidays, + dt in holidays, subdiv in subdivisions, f"Failed date `{dt:%Y-%m-%d}`, subdiv `{subdiv}`: {', '.join(subdivisions)}", ) From f7155f622ff4acfc1eb94cc5589a85030dce2040 Mon Sep 17 00:00:00 2001 From: ~Jhellico Date: Tue, 19 Aug 2025 22:48:47 +0300 Subject: [PATCH 03/48] Update Canada holidays: add National Day for Truth and Reconciliation in MB (#2829) --- holidays/countries/canada.py | 7 +++++++ tests/countries/test_canada.py | 23 +++++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/holidays/countries/canada.py b/holidays/countries/canada.py index 14d043c602..778ea1b5fa 100644 --- a/holidays/countries/canada.py +++ b/holidays/countries/canada.py @@ -46,6 +46,7 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat * * * [NT National Aboriginal Day](https://web.archive.org/web/20160623071755/http://www.daair.gov.nt.ca/_live/pages/wpPages/National_Aboriginal_Day.aspx) + * [MB National Day for Truth and Reconciliation](https://web.archive.org/web/20240714223654/https://web2.gov.mb.ca/bills/43-1/b004e.php) """ country = "CA" @@ -277,6 +278,12 @@ def _populate_subdiv_mb_public_holidays(self): self._add_victoria_day() + if self._year >= 2024: + self._add_observed( + # National Day for Truth and Reconciliation. + self._add_holiday_sep_30(tr("National Day for Truth and Reconciliation")) + ) + self._add_thanksgiving_day() def _populate_subdiv_mb_optional_holidays(self): diff --git a/tests/countries/test_canada.py b/tests/countries/test_canada.py index a8d64011b6..bd600c2895 100644 --- a/tests/countries/test_canada.py +++ b/tests/countries/test_canada.py @@ -270,29 +270,36 @@ def test_national_day_for_truth_and_reconciliation(self): self.assertHolidayName(name_observed, self.government_holidays, dts) self.assertNoNonObservedHoliday(self.government_holidays_non_observed, dts) - start_years = { - "AB": 2021, + subdiv_start_years = { "BC": 2023, + "MB": 2024, "NT": 2022, "NU": 2022, "PE": 2022, "YT": 2023, } for subdiv, holidays in self.subdiv_holidays.items(): - if subdiv in {"BC", "NT", "NU", "PE", "YT"}: + if start_year := subdiv_start_years.get(subdiv): self.assertHolidayName( - name, holidays, (f"{year}-09-30" for year in range(start_years[subdiv], 2050)) + name, holidays, (f"{year}-09-30" for year in range(start_year, 2050)) ) - self.assertNoHolidayName(name, holidays, range(1867, start_years[subdiv])) + self.assertNoHolidayName(name, holidays, range(1867, start_year)) else: self.assertNoHolidayName(name, holidays) self.assertNoNonObservedHoliday(self.subdiv_holidays_non_observed[subdiv], dts) self.assertHolidayName( - name, - self.subdiv_optional_holidays["AB"], - (f"{year}-09-30" for year in range(2021, 2050)), + name_observed, self.subdiv_holidays["MB"], "2028-10-02", "2029-10-01" + ) + self.assertNoNonObservedHoliday( + self.subdiv_holidays_non_observed["MB"], "2028-10-02", "2029-10-01" + ) + + ab_optional_holidays = self.subdiv_optional_holidays["AB"] + self.assertHolidayName( + name, ab_optional_holidays, (f"{year}-09-30" for year in range(2021, 2050)) ) + self.assertNoHolidayName(name, ab_optional_holidays, range(1867, 2021)) def test_thanksgiving_day(self): name_1921 = "Armistice Day" From a5a83e88aeb6113674fb9ff1209ad0b4bc37e258 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com> Date: Wed, 20 Aug 2025 00:03:13 -0700 Subject: [PATCH 04/48] Use aux repository data for downloads badge (#2832) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a552bdd62..3f9b5c4008 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ specific date is a holiday as fast and flexible as possible. PyPI - Pepy Total Downloads PyPI version PyPI release date + PyPI monthly downloads PyPI version Latest release date From 32fa5ba43464bae654ffc117aa66364e7d5e584e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Aug 2025 22:24:37 +0000 Subject: [PATCH 05/48] Bump build from 1.2.2.post1 to 1.3.0 (#2835) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/build.txt | 2 +- requirements/dev.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements/build.txt b/requirements/build.txt index 30fb7180e1..e0251fe933 100644 --- a/requirements/build.txt +++ b/requirements/build.txt @@ -1,3 +1,3 @@ -build==1.2.2.post1 +build==1.3.0 cyclonedx-bom==7.0.0 polib==1.2.0 diff --git a/requirements/dev.txt b/requirements/dev.txt index 6b85a9de7a..743dcb0cf8 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,6 +1,6 @@ # Dev requirements. -build==1.2.2.post1 +build==1.3.0 convertdate==2.4.0 gitpython==3.1.45 hijridate==2.5.0 From f8b726f9d61a008c27aa02067779d6b35f978632 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Aug 2025 22:27:26 +0000 Subject: [PATCH 06/48] Bump ruff from 0.12.8 to 0.12.9 (#2837) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 743dcb0cf8..0ecc501e21 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -8,7 +8,7 @@ lingva==5.0.6 pre-commit==4.3.0 pygithub==2.7.0 requests==2.32.4 -ruff==0.12.8 +ruff==0.12.9 tox==4.28.4 urllib3>=2.2.2 # not directly required, pinned by Snyk to avoid a vulnerability zipp>=3.19.1 # not directly required, pinned by Snyk to avoid a vulnerability From f4fd8adaf12d2d5bfe6c39734c031712a8726282 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Aug 2025 16:05:07 -0700 Subject: [PATCH 07/48] Bump requests from 2.32.4 to 2.32.5 (#2838) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 0ecc501e21..f2b6098141 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -7,7 +7,7 @@ hijridate==2.5.0 lingva==5.0.6 pre-commit==4.3.0 pygithub==2.7.0 -requests==2.32.4 +requests==2.32.5 ruff==0.12.9 tox==4.28.4 urllib3>=2.2.2 # not directly required, pinned by Snyk to avoid a vulnerability From a6e41098092220c8603a01950e0f163daba0b9b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Aug 2025 16:07:00 -0700 Subject: [PATCH 08/48] Bump github/codeql-action from 3.29.9 to 3.29.10 (#2841) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci-cd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index ee51c2fb92..1935d599cf 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -58,12 +58,12 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 - name: Initialize CodeQL - uses: github/codeql-action/init@df559355d593797519d70b90fc8edd5db049e7a2 + uses: github/codeql-action/init@96f518a34f7a870018057716cc4d7a5c014bd61c with: languages: python - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@df559355d593797519d70b90fc8edd5db049e7a2 + uses: github/codeql-action/analyze@96f518a34f7a870018057716cc4d7a5c014bd61c with: category: '/language:python' From 4862db08fc64f8cefc5fe21122d93b33a7d6d0a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Aug 2025 16:27:19 -0700 Subject: [PATCH 09/48] Bump codecov/codecov-action from 5.4.3 to 5.5.0 (#2840) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci-cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 1935d599cf..035c80ff75 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -111,7 +111,7 @@ jobs: make test - name: Upload coverage to Codecov - uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 + uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 with: token: ${{ secrets.CODECOV_TOKEN }} From 3813f15e603406152070c7303afe3e7be63fc0a5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Aug 2025 16:53:29 -0700 Subject: [PATCH 10/48] Bump coverage from 7.10.3 to 7.10.4 (#2839) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/tests.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/tests.txt b/requirements/tests.txt index d7ae889c6e..c0f1f08a09 100644 --- a/requirements/tests.txt +++ b/requirements/tests.txt @@ -1,6 +1,6 @@ # Test requirements. -coverage==7.10.3 +coverage==7.10.4 importlib-metadata==8.7.0; python_version < '3.10' numpy<2.1.0; python_version < '3.10' numpy==2.2.6; python_version == '3.10' From 5203f05d6db7d142685f15695049ae3403d4ff29 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Aug 2025 17:02:07 -0700 Subject: [PATCH 11/48] Bump mkdocstrings-python from 1.16.12 to 1.17.0 (#2836) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/docs.txt b/requirements/docs.txt index a703838964..ea227becea 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -4,5 +4,5 @@ markdown-include==0.8.1 mkdocs-gen-files==0.5.0 mkdocs-literate-nav==0.6.2 mkdocs==1.6.1 -mkdocstrings-python==1.16.12 +mkdocstrings-python==1.17.0 zipp==3.23.0 # not directly required, pinned by Snyk to avoid a vulnerability From 3e277e932a156a7737173b004e099f3635c9af55 Mon Sep 17 00:00:00 2001 From: ~Jhellico Date: Thu, 21 Aug 2025 21:35:31 +0300 Subject: [PATCH 12/48] Unify imports (#2845) --- holidays/countries/sierra_leone.py | 2 +- tests/countries/test_gambia.py | 2 +- tests/countries/test_guinea_bissau.py | 2 +- tests/countries/test_guyana.py | 2 +- tests/countries/test_ivory_coast.py | 3 ++- tests/countries/test_mali.py | 2 +- tests/countries/test_mauritius.py | 3 +-- tests/countries/test_sierra_leone.py | 16 ++++++++-------- tests/countries/test_suriname.py | 2 +- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/holidays/countries/sierra_leone.py b/holidays/countries/sierra_leone.py index bd3e9975d2..e469bfd8e8 100644 --- a/holidays/countries/sierra_leone.py +++ b/holidays/countries/sierra_leone.py @@ -12,8 +12,8 @@ from gettext import gettext as tr +from holidays.calendars import _CustomIslamicHolidays from holidays.calendars.gregorian import JUN, AUG, NOV -from holidays.calendars.islamic import _CustomIslamicHolidays from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays from holidays.observed_holiday_base import ObservedHolidayBase, SAT_SUN_TO_NEXT_WORKDAY diff --git a/tests/countries/test_gambia.py b/tests/countries/test_gambia.py index e95229b5c9..932396436c 100644 --- a/tests/countries/test_gambia.py +++ b/tests/countries/test_gambia.py @@ -12,7 +12,7 @@ from unittest import TestCase -from holidays.countries import Gambia, GM, GMB +from holidays.countries.gambia import Gambia, GM, GMB from tests.common import CommonCountryTests diff --git a/tests/countries/test_guinea_bissau.py b/tests/countries/test_guinea_bissau.py index 0a36c29938..9a42de9b7c 100644 --- a/tests/countries/test_guinea_bissau.py +++ b/tests/countries/test_guinea_bissau.py @@ -12,7 +12,7 @@ from unittest import TestCase -from holidays.countries import GuineaBissau, GW, GNB +from holidays.countries.guinea_bissau import GuineaBissau, GW, GNB from tests.common import CommonCountryTests diff --git a/tests/countries/test_guyana.py b/tests/countries/test_guyana.py index 700113cc32..cc2647b0d9 100644 --- a/tests/countries/test_guyana.py +++ b/tests/countries/test_guyana.py @@ -12,7 +12,7 @@ from unittest import TestCase -from holidays.countries import Guyana, GY, GUY +from holidays.countries.guyana import Guyana, GY, GUY from tests.common import CommonCountryTests diff --git a/tests/countries/test_ivory_coast.py b/tests/countries/test_ivory_coast.py index 33557ff713..6f3101af66 100644 --- a/tests/countries/test_ivory_coast.py +++ b/tests/countries/test_ivory_coast.py @@ -9,9 +9,10 @@ # ryanss (c) 2014-2017 # Website: https://github.com/vacanza/holidays # License: MIT (see LICENSE file) + from unittest import TestCase -from holidays.countries import IvoryCoast, CI, CIV +from holidays.countries.ivory_coast import IvoryCoast, CI, CIV from tests.common import CommonCountryTests diff --git a/tests/countries/test_mali.py b/tests/countries/test_mali.py index e6e776552c..4a9ce212a1 100644 --- a/tests/countries/test_mali.py +++ b/tests/countries/test_mali.py @@ -12,7 +12,7 @@ from unittest import TestCase -from holidays.countries import Mali, ML, MLI +from holidays.countries.mali import Mali, ML, MLI from tests.common import CommonCountryTests diff --git a/tests/countries/test_mauritius.py b/tests/countries/test_mauritius.py index 417148eb20..071d7f58e4 100644 --- a/tests/countries/test_mauritius.py +++ b/tests/countries/test_mauritius.py @@ -10,10 +10,9 @@ # Website: https://github.com/vacanza/holidays # License: MIT (see LICENSE file) - from unittest import TestCase -from holidays.countries import Mauritius, MU, MUS +from holidays.countries.mauritius import Mauritius, MU, MUS from tests.common import CommonCountryTests diff --git a/tests/countries/test_sierra_leone.py b/tests/countries/test_sierra_leone.py index 757e61c70c..e1ded398ef 100644 --- a/tests/countries/test_sierra_leone.py +++ b/tests/countries/test_sierra_leone.py @@ -12,7 +12,7 @@ from unittest import TestCase -from holidays.countries import SierraLeone, SL, SLE +from holidays.countries.sierra_leone import SierraLeone, SL, SLE from tests.common import CommonCountryTests @@ -39,7 +39,7 @@ def test_new_years_day(self): "2022-01-03", "2023-01-02", ) - self.assertHolidayName(f"{name} (observed)", self.no_estimated_holidays, dt) + self.assertHolidayName(f"{name} (observed)", dt) self.assertNoNonObservedHoliday(dt) def test_armed_forces_day(self): @@ -54,7 +54,7 @@ def test_armed_forces_day(self): "2023-02-20", "2024-02-19", ) - self.assertHolidayName(f"{name} (observed)", self.no_estimated_holidays, dt) + self.assertHolidayName(f"{name} (observed)", dt) self.assertNoNonObservedHoliday(dt) def test_international_womens_day(self): @@ -66,7 +66,7 @@ def test_international_womens_day(self): "2025-03-10", "2026-03-09", ) - self.assertHolidayName(f"{name} (observed)", self.no_estimated_holidays, dt) + self.assertHolidayName(f"{name} (observed)", dt) self.assertNoNonObservedHoliday(dt) def test_good_friday(self): @@ -106,7 +106,7 @@ def test_independence_day(self): "2019-04-29", "2024-04-29", ) - self.assertHolidayName(f"{name} (observed)", self.no_estimated_holidays, dt) + self.assertHolidayName(f"{name} (observed)", dt) self.assertNoNonObservedHoliday(dt) def test_labor_day(self): @@ -119,7 +119,7 @@ def test_labor_day(self): "2016-05-02", "2021-05-03", ) - self.assertHolidayName(f"{name} (observed)", self.no_estimated_holidays, dt) + self.assertHolidayName(f"{name} (observed)", dt) self.assertNoNonObservedHoliday(dt) def test_christmas_day(self): @@ -131,7 +131,7 @@ def test_christmas_day(self): "2016-12-27", "2022-12-27", ) - self.assertHolidayName(f"{name} (observed)", self.no_estimated_holidays, dt) + self.assertHolidayName(f"{name} (observed)", dt) self.assertNoNonObservedHoliday(dt) def test_boxing_day(self): @@ -143,7 +143,7 @@ def test_boxing_day(self): "2020-12-28", "2021-12-28", ) - self.assertHolidayName(f"{name} (observed)", self.no_estimated_holidays, dt) + self.assertHolidayName(f"{name} (observed)", dt) self.assertNoNonObservedHoliday(dt) def test_prophets_birthday(self): diff --git a/tests/countries/test_suriname.py b/tests/countries/test_suriname.py index cca51429c3..7bac855f8d 100644 --- a/tests/countries/test_suriname.py +++ b/tests/countries/test_suriname.py @@ -12,7 +12,7 @@ from unittest import TestCase -from holidays.countries import Suriname, SR, SUR +from holidays.countries.suriname import Suriname, SR, SUR from tests.common import CommonCountryTests From e7825ed1f940bdaf8e1da07ce4cd628956105ce9 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com> Date: Thu, 21 Aug 2025 12:23:02 -0700 Subject: [PATCH 13/48] Add metadata package version mismatch hint (#2846) --- tests/test_package.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/test_package.py b/tests/test_package.py index 072e865001..630314e5d1 100644 --- a/tests/test_package.py +++ b/tests/test_package.py @@ -31,8 +31,15 @@ def test_metadata(self): "summary": "Open World Holidays Framework", "version": holidays.__version__, }.items(): - self.assertIn(attr_name, ph_metadata) - self.assertEqual(ph_metadata[attr_name], attr_value, attr_name) + with self.subTest(attr=attr_name): + self.assertIn(attr_name, ph_metadata) + self.assertEqual( + ph_metadata[attr_name], + attr_value, + msg="You may need to run `make package` to update the metadata." + if attr_name == "version" + else None, + ) for attr_name in ( "classifier", From d17356fa5ad72082af9fc2a9f51b02f0cfc87fff Mon Sep 17 00:00:00 2001 From: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com> Date: Fri, 22 Aug 2025 02:24:24 +0700 Subject: [PATCH 14/48] Update Singapore holidays: remove duplicate holidays label assignment (#2844) --- holidays/countries/singapore.py | 4 +++ holidays/locale/en_SG/LC_MESSAGES/SG.po | 16 +++++++-- holidays/locale/en_US/LC_MESSAGES/SG.po | 16 +++++++-- holidays/locale/th/LC_MESSAGES/SG.po | 16 +++++++-- snapshots/countries/SG_COMMON.json | 44 ++++++++++++------------- 5 files changed, 65 insertions(+), 31 deletions(-) diff --git a/holidays/countries/singapore.py b/holidays/countries/singapore.py index f989f25113..68fce975e6 100644 --- a/holidays/countries/singapore.py +++ b/holidays/countries/singapore.py @@ -60,7 +60,11 @@ class Singapore( """ country = "SG" + # %s (estimated). + estimated_label = tr("%s (estimated)") default_language = "en_SG" + # %s (observed, estimated). + observed_estimated_label = tr("%s (observed, estimated)") # %s (observed). observed_label = tr("%s (observed)") supported_languages = ("en_SG", "en_US", "th") diff --git a/holidays/locale/en_SG/LC_MESSAGES/SG.po b/holidays/locale/en_SG/LC_MESSAGES/SG.po index 7cc57cbd90..d77b903d32 100644 --- a/holidays/locale/en_SG/LC_MESSAGES/SG.po +++ b/holidays/locale/en_SG/LC_MESSAGES/SG.po @@ -14,9 +14,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.58\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2024-10-02 15:30+0700\n" -"PO-Revision-Date: 2024-10-02 15:54+0700\n" +"PO-Revision-Date: 2025-08-21 11:37+0700\n" "Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: en_SG\n" @@ -24,9 +24,19 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Lingva 5.0.3\n" -"X-Generator: Poedit 3.5\n" +"X-Generator: Poedit 3.7\n" "X-Source-Language: en_SG\n" +#. %s (estimated). +#, c-format +msgid "%s (estimated)" +msgstr "" + +#. %s (observed, estimated). +#, c-format +msgid "%s (observed, estimated)" +msgstr "" + #. %s (observed). #, c-format msgid "%s (observed)" diff --git a/holidays/locale/en_US/LC_MESSAGES/SG.po b/holidays/locale/en_US/LC_MESSAGES/SG.po index 17271a989c..72deb0a388 100644 --- a/holidays/locale/en_US/LC_MESSAGES/SG.po +++ b/holidays/locale/en_US/LC_MESSAGES/SG.po @@ -14,9 +14,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.58\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2024-10-02 15:30+0700\n" -"PO-Revision-Date: 2024-10-02 15:54+0700\n" +"PO-Revision-Date: 2025-08-21 11:37+0700\n" "Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: en_US\n" @@ -24,9 +24,19 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Lingva 5.0.3\n" -"X-Generator: Poedit 3.5\n" +"X-Generator: Poedit 3.7\n" "X-Source-Language: en_SG\n" +#. %s (estimated). +#, c-format +msgid "%s (estimated)" +msgstr "%s (estimated)" + +#. %s (observed, estimated). +#, c-format +msgid "%s (observed, estimated)" +msgstr "%s (observed, estimated)" + #. %s (observed). #, c-format msgid "%s (observed)" diff --git a/holidays/locale/th/LC_MESSAGES/SG.po b/holidays/locale/th/LC_MESSAGES/SG.po index 82226ad353..39de941b3a 100644 --- a/holidays/locale/th/LC_MESSAGES/SG.po +++ b/holidays/locale/th/LC_MESSAGES/SG.po @@ -14,9 +14,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.58\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2024-10-02 15:30+0700\n" -"PO-Revision-Date: 2024-10-02 16:06+0700\n" +"PO-Revision-Date: 2025-08-21 11:37+0700\n" "Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: th\n" @@ -24,9 +24,19 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Lingva 5.0.3\n" -"X-Generator: Poedit 3.5\n" +"X-Generator: Poedit 3.7\n" "X-Source-Language: en_SG\n" +#. %s (estimated). +#, c-format +msgid "%s (estimated)" +msgstr "%s (โดยประมาณ)" + +#. %s (observed, estimated). +#, c-format +msgid "%s (observed, estimated)" +msgstr "ชดเชย%s (โดยประมาณ)" + #. %s (observed). #, c-format msgid "%s (observed)" diff --git a/snapshots/countries/SG_COMMON.json b/snapshots/countries/SG_COMMON.json index 54781f3650..f1315fb6f4 100644 --- a/snapshots/countries/SG_COMMON.json +++ b/snapshots/countries/SG_COMMON.json @@ -604,7 +604,7 @@ "1998-04-10": "Good Friday", "1998-05-01": "Labor Day", "1998-05-10": "Vesak Day (estimated)", - "1998-05-11": "Vesak Day (estimated) (observed)", + "1998-05-11": "Vesak Day (observed, estimated)", "1998-08-09": "National Day", "1998-08-10": "National Day (observed)", "1998-11-17": "Deepavali", @@ -624,7 +624,7 @@ "2000-01-08": "Eid al-Fitr (estimated)", "2000-02-05": "Chinese New Year (estimated)", "2000-02-06": "Chinese New Year (estimated)", - "2000-02-07": "Chinese New Year (estimated) (observed)", + "2000-02-07": "Chinese New Year (observed, estimated)", "2000-03-16": "Eid al-Adha (estimated)", "2000-04-21": "Good Friday", "2000-05-01": "Labor Day", @@ -976,12 +976,12 @@ "2027-01-01": "New Year's Day", "2027-02-06": "Chinese New Year (estimated)", "2027-02-07": "Chinese New Year (estimated)", - "2027-02-08": "Chinese New Year (estimated) (observed)", + "2027-02-08": "Chinese New Year (observed, estimated)", "2027-03-09": "Eid al-Fitr (estimated)", "2027-03-26": "Good Friday", "2027-05-01": "Labor Day", "2027-05-16": "Eid al-Adha (estimated)", - "2027-05-17": "Eid al-Adha (estimated) (observed)", + "2027-05-17": "Eid al-Adha (observed, estimated)", "2027-05-20": "Vesak Day (estimated)", "2027-08-09": "National Day", "2027-10-27": "Deepavali", @@ -1004,7 +1004,7 @@ "2029-04-24": "Eid al-Adha (estimated)", "2029-05-01": "Labor Day", "2029-05-27": "Vesak Day (estimated)", - "2029-05-28": "Vesak Day (estimated) (observed)", + "2029-05-28": "Vesak Day (observed, estimated)", "2029-08-09": "National Day", "2029-11-04": "Deepavali", "2029-11-05": "Deepavali (observed)", @@ -1012,7 +1012,7 @@ "2030-01-01": "New Year's Day", "2030-02-03": "Chinese New Year (estimated)", "2030-02-04": "Chinese New Year (estimated); Eid al-Fitr (estimated)", - "2030-02-05": "Chinese New Year (estimated) (observed)", + "2030-02-05": "Chinese New Year (observed, estimated)", "2030-04-13": "Eid al-Adha (estimated)", "2030-04-19": "Good Friday", "2030-05-01": "Labor Day", @@ -1038,13 +1038,13 @@ "2032-03-26": "Good Friday", "2032-05-01": "Labor Day", "2032-05-23": "Vesak Day (estimated)", - "2032-05-24": "Vesak Day (estimated) (observed)", + "2032-05-24": "Vesak Day (observed, estimated)", "2032-08-09": "National Day", "2032-11-01": "Deepavali", "2032-12-25": "Christmas Day", "2033-01-01": "New Year's Day", "2033-01-02": "Eid al-Fitr (estimated)", - "2033-01-03": "Eid al-Fitr (estimated) (observed)", + "2033-01-03": "Eid al-Fitr (observed, estimated)", "2033-01-31": "Chinese New Year (estimated)", "2033-02-01": "Chinese New Year (estimated)", "2033-03-11": "Eid al-Adha (estimated)", @@ -1061,7 +1061,7 @@ "2034-01-02": "New Year's Day (observed)", "2034-02-19": "Chinese New Year (estimated)", "2034-02-20": "Chinese New Year (estimated)", - "2034-02-21": "Chinese New Year (estimated) (observed)", + "2034-02-21": "Chinese New Year (observed, estimated)", "2034-03-01": "Eid al-Adha (estimated)", "2034-04-07": "Good Friday", "2034-05-01": "Labor Day", @@ -1074,7 +1074,7 @@ "2035-02-08": "Chinese New Year (estimated)", "2035-02-09": "Chinese New Year (estimated)", "2035-02-18": "Eid al-Adha (estimated)", - "2035-02-19": "Eid al-Adha (estimated) (observed)", + "2035-02-19": "Eid al-Adha (observed, estimated)", "2035-03-23": "Good Friday", "2035-05-01": "Labor Day", "2035-05-22": "Vesak Day (estimated)", @@ -1098,7 +1098,7 @@ "2037-01-26": "Eid al-Adha (estimated)", "2037-02-15": "Chinese New Year (estimated)", "2037-02-16": "Chinese New Year (estimated)", - "2037-02-17": "Chinese New Year (estimated) (observed)", + "2037-02-17": "Chinese New Year (observed, estimated)", "2037-04-03": "Good Friday", "2037-05-01": "Labor Day", "2037-05-29": "Vesak Day (estimated)", @@ -1106,7 +1106,7 @@ "2037-08-10": "National Day (observed)", "2037-11-05": "Deepavali", "2037-11-08": "Eid al-Fitr (estimated)", - "2037-11-09": "Eid al-Fitr (estimated) (observed)", + "2037-11-09": "Eid al-Fitr (observed, estimated)", "2037-12-25": "Christmas Day", "2038-01-01": "New Year's Day", "2038-01-16": "Eid al-Adha (estimated)", @@ -1137,13 +1137,13 @@ "2040-01-02": "New Year's Day (observed)", "2040-02-12": "Chinese New Year (estimated)", "2040-02-13": "Chinese New Year (estimated)", - "2040-02-14": "Chinese New Year (estimated) (observed)", + "2040-02-14": "Chinese New Year (observed, estimated)", "2040-03-30": "Good Friday", "2040-05-01": "Labor Day", "2040-05-25": "Vesak Day (estimated)", "2040-08-09": "National Day", "2040-10-07": "Eid al-Fitr (estimated)", - "2040-10-08": "Eid al-Fitr (estimated) (observed)", + "2040-10-08": "Eid al-Fitr (observed, estimated)", "2040-11-03": "Deepavali", "2040-12-14": "Eid al-Adha (estimated)", "2040-12-25": "Christmas Day", @@ -1168,7 +1168,7 @@ "2042-09-15": "Eid al-Fitr (estimated)", "2042-11-11": "Deepavali", "2042-11-23": "Eid al-Adha (estimated)", - "2042-11-24": "Eid al-Adha (estimated) (observed)", + "2042-11-24": "Eid al-Adha (observed, estimated)", "2042-12-25": "Christmas Day", "2043-01-01": "New Year's Day", "2043-02-10": "Chinese New Year (estimated)", @@ -1185,7 +1185,7 @@ "2044-01-01": "New Year's Day", "2044-01-30": "Chinese New Year (estimated)", "2044-01-31": "Chinese New Year (estimated)", - "2044-02-01": "Chinese New Year (estimated) (observed)", + "2044-02-01": "Chinese New Year (observed, estimated)", "2044-04-15": "Good Friday", "2044-05-01": "Labor Day", "2044-05-02": "Labor Day (observed)", @@ -1214,7 +1214,7 @@ "2046-03-23": "Good Friday", "2046-05-01": "Labor Day", "2046-05-20": "Vesak Day (estimated)", - "2046-05-21": "Vesak Day (estimated) (observed)", + "2046-05-21": "Vesak Day (observed, estimated)", "2046-08-03": "Eid al-Fitr (estimated)", "2046-08-09": "National Day", "2046-10-10": "Eid al-Adha (estimated)", @@ -1223,7 +1223,7 @@ "2047-01-01": "New Year's Day", "2047-01-26": "Chinese New Year (estimated)", "2047-01-27": "Chinese New Year (estimated)", - "2047-01-28": "Chinese New Year (estimated) (observed)", + "2047-01-28": "Chinese New Year (observed, estimated)", "2047-04-12": "Good Friday", "2047-05-01": "Labor Day", "2047-05-09": "Vesak Day (estimated)", @@ -1239,7 +1239,7 @@ "2048-05-01": "Labor Day", "2048-05-27": "Vesak Day (estimated)", "2048-07-12": "Eid al-Fitr (estimated)", - "2048-07-13": "Eid al-Fitr (estimated) (observed)", + "2048-07-13": "Eid al-Fitr (observed, estimated)", "2048-08-09": "National Day", "2048-08-10": "National Day (observed)", "2048-09-19": "Eid al-Adha (estimated)", @@ -1251,7 +1251,7 @@ "2049-04-16": "Good Friday", "2049-05-01": "Labor Day", "2049-05-16": "Vesak Day (estimated)", - "2049-05-17": "Vesak Day (estimated) (observed)", + "2049-05-17": "Vesak Day (observed, estimated)", "2049-07-01": "Eid al-Fitr (estimated)", "2049-08-09": "National Day", "2049-09-08": "Eid al-Adha (estimated)", @@ -1260,7 +1260,7 @@ "2050-01-01": "New Year's Day", "2050-01-23": "Chinese New Year (estimated)", "2050-01-24": "Chinese New Year (estimated)", - "2050-01-25": "Chinese New Year (estimated) (observed)", + "2050-01-25": "Chinese New Year (observed, estimated)", "2050-04-08": "Good Friday", "2050-05-01": "Labor Day", "2050-05-02": "Labor Day (observed)", @@ -1268,7 +1268,7 @@ "2050-06-20": "Eid al-Fitr (estimated)", "2050-08-09": "National Day", "2050-08-28": "Eid al-Adha (estimated)", - "2050-08-29": "Eid al-Adha (estimated) (observed)", + "2050-08-29": "Eid al-Adha (observed, estimated)", "2050-11-12": "Deepavali", "2050-12-25": "Christmas Day", "2050-12-26": "Christmas Day (observed)" From 36970bc92c8e3aa4831637fb587be12ebb0a96c3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 21 Aug 2025 17:42:09 -0700 Subject: [PATCH 15/48] Update pre-commit hooks (#2847) Co-authored-by: arkid15r <2201626+arkid15r@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a7933db6ff..d602b91a8a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -25,7 +25,7 @@ repos: - --py39-plus - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.12.9 + rev: v0.12.10 hooks: - id: ruff-check - id: ruff-format From d9cd868bf3cb503c4386311b077eca6dd58fdcad Mon Sep 17 00:00:00 2001 From: ~Jhellico Date: Fri, 22 Aug 2025 18:25:02 +0300 Subject: [PATCH 16/48] Fix Islamic holidays tests (#2849) --- tests/countries/test_afghanistan.py | 4 ++-- tests/countries/test_azerbaijan.py | 8 +++++--- tests/countries/test_kazakhstan.py | 14 ++++++-------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/countries/test_afghanistan.py b/tests/countries/test_afghanistan.py index 5c06a50fde..ed62407637 100644 --- a/tests/countries/test_afghanistan.py +++ b/tests/countries/test_afghanistan.py @@ -70,7 +70,7 @@ def test_international_workers_day(self): def test_soviet_victory_day(self): name = "روز پیروزی شوروی" self.assertHolidayName(name, (f"{year}-05-09" for year in range(1978, 1989))) - self.assertNoHolidayName(name, range(1919, 1978), (1989, 2050)) + self.assertNoHolidayName(name, range(1919, 1978), range(1989, 2050)) def test_islamic_emirat_victory_day(self): name = "روز پیروزی امارت اسلامی" @@ -96,7 +96,7 @@ def test_independence_day(self): def test_martyrs_day(self): name = "روز شهیدان" self.assertHolidayName(name, (f"{year}-09-09" for year in range(2012, 2021))) - self.assertNoHolidayName(name, range(1919, 2012), (2021, 2050)) + self.assertNoHolidayName(name, range(1919, 2012), range(2021, 2050)) def test_ashura(self): name = "عاشورا" diff --git a/tests/countries/test_azerbaijan.py b/tests/countries/test_azerbaijan.py index a8c0cb46ca..0879955ab1 100644 --- a/tests/countries/test_azerbaijan.py +++ b/tests/countries/test_azerbaijan.py @@ -20,7 +20,9 @@ class TestAzerbaijan(CommonCountryTests, WorkingDayTests, TestCase): @classmethod def setUpClass(cls): - super().setUpClass(Azerbaijan, years=range(1990, 2050)) + years = range(1990, 2050) + super().setUpClass(Azerbaijan, years=years) + cls.no_estimated_holidays = Azerbaijan(years=years, islamic_show_estimated=False) def test_country_aliases(self): self.assertAliases(Azerbaijan, AZ, AZE) @@ -246,7 +248,7 @@ def test_eid_al_fitr(self): "2023-04-22", ) self.assertNoHolidayName(name, "2004-11-15", "2005-11-04") - self.assertNoHolidayName(name, range(1990, 1993)) + self.assertNoHolidayName(name, self.no_estimated_holidays, range(1990, 1993)) def test_eid_al_adha(self): name = "Qurban bayrami" @@ -264,7 +266,7 @@ def test_eid_al_adha(self): "2023-06-29", ) self.assertNoHolidayName(name, "2004-02-02", "2005-01-23", "2006-01-11") - self.assertNoHolidayName(name, range(1990, 1993)) + self.assertNoHolidayName(name, self.no_estimated_holidays, range(1990, 1993)) def test_observed_days(self): observed_holidays = ( diff --git a/tests/countries/test_kazakhstan.py b/tests/countries/test_kazakhstan.py index c0299b5080..8aa01886d8 100644 --- a/tests/countries/test_kazakhstan.py +++ b/tests/countries/test_kazakhstan.py @@ -19,7 +19,9 @@ class TestKazakhstan(CommonCountryTests, WorkingDayTests, TestCase): @classmethod def setUpClass(cls): - super().setUpClass(Kazakhstan, years=range(1991, 2050)) + years = range(1991, 2050) + super().setUpClass(Kazakhstan, years=years, years_non_observed=years) + cls.no_estimated_holidays = Kazakhstan(years=years, islamic_show_estimated=False) def test_country_aliases(self): self.assertAliases(Kazakhstan, KZ, KAZ) @@ -168,9 +170,7 @@ def test_nauryz(self): self.assertHolidayName(name, f"{year}-03-21", f"{year}-03-22", f"{year}-03-23") self.assertNoHolidayName(name, range(1991, 2002)) for year in set(range(2002, 2010)) - {2005, 2007}: - self.assertNoNonObservedHoliday( - Kazakhstan(observed=False, years=year), f"{year}-03-21", f"{year}-03-23" - ) + self.assertNoNonObservedHoliday(f"{year}-03-21", f"{year}-03-23") def test_solidarity_day(self): self.assertHolidayName( @@ -218,10 +218,7 @@ def test_independence_day(self): self.assertHolidayName(name, (f"{year}-12-16" for year in range(1991, 2050))) self.assertHolidayName(name, (f"{year}-12-17" for year in range(2002, 2022))) self.assertNoHoliday(f"{year}-12-17" for year in range(1991, 2002)) - self.assertNoNonObservedHoliday( - Kazakhstan(observed=False, years=range(2022, 2050)), - (f"{year}-12-17" for year in range(2022, 2050)), - ) + self.assertNoNonObservedHoliday(f"{year}-12-17" for year in range(2022, 2050)) def test_kurban_ait(self): name = "Құрбан айт" @@ -248,6 +245,7 @@ def test_kurban_ait(self): "2024-06-16", "2025-06-06", ) + self.assertNoHolidayName(name, self.no_estimated_holidays, range(1991, 2006)) def test_observed(self): observed_holidays = ( From d0690489f397c847146919da04a5392717be35b6 Mon Sep 17 00:00:00 2001 From: Prateekshit Jaiswal <67361301+Prateekshit73@users.noreply.github.com> Date: Fri, 22 Aug 2025 20:58:51 +0530 Subject: [PATCH 17/48] Add Eritrea holidays (#2783) Signed-off-by: Prateekshit Jaiswal <67361301+Prateekshit73@users.noreply.github.com> Co-authored-by: Prateekshit --- README.md | 9 +- holidays/countries/__init__.py | 1 + holidays/countries/eritrea.py | 104 ++++ holidays/registry.py | 1 + snapshots/countries/ER_COMMON.json | 908 +++++++++++++++++++++++++++++ tests/countries/test_eritrea.py | 178 ++++++ 6 files changed, 1200 insertions(+), 1 deletion(-) create mode 100644 holidays/countries/eritrea.py create mode 100644 snapshots/countries/ER_COMMON.json create mode 100644 tests/countries/test_eritrea.py diff --git a/README.md b/README.md index 3f9b5c4008..f48a3964c0 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ and detailed information. ## Available Countries -We currently support 233 country codes. The standard way to refer to a country is by using its [ISO +We currently support 234 country codes. The standard way to refer to a country is by using its [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes), the same used for domain names, and for a subdivision its [ISO 3166-2 code](https://en.wikipedia.org/wiki/ISO_3166-2). Some countries have common or foreign names or @@ -595,6 +595,13 @@ any) in brackets, available languages and additional holiday categories. All cou +Eritrea +ER + + +GOVERNMENT + + Estonia EE diff --git a/holidays/countries/__init__.py b/holidays/countries/__init__.py index ef6f422533..a46ea8cc23 100644 --- a/holidays/countries/__init__.py +++ b/holidays/countries/__init__.py @@ -76,6 +76,7 @@ from holidays.countries.egypt import Egypt, EG, EGY from holidays.countries.el_salvador import ElSalvador, SV, SLV from holidays.countries.equatorial_guinea import EquatorialGuinea, GQ, GNQ +from holidays.countries.eritrea import Eritrea, ER, ERI from holidays.countries.estonia import Estonia, EE, EST from holidays.countries.eswatini import Eswatini, SZ, SZW, Swaziland from holidays.countries.ethiopia import Ethiopia, ET, ETH diff --git a/holidays/countries/eritrea.py b/holidays/countries/eritrea.py new file mode 100644 index 0000000000..7e9489fea9 --- /dev/null +++ b/holidays/countries/eritrea.py @@ -0,0 +1,104 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from holidays.calendars.ethiopian import ETHIOPIAN_CALENDAR +from holidays.constants import GOVERNMENT, PUBLIC +from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays +from holidays.holiday_base import HolidayBase + + +class Eritrea(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays): + """Eritrea holidays. + + References: + * + * + * + * + """ + + country = "ER" + # %s (estimated). + estimated_label = "%s (estimated)" + # On 28 May 1993, Eritrea was admitted into the United Nations as the 182nd member state. + start_year = 1994 + supported_categories = (GOVERNMENT, PUBLIC) + + def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): + """ + Args: + islamic_show_estimated: + Whether to add "estimated" label to Islamic holidays name + if holiday date is estimated. + """ + ChristianHolidays.__init__(self, ETHIOPIAN_CALENDAR) + InternationalHolidays.__init__(self) + IslamicHolidays.__init__(self, show_estimated=islamic_show_estimated) + super().__init__(*args, **kwargs) + + def _populate_public_holidays(self): + # New Year's Day. + self._add_new_years_day("New Year's Day") + + # Orthodox Christmas. + self._add_christmas_day("Orthodox Christmas") + + # Epiphany. + self._add_epiphany_day("Epiphany") + + # Women's Day. + self._add_womens_day("Women's Day") + + # Good Friday. + self._add_good_friday("Good Friday") + + # Orthodox Easter. + self._add_easter_sunday("Orthodox Easter") + + # International Workers' Day. + self._add_labor_day("International Workers' Day") + + # Independence Day. + self._add_holiday_may_24("Independence Day") + + # Martyrs' Day. + self._add_holiday_jun_20("Martyrs' Day") + + # Revolution Day. + self._add_holiday_sep_1("Revolution Day") + + # Ethiopian New Year. + self._add_ethiopian_new_year("Ethiopian New Year") + + # Finding of the True Cross. + self._add_finding_of_true_cross("Finding of the True Cross") + + # Prophet's Birthday. + self._add_mawlid_day("Prophet's Birthday") + + # Eid al-Fitr. + self._add_eid_al_fitr_day("Eid al-Fitr") + + # Eid al-Adha. + self._add_eid_al_adha_day("Eid al-Adha") + + def _populate_government_holidays(self): + # Fenkil Day. + self._add_holiday_feb_10("Fenkil Day") + + +class ER(Eritrea): + pass + + +class ERI(Eritrea): + pass diff --git a/holidays/registry.py b/holidays/registry.py index 605c59c613..da518ebba1 100644 --- a/holidays/registry.py +++ b/holidays/registry.py @@ -85,6 +85,7 @@ "jordan": ("Jordan", "JO", "JOR"), "el_salvador": ("ElSalvador", "SV", "SLV"), "equatorial_guinea": ("EquatorialGuinea", "GQ", "GNQ"), + "eritrea": ("Eritrea", "ER", "ERI"), "estonia": ("Estonia", "EE", "EST"), "eswatini": ("Eswatini", "SZ", "SZW", "Swaziland"), "ethiopia": ("Ethiopia", "ET", "ETH"), diff --git a/snapshots/countries/ER_COMMON.json b/snapshots/countries/ER_COMMON.json new file mode 100644 index 0000000000..542b6d43c5 --- /dev/null +++ b/snapshots/countries/ER_COMMON.json @@ -0,0 +1,908 @@ +{ + "1994-01-01": "New Year's Day", + "1994-01-07": "Orthodox Christmas", + "1994-01-19": "Epiphany", + "1994-02-10": "Fenkil Day", + "1994-03-08": "Women's Day", + "1994-03-13": "Eid al-Fitr (estimated)", + "1994-04-29": "Good Friday", + "1994-05-01": "International Workers' Day; Orthodox Easter", + "1994-05-20": "Eid al-Adha (estimated)", + "1994-05-24": "Independence Day", + "1994-06-20": "Martyrs' Day", + "1994-08-19": "Prophet's Birthday (estimated)", + "1994-09-01": "Revolution Day", + "1994-09-11": "Ethiopian New Year", + "1994-09-27": "Finding of the True Cross", + "1995-01-01": "New Year's Day", + "1995-01-07": "Orthodox Christmas", + "1995-01-19": "Epiphany", + "1995-02-10": "Fenkil Day", + "1995-03-02": "Eid al-Fitr (estimated)", + "1995-03-08": "Women's Day", + "1995-04-21": "Good Friday", + "1995-04-23": "Orthodox Easter", + "1995-05-01": "International Workers' Day", + "1995-05-09": "Eid al-Adha (estimated)", + "1995-05-24": "Independence Day", + "1995-06-20": "Martyrs' Day", + "1995-08-08": "Prophet's Birthday (estimated)", + "1995-09-01": "Revolution Day", + "1995-09-12": "Ethiopian New Year", + "1995-09-28": "Finding of the True Cross", + "1996-01-01": "New Year's Day", + "1996-01-07": "Orthodox Christmas", + "1996-01-20": "Epiphany", + "1996-02-10": "Fenkil Day", + "1996-02-19": "Eid al-Fitr (estimated)", + "1996-03-08": "Women's Day", + "1996-04-12": "Good Friday", + "1996-04-14": "Orthodox Easter", + "1996-04-27": "Eid al-Adha (estimated)", + "1996-05-01": "International Workers' Day", + "1996-05-24": "Independence Day", + "1996-06-20": "Martyrs' Day", + "1996-07-27": "Prophet's Birthday (estimated)", + "1996-09-01": "Revolution Day", + "1996-09-11": "Ethiopian New Year", + "1996-09-27": "Finding of the True Cross", + "1997-01-01": "New Year's Day", + "1997-01-07": "Orthodox Christmas", + "1997-01-19": "Epiphany", + "1997-02-08": "Eid al-Fitr (estimated)", + "1997-02-10": "Fenkil Day", + "1997-03-08": "Women's Day", + "1997-04-17": "Eid al-Adha (estimated)", + "1997-04-25": "Good Friday", + "1997-04-27": "Orthodox Easter", + "1997-05-01": "International Workers' Day", + "1997-05-24": "Independence Day", + "1997-06-20": "Martyrs' Day", + "1997-07-16": "Prophet's Birthday (estimated)", + "1997-09-01": "Revolution Day", + "1997-09-11": "Ethiopian New Year", + "1997-09-27": "Finding of the True Cross", + "1998-01-01": "New Year's Day", + "1998-01-07": "Orthodox Christmas", + "1998-01-19": "Epiphany", + "1998-01-29": "Eid al-Fitr (estimated)", + "1998-02-10": "Fenkil Day", + "1998-03-08": "Women's Day", + "1998-04-07": "Eid al-Adha (estimated)", + "1998-04-17": "Good Friday", + "1998-04-19": "Orthodox Easter", + "1998-05-01": "International Workers' Day", + "1998-05-24": "Independence Day", + "1998-06-20": "Martyrs' Day", + "1998-07-06": "Prophet's Birthday (estimated)", + "1998-09-01": "Revolution Day", + "1998-09-11": "Ethiopian New Year", + "1998-09-27": "Finding of the True Cross", + "1999-01-01": "New Year's Day", + "1999-01-07": "Orthodox Christmas", + "1999-01-18": "Eid al-Fitr (estimated)", + "1999-01-19": "Epiphany", + "1999-02-10": "Fenkil Day", + "1999-03-08": "Women's Day", + "1999-03-27": "Eid al-Adha (estimated)", + "1999-04-09": "Good Friday", + "1999-04-11": "Orthodox Easter", + "1999-05-01": "International Workers' Day", + "1999-05-24": "Independence Day", + "1999-06-20": "Martyrs' Day", + "1999-06-26": "Prophet's Birthday (estimated)", + "1999-09-01": "Revolution Day", + "1999-09-12": "Ethiopian New Year", + "1999-09-28": "Finding of the True Cross", + "2000-01-01": "New Year's Day", + "2000-01-07": "Orthodox Christmas", + "2000-01-08": "Eid al-Fitr (estimated)", + "2000-01-20": "Epiphany", + "2000-02-10": "Fenkil Day", + "2000-03-08": "Women's Day", + "2000-03-16": "Eid al-Adha (estimated)", + "2000-04-28": "Good Friday", + "2000-04-30": "Orthodox Easter", + "2000-05-01": "International Workers' Day", + "2000-05-24": "Independence Day", + "2000-06-14": "Prophet's Birthday (estimated)", + "2000-06-20": "Martyrs' Day", + "2000-09-01": "Revolution Day", + "2000-09-11": "Ethiopian New Year", + "2000-09-27": "Finding of the True Cross", + "2000-12-27": "Eid al-Fitr (estimated)", + "2001-01-01": "New Year's Day", + "2001-01-07": "Orthodox Christmas", + "2001-01-19": "Epiphany", + "2001-02-10": "Fenkil Day", + "2001-03-05": "Eid al-Adha (estimated)", + "2001-03-08": "Women's Day", + "2001-04-13": "Good Friday", + "2001-04-15": "Orthodox Easter", + "2001-05-01": "International Workers' Day", + "2001-05-24": "Independence Day", + "2001-06-04": "Prophet's Birthday (estimated)", + "2001-06-20": "Martyrs' Day", + "2001-09-01": "Revolution Day", + "2001-09-11": "Ethiopian New Year", + "2001-09-27": "Finding of the True Cross", + "2001-12-16": "Eid al-Fitr (estimated)", + "2002-01-01": "New Year's Day", + "2002-01-07": "Orthodox Christmas", + "2002-01-19": "Epiphany", + "2002-02-10": "Fenkil Day", + "2002-02-22": "Eid al-Adha (estimated)", + "2002-03-08": "Women's Day", + "2002-05-01": "International Workers' Day", + "2002-05-03": "Good Friday", + "2002-05-05": "Orthodox Easter", + "2002-05-24": "Independence Day; Prophet's Birthday (estimated)", + "2002-06-20": "Martyrs' Day", + "2002-09-01": "Revolution Day", + "2002-09-11": "Ethiopian New Year", + "2002-09-27": "Finding of the True Cross", + "2002-12-05": "Eid al-Fitr (estimated)", + "2003-01-01": "New Year's Day", + "2003-01-07": "Orthodox Christmas", + "2003-01-19": "Epiphany", + "2003-02-10": "Fenkil Day", + "2003-02-11": "Eid al-Adha (estimated)", + "2003-03-08": "Women's Day", + "2003-04-25": "Good Friday", + "2003-04-27": "Orthodox Easter", + "2003-05-01": "International Workers' Day", + "2003-05-13": "Prophet's Birthday (estimated)", + "2003-05-24": "Independence Day", + "2003-06-20": "Martyrs' Day", + "2003-09-01": "Revolution Day", + "2003-09-12": "Ethiopian New Year", + "2003-09-28": "Finding of the True Cross", + "2003-11-25": "Eid al-Fitr (estimated)", + "2004-01-01": "New Year's Day", + "2004-01-07": "Orthodox Christmas", + "2004-01-20": "Epiphany", + "2004-02-01": "Eid al-Adha (estimated)", + "2004-02-10": "Fenkil Day", + "2004-03-08": "Women's Day", + "2004-04-09": "Good Friday", + "2004-04-11": "Orthodox Easter", + "2004-05-01": "International Workers' Day; Prophet's Birthday (estimated)", + "2004-05-24": "Independence Day", + "2004-06-20": "Martyrs' Day", + "2004-09-01": "Revolution Day", + "2004-09-11": "Ethiopian New Year", + "2004-09-27": "Finding of the True Cross", + "2004-11-14": "Eid al-Fitr (estimated)", + "2005-01-01": "New Year's Day", + "2005-01-07": "Orthodox Christmas", + "2005-01-19": "Epiphany", + "2005-01-21": "Eid al-Adha (estimated)", + "2005-02-10": "Fenkil Day", + "2005-03-08": "Women's Day", + "2005-04-21": "Prophet's Birthday (estimated)", + "2005-04-29": "Good Friday", + "2005-05-01": "International Workers' Day; Orthodox Easter", + "2005-05-24": "Independence Day", + "2005-06-20": "Martyrs' Day", + "2005-09-01": "Revolution Day", + "2005-09-11": "Ethiopian New Year", + "2005-09-27": "Finding of the True Cross", + "2005-11-03": "Eid al-Fitr (estimated)", + "2006-01-01": "New Year's Day", + "2006-01-07": "Orthodox Christmas", + "2006-01-10": "Eid al-Adha (estimated)", + "2006-01-19": "Epiphany", + "2006-02-10": "Fenkil Day", + "2006-03-08": "Women's Day", + "2006-04-10": "Prophet's Birthday (estimated)", + "2006-04-21": "Good Friday", + "2006-04-23": "Orthodox Easter", + "2006-05-01": "International Workers' Day", + "2006-05-24": "Independence Day", + "2006-06-20": "Martyrs' Day", + "2006-09-01": "Revolution Day", + "2006-09-11": "Ethiopian New Year", + "2006-09-27": "Finding of the True Cross", + "2006-10-23": "Eid al-Fitr (estimated)", + "2006-12-31": "Eid al-Adha (estimated)", + "2007-01-01": "New Year's Day", + "2007-01-07": "Orthodox Christmas", + "2007-01-19": "Epiphany", + "2007-02-10": "Fenkil Day", + "2007-03-08": "Women's Day", + "2007-03-31": "Prophet's Birthday (estimated)", + "2007-04-06": "Good Friday", + "2007-04-08": "Orthodox Easter", + "2007-05-01": "International Workers' Day", + "2007-05-24": "Independence Day", + "2007-06-20": "Martyrs' Day", + "2007-09-01": "Revolution Day", + "2007-09-12": "Ethiopian New Year", + "2007-09-28": "Finding of the True Cross", + "2007-10-13": "Eid al-Fitr (estimated)", + "2007-12-20": "Eid al-Adha (estimated)", + "2008-01-01": "New Year's Day", + "2008-01-07": "Orthodox Christmas", + "2008-01-20": "Epiphany", + "2008-02-10": "Fenkil Day", + "2008-03-08": "Women's Day", + "2008-03-20": "Prophet's Birthday (estimated)", + "2008-04-25": "Good Friday", + "2008-04-27": "Orthodox Easter", + "2008-05-01": "International Workers' Day", + "2008-05-24": "Independence Day", + "2008-06-20": "Martyrs' Day", + "2008-09-01": "Revolution Day", + "2008-09-11": "Ethiopian New Year", + "2008-09-27": "Finding of the True Cross", + "2008-10-01": "Eid al-Fitr (estimated)", + "2008-12-08": "Eid al-Adha (estimated)", + "2009-01-01": "New Year's Day", + "2009-01-07": "Orthodox Christmas", + "2009-01-19": "Epiphany", + "2009-02-10": "Fenkil Day", + "2009-03-08": "Women's Day", + "2009-03-09": "Prophet's Birthday (estimated)", + "2009-04-17": "Good Friday", + "2009-04-19": "Orthodox Easter", + "2009-05-01": "International Workers' Day", + "2009-05-24": "Independence Day", + "2009-06-20": "Martyrs' Day", + "2009-09-01": "Revolution Day", + "2009-09-11": "Ethiopian New Year", + "2009-09-20": "Eid al-Fitr (estimated)", + "2009-09-27": "Finding of the True Cross", + "2009-11-27": "Eid al-Adha (estimated)", + "2010-01-01": "New Year's Day", + "2010-01-07": "Orthodox Christmas", + "2010-01-19": "Epiphany", + "2010-02-10": "Fenkil Day", + "2010-02-26": "Prophet's Birthday (estimated)", + "2010-03-08": "Women's Day", + "2010-04-02": "Good Friday", + "2010-04-04": "Orthodox Easter", + "2010-05-01": "International Workers' Day", + "2010-05-24": "Independence Day", + "2010-06-20": "Martyrs' Day", + "2010-09-01": "Revolution Day", + "2010-09-10": "Eid al-Fitr (estimated)", + "2010-09-11": "Ethiopian New Year", + "2010-09-27": "Finding of the True Cross", + "2010-11-16": "Eid al-Adha (estimated)", + "2011-01-01": "New Year's Day", + "2011-01-07": "Orthodox Christmas", + "2011-01-19": "Epiphany", + "2011-02-10": "Fenkil Day", + "2011-02-15": "Prophet's Birthday (estimated)", + "2011-03-08": "Women's Day", + "2011-04-22": "Good Friday", + "2011-04-24": "Orthodox Easter", + "2011-05-01": "International Workers' Day", + "2011-05-24": "Independence Day", + "2011-06-20": "Martyrs' Day", + "2011-08-30": "Eid al-Fitr (estimated)", + "2011-09-01": "Revolution Day", + "2011-09-12": "Ethiopian New Year", + "2011-09-28": "Finding of the True Cross", + "2011-11-06": "Eid al-Adha (estimated)", + "2012-01-01": "New Year's Day", + "2012-01-07": "Orthodox Christmas", + "2012-01-20": "Epiphany", + "2012-02-04": "Prophet's Birthday (estimated)", + "2012-02-10": "Fenkil Day", + "2012-03-08": "Women's Day", + "2012-04-13": "Good Friday", + "2012-04-15": "Orthodox Easter", + "2012-05-01": "International Workers' Day", + "2012-05-24": "Independence Day", + "2012-06-20": "Martyrs' Day", + "2012-08-19": "Eid al-Fitr (estimated)", + "2012-09-01": "Revolution Day", + "2012-09-11": "Ethiopian New Year", + "2012-09-27": "Finding of the True Cross", + "2012-10-26": "Eid al-Adha (estimated)", + "2013-01-01": "New Year's Day", + "2013-01-07": "Orthodox Christmas", + "2013-01-19": "Epiphany", + "2013-01-24": "Prophet's Birthday (estimated)", + "2013-02-10": "Fenkil Day", + "2013-03-08": "Women's Day", + "2013-05-01": "International Workers' Day", + "2013-05-03": "Good Friday", + "2013-05-05": "Orthodox Easter", + "2013-05-24": "Independence Day", + "2013-06-20": "Martyrs' Day", + "2013-08-08": "Eid al-Fitr (estimated)", + "2013-09-01": "Revolution Day", + "2013-09-11": "Ethiopian New Year", + "2013-09-27": "Finding of the True Cross", + "2013-10-15": "Eid al-Adha (estimated)", + "2014-01-01": "New Year's Day", + "2014-01-07": "Orthodox Christmas", + "2014-01-13": "Prophet's Birthday (estimated)", + "2014-01-19": "Epiphany", + "2014-02-10": "Fenkil Day", + "2014-03-08": "Women's Day", + "2014-04-18": "Good Friday", + "2014-04-20": "Orthodox Easter", + "2014-05-01": "International Workers' Day", + "2014-05-24": "Independence Day", + "2014-06-20": "Martyrs' Day", + "2014-07-28": "Eid al-Fitr (estimated)", + "2014-09-01": "Revolution Day", + "2014-09-11": "Ethiopian New Year", + "2014-09-27": "Finding of the True Cross", + "2014-10-04": "Eid al-Adha (estimated)", + "2015-01-01": "New Year's Day", + "2015-01-03": "Prophet's Birthday (estimated)", + "2015-01-07": "Orthodox Christmas", + "2015-01-19": "Epiphany", + "2015-02-10": "Fenkil Day", + "2015-03-08": "Women's Day", + "2015-04-10": "Good Friday", + "2015-04-12": "Orthodox Easter", + "2015-05-01": "International Workers' Day", + "2015-05-24": "Independence Day", + "2015-06-20": "Martyrs' Day", + "2015-07-17": "Eid al-Fitr (estimated)", + "2015-09-01": "Revolution Day", + "2015-09-12": "Ethiopian New Year", + "2015-09-23": "Eid al-Adha (estimated)", + "2015-09-28": "Finding of the True Cross", + "2015-12-23": "Prophet's Birthday (estimated)", + "2016-01-01": "New Year's Day", + "2016-01-07": "Orthodox Christmas", + "2016-01-20": "Epiphany", + "2016-02-10": "Fenkil Day", + "2016-03-08": "Women's Day", + "2016-04-29": "Good Friday", + "2016-05-01": "International Workers' Day; Orthodox Easter", + "2016-05-24": "Independence Day", + "2016-06-20": "Martyrs' Day", + "2016-07-06": "Eid al-Fitr (estimated)", + "2016-09-01": "Revolution Day", + "2016-09-11": "Eid al-Adha (estimated); Ethiopian New Year", + "2016-09-27": "Finding of the True Cross", + "2016-12-11": "Prophet's Birthday (estimated)", + "2017-01-01": "New Year's Day", + "2017-01-07": "Orthodox Christmas", + "2017-01-19": "Epiphany", + "2017-02-10": "Fenkil Day", + "2017-03-08": "Women's Day", + "2017-04-14": "Good Friday", + "2017-04-16": "Orthodox Easter", + "2017-05-01": "International Workers' Day", + "2017-05-24": "Independence Day", + "2017-06-20": "Martyrs' Day", + "2017-06-25": "Eid al-Fitr (estimated)", + "2017-09-01": "Eid al-Adha (estimated); Revolution Day", + "2017-09-11": "Ethiopian New Year", + "2017-09-27": "Finding of the True Cross", + "2017-11-30": "Prophet's Birthday (estimated)", + "2018-01-01": "New Year's Day", + "2018-01-07": "Orthodox Christmas", + "2018-01-19": "Epiphany", + "2018-02-10": "Fenkil Day", + "2018-03-08": "Women's Day", + "2018-04-06": "Good Friday", + "2018-04-08": "Orthodox Easter", + "2018-05-01": "International Workers' Day", + "2018-05-24": "Independence Day", + "2018-06-15": "Eid al-Fitr (estimated)", + "2018-06-20": "Martyrs' Day", + "2018-08-21": "Eid al-Adha (estimated)", + "2018-09-01": "Revolution Day", + "2018-09-11": "Ethiopian New Year", + "2018-09-27": "Finding of the True Cross", + "2018-11-20": "Prophet's Birthday (estimated)", + "2019-01-01": "New Year's Day", + "2019-01-07": "Orthodox Christmas", + "2019-01-19": "Epiphany", + "2019-02-10": "Fenkil Day", + "2019-03-08": "Women's Day", + "2019-04-26": "Good Friday", + "2019-04-28": "Orthodox Easter", + "2019-05-01": "International Workers' Day", + "2019-05-24": "Independence Day", + "2019-06-04": "Eid al-Fitr (estimated)", + "2019-06-20": "Martyrs' Day", + "2019-08-11": "Eid al-Adha (estimated)", + "2019-09-01": "Revolution Day", + "2019-09-12": "Ethiopian New Year", + "2019-09-28": "Finding of the True Cross", + "2019-11-09": "Prophet's Birthday (estimated)", + "2020-01-01": "New Year's Day", + "2020-01-07": "Orthodox Christmas", + "2020-01-20": "Epiphany", + "2020-02-10": "Fenkil Day", + "2020-03-08": "Women's Day", + "2020-04-17": "Good Friday", + "2020-04-19": "Orthodox Easter", + "2020-05-01": "International Workers' Day", + "2020-05-24": "Eid al-Fitr (estimated); Independence Day", + "2020-06-20": "Martyrs' Day", + "2020-07-31": "Eid al-Adha (estimated)", + "2020-09-01": "Revolution Day", + "2020-09-11": "Ethiopian New Year", + "2020-09-27": "Finding of the True Cross", + "2020-10-29": "Prophet's Birthday (estimated)", + "2021-01-01": "New Year's Day", + "2021-01-07": "Orthodox Christmas", + "2021-01-19": "Epiphany", + "2021-02-10": "Fenkil Day", + "2021-03-08": "Women's Day", + "2021-04-30": "Good Friday", + "2021-05-01": "International Workers' Day", + "2021-05-02": "Orthodox Easter", + "2021-05-13": "Eid al-Fitr (estimated)", + "2021-05-24": "Independence Day", + "2021-06-20": "Martyrs' Day", + "2021-07-20": "Eid al-Adha (estimated)", + "2021-09-01": "Revolution Day", + "2021-09-11": "Ethiopian New Year", + "2021-09-27": "Finding of the True Cross", + "2021-10-18": "Prophet's Birthday (estimated)", + "2022-01-01": "New Year's Day", + "2022-01-07": "Orthodox Christmas", + "2022-01-19": "Epiphany", + "2022-02-10": "Fenkil Day", + "2022-03-08": "Women's Day", + "2022-04-22": "Good Friday", + "2022-04-24": "Orthodox Easter", + "2022-05-01": "International Workers' Day", + "2022-05-02": "Eid al-Fitr (estimated)", + "2022-05-24": "Independence Day", + "2022-06-20": "Martyrs' Day", + "2022-07-09": "Eid al-Adha (estimated)", + "2022-09-01": "Revolution Day", + "2022-09-11": "Ethiopian New Year", + "2022-09-27": "Finding of the True Cross", + "2022-10-08": "Prophet's Birthday (estimated)", + "2023-01-01": "New Year's Day", + "2023-01-07": "Orthodox Christmas", + "2023-01-19": "Epiphany", + "2023-02-10": "Fenkil Day", + "2023-03-08": "Women's Day", + "2023-04-14": "Good Friday", + "2023-04-16": "Orthodox Easter", + "2023-04-21": "Eid al-Fitr (estimated)", + "2023-05-01": "International Workers' Day", + "2023-05-24": "Independence Day", + "2023-06-20": "Martyrs' Day", + "2023-06-28": "Eid al-Adha (estimated)", + "2023-09-01": "Revolution Day", + "2023-09-12": "Ethiopian New Year", + "2023-09-27": "Prophet's Birthday (estimated)", + "2023-09-28": "Finding of the True Cross", + "2024-01-01": "New Year's Day", + "2024-01-07": "Orthodox Christmas", + "2024-01-20": "Epiphany", + "2024-02-10": "Fenkil Day", + "2024-03-08": "Women's Day", + "2024-04-10": "Eid al-Fitr (estimated)", + "2024-05-01": "International Workers' Day", + "2024-05-03": "Good Friday", + "2024-05-05": "Orthodox Easter", + "2024-05-24": "Independence Day", + "2024-06-16": "Eid al-Adha (estimated)", + "2024-06-20": "Martyrs' Day", + "2024-09-01": "Revolution Day", + "2024-09-11": "Ethiopian New Year", + "2024-09-15": "Prophet's Birthday (estimated)", + "2024-09-27": "Finding of the True Cross", + "2025-01-01": "New Year's Day", + "2025-01-07": "Orthodox Christmas", + "2025-01-19": "Epiphany", + "2025-02-10": "Fenkil Day", + "2025-03-08": "Women's Day", + "2025-03-30": "Eid al-Fitr (estimated)", + "2025-04-18": "Good Friday", + "2025-04-20": "Orthodox Easter", + "2025-05-01": "International Workers' Day", + "2025-05-24": "Independence Day", + "2025-06-06": "Eid al-Adha (estimated)", + "2025-06-20": "Martyrs' Day", + "2025-09-01": "Revolution Day", + "2025-09-04": "Prophet's Birthday (estimated)", + "2025-09-11": "Ethiopian New Year", + "2025-09-27": "Finding of the True Cross", + "2026-01-01": "New Year's Day", + "2026-01-07": "Orthodox Christmas", + "2026-01-19": "Epiphany", + "2026-02-10": "Fenkil Day", + "2026-03-08": "Women's Day", + "2026-03-20": "Eid al-Fitr (estimated)", + "2026-04-10": "Good Friday", + "2026-04-12": "Orthodox Easter", + "2026-05-01": "International Workers' Day", + "2026-05-24": "Independence Day", + "2026-05-27": "Eid al-Adha (estimated)", + "2026-06-20": "Martyrs' Day", + "2026-08-25": "Prophet's Birthday (estimated)", + "2026-09-01": "Revolution Day", + "2026-09-11": "Ethiopian New Year", + "2026-09-27": "Finding of the True Cross", + "2027-01-01": "New Year's Day", + "2027-01-07": "Orthodox Christmas", + "2027-01-19": "Epiphany", + "2027-02-10": "Fenkil Day", + "2027-03-08": "Women's Day", + "2027-03-09": "Eid al-Fitr (estimated)", + "2027-04-30": "Good Friday", + "2027-05-01": "International Workers' Day", + "2027-05-02": "Orthodox Easter", + "2027-05-16": "Eid al-Adha (estimated)", + "2027-05-24": "Independence Day", + "2027-06-20": "Martyrs' Day", + "2027-08-14": "Prophet's Birthday (estimated)", + "2027-09-01": "Revolution Day", + "2027-09-12": "Ethiopian New Year", + "2027-09-28": "Finding of the True Cross", + "2028-01-01": "New Year's Day", + "2028-01-07": "Orthodox Christmas", + "2028-01-20": "Epiphany", + "2028-02-10": "Fenkil Day", + "2028-02-26": "Eid al-Fitr (estimated)", + "2028-03-08": "Women's Day", + "2028-04-14": "Good Friday", + "2028-04-16": "Orthodox Easter", + "2028-05-01": "International Workers' Day", + "2028-05-05": "Eid al-Adha (estimated)", + "2028-05-24": "Independence Day", + "2028-06-20": "Martyrs' Day", + "2028-08-03": "Prophet's Birthday (estimated)", + "2028-09-01": "Revolution Day", + "2028-09-11": "Ethiopian New Year", + "2028-09-27": "Finding of the True Cross", + "2029-01-01": "New Year's Day", + "2029-01-07": "Orthodox Christmas", + "2029-01-19": "Epiphany", + "2029-02-10": "Fenkil Day", + "2029-02-14": "Eid al-Fitr (estimated)", + "2029-03-08": "Women's Day", + "2029-04-06": "Good Friday", + "2029-04-08": "Orthodox Easter", + "2029-04-24": "Eid al-Adha (estimated)", + "2029-05-01": "International Workers' Day", + "2029-05-24": "Independence Day", + "2029-06-20": "Martyrs' Day", + "2029-07-24": "Prophet's Birthday (estimated)", + "2029-09-01": "Revolution Day", + "2029-09-11": "Ethiopian New Year", + "2029-09-27": "Finding of the True Cross", + "2030-01-01": "New Year's Day", + "2030-01-07": "Orthodox Christmas", + "2030-01-19": "Epiphany", + "2030-02-04": "Eid al-Fitr (estimated)", + "2030-02-10": "Fenkil Day", + "2030-03-08": "Women's Day", + "2030-04-13": "Eid al-Adha (estimated)", + "2030-04-26": "Good Friday", + "2030-04-28": "Orthodox Easter", + "2030-05-01": "International Workers' Day", + "2030-05-24": "Independence Day", + "2030-06-20": "Martyrs' Day", + "2030-07-13": "Prophet's Birthday (estimated)", + "2030-09-01": "Revolution Day", + "2030-09-11": "Ethiopian New Year", + "2030-09-27": "Finding of the True Cross", + "2031-01-01": "New Year's Day", + "2031-01-07": "Orthodox Christmas", + "2031-01-19": "Epiphany", + "2031-01-24": "Eid al-Fitr (estimated)", + "2031-02-10": "Fenkil Day", + "2031-03-08": "Women's Day", + "2031-04-02": "Eid al-Adha (estimated)", + "2031-04-11": "Good Friday", + "2031-04-13": "Orthodox Easter", + "2031-05-01": "International Workers' Day", + "2031-05-24": "Independence Day", + "2031-06-20": "Martyrs' Day", + "2031-07-02": "Prophet's Birthday (estimated)", + "2031-09-01": "Revolution Day", + "2031-09-12": "Ethiopian New Year", + "2031-09-28": "Finding of the True Cross", + "2032-01-01": "New Year's Day", + "2032-01-07": "Orthodox Christmas", + "2032-01-14": "Eid al-Fitr (estimated)", + "2032-01-20": "Epiphany", + "2032-02-10": "Fenkil Day", + "2032-03-08": "Women's Day", + "2032-03-22": "Eid al-Adha (estimated)", + "2032-04-30": "Good Friday", + "2032-05-01": "International Workers' Day", + "2032-05-02": "Orthodox Easter", + "2032-05-24": "Independence Day", + "2032-06-20": "Martyrs' Day; Prophet's Birthday (estimated)", + "2032-09-01": "Revolution Day", + "2032-09-11": "Ethiopian New Year", + "2032-09-27": "Finding of the True Cross", + "2033-01-01": "New Year's Day", + "2033-01-02": "Eid al-Fitr (estimated)", + "2033-01-07": "Orthodox Christmas", + "2033-01-19": "Epiphany", + "2033-02-10": "Fenkil Day", + "2033-03-08": "Women's Day", + "2033-03-11": "Eid al-Adha (estimated)", + "2033-04-22": "Good Friday", + "2033-04-24": "Orthodox Easter", + "2033-05-01": "International Workers' Day", + "2033-05-24": "Independence Day", + "2033-06-09": "Prophet's Birthday (estimated)", + "2033-06-20": "Martyrs' Day", + "2033-09-01": "Revolution Day", + "2033-09-11": "Ethiopian New Year", + "2033-09-27": "Finding of the True Cross", + "2033-12-23": "Eid al-Fitr (estimated)", + "2034-01-01": "New Year's Day", + "2034-01-07": "Orthodox Christmas", + "2034-01-19": "Epiphany", + "2034-02-10": "Fenkil Day", + "2034-03-01": "Eid al-Adha (estimated)", + "2034-03-08": "Women's Day", + "2034-04-07": "Good Friday", + "2034-04-09": "Orthodox Easter", + "2034-05-01": "International Workers' Day", + "2034-05-24": "Independence Day", + "2034-05-30": "Prophet's Birthday (estimated)", + "2034-06-20": "Martyrs' Day", + "2034-09-01": "Revolution Day", + "2034-09-11": "Ethiopian New Year", + "2034-09-27": "Finding of the True Cross", + "2034-12-12": "Eid al-Fitr (estimated)", + "2035-01-01": "New Year's Day", + "2035-01-07": "Orthodox Christmas", + "2035-01-19": "Epiphany", + "2035-02-10": "Fenkil Day", + "2035-02-18": "Eid al-Adha (estimated)", + "2035-03-08": "Women's Day", + "2035-04-27": "Good Friday", + "2035-04-29": "Orthodox Easter", + "2035-05-01": "International Workers' Day", + "2035-05-20": "Prophet's Birthday (estimated)", + "2035-05-24": "Independence Day", + "2035-06-20": "Martyrs' Day", + "2035-09-01": "Revolution Day", + "2035-09-12": "Ethiopian New Year", + "2035-09-28": "Finding of the True Cross", + "2035-12-01": "Eid al-Fitr (estimated)", + "2036-01-01": "New Year's Day", + "2036-01-07": "Orthodox Christmas", + "2036-01-20": "Epiphany", + "2036-02-07": "Eid al-Adha (estimated)", + "2036-02-10": "Fenkil Day", + "2036-03-08": "Women's Day", + "2036-04-18": "Good Friday", + "2036-04-20": "Orthodox Easter", + "2036-05-01": "International Workers' Day", + "2036-05-08": "Prophet's Birthday (estimated)", + "2036-05-24": "Independence Day", + "2036-06-20": "Martyrs' Day", + "2036-09-01": "Revolution Day", + "2036-09-11": "Ethiopian New Year", + "2036-09-27": "Finding of the True Cross", + "2036-11-19": "Eid al-Fitr (estimated)", + "2037-01-01": "New Year's Day", + "2037-01-07": "Orthodox Christmas", + "2037-01-19": "Epiphany", + "2037-01-26": "Eid al-Adha (estimated)", + "2037-02-10": "Fenkil Day", + "2037-03-08": "Women's Day", + "2037-04-03": "Good Friday", + "2037-04-05": "Orthodox Easter", + "2037-04-28": "Prophet's Birthday (estimated)", + "2037-05-01": "International Workers' Day", + "2037-05-24": "Independence Day", + "2037-06-20": "Martyrs' Day", + "2037-09-01": "Revolution Day", + "2037-09-11": "Ethiopian New Year", + "2037-09-27": "Finding of the True Cross", + "2037-11-08": "Eid al-Fitr (estimated)", + "2038-01-01": "New Year's Day", + "2038-01-07": "Orthodox Christmas", + "2038-01-16": "Eid al-Adha (estimated)", + "2038-01-19": "Epiphany", + "2038-02-10": "Fenkil Day", + "2038-03-08": "Women's Day", + "2038-04-17": "Prophet's Birthday (estimated)", + "2038-04-23": "Good Friday", + "2038-04-25": "Orthodox Easter", + "2038-05-01": "International Workers' Day", + "2038-05-24": "Independence Day", + "2038-06-20": "Martyrs' Day", + "2038-09-01": "Revolution Day", + "2038-09-11": "Ethiopian New Year", + "2038-09-27": "Finding of the True Cross", + "2038-10-29": "Eid al-Fitr (estimated)", + "2039-01-01": "New Year's Day", + "2039-01-05": "Eid al-Adha (estimated)", + "2039-01-07": "Orthodox Christmas", + "2039-01-19": "Epiphany", + "2039-02-10": "Fenkil Day", + "2039-03-08": "Women's Day", + "2039-04-06": "Prophet's Birthday (estimated)", + "2039-04-15": "Good Friday", + "2039-04-17": "Orthodox Easter", + "2039-05-01": "International Workers' Day", + "2039-05-24": "Independence Day", + "2039-06-20": "Martyrs' Day", + "2039-09-01": "Revolution Day", + "2039-09-12": "Ethiopian New Year", + "2039-09-28": "Finding of the True Cross", + "2039-10-19": "Eid al-Fitr (estimated)", + "2039-12-26": "Eid al-Adha (estimated)", + "2040-01-01": "New Year's Day", + "2040-01-07": "Orthodox Christmas", + "2040-01-20": "Epiphany", + "2040-02-10": "Fenkil Day", + "2040-03-08": "Women's Day", + "2040-03-25": "Prophet's Birthday (estimated)", + "2040-05-01": "International Workers' Day", + "2040-05-04": "Good Friday", + "2040-05-06": "Orthodox Easter", + "2040-05-24": "Independence Day", + "2040-06-20": "Martyrs' Day", + "2040-09-01": "Revolution Day", + "2040-09-11": "Ethiopian New Year", + "2040-09-27": "Finding of the True Cross", + "2040-10-07": "Eid al-Fitr (estimated)", + "2040-12-14": "Eid al-Adha (estimated)", + "2041-01-01": "New Year's Day", + "2041-01-07": "Orthodox Christmas", + "2041-01-19": "Epiphany", + "2041-02-10": "Fenkil Day", + "2041-03-08": "Women's Day", + "2041-03-15": "Prophet's Birthday (estimated)", + "2041-04-19": "Good Friday", + "2041-04-21": "Orthodox Easter", + "2041-05-01": "International Workers' Day", + "2041-05-24": "Independence Day", + "2041-06-20": "Martyrs' Day", + "2041-09-01": "Revolution Day", + "2041-09-11": "Ethiopian New Year", + "2041-09-26": "Eid al-Fitr (estimated)", + "2041-09-27": "Finding of the True Cross", + "2041-12-04": "Eid al-Adha (estimated)", + "2042-01-01": "New Year's Day", + "2042-01-07": "Orthodox Christmas", + "2042-01-19": "Epiphany", + "2042-02-10": "Fenkil Day", + "2042-03-04": "Prophet's Birthday (estimated)", + "2042-03-08": "Women's Day", + "2042-04-11": "Good Friday", + "2042-04-13": "Orthodox Easter", + "2042-05-01": "International Workers' Day", + "2042-05-24": "Independence Day", + "2042-06-20": "Martyrs' Day", + "2042-09-01": "Revolution Day", + "2042-09-11": "Ethiopian New Year", + "2042-09-15": "Eid al-Fitr (estimated)", + "2042-09-27": "Finding of the True Cross", + "2042-11-23": "Eid al-Adha (estimated)", + "2043-01-01": "New Year's Day", + "2043-01-07": "Orthodox Christmas", + "2043-01-19": "Epiphany", + "2043-02-10": "Fenkil Day", + "2043-02-22": "Prophet's Birthday (estimated)", + "2043-03-08": "Women's Day", + "2043-05-01": "Good Friday; International Workers' Day", + "2043-05-03": "Orthodox Easter", + "2043-05-24": "Independence Day", + "2043-06-20": "Martyrs' Day", + "2043-09-01": "Revolution Day", + "2043-09-04": "Eid al-Fitr (estimated)", + "2043-09-12": "Ethiopian New Year", + "2043-09-28": "Finding of the True Cross", + "2043-11-12": "Eid al-Adha (estimated)", + "2044-01-01": "New Year's Day", + "2044-01-07": "Orthodox Christmas", + "2044-01-20": "Epiphany", + "2044-02-10": "Fenkil Day", + "2044-02-11": "Prophet's Birthday (estimated)", + "2044-03-08": "Women's Day", + "2044-04-22": "Good Friday", + "2044-04-24": "Orthodox Easter", + "2044-05-01": "International Workers' Day", + "2044-05-24": "Independence Day", + "2044-06-20": "Martyrs' Day", + "2044-08-24": "Eid al-Fitr (estimated)", + "2044-09-01": "Revolution Day", + "2044-09-11": "Ethiopian New Year", + "2044-09-27": "Finding of the True Cross", + "2044-10-31": "Eid al-Adha (estimated)", + "2045-01-01": "New Year's Day", + "2045-01-07": "Orthodox Christmas", + "2045-01-19": "Epiphany", + "2045-01-30": "Prophet's Birthday (estimated)", + "2045-02-10": "Fenkil Day", + "2045-03-08": "Women's Day", + "2045-04-07": "Good Friday", + "2045-04-09": "Orthodox Easter", + "2045-05-01": "International Workers' Day", + "2045-05-24": "Independence Day", + "2045-06-20": "Martyrs' Day", + "2045-08-14": "Eid al-Fitr (estimated)", + "2045-09-01": "Revolution Day", + "2045-09-11": "Ethiopian New Year", + "2045-09-27": "Finding of the True Cross", + "2045-10-21": "Eid al-Adha (estimated)", + "2046-01-01": "New Year's Day", + "2046-01-07": "Orthodox Christmas", + "2046-01-19": "Epiphany; Prophet's Birthday (estimated)", + "2046-02-10": "Fenkil Day", + "2046-03-08": "Women's Day", + "2046-04-27": "Good Friday", + "2046-04-29": "Orthodox Easter", + "2046-05-01": "International Workers' Day", + "2046-05-24": "Independence Day", + "2046-06-20": "Martyrs' Day", + "2046-08-03": "Eid al-Fitr (estimated)", + "2046-09-01": "Revolution Day", + "2046-09-11": "Ethiopian New Year", + "2046-09-27": "Finding of the True Cross", + "2046-10-10": "Eid al-Adha (estimated)", + "2047-01-01": "New Year's Day", + "2047-01-07": "Orthodox Christmas", + "2047-01-08": "Prophet's Birthday (estimated)", + "2047-01-19": "Epiphany", + "2047-02-10": "Fenkil Day", + "2047-03-08": "Women's Day", + "2047-04-19": "Good Friday", + "2047-04-21": "Orthodox Easter", + "2047-05-01": "International Workers' Day", + "2047-05-24": "Independence Day", + "2047-06-20": "Martyrs' Day", + "2047-07-24": "Eid al-Fitr (estimated)", + "2047-09-01": "Revolution Day", + "2047-09-12": "Ethiopian New Year", + "2047-09-28": "Finding of the True Cross", + "2047-09-30": "Eid al-Adha (estimated)", + "2047-12-29": "Prophet's Birthday (estimated)", + "2048-01-01": "New Year's Day", + "2048-01-07": "Orthodox Christmas", + "2048-01-20": "Epiphany", + "2048-02-10": "Fenkil Day", + "2048-03-08": "Women's Day", + "2048-04-03": "Good Friday", + "2048-04-05": "Orthodox Easter", + "2048-05-01": "International Workers' Day", + "2048-05-24": "Independence Day", + "2048-06-20": "Martyrs' Day", + "2048-07-12": "Eid al-Fitr (estimated)", + "2048-09-01": "Revolution Day", + "2048-09-11": "Ethiopian New Year", + "2048-09-19": "Eid al-Adha (estimated)", + "2048-09-27": "Finding of the True Cross", + "2048-12-18": "Prophet's Birthday (estimated)", + "2049-01-01": "New Year's Day", + "2049-01-07": "Orthodox Christmas", + "2049-01-19": "Epiphany", + "2049-02-10": "Fenkil Day", + "2049-03-08": "Women's Day", + "2049-04-23": "Good Friday", + "2049-04-25": "Orthodox Easter", + "2049-05-01": "International Workers' Day", + "2049-05-24": "Independence Day", + "2049-06-20": "Martyrs' Day", + "2049-07-01": "Eid al-Fitr (estimated)", + "2049-09-01": "Revolution Day", + "2049-09-08": "Eid al-Adha (estimated)", + "2049-09-11": "Ethiopian New Year", + "2049-09-27": "Finding of the True Cross", + "2049-12-07": "Prophet's Birthday (estimated)", + "2050-01-01": "New Year's Day", + "2050-01-07": "Orthodox Christmas", + "2050-01-19": "Epiphany", + "2050-02-10": "Fenkil Day", + "2050-03-08": "Women's Day", + "2050-04-15": "Good Friday", + "2050-04-17": "Orthodox Easter", + "2050-05-01": "International Workers' Day", + "2050-05-24": "Independence Day", + "2050-06-20": "Eid al-Fitr (estimated); Martyrs' Day", + "2050-08-28": "Eid al-Adha (estimated)", + "2050-09-01": "Revolution Day", + "2050-09-11": "Ethiopian New Year", + "2050-09-27": "Finding of the True Cross", + "2050-11-26": "Prophet's Birthday (estimated)" +} diff --git a/tests/countries/test_eritrea.py b/tests/countries/test_eritrea.py new file mode 100644 index 0000000000..3fe823c5d8 --- /dev/null +++ b/tests/countries/test_eritrea.py @@ -0,0 +1,178 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from unittest import TestCase + +from holidays.constants import GOVERNMENT +from holidays.countries.eritrea import Eritrea, ER, ERI +from tests.common import CommonCountryTests + + +class TestEritrea(CommonCountryTests, TestCase): + @classmethod + def setUpClass(cls): + years = range(1994, 2050) + super().setUpClass(Eritrea, years=years) + cls.government_holidays = Eritrea(categories=GOVERNMENT, years=years) + cls.no_estimated_holidays = Eritrea(years=years, islamic_show_estimated=False) + + def test_country_aliases(self): + self.assertAliases(Eritrea, ER, ERI) + + def test_no_holidays(self): + self.assertNoHolidays(Eritrea(categories=Eritrea.supported_categories, years=1993)) + + def test_new_years_day(self): + self.assertHolidayName("New Year's Day", (f"{year}-01-01" for year in range(1994, 2050))) + + def test_orthodox_christmas(self): + self.assertHolidayName( + "Orthodox Christmas", (f"{year}-01-07" for year in range(1994, 2050)) + ) + + def test_epiphany(self): + self.assertHolidayName( + "Epiphany", + (f"{year}-01-19" for year in range(1994, 2050) if year % 4 != 0), + (f"{year}-01-20" for year in range(1994, 2050) if year % 4 == 0), + ) + + def test_womens_day(self): + self.assertHolidayName("Women's Day", (f"{year}-03-08" for year in range(1994, 2050))) + + def test_good_friday(self): + name = "Good Friday" + self.assertHolidayName( + name, + "2020-04-17", + "2021-04-30", + "2022-04-22", + "2023-04-14", + "2024-05-03", + "2025-04-18", + ) + self.assertHolidayName(name, range(1994, 2050)) + + def test_orthodox_easter(self): + name = "Orthodox Easter" + self.assertHolidayName( + name, + "2020-04-19", + "2021-05-02", + "2022-04-24", + "2023-04-16", + "2024-05-05", + "2025-04-20", + ) + self.assertHolidayName(name, range(1994, 2050)) + + def test_international_workers_day(self): + self.assertHolidayName( + "International Workers' Day", (f"{year}-05-01" for year in range(1994, 2050)) + ) + + def test_independence_day(self): + self.assertHolidayName("Independence Day", (f"{year}-05-24" for year in range(1994, 2050))) + + def test_martyrs_day(self): + self.assertHolidayName("Martyrs' Day", (f"{year}-06-20" for year in range(1994, 2050))) + + def test_revolution_day(self): + self.assertHolidayName("Revolution Day", (f"{year}-09-01" for year in range(1994, 2050))) + + def test_ethiopian_new_year(self): + self.assertHolidayName( + "Ethiopian New Year", + (f"{year}-09-11" for year in range(1994, 2050) if year % 4 != 3), + (f"{year}-09-12" for year in range(1994, 2050) if year % 4 == 3), + ) + + def test_finding_of_the_true_cross(self): + self.assertHolidayName( + "Finding of the True Cross", + (f"{year}-09-27" for year in range(1994, 2050) if year % 4 != 3), + (f"{year}-09-28" for year in range(1994, 2050) if year % 4 == 3), + ) + + def test_prophets_birthday(self): + name = "Prophet's Birthday" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-10-29", + "2021-10-18", + "2022-10-08", + "2023-09-27", + "2024-09-15", + "2025-09-04", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1994, 2050)) + + def test_eid_al_fitr(self): + name = "Eid al-Fitr" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-05-24", + "2021-05-13", + "2022-05-02", + "2023-04-21", + "2024-04-10", + "2025-03-30", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1994, 2050)) + + def test_eid_al_adha(self): + name = "Eid al-Adha" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-07-31", + "2021-07-20", + "2022-07-09", + "2023-06-28", + "2024-06-16", + "2025-06-06", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1994, 2050)) + + def test_fenkil_day(self): + name = "Fenkil Day" + self.assertNoHolidayName(name) + self.assertHolidayName( + name, self.government_holidays, (f"{year}-02-10" for year in range(1994, 2050)) + ) + + def test_2020(self): + self.assertHolidays( + Eritrea(years=2020), + ("2020-01-01", "New Year's Day"), + ("2020-01-07", "Orthodox Christmas"), + ("2020-01-20", "Epiphany"), + ("2020-03-08", "Women's Day"), + ("2020-04-17", "Good Friday"), + ("2020-04-19", "Orthodox Easter"), + ("2020-05-01", "International Workers' Day"), + ("2020-05-24", "Eid al-Fitr (estimated); Independence Day"), + ("2020-06-20", "Martyrs' Day"), + ("2020-07-31", "Eid al-Adha (estimated)"), + ("2020-09-01", "Revolution Day"), + ("2020-09-11", "Ethiopian New Year"), + ("2020-09-27", "Finding of the True Cross"), + ("2020-10-29", "Prophet's Birthday (estimated)"), + ) + + def test_2020_government(self): + self.assertHolidays( + Eritrea(categories=GOVERNMENT, years=2020), + ("2020-02-10", "Fenkil Day"), + ) From 5079f5d294039b3888eb9f200255c3c2dce04cc4 Mon Sep 17 00:00:00 2001 From: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com> Date: Fri, 22 Aug 2025 22:34:07 +0700 Subject: [PATCH 18/48] Update Burundi holidays, add l10n support (#2843) Signed-off-by: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com> Co-authored-by: ~Jhellico --- README.md | 2 +- holidays/countries/burundi.py | 135 ++- holidays/locale/en_US/LC_MESSAGES/BI.po | 99 ++ holidays/locale/fr_BI/LC_MESSAGES/BI.po | 99 ++ snapshots/countries/BI_COMMON.json | 1147 +++++++++++------------ tests/countries/test_burundi.py | 360 ++++--- 6 files changed, 1116 insertions(+), 726 deletions(-) create mode 100644 holidays/locale/en_US/LC_MESSAGES/BI.po create mode 100644 holidays/locale/fr_BI/LC_MESSAGES/BI.po diff --git a/README.md b/README.md index f48a3964c0..074b8038eb 100644 --- a/README.md +++ b/README.md @@ -388,7 +388,7 @@ any) in brackets, available languages and additional holiday categories. All cou Burundi BI - +en_US, fr_BI diff --git a/holidays/countries/burundi.py b/holidays/countries/burundi.py index 1093b2583a..50f4bcf7e3 100644 --- a/holidays/countries/burundi.py +++ b/holidays/countries/burundi.py @@ -10,6 +10,10 @@ # Website: https://github.com/vacanza/holidays # License: MIT (see LICENSE file) +from gettext import gettext as tr + +from holidays.calendars import _CustomIslamicHolidays +from holidays.calendars.gregorian import JUN, JUL, SEP, OCT from holidays.groups import ChristianHolidays, IslamicHolidays, InternationalHolidays from holidays.observed_holiday_base import ObservedHolidayBase, SUN_TO_NEXT_MON @@ -18,16 +22,25 @@ class Burundi(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Isl """Burundi holidays. References: - * + * [Décret n° 100/150 du 7 Juin 2021](https://web.archive.org/web/20240514031141/https://www.presidence.gov.bi/wp-content/uploads/2021/06/Liste-et-regime-des-jours-feries.pdf) + * [Republic of Burundi's Ministry of Foreign Affairs Public Holidays List](https://web.archive.org/web/20250820080112/https://www.mae.gov.bi/en/official-holidays/) + * - Note that holidays falling on a sunday maybe observed on the following Monday. - This depends on formal announcements by the government, which only happens close - to the date of the holiday. + When it appears inappropriate for a public holiday listed in Article 1 to be observed because + it coincides with a Sunday, it shall be postponed to the following working day, which shall + accordingly be considered a public holiday and observed as such. """ country = "BI" - observed_label = "%s (observed)" + # %s (estimated). + estimated_label = tr("%s (estimé)") + default_language = "fr_BI" + # %s (observed, estimated). + observed_estimated_label = tr("%s (observé, estimé)") + # %s (observed). + observed_label = tr("%s (observé)") start_year = 1962 + supported_languages = ("en_US", "fr_BI") def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): """ @@ -38,58 +51,82 @@ def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): """ ChristianHolidays.__init__(self) InternationalHolidays.__init__(self) - IslamicHolidays.__init__(self, show_estimated=islamic_show_estimated) + IslamicHolidays.__init__( + self, cls=BurundiIslamicHolidays, show_estimated=islamic_show_estimated + ) kwargs.setdefault("observed_rule", SUN_TO_NEXT_MON) super().__init__(*args, **kwargs) def _populate_public_holidays(self): - # New Year's Day - self._add_observed(self._add_new_years_day("New Year's Day")) + dts_observed = set() + + # New Year's Day. + dts_observed.add(self._add_new_years_day(tr("Jour de l'an"))) - # Unity Day if self._year >= 1992: - self._add_observed(self._add_holiday_feb_5("Unity Day")) + # Unity Day. + dts_observed.add(self._add_holiday_feb_5(tr("Fête de l'Unité"))) - # President Ntaryamira Day if self._year >= 1995: - self._add_observed(self._add_holiday_apr_6("President Ntaryamira Day")) + dts_observed.add( + self._add_holiday_apr_6( + # Commemoration of the Assassination of President Cyprien Ntaryamira. + tr("Commémoration de l'Assassinat du Président Cyprien Ntaryamira") + ) + ) - # Labour Day - self._add_observed(self._add_labor_day("Labour Day")) + # International Labor Day. + dts_observed.add(self._add_labor_day(tr("Fête Internationale du Travail"))) - # Ascension Day - self._add_ascension_thursday("Ascension Day") + # Ascension Day. + self._add_ascension_thursday(tr("Jour de l'Ascension")) - # President Nkurunziza Day if self._year >= 2022: - self._add_observed(self._add_holiday_jun_8("President Nkurunziza Day")) - - # Independence Day - self._add_observed(self._add_holiday_jul_1("Independence Day")) - - # Assumption Day - self._add_observed(self._add_assumption_of_mary_day("Assumption Day")) - - # Prince Louis Rwagasore Day - self._add_observed(self._add_holiday_oct_13("Prince Louis Rwagasore Day")) - - # President Ndadaye's Day + dts_observed.add( + self._add_holiday_jun_8( + # National Day of Patriotism and Commemoration of the Death of + # President Pierre Nkurunziza. + tr( + "Journée Nationale du Patriotisme et Commémoration de la Mort " + "du Président Pierre Nkurunziza" + ) + ) + ) + + # Independence Day. + dts_observed.add(self._add_holiday_jul_1(tr("Anniversaire de l'Indépendance"))) + + # Assumption Day. + dts_observed.add(self._add_assumption_of_mary_day(tr("Assomption"))) + + dts_observed.add( + self._add_holiday_oct_13( + # Commemoration of the Assassination of National Hero, Prince Louis Rwagasore. + tr("Commémoration de l'Assassinat du Héros National, le Prince Louis Rwagasore") + ) + ) if self._year >= 1994: - self._add_observed(self._add_holiday_oct_21("President Ndadaye's Day")) + dts_observed.add( + self._add_holiday_oct_21( + # Commemoration of the Assassination of President Melchior Ndadaye. + tr("Commémoration de l'Assassinat du Président Melchior Ndadaye") + ) + ) + + # All Saints' Day. + dts_observed.add(self._add_all_saints_day(tr("Toussaint"))) - # All Saints' Day - self._add_observed(self._add_all_saints_day("All Saints' Day")) + # Christmas Day. + dts_observed.add(self._add_christmas_day(tr("Noël"))) - # Christmas Day - self._add_observed(self._add_christmas_day("Christmas Day")) + # Eid al-Fitr. + dts_observed.update(self._add_eid_al_fitr_day(tr("Aid-El-Fithr"))) - # Eid ul Fitr - for dt in self._add_eid_al_fitr_day("Eid ul Fitr"): - self._add_observed(dt) + # Eid al-Adha. + dts_observed.update(self._add_eid_al_adha_day(tr("Aid-El-Adha"))) - # Eid al Adha - for dt in self._add_eid_al_adha_day("Eid al Adha"): - self._add_observed(dt) + if self.observed: + self._populate_observed(dts_observed) class BI(Burundi): @@ -98,3 +135,21 @@ class BI(Burundi): class BDI(Burundi): pass + + +class BurundiIslamicHolidays(_CustomIslamicHolidays): + EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2014, 2025) + EID_AL_ADHA_DATES = { + 2014: (OCT, 5), + 2015: (SEP, 24), + 2016: (SEP, 13), + 2017: (SEP, 2), + } + + EID_AL_FITR_DATES_CONFIRMED_YEARS = (2014, 2025) + EID_AL_FITR_DATES = { + 2014: (JUL, 29), + 2015: (JUL, 18), + 2016: (JUL, 7), + 2017: (JUN, 26), + } diff --git a/holidays/locale/en_US/LC_MESSAGES/BI.po b/holidays/locale/en_US/LC_MESSAGES/BI.po new file mode 100644 index 0000000000..515537e95b --- /dev/null +++ b/holidays/locale/en_US/LC_MESSAGES/BI.po @@ -0,0 +1,99 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# Burundi holidays en_US localization. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.80\n" +"POT-Creation-Date: 2025-08-20 16:45+0700\n" +"PO-Revision-Date: 2025-08-21 12:13+0700\n" +"Last-Translator: PPsyrius \n" +"Language-Team: Holidays Localization Team\n" +"Language: en_US\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Generator: Poedit 3.7\n" +"X-Source-Language: fr_BI\n" + +#. %s (estimated). +#, c-format +msgid "%s (estimé)" +msgstr "%s (estimated)" + +#. %s (observed, estimated). +#, c-format +msgid "%s (observé, estimé)" +msgstr "%s (observed, estimated)" + +#. %s (observed). +#, c-format +msgid "%s (observé)" +msgstr "%s (observed)" + +#. New Year's Day. +msgid "Jour de l'an" +msgstr "New Year's Day" + +#. Unity Day. +msgid "Fête de l'Unité" +msgstr "Unity Day" + +#. Commemoration of the Assassination of President Cyprien Ntaryamira. +msgid "Commémoration de l'Assassinat du Président Cyprien Ntaryamira" +msgstr "Commemoration of the Assassination of President Cyprien Ntaryamira" + +#. International Labor Day. +msgid "Fête Internationale du Travail" +msgstr "International Labor Day" + +#. Ascension Day. +msgid "Jour de l'Ascension" +msgstr "Ascension Day" + +#. National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza. +msgid "Journée Nationale du Patriotisme et Commémoration de la Mort du Président Pierre Nkurunziza" +msgstr "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza" + +#. Independence Day. +msgid "Anniversaire de l'Indépendance" +msgstr "Independence Day" + +#. Assumption Day. +msgid "Assomption" +msgstr "Assumption Day" + +#. Commemoration of the Assassination of National Hero, Prince Louis Rwagasore. +msgid "Commémoration de l'Assassinat du Héros National, le Prince Louis Rwagasore" +msgstr "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore" + +#. Commemoration of the Assassination of President Melchior Ndadaye. +msgid "Commémoration de l'Assassinat du Président Melchior Ndadaye" +msgstr "Commemoration of the Assassination of President Melchior Ndadaye" + +#. All Saints' Day. +msgid "Toussaint" +msgstr "All Saints' Day" + +#. Christmas Day. +msgid "Noël" +msgstr "Christmas Day" + +#. Eid al-Fitr. +msgid "Aid-El-Fithr" +msgstr "Eid al-Fitr" + +#. Eid al-Adha. +msgid "Aid-El-Adha" +msgstr "Eid al-Adha" diff --git a/holidays/locale/fr_BI/LC_MESSAGES/BI.po b/holidays/locale/fr_BI/LC_MESSAGES/BI.po new file mode 100644 index 0000000000..a061b1d785 --- /dev/null +++ b/holidays/locale/fr_BI/LC_MESSAGES/BI.po @@ -0,0 +1,99 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# Burundi holidays. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.80\n" +"POT-Creation-Date: 2025-08-20 16:45+0700\n" +"PO-Revision-Date: 2025-08-21 12:13+0700\n" +"Last-Translator: PPsyrius \n" +"Language-Team: Holidays Localization Team\n" +"Language: fr_BI\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Generator: Poedit 3.7\n" +"X-Source-Language: fr_BI\n" + +#. %s (estimated). +#, c-format +msgid "%s (estimé)" +msgstr "" + +#. %s (observed, estimated). +#, c-format +msgid "%s (observé, estimé)" +msgstr "" + +#. %s (observed). +#, c-format +msgid "%s (observé)" +msgstr "" + +#. New Year's Day. +msgid "Jour de l'an" +msgstr "" + +#. Unity Day. +msgid "Fête de l'Unité" +msgstr "" + +#. Commemoration of the Assassination of President Cyprien Ntaryamira. +msgid "Commémoration de l'Assassinat du Président Cyprien Ntaryamira" +msgstr "" + +#. International Labor Day. +msgid "Fête Internationale du Travail" +msgstr "" + +#. Ascension Day. +msgid "Jour de l'Ascension" +msgstr "" + +#. National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza. +msgid "Journée Nationale du Patriotisme et Commémoration de la Mort du Président Pierre Nkurunziza" +msgstr "" + +#. Independence Day. +msgid "Anniversaire de l'Indépendance" +msgstr "" + +#. Assumption Day. +msgid "Assomption" +msgstr "" + +#. Commemoration of the Assassination of National Hero, Prince Louis Rwagasore. +msgid "Commémoration de l'Assassinat du Héros National, le Prince Louis Rwagasore" +msgstr "" + +#. Commemoration of the Assassination of President Melchior Ndadaye. +msgid "Commémoration de l'Assassinat du Président Melchior Ndadaye" +msgstr "" + +#. All Saints' Day. +msgid "Toussaint" +msgstr "" + +#. Christmas Day. +msgid "Noël" +msgstr "" + +#. Eid al-Fitr. +msgid "Aid-El-Fithr" +msgstr "" + +#. Eid al-Adha. +msgid "Aid-El-Adha" +msgstr "" diff --git a/snapshots/countries/BI_COMMON.json b/snapshots/countries/BI_COMMON.json index 44a0d677e4..7e587aa659 100644 --- a/snapshots/countries/BI_COMMON.json +++ b/snapshots/countries/BI_COMMON.json @@ -1,374 +1,374 @@ { "1962-01-01": "New Year's Day", - "1962-03-07": "Eid ul Fitr (estimated)", - "1962-05-01": "Labour Day", - "1962-05-14": "Eid al Adha (estimated)", + "1962-03-07": "Eid al-Fitr (estimated)", + "1962-05-01": "International Labor Day", + "1962-05-14": "Eid al-Adha (estimated)", "1962-05-31": "Ascension Day", "1962-07-01": "Independence Day", "1962-07-02": "Independence Day (observed)", "1962-08-15": "Assumption Day", - "1962-10-13": "Prince Louis Rwagasore Day", + "1962-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1962-11-01": "All Saints' Day", "1962-12-25": "Christmas Day", "1963-01-01": "New Year's Day", - "1963-02-24": "Eid ul Fitr (estimated)", - "1963-02-25": "Eid ul Fitr (estimated) (observed)", - "1963-05-01": "Labour Day", - "1963-05-03": "Eid al Adha (estimated)", + "1963-02-24": "Eid al-Fitr (estimated)", + "1963-02-25": "Eid al-Fitr (observed, estimated)", + "1963-05-01": "International Labor Day", + "1963-05-03": "Eid al-Adha (estimated)", "1963-05-23": "Ascension Day", "1963-07-01": "Independence Day", "1963-08-15": "Assumption Day", - "1963-10-13": "Prince Louis Rwagasore Day", - "1963-10-14": "Prince Louis Rwagasore Day (observed)", + "1963-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1963-10-14": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore (observed)", "1963-11-01": "All Saints' Day", "1963-12-25": "Christmas Day", "1964-01-01": "New Year's Day", - "1964-02-14": "Eid ul Fitr (estimated)", - "1964-04-22": "Eid al Adha (estimated)", - "1964-05-01": "Labour Day", + "1964-02-14": "Eid al-Fitr (estimated)", + "1964-04-22": "Eid al-Adha (estimated)", + "1964-05-01": "International Labor Day", "1964-05-07": "Ascension Day", "1964-07-01": "Independence Day", "1964-08-15": "Assumption Day", - "1964-10-13": "Prince Louis Rwagasore Day", + "1964-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1964-11-01": "All Saints' Day", "1964-11-02": "All Saints' Day (observed)", "1964-12-25": "Christmas Day", "1965-01-01": "New Year's Day", - "1965-02-02": "Eid ul Fitr (estimated)", - "1965-04-11": "Eid al Adha (estimated)", - "1965-04-12": "Eid al Adha (estimated) (observed)", - "1965-05-01": "Labour Day", + "1965-02-02": "Eid al-Fitr (estimated)", + "1965-04-11": "Eid al-Adha (estimated)", + "1965-04-12": "Eid al-Adha (observed, estimated)", + "1965-05-01": "International Labor Day", "1965-05-27": "Ascension Day", "1965-07-01": "Independence Day", "1965-08-15": "Assumption Day", "1965-08-16": "Assumption Day (observed)", - "1965-10-13": "Prince Louis Rwagasore Day", + "1965-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1965-11-01": "All Saints' Day", "1965-12-25": "Christmas Day", "1966-01-01": "New Year's Day", - "1966-01-22": "Eid ul Fitr (estimated)", - "1966-04-01": "Eid al Adha (estimated)", - "1966-05-01": "Labour Day", - "1966-05-02": "Labour Day (observed)", + "1966-01-22": "Eid al-Fitr (estimated)", + "1966-04-01": "Eid al-Adha (estimated)", + "1966-05-01": "International Labor Day", + "1966-05-02": "International Labor Day (observed)", "1966-05-19": "Ascension Day", "1966-07-01": "Independence Day", "1966-08-15": "Assumption Day", - "1966-10-13": "Prince Louis Rwagasore Day", + "1966-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1966-11-01": "All Saints' Day", "1966-12-25": "Christmas Day", "1966-12-26": "Christmas Day (observed)", "1967-01-01": "New Year's Day", "1967-01-02": "New Year's Day (observed)", - "1967-01-12": "Eid ul Fitr (estimated)", - "1967-03-21": "Eid al Adha (estimated)", - "1967-05-01": "Labour Day", + "1967-01-12": "Eid al-Fitr (estimated)", + "1967-03-21": "Eid al-Adha (estimated)", + "1967-05-01": "International Labor Day", "1967-05-04": "Ascension Day", "1967-07-01": "Independence Day", "1967-08-15": "Assumption Day", - "1967-10-13": "Prince Louis Rwagasore Day", + "1967-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1967-11-01": "All Saints' Day", "1967-12-25": "Christmas Day", - "1968-01-01": "Eid ul Fitr (estimated); New Year's Day", - "1968-03-09": "Eid al Adha (estimated)", - "1968-05-01": "Labour Day", + "1968-01-01": "Eid al-Fitr (estimated); New Year's Day", + "1968-03-09": "Eid al-Adha (estimated)", + "1968-05-01": "International Labor Day", "1968-05-23": "Ascension Day", "1968-07-01": "Independence Day", "1968-08-15": "Assumption Day", - "1968-10-13": "Prince Louis Rwagasore Day", - "1968-10-14": "Prince Louis Rwagasore Day (observed)", + "1968-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1968-10-14": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore (observed)", "1968-11-01": "All Saints' Day", - "1968-12-21": "Eid ul Fitr (estimated)", + "1968-12-21": "Eid al-Fitr (estimated)", "1968-12-25": "Christmas Day", "1969-01-01": "New Year's Day", - "1969-02-27": "Eid al Adha (estimated)", - "1969-05-01": "Labour Day", + "1969-02-27": "Eid al-Adha (estimated)", + "1969-05-01": "International Labor Day", "1969-05-15": "Ascension Day", "1969-07-01": "Independence Day", "1969-08-15": "Assumption Day", - "1969-10-13": "Prince Louis Rwagasore Day", + "1969-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1969-11-01": "All Saints' Day", - "1969-12-10": "Eid ul Fitr (estimated)", + "1969-12-10": "Eid al-Fitr (estimated)", "1969-12-25": "Christmas Day", "1970-01-01": "New Year's Day", - "1970-02-16": "Eid al Adha (estimated)", - "1970-05-01": "Labour Day", + "1970-02-16": "Eid al-Adha (estimated)", + "1970-05-01": "International Labor Day", "1970-05-07": "Ascension Day", "1970-07-01": "Independence Day", "1970-08-15": "Assumption Day", - "1970-10-13": "Prince Louis Rwagasore Day", + "1970-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1970-11-01": "All Saints' Day", "1970-11-02": "All Saints' Day (observed)", - "1970-11-30": "Eid ul Fitr (estimated)", + "1970-11-30": "Eid al-Fitr (estimated)", "1970-12-25": "Christmas Day", "1971-01-01": "New Year's Day", - "1971-02-06": "Eid al Adha (estimated)", - "1971-05-01": "Labour Day", + "1971-02-06": "Eid al-Adha (estimated)", + "1971-05-01": "International Labor Day", "1971-05-20": "Ascension Day", "1971-07-01": "Independence Day", "1971-08-15": "Assumption Day", "1971-08-16": "Assumption Day (observed)", - "1971-10-13": "Prince Louis Rwagasore Day", + "1971-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1971-11-01": "All Saints' Day", - "1971-11-19": "Eid ul Fitr (estimated)", + "1971-11-19": "Eid al-Fitr (estimated)", "1971-12-25": "Christmas Day", "1972-01-01": "New Year's Day", - "1972-01-26": "Eid al Adha (estimated)", - "1972-05-01": "Labour Day", + "1972-01-26": "Eid al-Adha (estimated)", + "1972-05-01": "International Labor Day", "1972-05-11": "Ascension Day", "1972-07-01": "Independence Day", "1972-08-15": "Assumption Day", - "1972-10-13": "Prince Louis Rwagasore Day", + "1972-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1972-11-01": "All Saints' Day", - "1972-11-07": "Eid ul Fitr (estimated)", + "1972-11-07": "Eid al-Fitr (estimated)", "1972-12-25": "Christmas Day", "1973-01-01": "New Year's Day", - "1973-01-14": "Eid al Adha (estimated)", - "1973-01-15": "Eid al Adha (estimated) (observed)", - "1973-05-01": "Labour Day", + "1973-01-14": "Eid al-Adha (estimated)", + "1973-01-15": "Eid al-Adha (observed, estimated)", + "1973-05-01": "International Labor Day", "1973-05-31": "Ascension Day", "1973-07-01": "Independence Day", "1973-07-02": "Independence Day (observed)", "1973-08-15": "Assumption Day", - "1973-10-13": "Prince Louis Rwagasore Day", - "1973-10-27": "Eid ul Fitr (estimated)", + "1973-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1973-10-27": "Eid al-Fitr (estimated)", "1973-11-01": "All Saints' Day", "1973-12-25": "Christmas Day", "1974-01-01": "New Year's Day", - "1974-01-03": "Eid al Adha (estimated)", - "1974-05-01": "Labour Day", + "1974-01-03": "Eid al-Adha (estimated)", + "1974-05-01": "International Labor Day", "1974-05-23": "Ascension Day", "1974-07-01": "Independence Day", "1974-08-15": "Assumption Day", - "1974-10-13": "Prince Louis Rwagasore Day", - "1974-10-14": "Prince Louis Rwagasore Day (observed)", - "1974-10-16": "Eid ul Fitr (estimated)", + "1974-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1974-10-14": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore (observed)", + "1974-10-16": "Eid al-Fitr (estimated)", "1974-11-01": "All Saints' Day", - "1974-12-24": "Eid al Adha (estimated)", + "1974-12-24": "Eid al-Adha (estimated)", "1974-12-25": "Christmas Day", "1975-01-01": "New Year's Day", - "1975-05-01": "Labour Day", + "1975-05-01": "International Labor Day", "1975-05-08": "Ascension Day", "1975-07-01": "Independence Day", "1975-08-15": "Assumption Day", - "1975-10-06": "Eid ul Fitr (estimated)", - "1975-10-13": "Prince Louis Rwagasore Day", + "1975-10-06": "Eid al-Fitr (estimated)", + "1975-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1975-11-01": "All Saints' Day", - "1975-12-13": "Eid al Adha (estimated)", + "1975-12-13": "Eid al-Adha (estimated)", "1975-12-25": "Christmas Day", "1976-01-01": "New Year's Day", - "1976-05-01": "Labour Day", + "1976-05-01": "International Labor Day", "1976-05-27": "Ascension Day", "1976-07-01": "Independence Day", "1976-08-15": "Assumption Day", "1976-08-16": "Assumption Day (observed)", - "1976-09-24": "Eid ul Fitr (estimated)", - "1976-10-13": "Prince Louis Rwagasore Day", + "1976-09-24": "Eid al-Fitr (estimated)", + "1976-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1976-11-01": "All Saints' Day", - "1976-12-01": "Eid al Adha (estimated)", + "1976-12-01": "Eid al-Adha (estimated)", "1976-12-25": "Christmas Day", "1977-01-01": "New Year's Day", - "1977-05-01": "Labour Day", - "1977-05-02": "Labour Day (observed)", + "1977-05-01": "International Labor Day", + "1977-05-02": "International Labor Day (observed)", "1977-05-19": "Ascension Day", "1977-07-01": "Independence Day", "1977-08-15": "Assumption Day", - "1977-09-14": "Eid ul Fitr (estimated)", - "1977-10-13": "Prince Louis Rwagasore Day", + "1977-09-14": "Eid al-Fitr (estimated)", + "1977-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1977-11-01": "All Saints' Day", - "1977-11-21": "Eid al Adha (estimated)", + "1977-11-21": "Eid al-Adha (estimated)", "1977-12-25": "Christmas Day", "1977-12-26": "Christmas Day (observed)", "1978-01-01": "New Year's Day", "1978-01-02": "New Year's Day (observed)", - "1978-05-01": "Labour Day", + "1978-05-01": "International Labor Day", "1978-05-04": "Ascension Day", "1978-07-01": "Independence Day", "1978-08-15": "Assumption Day", - "1978-09-03": "Eid ul Fitr (estimated)", - "1978-09-04": "Eid ul Fitr (estimated) (observed)", - "1978-10-13": "Prince Louis Rwagasore Day", + "1978-09-03": "Eid al-Fitr (estimated)", + "1978-09-04": "Eid al-Fitr (observed, estimated)", + "1978-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1978-11-01": "All Saints' Day", - "1978-11-10": "Eid al Adha (estimated)", + "1978-11-10": "Eid al-Adha (estimated)", "1978-12-25": "Christmas Day", "1979-01-01": "New Year's Day", - "1979-05-01": "Labour Day", + "1979-05-01": "International Labor Day", "1979-05-24": "Ascension Day", "1979-07-01": "Independence Day", "1979-07-02": "Independence Day (observed)", "1979-08-15": "Assumption Day", - "1979-08-23": "Eid ul Fitr (estimated)", - "1979-10-13": "Prince Louis Rwagasore Day", - "1979-10-31": "Eid al Adha (estimated)", + "1979-08-23": "Eid al-Fitr (estimated)", + "1979-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1979-10-31": "Eid al-Adha (estimated)", "1979-11-01": "All Saints' Day", "1979-12-25": "Christmas Day", "1980-01-01": "New Year's Day", - "1980-05-01": "Labour Day", + "1980-05-01": "International Labor Day", "1980-05-15": "Ascension Day", "1980-07-01": "Independence Day", - "1980-08-12": "Eid ul Fitr (estimated)", + "1980-08-12": "Eid al-Fitr (estimated)", "1980-08-15": "Assumption Day", - "1980-10-13": "Prince Louis Rwagasore Day", - "1980-10-19": "Eid al Adha (estimated)", - "1980-10-20": "Eid al Adha (estimated) (observed)", + "1980-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1980-10-19": "Eid al-Adha (estimated)", + "1980-10-20": "Eid al-Adha (observed, estimated)", "1980-11-01": "All Saints' Day", "1980-12-25": "Christmas Day", "1981-01-01": "New Year's Day", - "1981-05-01": "Labour Day", + "1981-05-01": "International Labor Day", "1981-05-28": "Ascension Day", "1981-07-01": "Independence Day", - "1981-08-01": "Eid ul Fitr (estimated)", + "1981-08-01": "Eid al-Fitr (estimated)", "1981-08-15": "Assumption Day", - "1981-10-08": "Eid al Adha (estimated)", - "1981-10-13": "Prince Louis Rwagasore Day", + "1981-10-08": "Eid al-Adha (estimated)", + "1981-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1981-11-01": "All Saints' Day", "1981-11-02": "All Saints' Day (observed)", "1981-12-25": "Christmas Day", "1982-01-01": "New Year's Day", - "1982-05-01": "Labour Day", + "1982-05-01": "International Labor Day", "1982-05-20": "Ascension Day", "1982-07-01": "Independence Day", - "1982-07-21": "Eid ul Fitr (estimated)", + "1982-07-21": "Eid al-Fitr (estimated)", "1982-08-15": "Assumption Day", "1982-08-16": "Assumption Day (observed)", - "1982-09-27": "Eid al Adha (estimated)", - "1982-10-13": "Prince Louis Rwagasore Day", + "1982-09-27": "Eid al-Adha (estimated)", + "1982-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1982-11-01": "All Saints' Day", "1982-12-25": "Christmas Day", "1983-01-01": "New Year's Day", - "1983-05-01": "Labour Day", - "1983-05-02": "Labour Day (observed)", + "1983-05-01": "International Labor Day", + "1983-05-02": "International Labor Day (observed)", "1983-05-12": "Ascension Day", "1983-07-01": "Independence Day", - "1983-07-11": "Eid ul Fitr (estimated)", + "1983-07-11": "Eid al-Fitr (estimated)", "1983-08-15": "Assumption Day", - "1983-09-17": "Eid al Adha (estimated)", - "1983-10-13": "Prince Louis Rwagasore Day", + "1983-09-17": "Eid al-Adha (estimated)", + "1983-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1983-11-01": "All Saints' Day", "1983-12-25": "Christmas Day", "1983-12-26": "Christmas Day (observed)", "1984-01-01": "New Year's Day", "1984-01-02": "New Year's Day (observed)", - "1984-05-01": "Labour Day", + "1984-05-01": "International Labor Day", "1984-05-31": "Ascension Day", - "1984-06-30": "Eid ul Fitr (estimated)", + "1984-06-30": "Eid al-Fitr (estimated)", "1984-07-01": "Independence Day", "1984-07-02": "Independence Day (observed)", "1984-08-15": "Assumption Day", - "1984-09-05": "Eid al Adha (estimated)", - "1984-10-13": "Prince Louis Rwagasore Day", + "1984-09-05": "Eid al-Adha (estimated)", + "1984-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1984-11-01": "All Saints' Day", "1984-12-25": "Christmas Day", "1985-01-01": "New Year's Day", - "1985-05-01": "Labour Day", + "1985-05-01": "International Labor Day", "1985-05-16": "Ascension Day", - "1985-06-19": "Eid ul Fitr (estimated)", + "1985-06-19": "Eid al-Fitr (estimated)", "1985-07-01": "Independence Day", "1985-08-15": "Assumption Day", - "1985-08-26": "Eid al Adha (estimated)", - "1985-10-13": "Prince Louis Rwagasore Day", - "1985-10-14": "Prince Louis Rwagasore Day (observed)", + "1985-08-26": "Eid al-Adha (estimated)", + "1985-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1985-10-14": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore (observed)", "1985-11-01": "All Saints' Day", "1985-12-25": "Christmas Day", "1986-01-01": "New Year's Day", - "1986-05-01": "Labour Day", + "1986-05-01": "International Labor Day", "1986-05-08": "Ascension Day", - "1986-06-08": "Eid ul Fitr (estimated)", - "1986-06-09": "Eid ul Fitr (estimated) (observed)", + "1986-06-08": "Eid al-Fitr (estimated)", + "1986-06-09": "Eid al-Fitr (observed, estimated)", "1986-07-01": "Independence Day", - "1986-08-15": "Assumption Day; Eid al Adha (estimated)", - "1986-10-13": "Prince Louis Rwagasore Day", + "1986-08-15": "Assumption Day; Eid al-Adha (estimated)", + "1986-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1986-11-01": "All Saints' Day", "1986-12-25": "Christmas Day", "1987-01-01": "New Year's Day", - "1987-05-01": "Labour Day", - "1987-05-28": "Ascension Day; Eid ul Fitr (estimated)", + "1987-05-01": "International Labor Day", + "1987-05-28": "Ascension Day; Eid al-Fitr (estimated)", "1987-07-01": "Independence Day", - "1987-08-04": "Eid al Adha (estimated)", + "1987-08-04": "Eid al-Adha (estimated)", "1987-08-15": "Assumption Day", - "1987-10-13": "Prince Louis Rwagasore Day", + "1987-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1987-11-01": "All Saints' Day", "1987-11-02": "All Saints' Day (observed)", "1987-12-25": "Christmas Day", "1988-01-01": "New Year's Day", - "1988-05-01": "Labour Day", - "1988-05-02": "Labour Day (observed)", + "1988-05-01": "International Labor Day", + "1988-05-02": "International Labor Day (observed)", "1988-05-12": "Ascension Day", - "1988-05-16": "Eid ul Fitr (estimated)", + "1988-05-16": "Eid al-Fitr (estimated)", "1988-07-01": "Independence Day", - "1988-07-23": "Eid al Adha (estimated)", + "1988-07-23": "Eid al-Adha (estimated)", "1988-08-15": "Assumption Day", - "1988-10-13": "Prince Louis Rwagasore Day", + "1988-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1988-11-01": "All Saints' Day", "1988-12-25": "Christmas Day", "1988-12-26": "Christmas Day (observed)", "1989-01-01": "New Year's Day", "1989-01-02": "New Year's Day (observed)", - "1989-05-01": "Labour Day", + "1989-05-01": "International Labor Day", "1989-05-04": "Ascension Day", - "1989-05-06": "Eid ul Fitr (estimated)", + "1989-05-06": "Eid al-Fitr (estimated)", "1989-07-01": "Independence Day", - "1989-07-13": "Eid al Adha (estimated)", + "1989-07-13": "Eid al-Adha (estimated)", "1989-08-15": "Assumption Day", - "1989-10-13": "Prince Louis Rwagasore Day", + "1989-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1989-11-01": "All Saints' Day", "1989-12-25": "Christmas Day", "1990-01-01": "New Year's Day", - "1990-04-26": "Eid ul Fitr (estimated)", - "1990-05-01": "Labour Day", + "1990-04-26": "Eid al-Fitr (estimated)", + "1990-05-01": "International Labor Day", "1990-05-24": "Ascension Day", "1990-07-01": "Independence Day", - "1990-07-02": "Eid al Adha (estimated); Independence Day (observed)", + "1990-07-02": "Eid al-Adha (estimated); Independence Day (observed)", "1990-08-15": "Assumption Day", - "1990-10-13": "Prince Louis Rwagasore Day", + "1990-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1990-11-01": "All Saints' Day", "1990-12-25": "Christmas Day", "1991-01-01": "New Year's Day", - "1991-04-15": "Eid ul Fitr (estimated)", - "1991-05-01": "Labour Day", + "1991-04-15": "Eid al-Fitr (estimated)", + "1991-05-01": "International Labor Day", "1991-05-09": "Ascension Day", - "1991-06-22": "Eid al Adha (estimated)", + "1991-06-22": "Eid al-Adha (estimated)", "1991-07-01": "Independence Day", "1991-08-15": "Assumption Day", - "1991-10-13": "Prince Louis Rwagasore Day", - "1991-10-14": "Prince Louis Rwagasore Day (observed)", + "1991-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1991-10-14": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore (observed)", "1991-11-01": "All Saints' Day", "1991-12-25": "Christmas Day", "1992-01-01": "New Year's Day", "1992-02-05": "Unity Day", - "1992-04-04": "Eid ul Fitr (estimated)", - "1992-05-01": "Labour Day", + "1992-04-04": "Eid al-Fitr (estimated)", + "1992-05-01": "International Labor Day", "1992-05-28": "Ascension Day", - "1992-06-11": "Eid al Adha (estimated)", + "1992-06-11": "Eid al-Adha (estimated)", "1992-07-01": "Independence Day", "1992-08-15": "Assumption Day", - "1992-10-13": "Prince Louis Rwagasore Day", + "1992-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1992-11-01": "All Saints' Day", "1992-11-02": "All Saints' Day (observed)", "1992-12-25": "Christmas Day", "1993-01-01": "New Year's Day", "1993-02-05": "Unity Day", - "1993-03-24": "Eid ul Fitr (estimated)", - "1993-05-01": "Labour Day", + "1993-03-24": "Eid al-Fitr (estimated)", + "1993-05-01": "International Labor Day", "1993-05-20": "Ascension Day", - "1993-05-31": "Eid al Adha (estimated)", + "1993-05-31": "Eid al-Adha (estimated)", "1993-07-01": "Independence Day", "1993-08-15": "Assumption Day", "1993-08-16": "Assumption Day (observed)", - "1993-10-13": "Prince Louis Rwagasore Day", + "1993-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", "1993-11-01": "All Saints' Day", "1993-12-25": "Christmas Day", "1994-01-01": "New Year's Day", "1994-02-05": "Unity Day", - "1994-03-13": "Eid ul Fitr (estimated)", - "1994-03-14": "Eid ul Fitr (estimated) (observed)", - "1994-05-01": "Labour Day", - "1994-05-02": "Labour Day (observed)", + "1994-03-13": "Eid al-Fitr (estimated)", + "1994-03-14": "Eid al-Fitr (observed, estimated)", + "1994-05-01": "International Labor Day", + "1994-05-02": "International Labor Day (observed)", "1994-05-12": "Ascension Day", - "1994-05-20": "Eid al Adha (estimated)", + "1994-05-20": "Eid al-Adha (estimated)", "1994-07-01": "Independence Day", "1994-08-15": "Assumption Day", - "1994-10-13": "Prince Louis Rwagasore Day", - "1994-10-21": "President Ndadaye's Day", + "1994-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1994-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "1994-11-01": "All Saints' Day", "1994-12-25": "Christmas Day", "1994-12-26": "Christmas Day (observed)", @@ -376,323 +376,323 @@ "1995-01-02": "New Year's Day (observed)", "1995-02-05": "Unity Day", "1995-02-06": "Unity Day (observed)", - "1995-03-02": "Eid ul Fitr (estimated)", - "1995-04-06": "President Ntaryamira Day", - "1995-05-01": "Labour Day", - "1995-05-09": "Eid al Adha (estimated)", + "1995-03-02": "Eid al-Fitr (estimated)", + "1995-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "1995-05-01": "International Labor Day", + "1995-05-09": "Eid al-Adha (estimated)", "1995-05-25": "Ascension Day", "1995-07-01": "Independence Day", "1995-08-15": "Assumption Day", - "1995-10-13": "Prince Louis Rwagasore Day", - "1995-10-21": "President Ndadaye's Day", + "1995-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1995-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "1995-11-01": "All Saints' Day", "1995-12-25": "Christmas Day", "1996-01-01": "New Year's Day", "1996-02-05": "Unity Day", - "1996-02-19": "Eid ul Fitr (estimated)", - "1996-04-06": "President Ntaryamira Day", - "1996-04-27": "Eid al Adha (estimated)", - "1996-05-01": "Labour Day", + "1996-02-19": "Eid al-Fitr (estimated)", + "1996-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "1996-04-27": "Eid al-Adha (estimated)", + "1996-05-01": "International Labor Day", "1996-05-16": "Ascension Day", "1996-07-01": "Independence Day", "1996-08-15": "Assumption Day", - "1996-10-13": "Prince Louis Rwagasore Day", - "1996-10-14": "Prince Louis Rwagasore Day (observed)", - "1996-10-21": "President Ndadaye's Day", + "1996-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1996-10-14": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore (observed)", + "1996-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "1996-11-01": "All Saints' Day", "1996-12-25": "Christmas Day", "1997-01-01": "New Year's Day", "1997-02-05": "Unity Day", - "1997-02-08": "Eid ul Fitr (estimated)", - "1997-04-06": "President Ntaryamira Day", - "1997-04-07": "President Ntaryamira Day (observed)", - "1997-04-17": "Eid al Adha (estimated)", - "1997-05-01": "Labour Day", + "1997-02-08": "Eid al-Fitr (estimated)", + "1997-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "1997-04-07": "Commemoration of the Assassination of President Cyprien Ntaryamira (observed)", + "1997-04-17": "Eid al-Adha (estimated)", + "1997-05-01": "International Labor Day", "1997-05-08": "Ascension Day", "1997-07-01": "Independence Day", "1997-08-15": "Assumption Day", - "1997-10-13": "Prince Louis Rwagasore Day", - "1997-10-21": "President Ndadaye's Day", + "1997-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1997-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "1997-11-01": "All Saints' Day", "1997-12-25": "Christmas Day", "1998-01-01": "New Year's Day", - "1998-01-29": "Eid ul Fitr (estimated)", + "1998-01-29": "Eid al-Fitr (estimated)", "1998-02-05": "Unity Day", - "1998-04-06": "President Ntaryamira Day", - "1998-04-07": "Eid al Adha (estimated)", - "1998-05-01": "Labour Day", + "1998-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "1998-04-07": "Eid al-Adha (estimated)", + "1998-05-01": "International Labor Day", "1998-05-21": "Ascension Day", "1998-07-01": "Independence Day", "1998-08-15": "Assumption Day", - "1998-10-13": "Prince Louis Rwagasore Day", - "1998-10-21": "President Ndadaye's Day", + "1998-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1998-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "1998-11-01": "All Saints' Day", "1998-11-02": "All Saints' Day (observed)", "1998-12-25": "Christmas Day", "1999-01-01": "New Year's Day", - "1999-01-18": "Eid ul Fitr (estimated)", + "1999-01-18": "Eid al-Fitr (estimated)", "1999-02-05": "Unity Day", - "1999-03-27": "Eid al Adha (estimated)", - "1999-04-06": "President Ntaryamira Day", - "1999-05-01": "Labour Day", + "1999-03-27": "Eid al-Adha (estimated)", + "1999-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "1999-05-01": "International Labor Day", "1999-05-13": "Ascension Day", "1999-07-01": "Independence Day", "1999-08-15": "Assumption Day", "1999-08-16": "Assumption Day (observed)", - "1999-10-13": "Prince Louis Rwagasore Day", - "1999-10-21": "President Ndadaye's Day", + "1999-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "1999-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "1999-11-01": "All Saints' Day", "1999-12-25": "Christmas Day", "2000-01-01": "New Year's Day", - "2000-01-08": "Eid ul Fitr (estimated)", + "2000-01-08": "Eid al-Fitr (estimated)", "2000-02-05": "Unity Day", - "2000-03-16": "Eid al Adha (estimated)", - "2000-04-06": "President Ntaryamira Day", - "2000-05-01": "Labour Day", + "2000-03-16": "Eid al-Adha (estimated)", + "2000-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2000-05-01": "International Labor Day", "2000-06-01": "Ascension Day", "2000-07-01": "Independence Day", "2000-08-15": "Assumption Day", - "2000-10-13": "Prince Louis Rwagasore Day", - "2000-10-21": "President Ndadaye's Day", + "2000-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2000-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2000-11-01": "All Saints' Day", "2000-12-25": "Christmas Day", - "2000-12-27": "Eid ul Fitr (estimated)", + "2000-12-27": "Eid al-Fitr (estimated)", "2001-01-01": "New Year's Day", "2001-02-05": "Unity Day", - "2001-03-05": "Eid al Adha (estimated)", - "2001-04-06": "President Ntaryamira Day", - "2001-05-01": "Labour Day", + "2001-03-05": "Eid al-Adha (estimated)", + "2001-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2001-05-01": "International Labor Day", "2001-05-24": "Ascension Day", "2001-07-01": "Independence Day", "2001-07-02": "Independence Day (observed)", "2001-08-15": "Assumption Day", - "2001-10-13": "Prince Louis Rwagasore Day", - "2001-10-21": "President Ndadaye's Day", - "2001-10-22": "President Ndadaye's Day (observed)", + "2001-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2001-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", + "2001-10-22": "Commemoration of the Assassination of President Melchior Ndadaye (observed)", "2001-11-01": "All Saints' Day", - "2001-12-16": "Eid ul Fitr (estimated)", - "2001-12-17": "Eid ul Fitr (estimated) (observed)", + "2001-12-16": "Eid al-Fitr (estimated)", + "2001-12-17": "Eid al-Fitr (observed, estimated)", "2001-12-25": "Christmas Day", "2002-01-01": "New Year's Day", "2002-02-05": "Unity Day", - "2002-02-22": "Eid al Adha (estimated)", - "2002-04-06": "President Ntaryamira Day", - "2002-05-01": "Labour Day", + "2002-02-22": "Eid al-Adha (estimated)", + "2002-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2002-05-01": "International Labor Day", "2002-05-09": "Ascension Day", "2002-07-01": "Independence Day", "2002-08-15": "Assumption Day", - "2002-10-13": "Prince Louis Rwagasore Day", - "2002-10-14": "Prince Louis Rwagasore Day (observed)", - "2002-10-21": "President Ndadaye's Day", + "2002-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2002-10-14": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore (observed)", + "2002-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2002-11-01": "All Saints' Day", - "2002-12-05": "Eid ul Fitr (estimated)", + "2002-12-05": "Eid al-Fitr (estimated)", "2002-12-25": "Christmas Day", "2003-01-01": "New Year's Day", "2003-02-05": "Unity Day", - "2003-02-11": "Eid al Adha (estimated)", - "2003-04-06": "President Ntaryamira Day", - "2003-04-07": "President Ntaryamira Day (observed)", - "2003-05-01": "Labour Day", + "2003-02-11": "Eid al-Adha (estimated)", + "2003-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2003-04-07": "Commemoration of the Assassination of President Cyprien Ntaryamira (observed)", + "2003-05-01": "International Labor Day", "2003-05-29": "Ascension Day", "2003-07-01": "Independence Day", "2003-08-15": "Assumption Day", - "2003-10-13": "Prince Louis Rwagasore Day", - "2003-10-21": "President Ndadaye's Day", + "2003-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2003-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2003-11-01": "All Saints' Day", - "2003-11-25": "Eid ul Fitr (estimated)", + "2003-11-25": "Eid al-Fitr (estimated)", "2003-12-25": "Christmas Day", "2004-01-01": "New Year's Day", - "2004-02-01": "Eid al Adha (estimated)", - "2004-02-02": "Eid al Adha (estimated) (observed)", + "2004-02-01": "Eid al-Adha (estimated)", + "2004-02-02": "Eid al-Adha (observed, estimated)", "2004-02-05": "Unity Day", - "2004-04-06": "President Ntaryamira Day", - "2004-05-01": "Labour Day", + "2004-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2004-05-01": "International Labor Day", "2004-05-20": "Ascension Day", "2004-07-01": "Independence Day", "2004-08-15": "Assumption Day", "2004-08-16": "Assumption Day (observed)", - "2004-10-13": "Prince Louis Rwagasore Day", - "2004-10-21": "President Ndadaye's Day", + "2004-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2004-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2004-11-01": "All Saints' Day", - "2004-11-14": "Eid ul Fitr (estimated)", - "2004-11-15": "Eid ul Fitr (estimated) (observed)", + "2004-11-14": "Eid al-Fitr (estimated)", + "2004-11-15": "Eid al-Fitr (observed, estimated)", "2004-12-25": "Christmas Day", "2005-01-01": "New Year's Day", - "2005-01-21": "Eid al Adha (estimated)", + "2005-01-21": "Eid al-Adha (estimated)", "2005-02-05": "Unity Day", - "2005-04-06": "President Ntaryamira Day", - "2005-05-01": "Labour Day", - "2005-05-02": "Labour Day (observed)", + "2005-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2005-05-01": "International Labor Day", + "2005-05-02": "International Labor Day (observed)", "2005-05-05": "Ascension Day", "2005-07-01": "Independence Day", "2005-08-15": "Assumption Day", - "2005-10-13": "Prince Louis Rwagasore Day", - "2005-10-21": "President Ndadaye's Day", + "2005-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2005-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2005-11-01": "All Saints' Day", - "2005-11-03": "Eid ul Fitr (estimated)", + "2005-11-03": "Eid al-Fitr (estimated)", "2005-12-25": "Christmas Day", "2005-12-26": "Christmas Day (observed)", "2006-01-01": "New Year's Day", "2006-01-02": "New Year's Day (observed)", - "2006-01-10": "Eid al Adha (estimated)", + "2006-01-10": "Eid al-Adha (estimated)", "2006-02-05": "Unity Day", "2006-02-06": "Unity Day (observed)", - "2006-04-06": "President Ntaryamira Day", - "2006-05-01": "Labour Day", + "2006-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2006-05-01": "International Labor Day", "2006-05-25": "Ascension Day", "2006-07-01": "Independence Day", "2006-08-15": "Assumption Day", - "2006-10-13": "Prince Louis Rwagasore Day", - "2006-10-21": "President Ndadaye's Day", - "2006-10-23": "Eid ul Fitr (estimated)", + "2006-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2006-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", + "2006-10-23": "Eid al-Fitr (estimated)", "2006-11-01": "All Saints' Day", "2006-12-25": "Christmas Day", - "2006-12-31": "Eid al Adha (estimated)", + "2006-12-31": "Eid al-Adha (estimated)", "2007-01-01": "New Year's Day", "2007-02-05": "Unity Day", - "2007-04-06": "President Ntaryamira Day", - "2007-05-01": "Labour Day", + "2007-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2007-05-01": "International Labor Day", "2007-05-17": "Ascension Day", "2007-07-01": "Independence Day", "2007-07-02": "Independence Day (observed)", "2007-08-15": "Assumption Day", - "2007-10-13": "Eid ul Fitr (estimated); Prince Louis Rwagasore Day", - "2007-10-21": "President Ndadaye's Day", - "2007-10-22": "President Ndadaye's Day (observed)", + "2007-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore; Eid al-Fitr (estimated)", + "2007-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", + "2007-10-22": "Commemoration of the Assassination of President Melchior Ndadaye (observed)", "2007-11-01": "All Saints' Day", - "2007-12-20": "Eid al Adha (estimated)", + "2007-12-20": "Eid al-Adha (estimated)", "2007-12-25": "Christmas Day", "2008-01-01": "New Year's Day", "2008-02-05": "Unity Day", - "2008-04-06": "President Ntaryamira Day", - "2008-04-07": "President Ntaryamira Day (observed)", - "2008-05-01": "Ascension Day; Labour Day", + "2008-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2008-04-07": "Commemoration of the Assassination of President Cyprien Ntaryamira (observed)", + "2008-05-01": "Ascension Day; International Labor Day", "2008-07-01": "Independence Day", "2008-08-15": "Assumption Day", - "2008-10-01": "Eid ul Fitr (estimated)", - "2008-10-13": "Prince Louis Rwagasore Day", - "2008-10-21": "President Ndadaye's Day", + "2008-10-01": "Eid al-Fitr (estimated)", + "2008-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2008-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2008-11-01": "All Saints' Day", - "2008-12-08": "Eid al Adha (estimated)", + "2008-12-08": "Eid al-Adha (estimated)", "2008-12-25": "Christmas Day", "2009-01-01": "New Year's Day", "2009-02-05": "Unity Day", - "2009-04-06": "President Ntaryamira Day", - "2009-05-01": "Labour Day", + "2009-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2009-05-01": "International Labor Day", "2009-05-21": "Ascension Day", "2009-07-01": "Independence Day", "2009-08-15": "Assumption Day", - "2009-09-20": "Eid ul Fitr (estimated)", - "2009-09-21": "Eid ul Fitr (estimated) (observed)", - "2009-10-13": "Prince Louis Rwagasore Day", - "2009-10-21": "President Ndadaye's Day", + "2009-09-20": "Eid al-Fitr (estimated)", + "2009-09-21": "Eid al-Fitr (observed, estimated)", + "2009-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2009-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2009-11-01": "All Saints' Day", "2009-11-02": "All Saints' Day (observed)", - "2009-11-27": "Eid al Adha (estimated)", + "2009-11-27": "Eid al-Adha (estimated)", "2009-12-25": "Christmas Day", "2010-01-01": "New Year's Day", "2010-02-05": "Unity Day", - "2010-04-06": "President Ntaryamira Day", - "2010-05-01": "Labour Day", + "2010-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2010-05-01": "International Labor Day", "2010-05-13": "Ascension Day", "2010-07-01": "Independence Day", "2010-08-15": "Assumption Day", "2010-08-16": "Assumption Day (observed)", - "2010-09-10": "Eid ul Fitr (estimated)", - "2010-10-13": "Prince Louis Rwagasore Day", - "2010-10-21": "President Ndadaye's Day", + "2010-09-10": "Eid al-Fitr (estimated)", + "2010-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2010-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2010-11-01": "All Saints' Day", - "2010-11-16": "Eid al Adha (estimated)", + "2010-11-16": "Eid al-Adha (estimated)", "2010-12-25": "Christmas Day", "2011-01-01": "New Year's Day", "2011-02-05": "Unity Day", - "2011-04-06": "President Ntaryamira Day", - "2011-05-01": "Labour Day", - "2011-05-02": "Labour Day (observed)", + "2011-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2011-05-01": "International Labor Day", + "2011-05-02": "International Labor Day (observed)", "2011-06-02": "Ascension Day", "2011-07-01": "Independence Day", "2011-08-15": "Assumption Day", - "2011-08-30": "Eid ul Fitr (estimated)", - "2011-10-13": "Prince Louis Rwagasore Day", - "2011-10-21": "President Ndadaye's Day", + "2011-08-30": "Eid al-Fitr (estimated)", + "2011-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2011-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2011-11-01": "All Saints' Day", - "2011-11-06": "Eid al Adha (estimated)", - "2011-11-07": "Eid al Adha (estimated) (observed)", + "2011-11-06": "Eid al-Adha (estimated)", + "2011-11-07": "Eid al-Adha (observed, estimated)", "2011-12-25": "Christmas Day", "2011-12-26": "Christmas Day (observed)", "2012-01-01": "New Year's Day", "2012-01-02": "New Year's Day (observed)", "2012-02-05": "Unity Day", "2012-02-06": "Unity Day (observed)", - "2012-04-06": "President Ntaryamira Day", - "2012-05-01": "Labour Day", + "2012-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2012-05-01": "International Labor Day", "2012-05-17": "Ascension Day", "2012-07-01": "Independence Day", "2012-07-02": "Independence Day (observed)", "2012-08-15": "Assumption Day", - "2012-08-19": "Eid ul Fitr (estimated)", - "2012-08-20": "Eid ul Fitr (estimated) (observed)", - "2012-10-13": "Prince Louis Rwagasore Day", - "2012-10-21": "President Ndadaye's Day", - "2012-10-22": "President Ndadaye's Day (observed)", - "2012-10-26": "Eid al Adha (estimated)", + "2012-08-19": "Eid al-Fitr (estimated)", + "2012-08-20": "Eid al-Fitr (observed, estimated)", + "2012-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2012-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", + "2012-10-22": "Commemoration of the Assassination of President Melchior Ndadaye (observed)", + "2012-10-26": "Eid al-Adha (estimated)", "2012-11-01": "All Saints' Day", "2012-12-25": "Christmas Day", "2013-01-01": "New Year's Day", "2013-02-05": "Unity Day", - "2013-04-06": "President Ntaryamira Day", - "2013-05-01": "Labour Day", + "2013-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2013-05-01": "International Labor Day", "2013-05-09": "Ascension Day", "2013-07-01": "Independence Day", - "2013-08-08": "Eid ul Fitr (estimated)", + "2013-08-08": "Eid al-Fitr (estimated)", "2013-08-15": "Assumption Day", - "2013-10-13": "Prince Louis Rwagasore Day", - "2013-10-14": "Prince Louis Rwagasore Day (observed)", - "2013-10-15": "Eid al Adha (estimated)", - "2013-10-21": "President Ndadaye's Day", + "2013-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2013-10-14": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore (observed)", + "2013-10-15": "Eid al-Adha (estimated)", + "2013-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2013-11-01": "All Saints' Day", "2013-12-25": "Christmas Day", "2014-01-01": "New Year's Day", "2014-02-05": "Unity Day", - "2014-04-06": "President Ntaryamira Day", - "2014-04-07": "President Ntaryamira Day (observed)", - "2014-05-01": "Labour Day", + "2014-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2014-04-07": "Commemoration of the Assassination of President Cyprien Ntaryamira (observed)", + "2014-05-01": "International Labor Day", "2014-05-29": "Ascension Day", "2014-07-01": "Independence Day", - "2014-07-28": "Eid ul Fitr (estimated)", + "2014-07-29": "Eid al-Fitr", "2014-08-15": "Assumption Day", - "2014-10-04": "Eid al Adha (estimated)", - "2014-10-13": "Prince Louis Rwagasore Day", - "2014-10-21": "President Ndadaye's Day", + "2014-10-05": "Eid al-Adha", + "2014-10-06": "Eid al-Adha (observed)", + "2014-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2014-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2014-11-01": "All Saints' Day", "2014-12-25": "Christmas Day", "2015-01-01": "New Year's Day", "2015-02-05": "Unity Day", - "2015-04-06": "President Ntaryamira Day", - "2015-05-01": "Labour Day", + "2015-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2015-05-01": "International Labor Day", "2015-05-14": "Ascension Day", "2015-07-01": "Independence Day", - "2015-07-17": "Eid ul Fitr (estimated)", + "2015-07-18": "Eid al-Fitr", "2015-08-15": "Assumption Day", - "2015-09-23": "Eid al Adha (estimated)", - "2015-10-13": "Prince Louis Rwagasore Day", - "2015-10-21": "President Ndadaye's Day", + "2015-09-24": "Eid al-Adha", + "2015-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2015-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2015-11-01": "All Saints' Day", "2015-11-02": "All Saints' Day (observed)", "2015-12-25": "Christmas Day", "2016-01-01": "New Year's Day", "2016-02-05": "Unity Day", - "2016-04-06": "President Ntaryamira Day", - "2016-05-01": "Labour Day", - "2016-05-02": "Labour Day (observed)", + "2016-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2016-05-01": "International Labor Day", + "2016-05-02": "International Labor Day (observed)", "2016-05-05": "Ascension Day", "2016-07-01": "Independence Day", - "2016-07-06": "Eid ul Fitr (estimated)", + "2016-07-07": "Eid al-Fitr", "2016-08-15": "Assumption Day", - "2016-09-11": "Eid al Adha (estimated)", - "2016-09-12": "Eid al Adha (estimated) (observed)", - "2016-10-13": "Prince Louis Rwagasore Day", - "2016-10-21": "President Ndadaye's Day", + "2016-09-13": "Eid al-Adha", + "2016-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2016-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2016-11-01": "All Saints' Day", "2016-12-25": "Christmas Day", "2016-12-26": "Christmas Day (observed)", @@ -700,88 +700,87 @@ "2017-01-02": "New Year's Day (observed)", "2017-02-05": "Unity Day", "2017-02-06": "Unity Day (observed)", - "2017-04-06": "President Ntaryamira Day", - "2017-05-01": "Labour Day", + "2017-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2017-05-01": "International Labor Day", "2017-05-25": "Ascension Day", - "2017-06-25": "Eid ul Fitr (estimated)", - "2017-06-26": "Eid ul Fitr (estimated) (observed)", + "2017-06-26": "Eid al-Fitr", "2017-07-01": "Independence Day", "2017-08-15": "Assumption Day", - "2017-09-01": "Eid al Adha (estimated)", - "2017-10-13": "Prince Louis Rwagasore Day", - "2017-10-21": "President Ndadaye's Day", + "2017-09-02": "Eid al-Adha", + "2017-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2017-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2017-11-01": "All Saints' Day", "2017-12-25": "Christmas Day", "2018-01-01": "New Year's Day", "2018-02-05": "Unity Day", - "2018-04-06": "President Ntaryamira Day", - "2018-05-01": "Labour Day", + "2018-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2018-05-01": "International Labor Day", "2018-05-10": "Ascension Day", - "2018-06-15": "Eid ul Fitr (estimated)", + "2018-06-15": "Eid al-Fitr", "2018-07-01": "Independence Day", "2018-07-02": "Independence Day (observed)", "2018-08-15": "Assumption Day", - "2018-08-21": "Eid al Adha (estimated)", - "2018-10-13": "Prince Louis Rwagasore Day", - "2018-10-21": "President Ndadaye's Day", - "2018-10-22": "President Ndadaye's Day (observed)", + "2018-08-21": "Eid al-Adha", + "2018-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2018-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", + "2018-10-22": "Commemoration of the Assassination of President Melchior Ndadaye (observed)", "2018-11-01": "All Saints' Day", "2018-12-25": "Christmas Day", "2019-01-01": "New Year's Day", "2019-02-05": "Unity Day", - "2019-04-06": "President Ntaryamira Day", - "2019-05-01": "Labour Day", + "2019-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2019-05-01": "International Labor Day", "2019-05-30": "Ascension Day", - "2019-06-04": "Eid ul Fitr (estimated)", + "2019-06-04": "Eid al-Fitr", "2019-07-01": "Independence Day", - "2019-08-11": "Eid al Adha (estimated)", - "2019-08-12": "Eid al Adha (estimated) (observed)", + "2019-08-11": "Eid al-Adha", + "2019-08-12": "Eid al-Adha (observed)", "2019-08-15": "Assumption Day", - "2019-10-13": "Prince Louis Rwagasore Day", - "2019-10-14": "Prince Louis Rwagasore Day (observed)", - "2019-10-21": "President Ndadaye's Day", + "2019-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2019-10-14": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore (observed)", + "2019-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2019-11-01": "All Saints' Day", "2019-12-25": "Christmas Day", "2020-01-01": "New Year's Day", "2020-02-05": "Unity Day", - "2020-04-06": "President Ntaryamira Day", - "2020-05-01": "Labour Day", + "2020-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2020-05-01": "International Labor Day", "2020-05-21": "Ascension Day", - "2020-05-24": "Eid ul Fitr (estimated)", - "2020-05-25": "Eid ul Fitr (estimated) (observed)", + "2020-05-24": "Eid al-Fitr", + "2020-05-25": "Eid al-Fitr (observed)", "2020-07-01": "Independence Day", - "2020-07-31": "Eid al Adha (estimated)", + "2020-07-31": "Eid al-Adha", "2020-08-15": "Assumption Day", - "2020-10-13": "Prince Louis Rwagasore Day", - "2020-10-21": "President Ndadaye's Day", + "2020-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2020-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2020-11-01": "All Saints' Day", "2020-11-02": "All Saints' Day (observed)", "2020-12-25": "Christmas Day", "2021-01-01": "New Year's Day", "2021-02-05": "Unity Day", - "2021-04-06": "President Ntaryamira Day", - "2021-05-01": "Labour Day", - "2021-05-13": "Ascension Day; Eid ul Fitr (estimated)", + "2021-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2021-05-01": "International Labor Day", + "2021-05-13": "Ascension Day; Eid al-Fitr", "2021-07-01": "Independence Day", - "2021-07-20": "Eid al Adha (estimated)", + "2021-07-20": "Eid al-Adha", "2021-08-15": "Assumption Day", "2021-08-16": "Assumption Day (observed)", - "2021-10-13": "Prince Louis Rwagasore Day", - "2021-10-21": "President Ndadaye's Day", + "2021-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2021-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2021-11-01": "All Saints' Day", "2021-12-25": "Christmas Day", "2022-01-01": "New Year's Day", "2022-02-05": "Unity Day", - "2022-04-06": "President Ntaryamira Day", - "2022-05-01": "Labour Day", - "2022-05-02": "Eid ul Fitr (estimated); Labour Day (observed)", + "2022-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2022-05-01": "International Labor Day", + "2022-05-02": "Eid al-Fitr; International Labor Day (observed)", "2022-05-26": "Ascension Day", - "2022-06-08": "President Nkurunziza Day", + "2022-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2022-07-01": "Independence Day", - "2022-07-09": "Eid al Adha (estimated)", + "2022-07-09": "Eid al-Adha", "2022-08-15": "Assumption Day", - "2022-10-13": "Prince Louis Rwagasore Day", - "2022-10-21": "President Ndadaye's Day", + "2022-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2022-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2022-11-01": "All Saints' Day", "2022-12-25": "Christmas Day", "2022-12-26": "Christmas Day (observed)", @@ -789,351 +788,351 @@ "2023-01-02": "New Year's Day (observed)", "2023-02-05": "Unity Day", "2023-02-06": "Unity Day (observed)", - "2023-04-06": "President Ntaryamira Day", - "2023-04-21": "Eid ul Fitr (estimated)", - "2023-05-01": "Labour Day", + "2023-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2023-04-21": "Eid al-Fitr", + "2023-05-01": "International Labor Day", "2023-05-18": "Ascension Day", - "2023-06-08": "President Nkurunziza Day", - "2023-06-28": "Eid al Adha (estimated)", + "2023-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", + "2023-06-28": "Eid al-Adha", "2023-07-01": "Independence Day", "2023-08-15": "Assumption Day", - "2023-10-13": "Prince Louis Rwagasore Day", - "2023-10-21": "President Ndadaye's Day", + "2023-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2023-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2023-11-01": "All Saints' Day", "2023-12-25": "Christmas Day", "2024-01-01": "New Year's Day", "2024-02-05": "Unity Day", - "2024-04-06": "President Ntaryamira Day", - "2024-04-10": "Eid ul Fitr (estimated)", - "2024-05-01": "Labour Day", + "2024-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2024-04-10": "Eid al-Fitr", + "2024-05-01": "International Labor Day", "2024-05-09": "Ascension Day", - "2024-06-08": "President Nkurunziza Day", - "2024-06-16": "Eid al Adha (estimated)", - "2024-06-17": "Eid al Adha (estimated) (observed)", + "2024-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", + "2024-06-16": "Eid al-Adha", + "2024-06-17": "Eid al-Adha (observed)", "2024-07-01": "Independence Day", "2024-08-15": "Assumption Day", - "2024-10-13": "Prince Louis Rwagasore Day", - "2024-10-14": "Prince Louis Rwagasore Day (observed)", - "2024-10-21": "President Ndadaye's Day", + "2024-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2024-10-14": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore (observed)", + "2024-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2024-11-01": "All Saints' Day", "2024-12-25": "Christmas Day", "2025-01-01": "New Year's Day", "2025-02-05": "Unity Day", - "2025-03-30": "Eid ul Fitr (estimated)", - "2025-03-31": "Eid ul Fitr (estimated) (observed)", - "2025-04-06": "President Ntaryamira Day", - "2025-04-07": "President Ntaryamira Day (observed)", - "2025-05-01": "Labour Day", + "2025-03-30": "Eid al-Fitr", + "2025-03-31": "Eid al-Fitr (observed)", + "2025-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2025-04-07": "Commemoration of the Assassination of President Cyprien Ntaryamira (observed)", + "2025-05-01": "International Labor Day", "2025-05-29": "Ascension Day", - "2025-06-06": "Eid al Adha (estimated)", - "2025-06-08": "President Nkurunziza Day", - "2025-06-09": "President Nkurunziza Day (observed)", + "2025-06-06": "Eid al-Adha", + "2025-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", + "2025-06-09": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza (observed)", "2025-07-01": "Independence Day", "2025-08-15": "Assumption Day", - "2025-10-13": "Prince Louis Rwagasore Day", - "2025-10-21": "President Ndadaye's Day", + "2025-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2025-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2025-11-01": "All Saints' Day", "2025-12-25": "Christmas Day", "2026-01-01": "New Year's Day", "2026-02-05": "Unity Day", - "2026-03-20": "Eid ul Fitr (estimated)", - "2026-04-06": "President Ntaryamira Day", - "2026-05-01": "Labour Day", + "2026-03-20": "Eid al-Fitr (estimated)", + "2026-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2026-05-01": "International Labor Day", "2026-05-14": "Ascension Day", - "2026-05-27": "Eid al Adha (estimated)", - "2026-06-08": "President Nkurunziza Day", + "2026-05-27": "Eid al-Adha (estimated)", + "2026-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2026-07-01": "Independence Day", "2026-08-15": "Assumption Day", - "2026-10-13": "Prince Louis Rwagasore Day", - "2026-10-21": "President Ndadaye's Day", + "2026-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2026-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2026-11-01": "All Saints' Day", "2026-11-02": "All Saints' Day (observed)", "2026-12-25": "Christmas Day", "2027-01-01": "New Year's Day", "2027-02-05": "Unity Day", - "2027-03-09": "Eid ul Fitr (estimated)", - "2027-04-06": "President Ntaryamira Day", - "2027-05-01": "Labour Day", + "2027-03-09": "Eid al-Fitr (estimated)", + "2027-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2027-05-01": "International Labor Day", "2027-05-06": "Ascension Day", - "2027-05-16": "Eid al Adha (estimated)", - "2027-05-17": "Eid al Adha (estimated) (observed)", - "2027-06-08": "President Nkurunziza Day", + "2027-05-16": "Eid al-Adha (estimated)", + "2027-05-17": "Eid al-Adha (observed, estimated)", + "2027-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2027-07-01": "Independence Day", "2027-08-15": "Assumption Day", "2027-08-16": "Assumption Day (observed)", - "2027-10-13": "Prince Louis Rwagasore Day", - "2027-10-21": "President Ndadaye's Day", + "2027-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2027-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2027-11-01": "All Saints' Day", "2027-12-25": "Christmas Day", "2028-01-01": "New Year's Day", "2028-02-05": "Unity Day", - "2028-02-26": "Eid ul Fitr (estimated)", - "2028-04-06": "President Ntaryamira Day", - "2028-05-01": "Labour Day", - "2028-05-05": "Eid al Adha (estimated)", + "2028-02-26": "Eid al-Fitr (estimated)", + "2028-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2028-05-01": "International Labor Day", + "2028-05-05": "Eid al-Adha (estimated)", "2028-05-25": "Ascension Day", - "2028-06-08": "President Nkurunziza Day", + "2028-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2028-07-01": "Independence Day", "2028-08-15": "Assumption Day", - "2028-10-13": "Prince Louis Rwagasore Day", - "2028-10-21": "President Ndadaye's Day", + "2028-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2028-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2028-11-01": "All Saints' Day", "2028-12-25": "Christmas Day", "2029-01-01": "New Year's Day", "2029-02-05": "Unity Day", - "2029-02-14": "Eid ul Fitr (estimated)", - "2029-04-06": "President Ntaryamira Day", - "2029-04-24": "Eid al Adha (estimated)", - "2029-05-01": "Labour Day", + "2029-02-14": "Eid al-Fitr (estimated)", + "2029-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2029-04-24": "Eid al-Adha (estimated)", + "2029-05-01": "International Labor Day", "2029-05-10": "Ascension Day", - "2029-06-08": "President Nkurunziza Day", + "2029-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2029-07-01": "Independence Day", "2029-07-02": "Independence Day (observed)", "2029-08-15": "Assumption Day", - "2029-10-13": "Prince Louis Rwagasore Day", - "2029-10-21": "President Ndadaye's Day", - "2029-10-22": "President Ndadaye's Day (observed)", + "2029-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2029-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", + "2029-10-22": "Commemoration of the Assassination of President Melchior Ndadaye (observed)", "2029-11-01": "All Saints' Day", "2029-12-25": "Christmas Day", "2030-01-01": "New Year's Day", - "2030-02-04": "Eid ul Fitr (estimated)", + "2030-02-04": "Eid al-Fitr (estimated)", "2030-02-05": "Unity Day", - "2030-04-06": "President Ntaryamira Day", - "2030-04-13": "Eid al Adha (estimated)", - "2030-05-01": "Labour Day", + "2030-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2030-04-13": "Eid al-Adha (estimated)", + "2030-05-01": "International Labor Day", "2030-05-30": "Ascension Day", - "2030-06-08": "President Nkurunziza Day", + "2030-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2030-07-01": "Independence Day", "2030-08-15": "Assumption Day", - "2030-10-13": "Prince Louis Rwagasore Day", - "2030-10-14": "Prince Louis Rwagasore Day (observed)", - "2030-10-21": "President Ndadaye's Day", + "2030-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2030-10-14": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore (observed)", + "2030-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2030-11-01": "All Saints' Day", "2030-12-25": "Christmas Day", "2031-01-01": "New Year's Day", - "2031-01-24": "Eid ul Fitr (estimated)", + "2031-01-24": "Eid al-Fitr (estimated)", "2031-02-05": "Unity Day", - "2031-04-02": "Eid al Adha (estimated)", - "2031-04-06": "President Ntaryamira Day", - "2031-04-07": "President Ntaryamira Day (observed)", - "2031-05-01": "Labour Day", + "2031-04-02": "Eid al-Adha (estimated)", + "2031-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2031-04-07": "Commemoration of the Assassination of President Cyprien Ntaryamira (observed)", + "2031-05-01": "International Labor Day", "2031-05-22": "Ascension Day", - "2031-06-08": "President Nkurunziza Day", - "2031-06-09": "President Nkurunziza Day (observed)", + "2031-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", + "2031-06-09": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza (observed)", "2031-07-01": "Independence Day", "2031-08-15": "Assumption Day", - "2031-10-13": "Prince Louis Rwagasore Day", - "2031-10-21": "President Ndadaye's Day", + "2031-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2031-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2031-11-01": "All Saints' Day", "2031-12-25": "Christmas Day", "2032-01-01": "New Year's Day", - "2032-01-14": "Eid ul Fitr (estimated)", + "2032-01-14": "Eid al-Fitr (estimated)", "2032-02-05": "Unity Day", - "2032-03-22": "Eid al Adha (estimated)", - "2032-04-06": "President Ntaryamira Day", - "2032-05-01": "Labour Day", + "2032-03-22": "Eid al-Adha (estimated)", + "2032-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2032-05-01": "International Labor Day", "2032-05-06": "Ascension Day", - "2032-06-08": "President Nkurunziza Day", + "2032-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2032-07-01": "Independence Day", "2032-08-15": "Assumption Day", "2032-08-16": "Assumption Day (observed)", - "2032-10-13": "Prince Louis Rwagasore Day", - "2032-10-21": "President Ndadaye's Day", + "2032-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2032-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2032-11-01": "All Saints' Day", "2032-12-25": "Christmas Day", "2033-01-01": "New Year's Day", - "2033-01-02": "Eid ul Fitr (estimated)", - "2033-01-03": "Eid ul Fitr (estimated) (observed)", + "2033-01-02": "Eid al-Fitr (estimated)", + "2033-01-03": "Eid al-Fitr (observed, estimated)", "2033-02-05": "Unity Day", - "2033-03-11": "Eid al Adha (estimated)", - "2033-04-06": "President Ntaryamira Day", - "2033-05-01": "Labour Day", - "2033-05-02": "Labour Day (observed)", + "2033-03-11": "Eid al-Adha (estimated)", + "2033-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2033-05-01": "International Labor Day", + "2033-05-02": "International Labor Day (observed)", "2033-05-26": "Ascension Day", - "2033-06-08": "President Nkurunziza Day", + "2033-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2033-07-01": "Independence Day", "2033-08-15": "Assumption Day", - "2033-10-13": "Prince Louis Rwagasore Day", - "2033-10-21": "President Ndadaye's Day", + "2033-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2033-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2033-11-01": "All Saints' Day", - "2033-12-23": "Eid ul Fitr (estimated)", + "2033-12-23": "Eid al-Fitr (estimated)", "2033-12-25": "Christmas Day", "2033-12-26": "Christmas Day (observed)", "2034-01-01": "New Year's Day", "2034-01-02": "New Year's Day (observed)", "2034-02-05": "Unity Day", "2034-02-06": "Unity Day (observed)", - "2034-03-01": "Eid al Adha (estimated)", - "2034-04-06": "President Ntaryamira Day", - "2034-05-01": "Labour Day", + "2034-03-01": "Eid al-Adha (estimated)", + "2034-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2034-05-01": "International Labor Day", "2034-05-18": "Ascension Day", - "2034-06-08": "President Nkurunziza Day", + "2034-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2034-07-01": "Independence Day", "2034-08-15": "Assumption Day", - "2034-10-13": "Prince Louis Rwagasore Day", - "2034-10-21": "President Ndadaye's Day", + "2034-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2034-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2034-11-01": "All Saints' Day", - "2034-12-12": "Eid ul Fitr (estimated)", + "2034-12-12": "Eid al-Fitr (estimated)", "2034-12-25": "Christmas Day", "2035-01-01": "New Year's Day", "2035-02-05": "Unity Day", - "2035-02-18": "Eid al Adha (estimated)", - "2035-02-19": "Eid al Adha (estimated) (observed)", - "2035-04-06": "President Ntaryamira Day", - "2035-05-01": "Labour Day", + "2035-02-18": "Eid al-Adha (estimated)", + "2035-02-19": "Eid al-Adha (observed, estimated)", + "2035-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2035-05-01": "International Labor Day", "2035-05-03": "Ascension Day", - "2035-06-08": "President Nkurunziza Day", + "2035-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2035-07-01": "Independence Day", "2035-07-02": "Independence Day (observed)", "2035-08-15": "Assumption Day", - "2035-10-13": "Prince Louis Rwagasore Day", - "2035-10-21": "President Ndadaye's Day", - "2035-10-22": "President Ndadaye's Day (observed)", + "2035-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2035-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", + "2035-10-22": "Commemoration of the Assassination of President Melchior Ndadaye (observed)", "2035-11-01": "All Saints' Day", - "2035-12-01": "Eid ul Fitr (estimated)", + "2035-12-01": "Eid al-Fitr (estimated)", "2035-12-25": "Christmas Day", "2036-01-01": "New Year's Day", "2036-02-05": "Unity Day", - "2036-02-07": "Eid al Adha (estimated)", - "2036-04-06": "President Ntaryamira Day", - "2036-04-07": "President Ntaryamira Day (observed)", - "2036-05-01": "Labour Day", + "2036-02-07": "Eid al-Adha (estimated)", + "2036-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2036-04-07": "Commemoration of the Assassination of President Cyprien Ntaryamira (observed)", + "2036-05-01": "International Labor Day", "2036-05-22": "Ascension Day", - "2036-06-08": "President Nkurunziza Day", - "2036-06-09": "President Nkurunziza Day (observed)", + "2036-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", + "2036-06-09": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza (observed)", "2036-07-01": "Independence Day", "2036-08-15": "Assumption Day", - "2036-10-13": "Prince Louis Rwagasore Day", - "2036-10-21": "President Ndadaye's Day", + "2036-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2036-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2036-11-01": "All Saints' Day", - "2036-11-19": "Eid ul Fitr (estimated)", + "2036-11-19": "Eid al-Fitr (estimated)", "2036-12-25": "Christmas Day", "2037-01-01": "New Year's Day", - "2037-01-26": "Eid al Adha (estimated)", + "2037-01-26": "Eid al-Adha (estimated)", "2037-02-05": "Unity Day", - "2037-04-06": "President Ntaryamira Day", - "2037-05-01": "Labour Day", + "2037-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2037-05-01": "International Labor Day", "2037-05-14": "Ascension Day", - "2037-06-08": "President Nkurunziza Day", + "2037-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2037-07-01": "Independence Day", "2037-08-15": "Assumption Day", - "2037-10-13": "Prince Louis Rwagasore Day", - "2037-10-21": "President Ndadaye's Day", + "2037-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2037-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2037-11-01": "All Saints' Day", "2037-11-02": "All Saints' Day (observed)", - "2037-11-08": "Eid ul Fitr (estimated)", - "2037-11-09": "Eid ul Fitr (estimated) (observed)", + "2037-11-08": "Eid al-Fitr (estimated)", + "2037-11-09": "Eid al-Fitr (observed, estimated)", "2037-12-25": "Christmas Day", "2038-01-01": "New Year's Day", - "2038-01-16": "Eid al Adha (estimated)", + "2038-01-16": "Eid al-Adha (estimated)", "2038-02-05": "Unity Day", - "2038-04-06": "President Ntaryamira Day", - "2038-05-01": "Labour Day", + "2038-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2038-05-01": "International Labor Day", "2038-06-03": "Ascension Day", - "2038-06-08": "President Nkurunziza Day", + "2038-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2038-07-01": "Independence Day", "2038-08-15": "Assumption Day", "2038-08-16": "Assumption Day (observed)", - "2038-10-13": "Prince Louis Rwagasore Day", - "2038-10-21": "President Ndadaye's Day", - "2038-10-29": "Eid ul Fitr (estimated)", + "2038-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2038-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", + "2038-10-29": "Eid al-Fitr (estimated)", "2038-11-01": "All Saints' Day", "2038-12-25": "Christmas Day", "2039-01-01": "New Year's Day", - "2039-01-05": "Eid al Adha (estimated)", + "2039-01-05": "Eid al-Adha (estimated)", "2039-02-05": "Unity Day", - "2039-04-06": "President Ntaryamira Day", - "2039-05-01": "Labour Day", - "2039-05-02": "Labour Day (observed)", + "2039-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2039-05-01": "International Labor Day", + "2039-05-02": "International Labor Day (observed)", "2039-05-19": "Ascension Day", - "2039-06-08": "President Nkurunziza Day", + "2039-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2039-07-01": "Independence Day", "2039-08-15": "Assumption Day", - "2039-10-13": "Prince Louis Rwagasore Day", - "2039-10-19": "Eid ul Fitr (estimated)", - "2039-10-21": "President Ndadaye's Day", + "2039-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2039-10-19": "Eid al-Fitr (estimated)", + "2039-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2039-11-01": "All Saints' Day", "2039-12-25": "Christmas Day", - "2039-12-26": "Christmas Day (observed); Eid al Adha (estimated)", + "2039-12-26": "Christmas Day (observed); Eid al-Adha (estimated)", "2040-01-01": "New Year's Day", "2040-01-02": "New Year's Day (observed)", "2040-02-05": "Unity Day", "2040-02-06": "Unity Day (observed)", - "2040-04-06": "President Ntaryamira Day", - "2040-05-01": "Labour Day", + "2040-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2040-05-01": "International Labor Day", "2040-05-10": "Ascension Day", - "2040-06-08": "President Nkurunziza Day", + "2040-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2040-07-01": "Independence Day", "2040-07-02": "Independence Day (observed)", "2040-08-15": "Assumption Day", - "2040-10-07": "Eid ul Fitr (estimated)", - "2040-10-08": "Eid ul Fitr (estimated) (observed)", - "2040-10-13": "Prince Louis Rwagasore Day", - "2040-10-21": "President Ndadaye's Day", - "2040-10-22": "President Ndadaye's Day (observed)", + "2040-10-07": "Eid al-Fitr (estimated)", + "2040-10-08": "Eid al-Fitr (observed, estimated)", + "2040-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2040-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", + "2040-10-22": "Commemoration of the Assassination of President Melchior Ndadaye (observed)", "2040-11-01": "All Saints' Day", - "2040-12-14": "Eid al Adha (estimated)", + "2040-12-14": "Eid al-Adha (estimated)", "2040-12-25": "Christmas Day", "2041-01-01": "New Year's Day", "2041-02-05": "Unity Day", - "2041-04-06": "President Ntaryamira Day", - "2041-05-01": "Labour Day", + "2041-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2041-05-01": "International Labor Day", "2041-05-30": "Ascension Day", - "2041-06-08": "President Nkurunziza Day", + "2041-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2041-07-01": "Independence Day", "2041-08-15": "Assumption Day", - "2041-09-26": "Eid ul Fitr (estimated)", - "2041-10-13": "Prince Louis Rwagasore Day", - "2041-10-14": "Prince Louis Rwagasore Day (observed)", - "2041-10-21": "President Ndadaye's Day", + "2041-09-26": "Eid al-Fitr (estimated)", + "2041-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2041-10-14": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore (observed)", + "2041-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2041-11-01": "All Saints' Day", - "2041-12-04": "Eid al Adha (estimated)", + "2041-12-04": "Eid al-Adha (estimated)", "2041-12-25": "Christmas Day", "2042-01-01": "New Year's Day", "2042-02-05": "Unity Day", - "2042-04-06": "President Ntaryamira Day", - "2042-04-07": "President Ntaryamira Day (observed)", - "2042-05-01": "Labour Day", + "2042-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2042-04-07": "Commemoration of the Assassination of President Cyprien Ntaryamira (observed)", + "2042-05-01": "International Labor Day", "2042-05-15": "Ascension Day", - "2042-06-08": "President Nkurunziza Day", - "2042-06-09": "President Nkurunziza Day (observed)", + "2042-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", + "2042-06-09": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza (observed)", "2042-07-01": "Independence Day", "2042-08-15": "Assumption Day", - "2042-09-15": "Eid ul Fitr (estimated)", - "2042-10-13": "Prince Louis Rwagasore Day", - "2042-10-21": "President Ndadaye's Day", + "2042-09-15": "Eid al-Fitr (estimated)", + "2042-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2042-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2042-11-01": "All Saints' Day", - "2042-11-23": "Eid al Adha (estimated)", - "2042-11-24": "Eid al Adha (estimated) (observed)", + "2042-11-23": "Eid al-Adha (estimated)", + "2042-11-24": "Eid al-Adha (observed, estimated)", "2042-12-25": "Christmas Day", "2043-01-01": "New Year's Day", "2043-02-05": "Unity Day", - "2043-04-06": "President Ntaryamira Day", - "2043-05-01": "Labour Day", + "2043-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2043-05-01": "International Labor Day", "2043-05-07": "Ascension Day", - "2043-06-08": "President Nkurunziza Day", + "2043-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2043-07-01": "Independence Day", "2043-08-15": "Assumption Day", - "2043-09-04": "Eid ul Fitr (estimated)", - "2043-10-13": "Prince Louis Rwagasore Day", - "2043-10-21": "President Ndadaye's Day", + "2043-09-04": "Eid al-Fitr (estimated)", + "2043-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2043-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2043-11-01": "All Saints' Day", "2043-11-02": "All Saints' Day (observed)", - "2043-11-12": "Eid al Adha (estimated)", + "2043-11-12": "Eid al-Adha (estimated)", "2043-12-25": "Christmas Day", "2044-01-01": "New Year's Day", "2044-02-05": "Unity Day", - "2044-04-06": "President Ntaryamira Day", - "2044-05-01": "Labour Day", - "2044-05-02": "Labour Day (observed)", + "2044-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2044-05-01": "International Labor Day", + "2044-05-02": "International Labor Day (observed)", "2044-05-26": "Ascension Day", - "2044-06-08": "President Nkurunziza Day", + "2044-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2044-07-01": "Independence Day", "2044-08-15": "Assumption Day", - "2044-08-24": "Eid ul Fitr (estimated)", - "2044-10-13": "Prince Louis Rwagasore Day", - "2044-10-21": "President Ndadaye's Day", - "2044-10-31": "Eid al Adha (estimated)", + "2044-08-24": "Eid al-Fitr (estimated)", + "2044-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2044-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", + "2044-10-31": "Eid al-Adha (estimated)", "2044-11-01": "All Saints' Day", "2044-12-25": "Christmas Day", "2044-12-26": "Christmas Day (observed)", @@ -1141,92 +1140,92 @@ "2045-01-02": "New Year's Day (observed)", "2045-02-05": "Unity Day", "2045-02-06": "Unity Day (observed)", - "2045-04-06": "President Ntaryamira Day", - "2045-05-01": "Labour Day", + "2045-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2045-05-01": "International Labor Day", "2045-05-18": "Ascension Day", - "2045-06-08": "President Nkurunziza Day", + "2045-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2045-07-01": "Independence Day", - "2045-08-14": "Eid ul Fitr (estimated)", + "2045-08-14": "Eid al-Fitr (estimated)", "2045-08-15": "Assumption Day", - "2045-10-13": "Prince Louis Rwagasore Day", - "2045-10-21": "Eid al Adha (estimated); President Ndadaye's Day", + "2045-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2045-10-21": "Commemoration of the Assassination of President Melchior Ndadaye; Eid al-Adha (estimated)", "2045-11-01": "All Saints' Day", "2045-12-25": "Christmas Day", "2046-01-01": "New Year's Day", "2046-02-05": "Unity Day", - "2046-04-06": "President Ntaryamira Day", - "2046-05-01": "Labour Day", + "2046-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2046-05-01": "International Labor Day", "2046-05-03": "Ascension Day", - "2046-06-08": "President Nkurunziza Day", + "2046-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2046-07-01": "Independence Day", "2046-07-02": "Independence Day (observed)", - "2046-08-03": "Eid ul Fitr (estimated)", + "2046-08-03": "Eid al-Fitr (estimated)", "2046-08-15": "Assumption Day", - "2046-10-10": "Eid al Adha (estimated)", - "2046-10-13": "Prince Louis Rwagasore Day", - "2046-10-21": "President Ndadaye's Day", - "2046-10-22": "President Ndadaye's Day (observed)", + "2046-10-10": "Eid al-Adha (estimated)", + "2046-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2046-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", + "2046-10-22": "Commemoration of the Assassination of President Melchior Ndadaye (observed)", "2046-11-01": "All Saints' Day", "2046-12-25": "Christmas Day", "2047-01-01": "New Year's Day", "2047-02-05": "Unity Day", - "2047-04-06": "President Ntaryamira Day", - "2047-05-01": "Labour Day", + "2047-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2047-05-01": "International Labor Day", "2047-05-23": "Ascension Day", - "2047-06-08": "President Nkurunziza Day", + "2047-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2047-07-01": "Independence Day", - "2047-07-24": "Eid ul Fitr (estimated)", + "2047-07-24": "Eid al-Fitr (estimated)", "2047-08-15": "Assumption Day", - "2047-09-30": "Eid al Adha (estimated)", - "2047-10-13": "Prince Louis Rwagasore Day", - "2047-10-14": "Prince Louis Rwagasore Day (observed)", - "2047-10-21": "President Ndadaye's Day", + "2047-09-30": "Eid al-Adha (estimated)", + "2047-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2047-10-14": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore (observed)", + "2047-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2047-11-01": "All Saints' Day", "2047-12-25": "Christmas Day", "2048-01-01": "New Year's Day", "2048-02-05": "Unity Day", - "2048-04-06": "President Ntaryamira Day", - "2048-05-01": "Labour Day", + "2048-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2048-05-01": "International Labor Day", "2048-05-14": "Ascension Day", - "2048-06-08": "President Nkurunziza Day", + "2048-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", "2048-07-01": "Independence Day", - "2048-07-12": "Eid ul Fitr (estimated)", - "2048-07-13": "Eid ul Fitr (estimated) (observed)", + "2048-07-12": "Eid al-Fitr (estimated)", + "2048-07-13": "Eid al-Fitr (observed, estimated)", "2048-08-15": "Assumption Day", - "2048-09-19": "Eid al Adha (estimated)", - "2048-10-13": "Prince Louis Rwagasore Day", - "2048-10-21": "President Ndadaye's Day", + "2048-09-19": "Eid al-Adha (estimated)", + "2048-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2048-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2048-11-01": "All Saints' Day", "2048-11-02": "All Saints' Day (observed)", "2048-12-25": "Christmas Day", "2049-01-01": "New Year's Day", "2049-02-05": "Unity Day", - "2049-04-06": "President Ntaryamira Day", - "2049-05-01": "Labour Day", + "2049-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2049-05-01": "International Labor Day", "2049-05-27": "Ascension Day", - "2049-06-08": "President Nkurunziza Day", - "2049-07-01": "Eid ul Fitr (estimated); Independence Day", + "2049-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", + "2049-07-01": "Eid al-Fitr (estimated); Independence Day", "2049-08-15": "Assumption Day", "2049-08-16": "Assumption Day (observed)", - "2049-09-08": "Eid al Adha (estimated)", - "2049-10-13": "Prince Louis Rwagasore Day", - "2049-10-21": "President Ndadaye's Day", + "2049-09-08": "Eid al-Adha (estimated)", + "2049-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2049-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2049-11-01": "All Saints' Day", "2049-12-25": "Christmas Day", "2050-01-01": "New Year's Day", "2050-02-05": "Unity Day", - "2050-04-06": "President Ntaryamira Day", - "2050-05-01": "Labour Day", - "2050-05-02": "Labour Day (observed)", + "2050-04-06": "Commemoration of the Assassination of President Cyprien Ntaryamira", + "2050-05-01": "International Labor Day", + "2050-05-02": "International Labor Day (observed)", "2050-05-19": "Ascension Day", - "2050-06-08": "President Nkurunziza Day", - "2050-06-20": "Eid ul Fitr (estimated)", + "2050-06-08": "National Day of Patriotism and Commemoration of the Death of President Pierre Nkurunziza", + "2050-06-20": "Eid al-Fitr (estimated)", "2050-07-01": "Independence Day", "2050-08-15": "Assumption Day", - "2050-08-28": "Eid al Adha (estimated)", - "2050-08-29": "Eid al Adha (estimated) (observed)", - "2050-10-13": "Prince Louis Rwagasore Day", - "2050-10-21": "President Ndadaye's Day", + "2050-08-28": "Eid al-Adha (estimated)", + "2050-08-29": "Eid al-Adha (observed, estimated)", + "2050-10-13": "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + "2050-10-21": "Commemoration of the Assassination of President Melchior Ndadaye", "2050-11-01": "All Saints' Day", "2050-12-25": "Christmas Day", "2050-12-26": "Christmas Day (observed)" diff --git a/tests/countries/test_burundi.py b/tests/countries/test_burundi.py index 46121fe843..1497812aa6 100644 --- a/tests/countries/test_burundi.py +++ b/tests/countries/test_burundi.py @@ -19,7 +19,9 @@ class TestBurundi(CommonCountryTests, TestCase): @classmethod def setUpClass(cls): - super().setUpClass(Burundi, years=range(1962, 2050)) + years = range(1962, 2050) + super().setUpClass(Burundi, years=years, years_non_observed=years) + cls.no_estimated_holidays = Burundi(years=years, islamic_show_estimated=False) def test_country_aliases(self): self.assertAliases(Burundi, BI, BDI) @@ -28,159 +30,295 @@ def test_no_holidays(self): self.assertNoHolidays(Burundi(years=1961)) def test_new_year_day(self): - self.assertHolidayName("New Year's Day", (f"{year}-01-01" for year in range(1962, 2050))) + name = "Jour de l'an" + self.assertHolidayName(name, (f"{year}-01-01" for year in range(1962, 2050))) + obs_dt = ( + "2012-01-02", + "2017-01-02", + "2023-01-02", + ) + self.assertHolidayName(f"{name} (observé)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) def test_unity_day(self): - name = "Unity Day" - self.assertNoHolidayName(name, range(1962, 1992)) + name = "Fête de l'Unité" self.assertHolidayName(name, (f"{year}-02-05" for year in range(1992, 2050))) + self.assertNoHolidayName(name, range(1962, 1992)) + obs_dt = ( + "2012-02-06", + "2017-02-06", + "2023-02-06", + ) + self.assertHolidayName(f"{name} (observé)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) - def test_ntaryamira_day(self): - name = "President Ntaryamira Day" - self.assertNoHolidayName(name, range(1962, 1995)) + def test_commemoration_of_the_assassination_of_president_cyprien_ntaryamira(self): + name = "Commémoration de l'Assassinat du Président Cyprien Ntaryamira" self.assertHolidayName(name, (f"{year}-04-06" for year in range(1995, 2050))) + self.assertNoHolidayName(name, range(1962, 1995)) + obs_dt = ( + "2008-04-07", + "2014-04-07", + "2025-04-07", + ) + self.assertHolidayName(f"{name} (observé)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) - def test_labour_day(self): - self.assertHolidayName("Labour Day", (f"{year}-05-01" for year in range(1962, 2050))) + def test_international_labor_day(self): + name = "Fête Internationale du Travail" + self.assertHolidayName(name, (f"{year}-05-01" for year in range(1962, 2050))) + obs_dt = ( + "2011-05-02", + "2016-05-02", + "2033-05-02", + ) + self.assertHolidayName(f"{name} (observé)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) def test_ascension_day(self): + name = "Jour de l'Ascension" self.assertHolidayName( - "Ascension Day", - "2010-05-13", - "2011-06-02", - "2012-05-17", - "2013-05-09", - "2014-05-29", - "2015-05-14", - "2016-05-05", - "2017-05-25", - "2018-05-10", - "2019-05-30", + name, "2020-05-21", "2021-05-13", "2022-05-26", "2023-05-18", + "2024-05-09", + "2025-05-29", ) + self.assertHolidayName(name, range(1962, 2050)) - def test_nkurunziza_day(self): - name = "President Nkurunziza Day" - self.assertNoHolidayName(name, range(1962, 2022)) + def test_commemoration_of_the_death_of_president_pierre_nkurunziza(self): + name = ( + "Journée Nationale du Patriotisme et Commémoration de la Mort " + "du Président Pierre Nkurunziza" + ) self.assertHolidayName(name, (f"{year}-06-08" for year in range(2022, 2050))) + self.assertNoHolidayName(name, range(1962, 2022)) + obs_dt = ( + "2025-06-09", + "2031-06-09", + "2036-06-09", + ) + self.assertHolidayName(f"{name} (observé)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) def test_independence_day(self): - self.assertHolidayName("Independence Day", (f"{year}-07-01" for year in range(1962, 2050))) + name = "Anniversaire de l'Indépendance" + self.assertHolidayName(name, (f"{year}-07-01" for year in range(1962, 2050))) + obs_dt = ( + "2012-07-02", + "2018-07-02", + "2029-07-02", + ) + self.assertHolidayName(f"{name} (observé)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) def test_assumption_day(self): - self.assertHolidayName("Assumption Day", (f"{year}-08-15" for year in range(1962, 2050))) + name = "Assomption" + self.assertHolidayName(name, (f"{year}-08-15" for year in range(1962, 2050))) + obs_dt = ( + "2010-08-16", + "2021-08-16", + "2027-08-16", + ) + self.assertHolidayName(f"{name} (observé)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) - def test_rwagasore_day(self): - self.assertHolidayName( - "Prince Louis Rwagasore Day", (f"{year}-10-13" for year in range(1962, 2050)) + def test_commemoration_of_the_assassination_of_national_hero_prince_louis_rwagasore(self): + name = "Commémoration de l'Assassinat du Héros National, le Prince Louis Rwagasore" + self.assertHolidayName(name, (f"{year}-10-13" for year in range(1962, 2050))) + obs_dt = ( + "2013-10-14", + "2019-10-14", + "2024-10-14", ) + self.assertHolidayName(f"{name} (observé)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) - def test_ndadaye_day(self): - name = "President Ndadaye's Day" - self.assertNoHolidayName(name, range(1962, 1994)) + def test_commemoration_of_the_assassination_of_president_melchior_ndadaye(self): + name = "Commémoration de l'Assassinat du Président Melchior Ndadaye" self.assertHolidayName(name, (f"{year}-10-21" for year in range(1994, 2050))) + self.assertNoHolidayName(name, range(1962, 1994)) + obs_dt = ( + "2012-10-22", + "2018-10-22", + "2029-10-22", + ) + self.assertHolidayName(f"{name} (observé)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) def test_all_saints_day(self): - self.assertHolidayName("All Saints' Day", (f"{year}-11-01" for year in range(1962, 2050))) + name = "Toussaint" + self.assertHolidayName(name, (f"{year}-11-01" for year in range(1962, 2050))) + obs_dt = ( + "2015-11-02", + "2020-11-02", + "2026-11-02", + ) + self.assertHolidayName(f"{name} (observé)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) def test_christmas_day(self): - self.assertHolidayName("Christmas Day", (f"{year}-12-25" for year in range(1962, 2050))) + name = "Noël" + self.assertHolidayName(name, (f"{year}-12-25" for year in range(1962, 2050))) + obs_dt = ( + "2016-12-26", + "2022-12-26", + "2033-12-26", + ) + self.assertHolidayName(f"{name} (observé)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) - def test_eid_ul_fitr(self): + def test_eid_al_fitr(self): + name = "Aid-El-Fithr" self.assertHolidayName( - "Eid ul Fitr (estimated)", - "2010-09-10", - "2011-08-30", - "2012-08-19", - "2013-08-08", - "2014-07-28", - "2015-07-17", - "2016-07-06", - "2017-06-25", - "2018-06-15", - "2019-06-04", + name, "2020-05-24", "2021-05-13", "2022-05-02", "2023-04-21", + "2024-04-10", + "2025-03-30", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1962, 2050)) + obs_dt = ( + "2020-05-25", + "2025-03-31", ) + self.assertHolidayName(f"{name} (observé)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) def test_eid_al_adha(self): + name = "Aid-El-Adha" self.assertHolidayName( - "Eid al Adha (estimated)", - "2010-11-16", - "2011-11-06", - "2012-10-26", - "2013-10-15", - "2014-10-04", - "2015-09-23", - "2016-09-11", - "2017-09-01", - "2018-08-21", - "2019-08-11", + name, "2020-07-31", "2021-07-20", "2022-07-09", "2023-06-28", + "2024-06-16", + "2025-06-06", ) - - def test_observed(self): - observed_holidays = ( - # New Year's Day - "2012-01-02", - "2017-01-02", - "2023-01-02", - # Unity Day - "2012-02-06", - "2017-02-06", - "2023-02-06", - # President Ntaryamira Day - "2008-04-07", - "2014-04-07", - "2025-04-07", - # Labour Day - "2011-05-02", - "2016-05-02", - "2033-05-02", - # President Nkurunziza Day - "2025-06-09", - "2031-06-09", - "2036-06-09", - # Independence Day - "2012-07-02", - "2018-07-02", - "2029-07-02", - # Assumption Day - "2010-08-16", - "2021-08-16", - "2027-08-16", - # Prince Louis Rwagasore Day - "2013-10-14", - "2019-10-14", - "2024-10-14", - # President Ndadaye's Day - "2012-10-22", - "2018-10-22", - "2029-10-22", - # All Saints' Day - "2015-11-02", - "2020-11-02", - "2026-11-02", - # Christmas Day - "2016-12-26", - "2022-12-26", - "2033-12-26", - # Eid ul Fitr - "2012-08-20", - "2017-06-26", - "2020-05-25", - # Eid al Adha - "2016-09-12", + self.assertHolidayName(name, self.no_estimated_holidays, range(1962, 2050)) + obs_dt = ( "2019-08-12", "2024-06-17", ) - self.assertHoliday(observed_holidays) - self.assertNoNonObservedHoliday(observed_holidays) + self.assertHolidayName(f"{name} (observé)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_2024(self): + self.assertHolidays( + Burundi(years=2024), + ("2024-01-01", "Jour de l'an"), + ("2024-02-05", "Fête de l'Unité"), + ("2024-04-06", "Commémoration de l'Assassinat du Président Cyprien Ntaryamira"), + ("2024-04-10", "Aid-El-Fithr"), + ("2024-05-01", "Fête Internationale du Travail"), + ("2024-05-09", "Jour de l'Ascension"), + ( + "2024-06-08", + ( + "Journée Nationale du Patriotisme et Commémoration de la Mort " + "du Président Pierre Nkurunziza" + ), + ), + ("2024-06-16", "Aid-El-Adha"), + ("2024-06-17", "Aid-El-Adha (observé)"), + ("2024-07-01", "Anniversaire de l'Indépendance"), + ("2024-08-15", "Assomption"), + ( + "2024-10-13", + "Commémoration de l'Assassinat du Héros National, le Prince Louis Rwagasore", + ), + ( + "2024-10-14", + ( + "Commémoration de l'Assassinat du Héros National, " + "le Prince Louis Rwagasore (observé)" + ), + ), + ("2024-10-21", "Commémoration de l'Assassinat du Président Melchior Ndadaye"), + ("2024-11-01", "Toussaint"), + ("2024-12-25", "Noël"), + ) + + def test_l10n_default(self): + self.assertLocalizedHolidays( + ("2025-01-01", "Jour de l'an"), + ("2025-02-05", "Fête de l'Unité"), + ("2025-03-30", "Aid-El-Fithr"), + ("2025-03-31", "Aid-El-Fithr (observé)"), + ("2025-04-06", "Commémoration de l'Assassinat du Président Cyprien Ntaryamira"), + ( + "2025-04-07", + "Commémoration de l'Assassinat du Président Cyprien Ntaryamira (observé)", + ), + ("2025-05-01", "Fête Internationale du Travail"), + ("2025-05-29", "Jour de l'Ascension"), + ("2025-06-06", "Aid-El-Adha"), + ( + "2025-06-08", + ( + "Journée Nationale du Patriotisme et Commémoration de la Mort " + "du Président Pierre Nkurunziza" + ), + ), + ( + "2025-06-09", + ( + "Journée Nationale du Patriotisme et Commémoration de la Mort " + "du Président Pierre Nkurunziza (observé)" + ), + ), + ("2025-07-01", "Anniversaire de l'Indépendance"), + ("2025-08-15", "Assomption"), + ( + "2025-10-13", + "Commémoration de l'Assassinat du Héros National, le Prince Louis Rwagasore", + ), + ("2025-10-21", "Commémoration de l'Assassinat du Président Melchior Ndadaye"), + ("2025-11-01", "Toussaint"), + ("2025-12-25", "Noël"), + ) + + def test_l10n_en_us(self): + self.assertLocalizedHolidays( + "en_US", + ("2025-01-01", "New Year's Day"), + ("2025-02-05", "Unity Day"), + ("2025-03-30", "Eid al-Fitr"), + ("2025-03-31", "Eid al-Fitr (observed)"), + ("2025-04-06", "Commemoration of the Assassination of President Cyprien Ntaryamira"), + ( + "2025-04-07", + "Commemoration of the Assassination of President Cyprien Ntaryamira (observed)", + ), + ("2025-05-01", "International Labor Day"), + ("2025-05-29", "Ascension Day"), + ("2025-06-06", "Eid al-Adha"), + ( + "2025-06-08", + ( + "National Day of Patriotism and Commemoration of the Death of " + "President Pierre Nkurunziza" + ), + ), + ( + "2025-06-09", + ( + "National Day of Patriotism and Commemoration of the Death of " + "President Pierre Nkurunziza (observed)" + ), + ), + ("2025-07-01", "Independence Day"), + ("2025-08-15", "Assumption Day"), + ( + "2025-10-13", + "Commemoration of the Assassination of National Hero, Prince Louis Rwagasore", + ), + ("2025-10-21", "Commemoration of the Assassination of President Melchior Ndadaye"), + ("2025-11-01", "All Saints' Day"), + ("2025-12-25", "Christmas Day"), + ) From c4b527c344adf15a9b046e6361acee2ab9570ea5 Mon Sep 17 00:00:00 2001 From: Prateekshit Jaiswal <67361301+Prateekshit73@users.noreply.github.com> Date: Sun, 24 Aug 2025 00:40:24 +0530 Subject: [PATCH 19/48] Add Rwanda holidays (#2792) Signed-off-by: Prateekshit Jaiswal <67361301+Prateekshit73@users.noreply.github.com> Co-authored-by: Prateekshit --- README.md | 9 +- holidays/countries/__init__.py | 1 + holidays/countries/rwanda.py | 162 ++++++ holidays/locale/en_US/LC_MESSAGES/RW.po | 102 ++++ holidays/locale/fr/LC_MESSAGES/RW.po | 102 ++++ holidays/locale/rw/LC_MESSAGES/RW.po | 102 ++++ holidays/registry.py | 1 + snapshots/countries/RW_COMMON.json | 660 ++++++++++++++++++++++++ tests/countries/test_rwanda.py | 258 +++++++++ 9 files changed, 1396 insertions(+), 1 deletion(-) create mode 100644 holidays/countries/rwanda.py create mode 100644 holidays/locale/en_US/LC_MESSAGES/RW.po create mode 100644 holidays/locale/fr/LC_MESSAGES/RW.po create mode 100644 holidays/locale/rw/LC_MESSAGES/RW.po create mode 100644 snapshots/countries/RW_COMMON.json create mode 100644 tests/countries/test_rwanda.py diff --git a/README.md b/README.md index 074b8038eb..c9f82d8dbf 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ and detailed information. ## Available Countries -We currently support 234 country codes. The standard way to refer to a country is by using its [ISO +We currently support 235 country codes. The standard way to refer to a country is by using its [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes), the same used for domain names, and for a subdivision its [ISO 3166-2 code](https://en.wikipedia.org/wiki/ISO_3166-2). Some countries have common or foreign names or @@ -1379,6 +1379,13 @@ any) in brackets, available languages and additional holiday categories. All cou +Rwanda +RW + +en_US, fr, rw + + + Saint Barthélemy BL Can also be loaded as country FR, subdivision BL diff --git a/holidays/countries/__init__.py b/holidays/countries/__init__.py index a46ea8cc23..ae75746968 100644 --- a/holidays/countries/__init__.py +++ b/holidays/countries/__init__.py @@ -193,6 +193,7 @@ from holidays.countries.reunion import Reunion, RE, REU, HolidaysRE from holidays.countries.romania import Romania, RO, ROU from holidays.countries.russia import Russia, RU, RUS +from holidays.countries.rwanda import Rwanda, RW, RWA from holidays.countries.saint_barthelemy import SaintBarthelemy, BL, BLM, HolidaysBL from holidays.countries.saint_kitts_and_nevis import SaintKittsAndNevis, KN, KNA from holidays.countries.saint_lucia import SaintLucia, LC, LCA diff --git a/holidays/countries/rwanda.py b/holidays/countries/rwanda.py new file mode 100644 index 0000000000..1b53788e80 --- /dev/null +++ b/holidays/countries/rwanda.py @@ -0,0 +1,162 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from datetime import date +from gettext import gettext as tr + +from holidays.calendars import _CustomIslamicHolidays +from holidays.calendars.gregorian import MAR, JUN, JUL, AUG +from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays +from holidays.observed_holiday_base import ( + ObservedHolidayBase, + SAT_TO_NEXT_WORKDAY, + SAT_SUN_TO_NEXT_WORKDAY, +) + + +class Rwanda(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays): + """Rwanda holidays. + + References: + * + * [Presidential Order N° 06/01 of 16/02/2011](https://web.archive.org/web/20250601161219/https://archive.gazettes.africa/archive/rw/2011/rw-government-gazette-dated-2011-03-07-no-10.pdf) + * [Presidential Order N° 42/03 of 30/06/2015](https://web.archive.org/web/20180417062635/http://www.igihe.com/IMG/pdf/iteka_rya_perezida_rigena_iminsi_y_ikiruhuko_rusange.pdf) + * [Presidential Order N° 54/01 of 24/02/2017](https://web.archive.org/web/20220626143357/https://www.ngoma.gov.rw/index.php?eID=dumpFile&t=f&f=44336&token=fc82c76109af7950f8895d40ddd3e15bd8c57e8c) + * [Presidential Order N° 62/01 of 19/10/2022](https://web.archive.org/web/20250815032533/https://mifotra.prod.risa.rw/index.php?eID=dumpFile&t=f&f=85230&token=bcf0bf166638c11f4bf3d2f8c629052db26d38b6) + """ + + country = "RW" + default_language = "rw" + # %s (estimated). + estimated_label = tr("%s (yagereranijwe)") + # %s (observed). + observed_label = tr("%s (yizihijwe)") + # %s (observed, estimated). + observed_estimated_label = tr("%s (yizihijwe, yagereranijwe)") + supported_languages = ("en_US", "fr", "rw") + # Presidential Order N° 06/01 of 16/02/2011. + start_year = 2012 + + def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): + ChristianHolidays.__init__(self) + InternationalHolidays.__init__(self) + IslamicHolidays.__init__( + self, cls=RwandaIslamicHolidays, show_estimated=islamic_show_estimated + ) + kwargs.setdefault("observed_since", 2017) + super().__init__(*args, **kwargs) + + def _populate_observed(self, dts: set[date], multiple: bool = False) -> None: + """ + Applies `SAT_TO_NEXT_WORKDAY` instead of `SAT_SUN_TO_NEXT_WORKDAY` + observed_rule for Day after New Year's Day and Boxing Day. + """ + special_cases = { + # Day after New Year's Day. + self.tr("Umunsi ukurikira Ubunani"), + # Boxing Day. + self.tr("Umunsi ukurikira Noheli"), + } + for dt in sorted(dts): + for name in self.get_list(dt): + self._add_observed( + dt, + name, + SAT_TO_NEXT_WORKDAY if name in special_cases else SAT_SUN_TO_NEXT_WORKDAY, + ) + + def _populate_public_holidays(self): + dts_observed = set() + + # New Year's Day. + dt = self._add_new_years_day(tr("Ubunani")) + if self._year >= 2018: + dts_observed.add(dt) + + # Added via Presidential Order N° 42/03 of 30/06/2015. + if self._year >= 2016: + # Day after New Year's Day. + dts_observed.add(self._add_new_years_day_two(tr("Umunsi ukurikira Ubunani"))) + + # National Heroes' Day. + dts_observed.add(self._add_holiday_feb_1(tr("Umunsi w'Intwari"))) + + # Memorial Day of Genocide perpetrated against the Tutsi in 1994. + self._add_holiday_apr_7(tr("Umunsi wo Kwibuka Jenoside yakorewe Abatutsi mu 1994")) + + # Good Friday. + self._add_good_friday(tr("Umunsi wa Gatanu Mutagatifu")) + + # Added via Presidential Order N° 54/01 of 24/02/2017. + if self._year >= 2017: + # Easter Monday. + self._add_easter_monday(tr("Ku wa mbere wa Pasika")) + + # Labor Day. + dts_observed.add(self._add_labor_day(tr("Umunsi Mukuru w'Umurimo"))) + + # Independence Day. + dts_observed.add(self._add_holiday_jul_1(tr("Umunsi w'Ubwigenge"))) + + # Liberation Day. + dts_observed.add(self._add_holiday_jul_4(tr("Umunsi wo Kwibohora"))) + + # Added via Presidential Order N° 42/03 of 30/06/2015. + if self._year >= 2015: + # Umuganura Day. + self._add_holiday_1st_fri_of_aug(tr("Umunsi w'Umuganura")) + + # Assumption Day. + dts_observed.add(self._add_assumption_of_mary_day(tr("Ijyanwa mu Ijuru rya Bikiramariya"))) + + # Christmas Day. + dts_observed.add(self._add_christmas_day(tr("Noheli"))) + + # Boxing Day. + dts_observed.add(self._add_christmas_day_two(tr("Umunsi ukurikira Noheli"))) + + # Eid al-Fitr. + dts_observed.update(self._add_eid_al_fitr_day(tr("Eid El Fitr"))) + + # Added via Presidential Order N° 42/03 of 30/06/2015. + if self._year >= 2015: + # Eid al-Adha. + dts_observed.update(self._add_eid_al_adha_day(tr("Eid al-Adha"))) + + if self.observed: + self._populate_observed(dts_observed) + + +class RW(Rwanda): + pass + + +class RWA(Rwanda): + pass + + +class RwandaIslamicHolidays(_CustomIslamicHolidays): + EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2018, 2025) + EID_AL_ADHA_DATES = { + 2018: (AUG, 22), + 2019: (AUG, 12), + 2022: (JUL, 11), + } + + EID_AL_FITR_DATES_CONFIRMED_YEARS = (2012, 2025) + EID_AL_FITR_DATES = { + 2014: (JUL, 29), + 2015: (JUL, 18), + 2016: (JUL, 7), + 2017: (JUN, 26), + 2025: (MAR, 31), + } diff --git a/holidays/locale/en_US/LC_MESSAGES/RW.po b/holidays/locale/en_US/LC_MESSAGES/RW.po new file mode 100644 index 0000000000..481f709e12 --- /dev/null +++ b/holidays/locale/en_US/LC_MESSAGES/RW.po @@ -0,0 +1,102 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# Rwanda holidays en_US localization. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.80\n" +"POT-Creation-Date: 2025-08-07 14:18+0530\n" +"PO-Revision-Date: 2025-08-07 14:18+0530\n" +"Last-Translator: Prateekshit Jaiswal \n" +"Language-Team: Holidays Localization Team\n" +"Language: en_US\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Source-Language: rw\n" + +#. %s (estimated). +#, c-format +msgid "%s (yagereranijwe)" +msgstr "%s (estimated)" + +#. %s (observed). +#, c-format +msgid "%s (yizihijwe)" +msgstr "%s (observed)" + +#. %s (observed, estimated). +#, c-format +msgid "%s (yizihijwe, yagereranijwe)" +msgstr "%s (observed, estimated)" + +#. Day after New Year's Day. +msgid "Umunsi ukurikira Ubunani" +msgstr "Day after New Year's Day" + +#. Boxing Day. +msgid "Umunsi ukurikira Noheli" +msgstr "Boxing Day" + +#. New Year's Day. +msgid "Ubunani" +msgstr "New Year's Day" + +#. National Heroes' Day. +msgid "Umunsi w'Intwari" +msgstr "National Heroes' Day" + +#. Memorial Day of Genocide perpetrated against the Tutsi in 1994. +msgid "Umunsi wo Kwibuka Jenoside yakorewe Abatutsi mu 1994" +msgstr "Memorial Day of Genocide perpetrated against the Tutsi in 1994" + +#. Good Friday. +msgid "Umunsi wa Gatanu Mutagatifu" +msgstr "Good Friday" + +#. Easter Monday. +msgid "Ku wa mbere wa Pasika" +msgstr "Easter Monday" + +#. Labor Day. +msgid "Umunsi Mukuru w'Umurimo" +msgstr "Labor Day" + +#. Independence Day. +msgid "Umunsi w'Ubwigenge" +msgstr "Independence Day" + +#. Liberation Day. +msgid "Umunsi wo Kwibohora" +msgstr "Liberation Day" + +#. Umuganura Day. +msgid "Umunsi w'Umuganura" +msgstr "Umuganura Day" + +#. Assumption Day. +msgid "Ijyanwa mu Ijuru rya Bikiramariya" +msgstr "Assumption Day" + +#. Christmas Day. +msgid "Noheli" +msgstr "Christmas Day" + +#. Eid al-Fitr. +msgid "Eid El Fitr" +msgstr "Eid al-Fitr" + +#. Eid al-Adha. +msgid "Eid al-Adha" +msgstr "Eid al-Adha" diff --git a/holidays/locale/fr/LC_MESSAGES/RW.po b/holidays/locale/fr/LC_MESSAGES/RW.po new file mode 100644 index 0000000000..5affa4d3d5 --- /dev/null +++ b/holidays/locale/fr/LC_MESSAGES/RW.po @@ -0,0 +1,102 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# Rwanda holidays fr localization. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.80\n" +"POT-Creation-Date: 2025-08-07 14:18+0530\n" +"PO-Revision-Date: 2025-08-07 14:18+0530\n" +"Last-Translator: Prateekshit Jaiswal \n" +"Language-Team: Holidays Localization Team\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Source-Language: rw\n" + +#. %s (estimated). +#, c-format +msgid "%s (yagereranijwe)" +msgstr "%s (estimé)" + +#. %s (observed). +#, c-format +msgid "%s (yizihijwe)" +msgstr "%s (observé)" + +#. %s (observed, estimated). +#, c-format +msgid "%s (yizihijwe, yagereranijwe)" +msgstr "%s (observé, estimé)" + +#. Day after New Year's Day. +msgid "Umunsi ukurikira Ubunani" +msgstr "Le lendemain du Nouvel An" + +#. Boxing Day. +msgid "Umunsi ukurikira Noheli" +msgstr "Le lendemain de Noël" + +#. New Year's Day. +msgid "Ubunani" +msgstr "Nouvel An" + +#. National Heroes' Day. +msgid "Umunsi w'Intwari" +msgstr "Journée Nationale des Héros" + +#. Memorial Day of Genocide perpetrated against the Tutsi in 1994. +msgid "Umunsi wo Kwibuka Jenoside yakorewe Abatutsi mu 1994" +msgstr "Journée commémorative du Génocide perpétré contre les Tutsi en 1994" + +#. Good Friday. +msgid "Umunsi wa Gatanu Mutagatifu" +msgstr "Vendredi Saint" + +#. Easter Monday. +msgid "Ku wa mbere wa Pasika" +msgstr "Lundi de Pâques" + +#. Labor Day. +msgid "Umunsi Mukuru w'Umurimo" +msgstr "Journée du Travail" + +#. Independence Day. +msgid "Umunsi w'Ubwigenge" +msgstr "Journée de l'Indépendance" + +#. Liberation Day. +msgid "Umunsi wo Kwibohora" +msgstr "Journée de la Libération" + +#. Umuganura Day. +msgid "Umunsi w'Umuganura" +msgstr "Journée d'Umuganura" + +#. Assumption Day. +msgid "Ijyanwa mu Ijuru rya Bikiramariya" +msgstr "Assomption" + +#. Christmas Day. +msgid "Noheli" +msgstr "Noël" + +#. Eid al-Fitr. +msgid "Eid El Fitr" +msgstr "Aïd el-Fitr" + +#. Eid al-Adha. +msgid "Eid al-Adha" +msgstr "Aïd al-Adha" diff --git a/holidays/locale/rw/LC_MESSAGES/RW.po b/holidays/locale/rw/LC_MESSAGES/RW.po new file mode 100644 index 0000000000..554da0d3aa --- /dev/null +++ b/holidays/locale/rw/LC_MESSAGES/RW.po @@ -0,0 +1,102 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# Rwanda holidays. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.80\n" +"POT-Creation-Date: 2025-08-07 14:18+0530\n" +"PO-Revision-Date: 2025-08-07 14:18+0530\n" +"Last-Translator: Prateekshit Jaiswal \n" +"Language-Team: Holidays Localization Team\n" +"Language: rw\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Source-Language: rw\n" + +#. %s (estimated). +#, c-format +msgid "%s (yagereranijwe)" +msgstr "" + +#. %s (observed). +#, c-format +msgid "%s (yizihijwe)" +msgstr "" + +#. %s (observed, estimated). +#, c-format +msgid "%s (yizihijwe, yagereranijwe)" +msgstr "" + +#. Day after New Year's Day. +msgid "Umunsi ukurikira Ubunani" +msgstr "" + +#. Boxing Day. +msgid "Umunsi ukurikira Noheli" +msgstr "" + +#. New Year's Day. +msgid "Ubunani" +msgstr "" + +#. National Heroes' Day. +msgid "Umunsi w'Intwari" +msgstr "" + +#. Memorial Day of Genocide perpetrated against the Tutsi in 1994. +msgid "Umunsi wo Kwibuka Jenoside yakorewe Abatutsi mu 1994" +msgstr "" + +#. Good Friday. +msgid "Umunsi wa Gatanu Mutagatifu" +msgstr "" + +#. Easter Monday. +msgid "Ku wa mbere wa Pasika" +msgstr "" + +#. Labor Day. +msgid "Umunsi Mukuru w'Umurimo" +msgstr "" + +#. Independence Day. +msgid "Umunsi w'Ubwigenge" +msgstr "" + +#. Liberation Day. +msgid "Umunsi wo Kwibohora" +msgstr "" + +#. Umuganura Day. +msgid "Umunsi w'Umuganura" +msgstr "" + +#. Assumption Day. +msgid "Ijyanwa mu Ijuru rya Bikiramariya" +msgstr "" + +#. Christmas Day. +msgid "Noheli" +msgstr "" + +#. Eid al-Fitr. +msgid "Eid El Fitr" +msgstr "" + +#. Eid al-Adha. +msgid "Eid al-Adha" +msgstr "" diff --git a/holidays/registry.py b/holidays/registry.py index da518ebba1..c4df17260f 100644 --- a/holidays/registry.py +++ b/holidays/registry.py @@ -196,6 +196,7 @@ "reunion": ("Reunion", "RE", "REU", "HolidaysRE"), "romania": ("Romania", "RO", "ROU"), "russia": ("Russia", "RU", "RUS"), + "rwanda": ("Rwanda", "RW", "RWA"), "saint_barthelemy": ("SaintBarthelemy", "BL", "BLM", "HolidaysBL"), "saint_kitts_and_nevis": ("SaintKittsAndNevis", "KN", "KNA"), "saint_lucia": ("SaintLucia", "LC", "LCA"), diff --git a/snapshots/countries/RW_COMMON.json b/snapshots/countries/RW_COMMON.json new file mode 100644 index 0000000000..3968f3dfcf --- /dev/null +++ b/snapshots/countries/RW_COMMON.json @@ -0,0 +1,660 @@ +{ + "2012-01-01": "New Year's Day", + "2012-02-01": "National Heroes' Day", + "2012-04-06": "Good Friday", + "2012-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2012-05-01": "Labor Day", + "2012-07-01": "Independence Day", + "2012-07-04": "Liberation Day", + "2012-08-15": "Assumption Day", + "2012-08-19": "Eid al-Fitr", + "2012-12-25": "Christmas Day", + "2012-12-26": "Boxing Day", + "2013-01-01": "New Year's Day", + "2013-02-01": "National Heroes' Day", + "2013-03-29": "Good Friday", + "2013-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2013-05-01": "Labor Day", + "2013-07-01": "Independence Day", + "2013-07-04": "Liberation Day", + "2013-08-08": "Eid al-Fitr", + "2013-08-15": "Assumption Day", + "2013-12-25": "Christmas Day", + "2013-12-26": "Boxing Day", + "2014-01-01": "New Year's Day", + "2014-02-01": "National Heroes' Day", + "2014-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2014-04-18": "Good Friday", + "2014-05-01": "Labor Day", + "2014-07-01": "Independence Day", + "2014-07-04": "Liberation Day", + "2014-07-29": "Eid al-Fitr", + "2014-08-15": "Assumption Day", + "2014-12-25": "Christmas Day", + "2014-12-26": "Boxing Day", + "2015-01-01": "New Year's Day", + "2015-02-01": "National Heroes' Day", + "2015-04-03": "Good Friday", + "2015-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2015-05-01": "Labor Day", + "2015-07-01": "Independence Day", + "2015-07-04": "Liberation Day", + "2015-07-18": "Eid al-Fitr", + "2015-08-07": "Umuganura Day", + "2015-08-15": "Assumption Day", + "2015-09-23": "Eid al-Adha (estimated)", + "2015-12-25": "Christmas Day", + "2015-12-26": "Boxing Day", + "2016-01-01": "New Year's Day", + "2016-01-02": "Day after New Year's Day", + "2016-02-01": "National Heroes' Day", + "2016-03-25": "Good Friday", + "2016-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2016-05-01": "Labor Day", + "2016-07-01": "Independence Day", + "2016-07-04": "Liberation Day", + "2016-07-07": "Eid al-Fitr", + "2016-08-05": "Umuganura Day", + "2016-08-15": "Assumption Day", + "2016-09-11": "Eid al-Adha (estimated)", + "2016-12-25": "Christmas Day", + "2016-12-26": "Boxing Day", + "2017-01-01": "New Year's Day", + "2017-01-02": "Day after New Year's Day", + "2017-02-01": "National Heroes' Day", + "2017-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2017-04-14": "Good Friday", + "2017-04-17": "Easter Monday", + "2017-05-01": "Labor Day", + "2017-06-26": "Eid al-Fitr", + "2017-07-01": "Independence Day", + "2017-07-03": "Independence Day (observed)", + "2017-07-04": "Liberation Day", + "2017-08-04": "Umuganura Day", + "2017-08-15": "Assumption Day", + "2017-09-01": "Eid al-Adha (estimated)", + "2017-12-25": "Christmas Day", + "2017-12-26": "Boxing Day", + "2018-01-01": "New Year's Day", + "2018-01-02": "Day after New Year's Day", + "2018-02-01": "National Heroes' Day", + "2018-03-30": "Good Friday", + "2018-04-02": "Easter Monday", + "2018-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2018-05-01": "Labor Day", + "2018-06-15": "Eid al-Fitr", + "2018-07-01": "Independence Day", + "2018-07-02": "Independence Day (observed)", + "2018-07-04": "Liberation Day", + "2018-08-03": "Umuganura Day", + "2018-08-15": "Assumption Day", + "2018-08-22": "Eid al-Adha", + "2018-12-25": "Christmas Day", + "2018-12-26": "Boxing Day", + "2019-01-01": "New Year's Day", + "2019-01-02": "Day after New Year's Day", + "2019-02-01": "National Heroes' Day", + "2019-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2019-04-19": "Good Friday", + "2019-04-22": "Easter Monday", + "2019-05-01": "Labor Day", + "2019-06-04": "Eid al-Fitr", + "2019-07-01": "Independence Day", + "2019-07-04": "Liberation Day", + "2019-08-02": "Umuganura Day", + "2019-08-12": "Eid al-Adha", + "2019-08-15": "Assumption Day", + "2019-12-25": "Christmas Day", + "2019-12-26": "Boxing Day", + "2020-01-01": "New Year's Day", + "2020-01-02": "Day after New Year's Day", + "2020-02-01": "National Heroes' Day", + "2020-02-03": "National Heroes' Day (observed)", + "2020-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2020-04-10": "Good Friday", + "2020-04-13": "Easter Monday", + "2020-05-01": "Labor Day", + "2020-05-24": "Eid al-Fitr", + "2020-05-25": "Eid al-Fitr (observed)", + "2020-07-01": "Independence Day", + "2020-07-04": "Liberation Day", + "2020-07-06": "Liberation Day (observed)", + "2020-07-31": "Eid al-Adha", + "2020-08-07": "Umuganura Day", + "2020-08-15": "Assumption Day", + "2020-08-17": "Assumption Day (observed)", + "2020-12-25": "Christmas Day", + "2020-12-26": "Boxing Day", + "2020-12-28": "Boxing Day (observed)", + "2021-01-01": "New Year's Day", + "2021-01-02": "Day after New Year's Day", + "2021-01-04": "Day after New Year's Day (observed)", + "2021-02-01": "National Heroes' Day", + "2021-04-02": "Good Friday", + "2021-04-05": "Easter Monday", + "2021-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2021-05-01": "Labor Day", + "2021-05-03": "Labor Day (observed)", + "2021-05-13": "Eid al-Fitr", + "2021-07-01": "Independence Day", + "2021-07-04": "Liberation Day", + "2021-07-05": "Liberation Day (observed)", + "2021-07-20": "Eid al-Adha", + "2021-08-06": "Umuganura Day", + "2021-08-15": "Assumption Day", + "2021-08-16": "Assumption Day (observed)", + "2021-12-25": "Christmas Day", + "2021-12-26": "Boxing Day", + "2021-12-27": "Christmas Day (observed)", + "2022-01-01": "New Year's Day", + "2022-01-02": "Day after New Year's Day", + "2022-01-03": "New Year's Day (observed)", + "2022-02-01": "National Heroes' Day", + "2022-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2022-04-15": "Good Friday", + "2022-04-18": "Easter Monday", + "2022-05-01": "Labor Day", + "2022-05-02": "Eid al-Fitr", + "2022-05-03": "Labor Day (observed)", + "2022-07-01": "Independence Day", + "2022-07-04": "Liberation Day", + "2022-07-11": "Eid al-Adha", + "2022-08-05": "Umuganura Day", + "2022-08-15": "Assumption Day", + "2022-12-25": "Christmas Day", + "2022-12-26": "Boxing Day", + "2022-12-27": "Christmas Day (observed)", + "2023-01-01": "New Year's Day", + "2023-01-02": "Day after New Year's Day", + "2023-01-03": "New Year's Day (observed)", + "2023-02-01": "National Heroes' Day", + "2023-04-07": "Good Friday; Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2023-04-10": "Easter Monday", + "2023-04-21": "Eid al-Fitr", + "2023-05-01": "Labor Day", + "2023-06-28": "Eid al-Adha", + "2023-07-01": "Independence Day", + "2023-07-03": "Independence Day (observed)", + "2023-07-04": "Liberation Day", + "2023-08-04": "Umuganura Day", + "2023-08-15": "Assumption Day", + "2023-12-25": "Christmas Day", + "2023-12-26": "Boxing Day", + "2024-01-01": "New Year's Day", + "2024-01-02": "Day after New Year's Day", + "2024-02-01": "National Heroes' Day", + "2024-03-29": "Good Friday", + "2024-04-01": "Easter Monday", + "2024-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2024-04-10": "Eid al-Fitr", + "2024-05-01": "Labor Day", + "2024-06-16": "Eid al-Adha", + "2024-06-17": "Eid al-Adha (observed)", + "2024-07-01": "Independence Day", + "2024-07-04": "Liberation Day", + "2024-08-02": "Umuganura Day", + "2024-08-15": "Assumption Day", + "2024-12-25": "Christmas Day", + "2024-12-26": "Boxing Day", + "2025-01-01": "New Year's Day", + "2025-01-02": "Day after New Year's Day", + "2025-02-01": "National Heroes' Day", + "2025-02-03": "National Heroes' Day (observed)", + "2025-03-31": "Eid al-Fitr", + "2025-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2025-04-18": "Good Friday", + "2025-04-21": "Easter Monday", + "2025-05-01": "Labor Day", + "2025-06-06": "Eid al-Adha", + "2025-07-01": "Independence Day", + "2025-07-04": "Liberation Day", + "2025-08-01": "Umuganura Day", + "2025-08-15": "Assumption Day", + "2025-12-25": "Christmas Day", + "2025-12-26": "Boxing Day", + "2026-01-01": "New Year's Day", + "2026-01-02": "Day after New Year's Day", + "2026-02-01": "National Heroes' Day", + "2026-02-02": "National Heroes' Day (observed)", + "2026-03-20": "Eid al-Fitr (estimated)", + "2026-04-03": "Good Friday", + "2026-04-06": "Easter Monday", + "2026-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2026-05-01": "Labor Day", + "2026-05-27": "Eid al-Adha (estimated)", + "2026-07-01": "Independence Day", + "2026-07-04": "Liberation Day", + "2026-07-06": "Liberation Day (observed)", + "2026-08-07": "Umuganura Day", + "2026-08-15": "Assumption Day", + "2026-08-17": "Assumption Day (observed)", + "2026-12-25": "Christmas Day", + "2026-12-26": "Boxing Day", + "2026-12-28": "Boxing Day (observed)", + "2027-01-01": "New Year's Day", + "2027-01-02": "Day after New Year's Day", + "2027-01-04": "Day after New Year's Day (observed)", + "2027-02-01": "National Heroes' Day", + "2027-03-09": "Eid al-Fitr (estimated)", + "2027-03-26": "Good Friday", + "2027-03-29": "Easter Monday", + "2027-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2027-05-01": "Labor Day", + "2027-05-03": "Labor Day (observed)", + "2027-05-16": "Eid al-Adha (estimated)", + "2027-05-17": "Eid al-Adha (observed, estimated)", + "2027-07-01": "Independence Day", + "2027-07-04": "Liberation Day", + "2027-07-05": "Liberation Day (observed)", + "2027-08-06": "Umuganura Day", + "2027-08-15": "Assumption Day", + "2027-08-16": "Assumption Day (observed)", + "2027-12-25": "Christmas Day", + "2027-12-26": "Boxing Day", + "2027-12-27": "Christmas Day (observed)", + "2028-01-01": "New Year's Day", + "2028-01-02": "Day after New Year's Day", + "2028-01-03": "New Year's Day (observed)", + "2028-02-01": "National Heroes' Day", + "2028-02-26": "Eid al-Fitr (estimated)", + "2028-02-28": "Eid al-Fitr (observed, estimated)", + "2028-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2028-04-14": "Good Friday", + "2028-04-17": "Easter Monday", + "2028-05-01": "Labor Day", + "2028-05-05": "Eid al-Adha (estimated)", + "2028-07-01": "Independence Day", + "2028-07-03": "Independence Day (observed)", + "2028-07-04": "Liberation Day", + "2028-08-04": "Umuganura Day", + "2028-08-15": "Assumption Day", + "2028-12-25": "Christmas Day", + "2028-12-26": "Boxing Day", + "2029-01-01": "New Year's Day", + "2029-01-02": "Day after New Year's Day", + "2029-02-01": "National Heroes' Day", + "2029-02-14": "Eid al-Fitr (estimated)", + "2029-03-30": "Good Friday", + "2029-04-02": "Easter Monday", + "2029-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2029-04-24": "Eid al-Adha (estimated)", + "2029-05-01": "Labor Day", + "2029-07-01": "Independence Day", + "2029-07-02": "Independence Day (observed)", + "2029-07-04": "Liberation Day", + "2029-08-03": "Umuganura Day", + "2029-08-15": "Assumption Day", + "2029-12-25": "Christmas Day", + "2029-12-26": "Boxing Day", + "2030-01-01": "New Year's Day", + "2030-01-02": "Day after New Year's Day", + "2030-02-01": "National Heroes' Day", + "2030-02-04": "Eid al-Fitr (estimated)", + "2030-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2030-04-13": "Eid al-Adha (estimated)", + "2030-04-15": "Eid al-Adha (observed, estimated)", + "2030-04-19": "Good Friday", + "2030-04-22": "Easter Monday", + "2030-05-01": "Labor Day", + "2030-07-01": "Independence Day", + "2030-07-04": "Liberation Day", + "2030-08-02": "Umuganura Day", + "2030-08-15": "Assumption Day", + "2030-12-25": "Christmas Day", + "2030-12-26": "Boxing Day", + "2031-01-01": "New Year's Day", + "2031-01-02": "Day after New Year's Day", + "2031-01-24": "Eid al-Fitr (estimated)", + "2031-02-01": "National Heroes' Day", + "2031-02-03": "National Heroes' Day (observed)", + "2031-04-02": "Eid al-Adha (estimated)", + "2031-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2031-04-11": "Good Friday", + "2031-04-14": "Easter Monday", + "2031-05-01": "Labor Day", + "2031-07-01": "Independence Day", + "2031-07-04": "Liberation Day", + "2031-08-01": "Umuganura Day", + "2031-08-15": "Assumption Day", + "2031-12-25": "Christmas Day", + "2031-12-26": "Boxing Day", + "2032-01-01": "New Year's Day", + "2032-01-02": "Day after New Year's Day", + "2032-01-14": "Eid al-Fitr (estimated)", + "2032-02-01": "National Heroes' Day", + "2032-02-02": "National Heroes' Day (observed)", + "2032-03-22": "Eid al-Adha (estimated)", + "2032-03-26": "Good Friday", + "2032-03-29": "Easter Monday", + "2032-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2032-05-01": "Labor Day", + "2032-05-03": "Labor Day (observed)", + "2032-07-01": "Independence Day", + "2032-07-04": "Liberation Day", + "2032-07-05": "Liberation Day (observed)", + "2032-08-06": "Umuganura Day", + "2032-08-15": "Assumption Day", + "2032-08-16": "Assumption Day (observed)", + "2032-12-25": "Christmas Day", + "2032-12-26": "Boxing Day", + "2032-12-27": "Christmas Day (observed)", + "2033-01-01": "New Year's Day", + "2033-01-02": "Day after New Year's Day; Eid al-Fitr (estimated)", + "2033-01-03": "New Year's Day (observed)", + "2033-01-04": "Eid al-Fitr (observed, estimated)", + "2033-02-01": "National Heroes' Day", + "2033-03-11": "Eid al-Adha (estimated)", + "2033-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2033-04-15": "Good Friday", + "2033-04-18": "Easter Monday", + "2033-05-01": "Labor Day", + "2033-05-02": "Labor Day (observed)", + "2033-07-01": "Independence Day", + "2033-07-04": "Liberation Day", + "2033-08-05": "Umuganura Day", + "2033-08-15": "Assumption Day", + "2033-12-23": "Eid al-Fitr (estimated)", + "2033-12-25": "Christmas Day", + "2033-12-26": "Boxing Day", + "2033-12-27": "Christmas Day (observed)", + "2034-01-01": "New Year's Day", + "2034-01-02": "Day after New Year's Day", + "2034-01-03": "New Year's Day (observed)", + "2034-02-01": "National Heroes' Day", + "2034-03-01": "Eid al-Adha (estimated)", + "2034-04-07": "Good Friday; Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2034-04-10": "Easter Monday", + "2034-05-01": "Labor Day", + "2034-07-01": "Independence Day", + "2034-07-03": "Independence Day (observed)", + "2034-07-04": "Liberation Day", + "2034-08-04": "Umuganura Day", + "2034-08-15": "Assumption Day", + "2034-12-12": "Eid al-Fitr (estimated)", + "2034-12-25": "Christmas Day", + "2034-12-26": "Boxing Day", + "2035-01-01": "New Year's Day", + "2035-01-02": "Day after New Year's Day", + "2035-02-01": "National Heroes' Day", + "2035-02-18": "Eid al-Adha (estimated)", + "2035-02-19": "Eid al-Adha (observed, estimated)", + "2035-03-23": "Good Friday", + "2035-03-26": "Easter Monday", + "2035-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2035-05-01": "Labor Day", + "2035-07-01": "Independence Day", + "2035-07-02": "Independence Day (observed)", + "2035-07-04": "Liberation Day", + "2035-08-03": "Umuganura Day", + "2035-08-15": "Assumption Day", + "2035-12-01": "Eid al-Fitr (estimated)", + "2035-12-03": "Eid al-Fitr (observed, estimated)", + "2035-12-25": "Christmas Day", + "2035-12-26": "Boxing Day", + "2036-01-01": "New Year's Day", + "2036-01-02": "Day after New Year's Day", + "2036-02-01": "National Heroes' Day", + "2036-02-07": "Eid al-Adha (estimated)", + "2036-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2036-04-11": "Good Friday", + "2036-04-14": "Easter Monday", + "2036-05-01": "Labor Day", + "2036-07-01": "Independence Day", + "2036-07-04": "Liberation Day", + "2036-08-01": "Umuganura Day", + "2036-08-15": "Assumption Day", + "2036-11-19": "Eid al-Fitr (estimated)", + "2036-12-25": "Christmas Day", + "2036-12-26": "Boxing Day", + "2037-01-01": "New Year's Day", + "2037-01-02": "Day after New Year's Day", + "2037-01-26": "Eid al-Adha (estimated)", + "2037-02-01": "National Heroes' Day", + "2037-02-02": "National Heroes' Day (observed)", + "2037-04-03": "Good Friday", + "2037-04-06": "Easter Monday", + "2037-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2037-05-01": "Labor Day", + "2037-07-01": "Independence Day", + "2037-07-04": "Liberation Day", + "2037-07-06": "Liberation Day (observed)", + "2037-08-07": "Umuganura Day", + "2037-08-15": "Assumption Day", + "2037-08-17": "Assumption Day (observed)", + "2037-11-08": "Eid al-Fitr (estimated)", + "2037-11-09": "Eid al-Fitr (observed, estimated)", + "2037-12-25": "Christmas Day", + "2037-12-26": "Boxing Day", + "2037-12-28": "Boxing Day (observed)", + "2038-01-01": "New Year's Day", + "2038-01-02": "Day after New Year's Day", + "2038-01-04": "Day after New Year's Day (observed)", + "2038-01-16": "Eid al-Adha (estimated)", + "2038-01-18": "Eid al-Adha (observed, estimated)", + "2038-02-01": "National Heroes' Day", + "2038-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2038-04-23": "Good Friday", + "2038-04-26": "Easter Monday", + "2038-05-01": "Labor Day", + "2038-05-03": "Labor Day (observed)", + "2038-07-01": "Independence Day", + "2038-07-04": "Liberation Day", + "2038-07-05": "Liberation Day (observed)", + "2038-08-06": "Umuganura Day", + "2038-08-15": "Assumption Day", + "2038-08-16": "Assumption Day (observed)", + "2038-10-29": "Eid al-Fitr (estimated)", + "2038-12-25": "Christmas Day", + "2038-12-26": "Boxing Day", + "2038-12-27": "Christmas Day (observed)", + "2039-01-01": "New Year's Day", + "2039-01-02": "Day after New Year's Day", + "2039-01-03": "New Year's Day (observed)", + "2039-01-05": "Eid al-Adha (estimated)", + "2039-02-01": "National Heroes' Day", + "2039-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2039-04-08": "Good Friday", + "2039-04-11": "Easter Monday", + "2039-05-01": "Labor Day", + "2039-05-02": "Labor Day (observed)", + "2039-07-01": "Independence Day", + "2039-07-04": "Liberation Day", + "2039-08-05": "Umuganura Day", + "2039-08-15": "Assumption Day", + "2039-10-19": "Eid al-Fitr (estimated)", + "2039-12-25": "Christmas Day", + "2039-12-26": "Boxing Day; Eid al-Adha (estimated)", + "2039-12-27": "Christmas Day (observed)", + "2040-01-01": "New Year's Day", + "2040-01-02": "Day after New Year's Day", + "2040-01-03": "New Year's Day (observed)", + "2040-02-01": "National Heroes' Day", + "2040-03-30": "Good Friday", + "2040-04-02": "Easter Monday", + "2040-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2040-05-01": "Labor Day", + "2040-07-01": "Independence Day", + "2040-07-02": "Independence Day (observed)", + "2040-07-04": "Liberation Day", + "2040-08-03": "Umuganura Day", + "2040-08-15": "Assumption Day", + "2040-10-07": "Eid al-Fitr (estimated)", + "2040-10-08": "Eid al-Fitr (observed, estimated)", + "2040-12-14": "Eid al-Adha (estimated)", + "2040-12-25": "Christmas Day", + "2040-12-26": "Boxing Day", + "2041-01-01": "New Year's Day", + "2041-01-02": "Day after New Year's Day", + "2041-02-01": "National Heroes' Day", + "2041-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2041-04-19": "Good Friday", + "2041-04-22": "Easter Monday", + "2041-05-01": "Labor Day", + "2041-07-01": "Independence Day", + "2041-07-04": "Liberation Day", + "2041-08-02": "Umuganura Day", + "2041-08-15": "Assumption Day", + "2041-09-26": "Eid al-Fitr (estimated)", + "2041-12-04": "Eid al-Adha (estimated)", + "2041-12-25": "Christmas Day", + "2041-12-26": "Boxing Day", + "2042-01-01": "New Year's Day", + "2042-01-02": "Day after New Year's Day", + "2042-02-01": "National Heroes' Day", + "2042-02-03": "National Heroes' Day (observed)", + "2042-04-04": "Good Friday", + "2042-04-07": "Easter Monday; Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2042-05-01": "Labor Day", + "2042-07-01": "Independence Day", + "2042-07-04": "Liberation Day", + "2042-08-01": "Umuganura Day", + "2042-08-15": "Assumption Day", + "2042-09-15": "Eid al-Fitr (estimated)", + "2042-11-23": "Eid al-Adha (estimated)", + "2042-11-24": "Eid al-Adha (observed, estimated)", + "2042-12-25": "Christmas Day", + "2042-12-26": "Boxing Day", + "2043-01-01": "New Year's Day", + "2043-01-02": "Day after New Year's Day", + "2043-02-01": "National Heroes' Day", + "2043-02-02": "National Heroes' Day (observed)", + "2043-03-27": "Good Friday", + "2043-03-30": "Easter Monday", + "2043-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2043-05-01": "Labor Day", + "2043-07-01": "Independence Day", + "2043-07-04": "Liberation Day", + "2043-07-06": "Liberation Day (observed)", + "2043-08-07": "Umuganura Day", + "2043-08-15": "Assumption Day", + "2043-08-17": "Assumption Day (observed)", + "2043-09-04": "Eid al-Fitr (estimated)", + "2043-11-12": "Eid al-Adha (estimated)", + "2043-12-25": "Christmas Day", + "2043-12-26": "Boxing Day", + "2043-12-28": "Boxing Day (observed)", + "2044-01-01": "New Year's Day", + "2044-01-02": "Day after New Year's Day", + "2044-01-04": "Day after New Year's Day (observed)", + "2044-02-01": "National Heroes' Day", + "2044-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2044-04-15": "Good Friday", + "2044-04-18": "Easter Monday", + "2044-05-01": "Labor Day", + "2044-05-02": "Labor Day (observed)", + "2044-07-01": "Independence Day", + "2044-07-04": "Liberation Day", + "2044-08-05": "Umuganura Day", + "2044-08-15": "Assumption Day", + "2044-08-24": "Eid al-Fitr (estimated)", + "2044-10-31": "Eid al-Adha (estimated)", + "2044-12-25": "Christmas Day", + "2044-12-26": "Boxing Day", + "2044-12-27": "Christmas Day (observed)", + "2045-01-01": "New Year's Day", + "2045-01-02": "Day after New Year's Day", + "2045-01-03": "New Year's Day (observed)", + "2045-02-01": "National Heroes' Day", + "2045-04-07": "Good Friday; Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2045-04-10": "Easter Monday", + "2045-05-01": "Labor Day", + "2045-07-01": "Independence Day", + "2045-07-03": "Independence Day (observed)", + "2045-07-04": "Liberation Day", + "2045-08-04": "Umuganura Day", + "2045-08-14": "Eid al-Fitr (estimated)", + "2045-08-15": "Assumption Day", + "2045-10-21": "Eid al-Adha (estimated)", + "2045-10-23": "Eid al-Adha (observed, estimated)", + "2045-12-25": "Christmas Day", + "2045-12-26": "Boxing Day", + "2046-01-01": "New Year's Day", + "2046-01-02": "Day after New Year's Day", + "2046-02-01": "National Heroes' Day", + "2046-03-23": "Good Friday", + "2046-03-26": "Easter Monday", + "2046-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2046-05-01": "Labor Day", + "2046-07-01": "Independence Day", + "2046-07-02": "Independence Day (observed)", + "2046-07-04": "Liberation Day", + "2046-08-03": "Eid al-Fitr (estimated); Umuganura Day", + "2046-08-15": "Assumption Day", + "2046-10-10": "Eid al-Adha (estimated)", + "2046-12-25": "Christmas Day", + "2046-12-26": "Boxing Day", + "2047-01-01": "New Year's Day", + "2047-01-02": "Day after New Year's Day", + "2047-02-01": "National Heroes' Day", + "2047-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2047-04-12": "Good Friday", + "2047-04-15": "Easter Monday", + "2047-05-01": "Labor Day", + "2047-07-01": "Independence Day", + "2047-07-04": "Liberation Day", + "2047-07-24": "Eid al-Fitr (estimated)", + "2047-08-02": "Umuganura Day", + "2047-08-15": "Assumption Day", + "2047-09-30": "Eid al-Adha (estimated)", + "2047-12-25": "Christmas Day", + "2047-12-26": "Boxing Day", + "2048-01-01": "New Year's Day", + "2048-01-02": "Day after New Year's Day", + "2048-02-01": "National Heroes' Day", + "2048-02-03": "National Heroes' Day (observed)", + "2048-04-03": "Good Friday", + "2048-04-06": "Easter Monday", + "2048-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2048-05-01": "Labor Day", + "2048-07-01": "Independence Day", + "2048-07-04": "Liberation Day", + "2048-07-06": "Liberation Day (observed)", + "2048-07-12": "Eid al-Fitr (estimated)", + "2048-07-13": "Eid al-Fitr (observed, estimated)", + "2048-08-07": "Umuganura Day", + "2048-08-15": "Assumption Day", + "2048-08-17": "Assumption Day (observed)", + "2048-09-19": "Eid al-Adha (estimated)", + "2048-09-21": "Eid al-Adha (observed, estimated)", + "2048-12-25": "Christmas Day", + "2048-12-26": "Boxing Day", + "2048-12-28": "Boxing Day (observed)", + "2049-01-01": "New Year's Day", + "2049-01-02": "Day after New Year's Day", + "2049-01-04": "Day after New Year's Day (observed)", + "2049-02-01": "National Heroes' Day", + "2049-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2049-04-16": "Good Friday", + "2049-04-19": "Easter Monday", + "2049-05-01": "Labor Day", + "2049-05-03": "Labor Day (observed)", + "2049-07-01": "Eid al-Fitr (estimated); Independence Day", + "2049-07-04": "Liberation Day", + "2049-07-05": "Liberation Day (observed)", + "2049-08-06": "Umuganura Day", + "2049-08-15": "Assumption Day", + "2049-08-16": "Assumption Day (observed)", + "2049-09-08": "Eid al-Adha (estimated)", + "2049-12-25": "Christmas Day", + "2049-12-26": "Boxing Day", + "2049-12-27": "Christmas Day (observed)", + "2050-01-01": "New Year's Day", + "2050-01-02": "Day after New Year's Day", + "2050-01-03": "New Year's Day (observed)", + "2050-02-01": "National Heroes' Day", + "2050-04-07": "Memorial Day of Genocide perpetrated against the Tutsi in 1994", + "2050-04-08": "Good Friday", + "2050-04-11": "Easter Monday", + "2050-05-01": "Labor Day", + "2050-05-02": "Labor Day (observed)", + "2050-06-20": "Eid al-Fitr (estimated)", + "2050-07-01": "Independence Day", + "2050-07-04": "Liberation Day", + "2050-08-05": "Umuganura Day", + "2050-08-15": "Assumption Day", + "2050-08-28": "Eid al-Adha (estimated)", + "2050-08-29": "Eid al-Adha (observed, estimated)", + "2050-12-25": "Christmas Day", + "2050-12-26": "Boxing Day", + "2050-12-27": "Christmas Day (observed)" +} diff --git a/tests/countries/test_rwanda.py b/tests/countries/test_rwanda.py new file mode 100644 index 0000000000..9a30e5a983 --- /dev/null +++ b/tests/countries/test_rwanda.py @@ -0,0 +1,258 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + + +from unittest import TestCase + +from holidays.countries.rwanda import Rwanda, RW, RWA +from tests.common import CommonCountryTests + + +class TestRwanda(CommonCountryTests, TestCase): + @classmethod + def setUpClass(cls): + years = range(2012, 2050) + super().setUpClass(Rwanda, years=years, years_non_observed=years) + cls.no_estimated_holidays = Rwanda(years=years, islamic_show_estimated=False) + + def test_country_aliases(self): + self.assertAliases(Rwanda, RW, RWA) + + def test_no_holidays(self): + self.assertNoHolidays(Rwanda(years=2011)) + + def test_new_years_day(self): + name = "Ubunani" + self.assertHolidayName(name, (f"{year}-01-01" for year in range(2012, 2050))) + dt = ( + "2022-01-03", + "2023-01-03", + ) + self.assertHolidayName(f"{name} (yizihijwe)", dt) + self.assertNoNonObservedHoliday(dt) + + def test_day_after_new_years_day(self): + name = "Umunsi ukurikira Ubunani" + self.assertHolidayName(name, (f"{year}-01-02" for year in range(2016, 2050))) + self.assertNoHolidayName(name, range(2012, 2016)) + dt = ( + "2021-01-04", + "2027-01-04", + ) + self.assertHolidayName(f"{name} (yizihijwe)", dt) + self.assertNoNonObservedHoliday(dt) + + def test_national_heroes_day(self): + name = "Umunsi w'Intwari" + self.assertHolidayName(name, (f"{year}-02-01" for year in range(2012, 2050))) + dt = ( + "2020-02-03", + "2025-02-03", + ) + self.assertHolidayName(f"{name} (yizihijwe)", dt) + self.assertNoNonObservedHoliday(dt) + + def test_genocide_memorial_day(self): + self.assertHolidayName( + "Umunsi wo Kwibuka Jenoside yakorewe Abatutsi mu 1994", + (f"{year}-04-07" for year in range(2012, 2050)), + ) + + def test_good_friday(self): + name = "Umunsi wa Gatanu Mutagatifu" + self.assertHolidayName( + name, + "2020-04-10", + "2021-04-02", + "2022-04-15", + "2023-04-07", + "2024-03-29", + "2025-04-18", + ) + self.assertHolidayName(name, range(2012, 2050)) + + def test_easter_monday(self): + name = "Ku wa mbere wa Pasika" + self.assertHolidayName( + name, + "2020-04-13", + "2021-04-05", + "2022-04-18", + "2023-04-10", + "2024-04-01", + "2025-04-21", + ) + self.assertHolidayName(name, range(2017, 2050)) + self.assertNoHolidayName(name, range(2012, 2017)) + + def test_labor_day(self): + name = "Umunsi Mukuru w'Umurimo" + self.assertHolidayName(name, (f"{year}-05-01" for year in range(2012, 2050))) + dt = ( + "2021-05-03", + "2022-05-03", + ) + self.assertHolidayName(f"{name} (yizihijwe)", dt) + + def test_independence_day(self): + name = "Umunsi w'Ubwigenge" + self.assertHolidayName(name, (f"{year}-07-01" for year in range(2012, 2050))) + dt = ( + "2017-07-03", + "2018-07-02", + "2023-07-03", + ) + self.assertHolidayName(f"{name} (yizihijwe)", dt) + self.assertNoNonObservedHoliday(dt) + + def test_liberation_day(self): + name = "Umunsi wo Kwibohora" + self.assertHolidayName(name, (f"{year}-07-04" for year in range(2012, 2050))) + dt = ( + "2020-07-06", + "2021-07-05", + ) + self.assertHolidayName(f"{name} (yizihijwe)", dt) + self.assertNoNonObservedHoliday(dt) + + def test_umuganura_day(self): + name = "Umunsi w'Umuganura" + self.assertHolidayName( + name, + "2020-08-07", + "2021-08-06", + "2022-08-05", + "2023-08-04", + "2024-08-02", + "2025-08-01", + ) + self.assertHolidayName(name, range(2015, 2050)) + self.assertNoHolidayName(name, range(2012, 2015)) + + def test_assumption_day(self): + name = "Ijyanwa mu Ijuru rya Bikiramariya" + self.assertHolidayName(name, (f"{year}-08-15" for year in range(2012, 2050))) + dt = ( + "2020-08-17", + "2021-08-16", + ) + self.assertHolidayName(f"{name} (yizihijwe)", dt) + self.assertNoNonObservedHoliday(dt) + + def test_christmas_day(self): + name = "Noheli" + self.assertHolidayName(name, (f"{year}-12-25" for year in range(2012, 2050))) + dt = ( + "2021-12-27", + "2022-12-27", + ) + self.assertHolidayName(f"{name} (yizihijwe)", dt) + self.assertNoNonObservedHoliday(dt) + + def test_boxing_day(self): + name = "Umunsi ukurikira Noheli" + self.assertHolidayName(name, (f"{year}-12-26" for year in range(2012, 2050))) + dt = ( + "2020-12-28", + "2026-12-28", + ) + self.assertHolidayName(f"{name} (yizihijwe)", dt) + self.assertNoNonObservedHoliday(dt) + + def test_eid_al_fitr(self): + name = "Eid El Fitr" + self.assertHolidayName( + name, + "2020-05-24", + "2021-05-13", + "2022-05-02", + "2023-04-21", + "2024-04-10", + "2025-03-31", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(2012, 2050)) + + def test_eid_al_adha(self): + name = "Eid al-Adha" + self.assertHolidayName( + name, + "2020-07-31", + "2021-07-20", + "2022-07-11", + "2023-06-28", + "2024-06-16", + "2025-06-06", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(2015, 2050)) + self.assertNoHolidayName(name, self.no_estimated_holidays, range(2012, 2015)) + + def test_l10n_default(self): + self.assertLocalizedHolidays( + ("2024-01-01", "Ubunani"), + ("2024-01-02", "Umunsi ukurikira Ubunani"), + ("2024-02-01", "Umunsi w'Intwari"), + ("2024-03-29", "Umunsi wa Gatanu Mutagatifu"), + ("2024-04-01", "Ku wa mbere wa Pasika"), + ("2024-04-07", "Umunsi wo Kwibuka Jenoside yakorewe Abatutsi mu 1994"), + ("2024-04-10", "Eid El Fitr"), + ("2024-05-01", "Umunsi Mukuru w'Umurimo"), + ("2024-06-16", "Eid al-Adha"), + ("2024-06-17", "Eid al-Adha (yizihijwe)"), + ("2024-07-01", "Umunsi w'Ubwigenge"), + ("2024-07-04", "Umunsi wo Kwibohora"), + ("2024-08-02", "Umunsi w'Umuganura"), + ("2024-08-15", "Ijyanwa mu Ijuru rya Bikiramariya"), + ("2024-12-25", "Noheli"), + ("2024-12-26", "Umunsi ukurikira Noheli"), + ) + + def test_l10n_en_us(self): + self.assertLocalizedHolidays( + "en_US", + ("2024-01-01", "New Year's Day"), + ("2024-01-02", "Day after New Year's Day"), + ("2024-02-01", "National Heroes' Day"), + ("2024-03-29", "Good Friday"), + ("2024-04-01", "Easter Monday"), + ("2024-04-07", "Memorial Day of Genocide perpetrated against the Tutsi in 1994"), + ("2024-04-10", "Eid al-Fitr"), + ("2024-05-01", "Labor Day"), + ("2024-06-16", "Eid al-Adha"), + ("2024-06-17", "Eid al-Adha (observed)"), + ("2024-07-01", "Independence Day"), + ("2024-07-04", "Liberation Day"), + ("2024-08-02", "Umuganura Day"), + ("2024-08-15", "Assumption Day"), + ("2024-12-25", "Christmas Day"), + ("2024-12-26", "Boxing Day"), + ) + + def test_l10n_fr(self): + self.assertLocalizedHolidays( + "fr", + ("2024-01-01", "Nouvel An"), + ("2024-01-02", "Le lendemain du Nouvel An"), + ("2024-02-01", "Journée Nationale des Héros"), + ("2024-03-29", "Vendredi Saint"), + ("2024-04-01", "Lundi de Pâques"), + ("2024-04-07", "Journée commémorative du Génocide perpétré contre les Tutsi en 1994"), + ("2024-04-10", "Aïd el-Fitr"), + ("2024-05-01", "Journée du Travail"), + ("2024-06-16", "Aïd al-Adha"), + ("2024-06-17", "Aïd al-Adha (observé)"), + ("2024-07-01", "Journée de l'Indépendance"), + ("2024-07-04", "Journée de la Libération"), + ("2024-08-02", "Journée d'Umuganura"), + ("2024-08-15", "Assomption"), + ("2024-12-25", "Noël"), + ("2024-12-26", "Le lendemain de Noël"), + ) From 6e286debe0469a7488444578e35c4194c79686f6 Mon Sep 17 00:00:00 2001 From: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com> Date: Mon, 25 Aug 2025 18:09:50 +0700 Subject: [PATCH 20/48] Test Case Name Standardization (#2853) --- tests/countries/test_aland_islands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/countries/test_aland_islands.py b/tests/countries/test_aland_islands.py index 34e65a8f70..eb1c47662f 100644 --- a/tests/countries/test_aland_islands.py +++ b/tests/countries/test_aland_islands.py @@ -25,7 +25,7 @@ def setUpClass(cls): def test_country_aliases(self): self.assertAliases(HolidaysAX, AlandIslands, AX, ALA) - def test_no_holiday(self): + def test_no_holidays(self): self.assertNoHolidays(HolidaysAX(years=1920, categories=(PUBLIC, WORKDAY))) self.assertNoHolidays(HolidaysAX(years=1949, categories=UNOFFICIAL)) From ec7d2ab91159abca80e3faa0cb7893c3361a31e3 Mon Sep 17 00:00:00 2001 From: Wasif Shahzad <159248937+Wasif-Shahzad@users.noreply.github.com> Date: Tue, 26 Aug 2025 05:05:22 +0500 Subject: [PATCH 21/48] Add Tajikistan holidays (#2852) --- README.md | 9 +- holidays/countries/__init__.py | 1 + holidays/countries/tajikistan.py | 116 +++++++++++++++++++ holidays/locale/en_US/LC_MESSAGES/TJ.po | 73 ++++++++++++ holidays/locale/ru/LC_MESSAGES/TJ.po | 73 ++++++++++++ holidays/locale/tg/LC_MESSAGES/TJ.po | 72 ++++++++++++ holidays/registry.py | 1 + tests/countries/test_tajikistan.py | 147 ++++++++++++++++++++++++ 8 files changed, 491 insertions(+), 1 deletion(-) create mode 100644 holidays/countries/tajikistan.py create mode 100644 holidays/locale/en_US/LC_MESSAGES/TJ.po create mode 100644 holidays/locale/ru/LC_MESSAGES/TJ.po create mode 100644 holidays/locale/tg/LC_MESSAGES/TJ.po create mode 100644 tests/countries/test_tajikistan.py diff --git a/README.md b/README.md index c9f82d8dbf..d659a6cf5e 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ and detailed information. ## Available Countries -We currently support 235 country codes. The standard way to refer to a country is by using its [ISO +We currently support 236 country codes. The standard way to refer to a country is by using its [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes), the same used for domain names, and for a subdivision its [ISO 3166-2 code](https://en.wikipedia.org/wiki/ISO_3166-2). Some countries have common or foreign names or @@ -1596,6 +1596,13 @@ any) in brackets, available languages and additional holiday categories. All cou GOVERNMENT, OPTIONAL, SCHOOL, WORKDAY +Tajikistan +TJ + +en_US, ru, tg + + + Tanzania TZ diff --git a/holidays/countries/__init__.py b/holidays/countries/__init__.py index ae75746968..19573128cf 100644 --- a/holidays/countries/__init__.py +++ b/holidays/countries/__init__.py @@ -237,6 +237,7 @@ from holidays.countries.switzerland import Switzerland, CH, CHE from holidays.countries.syrian_arab_republic import SyrianArabRepublic, SY, SYR from holidays.countries.taiwan import Taiwan, TW, TWN +from holidays.countries.tajikistan import Tajikistan, TJ, TJK from holidays.countries.tanzania import Tanzania, TZ, TZA from holidays.countries.thailand import Thailand, TH, THA from holidays.countries.timor_leste import TimorLeste, TL, TLS diff --git a/holidays/countries/tajikistan.py b/holidays/countries/tajikistan.py new file mode 100644 index 0000000000..3bc1704345 --- /dev/null +++ b/holidays/countries/tajikistan.py @@ -0,0 +1,116 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from gettext import gettext as tr + +from holidays.calendars import _CustomIslamicHolidays +from holidays.calendars.gregorian import APR +from holidays.groups import InternationalHolidays, IslamicHolidays +from holidays.holiday_base import HolidayBase + + +class Tajikistan(HolidayBase, InternationalHolidays, IslamicHolidays): + """Tajikistan holidays. + + References: + * + * [Law #3 from Nov 3, 1995](https://web.archive.org/web/20250823162418/http://www.portali-huquqi.tj/publicadliya/view_qonunhoview.php?showdetail=&asosi_id=155&language=tj) + * [Law #753 from Aug 2, 2011](https://web.archive.org/web/20250823162543/http://www.portali-huquqi.tj/publicadliya/view_qonunhoview.php?showdetail=&asosi_id=12997&language=tj) + * [Independence Day](https://web.archive.org/web/20250324203223/https://tnu.tj/index.php/en/9-september-independence-day-of-the-republic-of-tajikistan/) + """ + + country = "TJ" + default_language = "tg" + # %s (estimated). + estimated_label = tr("%s (таҳминан)") + start_year = 1992 + supported_languages = ("en_US", "ru", "tg") + + def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): + """ + Args: + islamic_show_estimated: + Whether to add "estimated" label to Islamic holidays name + if holiday date is estimated. + """ + InternationalHolidays.__init__(self) + IslamicHolidays.__init__( + self, cls=TajikistanIslamicHolidays, show_estimated=islamic_show_estimated + ) + super().__init__(*args, **kwargs) + + def _populate_public_holidays(self): + # New Year's Day. + self._add_new_years_day(tr("Соли Нав")) + + # Mother's Day. + self._add_holiday_mar_8(tr("Рӯзи Модар")) + + # International Nowruz Day. + name = tr("Иди байналмилалии Наврӯз") + self._add_holiday_mar_21(name) + self._add_holiday_mar_22(name) + + # Established by Law #13 from May 3, 2002. + if self._year >= 2003: + self._add_holiday_mar_23(name) + + # Established by Law #146 from Dec 28, 2005. + if self._year >= 2006: + self._add_holiday_mar_24(name) + + # Abolished by Law #1390 from Feb 24, 2017. + if self._year <= 2016: + # International Workers' Solidarity Day. + self._add_labor_day(tr("Рӯзи байналхалқии якдилии меҳнаткашон")) + + self._add_world_war_two_victory_day( + # Victory Day. + tr("Рӯзи Ғалаба дар Ҷанги Бузурги Ватанӣ"), + is_western=False, + ) + + # Established by Law #628 from May 22, 1998. + if self._year >= 1998: + # Day of National Unity. + self._add_holiday_jun_27(tr("Рӯзи Ваҳдати миллӣ")) + + # Independence Day. + self._add_holiday_sep_9(tr("Рӯзи Истиқлолияти давлатии Ҷумҳурии Тоҷикистон")) + + if self._year >= 1994: + # Constitution Day. + self._add_holiday_nov_6(tr("Рӯзи Конститутсияи Ҷумҳурии Тоҷикистон")) + + # Eid al-Fitr. + self._add_eid_al_fitr_day(tr("Рӯзи иди Рамазон")) + + # Eid al-Adha. + self._add_eid_al_adha_day(tr("Рӯзи иди Қурбон")) + + +class TJ(Tajikistan): + pass + + +class TJK(Tajikistan): + pass + + +class TajikistanIslamicHolidays(_CustomIslamicHolidays): + # https://www.timeanddate.com/holidays/tajikistan/eid-al-fitr + EID_AL_FITR_DATES_CONFIRMED_YEARS = (1992, 2025) + EID_AL_FITR_DATES = { + 2023: (APR, 22), + } + + EID_AL_ADHA_DATES_CONFIRMED_YEARS = (1992, 2025) diff --git a/holidays/locale/en_US/LC_MESSAGES/TJ.po b/holidays/locale/en_US/LC_MESSAGES/TJ.po new file mode 100644 index 0000000000..43528ec8bc --- /dev/null +++ b/holidays/locale/en_US/LC_MESSAGES/TJ.po @@ -0,0 +1,73 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# Tajikistan holidays en_US localization. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.80\n" +"POT-Creation-Date: 2025-08-23 06:13+0500\n" +"PO-Revision-Date: 2025-08-23 06:19+0500\n" +"Last-Translator: Wasif Shahzad \n" +"Language-Team: Holidays Localization Team\n" +"Language: en_US\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Generator: Poedit 3.7\n" +"X-Source-Language: tg\n" + +#. %s (estimated). +#, c-format +msgid "%s (таҳминан)" +msgstr "%s (estimated)" + +#. New Year's Day. +msgid "Соли Нав" +msgstr "New Year's Day" + +#. Mother's Day. +msgid "Рӯзи Модар" +msgstr "Mother's Day" + +#. International Nowruz Day. +msgid "Иди байналмилалии Наврӯз" +msgstr "International Nowruz Day" + +#. International Workers' Solidarity Day. +msgid "Рӯзи байналхалқии якдилии меҳнаткашон" +msgstr "International Workers' Solidarity Day" + +#. Victory Day. +msgid "Рӯзи Ғалаба дар Ҷанги Бузурги Ватанӣ" +msgstr "Victory Day" + +#. Day of National Unity. +msgid "Рӯзи Ваҳдати миллӣ" +msgstr "National Unity Day" + +#. Independence Day. +msgid "Рӯзи Истиқлолияти давлатии Ҷумҳурии Тоҷикистон" +msgstr "Independence Day" + +#. Constitution Day. +msgid "Рӯзи Конститутсияи Ҷумҳурии Тоҷикистон" +msgstr "Constitution Day" + +#. Eid al-Fitr. +msgid "Рӯзи иди Рамазон" +msgstr "Eid al-Fitr" + +#. Eid al-Adha. +msgid "Рӯзи иди Қурбон" +msgstr "Eid al-Adha" diff --git a/holidays/locale/ru/LC_MESSAGES/TJ.po b/holidays/locale/ru/LC_MESSAGES/TJ.po new file mode 100644 index 0000000000..03b9891d84 --- /dev/null +++ b/holidays/locale/ru/LC_MESSAGES/TJ.po @@ -0,0 +1,73 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# Tajikistan holidays ru localization. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.80\n" +"POT-Creation-Date: 2025-08-23 06:13+0500\n" +"PO-Revision-Date: 2025-08-23 06:23+0500\n" +"Last-Translator: Wasif Shahzad \n" +"Language-Team: Holidays Localization Team\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Generator: Poedit 3.7\n" +"X-Source-Language: tg\n" + +#. %s (estimated). +#, c-format +msgid "%s (таҳминан)" +msgstr "%s (приблизительная дата)" + +#. New Year's Day. +msgid "Соли Нав" +msgstr "Новый год" + +#. Mother's Day. +msgid "Рӯзи Модар" +msgstr "День Матери" + +#. International Nowruz Day. +msgid "Иди байналмилалии Наврӯз" +msgstr "Международный праздник Навруз" + +#. International Workers' Solidarity Day. +msgid "Рӯзи байналхалқии якдилии меҳнаткашон" +msgstr "Международный день солидарности трудящихся" + +#. Victory Day. +msgid "Рӯзи Ғалаба дар Ҷанги Бузурги Ватанӣ" +msgstr "День Победы в Великой Отечественной войне" + +#. Day of National Unity. +msgid "Рӯзи Ваҳдати миллӣ" +msgstr "День Национального единства" + +#. Independence Day. +msgid "Рӯзи Истиқлолияти давлатии Ҷумҳурии Тоҷикистон" +msgstr "День Государственной независимости Республики Таджикистан" + +#. Constitution Day. +msgid "Рӯзи Конститутсияи Ҷумҳурии Тоҷикистон" +msgstr "День Конституции Республики Таджикистан" + +#. Eid al-Fitr. +msgid "Рӯзи иди Рамазон" +msgstr "Ураза-байрам" + +#. Eid al-Adha. +msgid "Рӯзи иди Қурбон" +msgstr "Курбан-байрам" diff --git a/holidays/locale/tg/LC_MESSAGES/TJ.po b/holidays/locale/tg/LC_MESSAGES/TJ.po new file mode 100644 index 0000000000..f5fe371be9 --- /dev/null +++ b/holidays/locale/tg/LC_MESSAGES/TJ.po @@ -0,0 +1,72 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# Tajikistan holidays. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.80\n" +"POT-Creation-Date: 2025-08-23 06:13+0500\n" +"PO-Revision-Date: 2025-08-23 06:13+0500\n" +"Last-Translator: Wasif Shahzad \n" +"Language-Team: Holidays Localization Team\n" +"Language: tg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Source-Language: tg\n" + +#. %s (estimated). +#, c-format +msgid "%s (таҳминан)" +msgstr "" + +#. New Year's Day. +msgid "Соли Нав" +msgstr "" + +#. Mother's Day. +msgid "Рӯзи Модар" +msgstr "" + +#. International Nowruz Day. +msgid "Иди байналмилалии Наврӯз" +msgstr "" + +#. International Workers' Solidarity Day. +msgid "Рӯзи байналхалқии якдилии меҳнаткашон" +msgstr "" + +#. Victory Day. +msgid "Рӯзи Ғалаба дар Ҷанги Бузурги Ватанӣ" +msgstr "" + +#. Day of National Unity. +msgid "Рӯзи Ваҳдати миллӣ" +msgstr "" + +#. Independence Day. +msgid "Рӯзи Истиқлолияти давлатии Ҷумҳурии Тоҷикистон" +msgstr "" + +#. Constitution Day. +msgid "Рӯзи Конститутсияи Ҷумҳурии Тоҷикистон" +msgstr "" + +#. Eid al-Fitr. +msgid "Рӯзи иди Рамазон" +msgstr "" + +#. Eid al-Adha. +msgid "Рӯзи иди Қурбон" +msgstr "" diff --git a/holidays/registry.py b/holidays/registry.py index c4df17260f..f2a1fffdc8 100644 --- a/holidays/registry.py +++ b/holidays/registry.py @@ -231,6 +231,7 @@ "switzerland": ("Switzerland", "CH", "CHE"), "syrian_arab_republic": ("SyrianArabRepublic", "SY", "SYR"), "taiwan": ("Taiwan", "TW", "TWN"), + "tajikistan": ("Tajikistan", "TJ", "TJK"), "tanzania": ("Tanzania", "TZ", "TZA"), "thailand": ("Thailand", "TH", "THA"), "timor_leste": ("TimorLeste", "TL", "TLS"), diff --git a/tests/countries/test_tajikistan.py b/tests/countries/test_tajikistan.py new file mode 100644 index 0000000000..9b5b76c89f --- /dev/null +++ b/tests/countries/test_tajikistan.py @@ -0,0 +1,147 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from unittest import TestCase + +from holidays.countries.tajikistan import Tajikistan, TJ, TJK +from tests.common import CommonCountryTests + + +class TestTajikistan(CommonCountryTests, TestCase): + @classmethod + def setUpClass(cls): + years = range(1992, 2050) + super().setUpClass(Tajikistan, years=years) + cls.no_estimated_holidays = Tajikistan(years=years, islamic_show_estimated=False) + + def test_country_aliases(self): + self.assertAliases(Tajikistan, TJ, TJK) + + def test_no_holidays(self): + self.assertNoHolidays(Tajikistan(years=1991)) + + def test_new_years_day(self): + self.assertHolidayName("Соли Нав", (f"{year}-01-01" for year in range(1992, 2050))) + + def test_mothers_day(self): + self.assertHolidayName("Рӯзи Модар", (f"{year}-03-08" for year in range(1992, 2050))) + + def test_nowruz(self): + name = "Иди байналмилалии Наврӯз" + self.assertHolidayName(name, (f"{year}-03-21" for year in range(1992, 2050))) + self.assertHolidayName(name, (f"{year}-03-22" for year in range(1992, 2050))) + self.assertHolidayName(name, (f"{year}-03-23" for year in range(2003, 2050))) + self.assertHolidayName(name, (f"{year}-03-24" for year in range(2006, 2050))) + self.assertNoHolidayName(name, (f"{year}-03-23" for year in range(1992, 2003))) + self.assertNoHolidayName(name, (f"{year}-03-24" for year in range(1992, 2006))) + + def test_workers_day(self): + name = "Рӯзи байналхалқии якдилии меҳнаткашон" + self.assertHolidayName(name, (f"{year}-05-01" for year in range(1992, 2017))) + self.assertNoHolidayName(name, range(2017, 2050)) + + def test_victory_day(self): + self.assertHolidayName( + "Рӯзи Ғалаба дар Ҷанги Бузурги Ватанӣ", (f"{year}-05-09" for year in range(1992, 2050)) + ) + + def test_unity_day(self): + name = "Рӯзи Ваҳдати миллӣ" + self.assertHolidayName(name, (f"{year}-06-27" for year in range(1998, 2050))) + self.assertNoHolidayName(name, range(1992, 1998)) + + def test_independence_day(self): + self.assertHolidayName( + "Рӯзи Истиқлолияти давлатии Ҷумҳурии Тоҷикистон", + (f"{year}-09-09" for year in range(1992, 2050)), + ) + + def test_constitution_day(self): + name = "Рӯзи Конститутсияи Ҷумҳурии Тоҷикистон" + self.assertHolidayName(name, (f"{year}-11-06" for year in range(1994, 2050))) + self.assertNoHolidayName(name, range(1992, 1994)) + + def test_eid_al_fitr(self): + name = "Рӯзи иди Рамазон" + self.assertHolidayName( + name, + "2020-05-24", + "2021-05-13", + "2022-05-02", + "2023-04-22", + "2024-04-10", + "2025-03-30", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1992, 2050)) + + def test_eid_al_adha(self): + name = "Рӯзи иди Қурбон" + self.assertHolidayName( + name, + "2020-07-31", + "2021-07-20", + "2022-07-09", + "2023-06-28", + "2024-06-16", + "2025-06-06", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1992, 2050)) + + def test_l10n_default(self): + self.assertLocalizedHolidays( + ("2024-01-01", "Соли Нав"), + ("2024-03-08", "Рӯзи Модар"), + ("2024-03-21", "Иди байналмилалии Наврӯз"), + ("2024-03-22", "Иди байналмилалии Наврӯз"), + ("2024-03-23", "Иди байналмилалии Наврӯз"), + ("2024-03-24", "Иди байналмилалии Наврӯз"), + ("2024-04-10", "Рӯзи иди Рамазон"), + ("2024-05-09", "Рӯзи Ғалаба дар Ҷанги Бузурги Ватанӣ"), + ("2024-06-16", "Рӯзи иди Қурбон"), + ("2024-06-27", "Рӯзи Ваҳдати миллӣ"), + ("2024-09-09", "Рӯзи Истиқлолияти давлатии Ҷумҳурии Тоҷикистон"), + ("2024-11-06", "Рӯзи Конститутсияи Ҷумҳурии Тоҷикистон"), + ) + + def test_l10n_en_us(self): + self.assertLocalizedHolidays( + "en_US", + ("2024-01-01", "New Year's Day"), + ("2024-03-08", "Mother's Day"), + ("2024-03-21", "International Nowruz Day"), + ("2024-03-22", "International Nowruz Day"), + ("2024-03-23", "International Nowruz Day"), + ("2024-03-24", "International Nowruz Day"), + ("2024-04-10", "Eid al-Fitr"), + ("2024-05-09", "Victory Day"), + ("2024-06-16", "Eid al-Adha"), + ("2024-06-27", "National Unity Day"), + ("2024-09-09", "Independence Day"), + ("2024-11-06", "Constitution Day"), + ) + + def test_l10n_ru(self): + self.assertLocalizedHolidays( + "ru", + ("2024-01-01", "Новый год"), + ("2024-03-08", "День Матери"), + ("2024-03-21", "Международный праздник Навруз"), + ("2024-03-22", "Международный праздник Навруз"), + ("2024-03-23", "Международный праздник Навруз"), + ("2024-03-24", "Международный праздник Навруз"), + ("2024-04-10", "Ураза-байрам"), + ("2024-05-09", "День Победы в Великой Отечественной войне"), + ("2024-06-16", "Курбан-байрам"), + ("2024-06-27", "День Национального единства"), + ("2024-09-09", "День Государственной независимости Республики Таджикистан"), + ("2024-11-06", "День Конституции Республики Таджикистан"), + ) From 82561f2d725850685fa2ab4ab5f616329548dd54 Mon Sep 17 00:00:00 2001 From: ~Jhellico Date: Tue, 26 Aug 2025 03:06:39 +0300 Subject: [PATCH 22/48] Add missing docstring for `__init__` method (#2850) --- holidays/countries/christmas_island.py | 6 ++++++ holidays/countries/turkmenistan.py | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/holidays/countries/christmas_island.py b/holidays/countries/christmas_island.py index 50e72b3e67..2280d3a352 100644 --- a/holidays/countries/christmas_island.py +++ b/holidays/countries/christmas_island.py @@ -72,6 +72,12 @@ class ChristmasIsland( start_year = 2007 def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): + """ + Args: + islamic_show_estimated: + Whether to add "estimated" label to Islamic holidays name + if holiday date is estimated. + """ ChineseCalendarHolidays.__init__(self, cls=ChristmasIslandChineseHolidays) ChristianHolidays.__init__(self) InternationalHolidays.__init__(self) diff --git a/holidays/countries/turkmenistan.py b/holidays/countries/turkmenistan.py index 6cde3a6990..d50236001a 100644 --- a/holidays/countries/turkmenistan.py +++ b/holidays/countries/turkmenistan.py @@ -44,6 +44,12 @@ class Turkmenistan(ObservedHolidayBase, InternationalHolidays, IslamicHolidays): supported_languages = ("en_US", "ru", "tk") def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): + """ + Args: + islamic_show_estimated: + Whether to add "estimated" label to Islamic holidays name + if holiday date is estimated. + """ InternationalHolidays.__init__(self) IslamicHolidays.__init__( self, cls=TurkmenistanIslamicHolidays, show_estimated=islamic_show_estimated From 351160c9d9354dad0f12bfce8095e62d64cef0ae Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 25 Aug 2025 17:42:50 -0700 Subject: [PATCH 23/48] chore: Update snapshots (#2856) Co-authored-by: github-merge-queue[bot] <118344674+github-merge-queue[bot]@users.noreply.github.com> --- snapshots/countries/TJ_COMMON.json | 703 +++++++++++++++++++++++++++++ 1 file changed, 703 insertions(+) create mode 100644 snapshots/countries/TJ_COMMON.json diff --git a/snapshots/countries/TJ_COMMON.json b/snapshots/countries/TJ_COMMON.json new file mode 100644 index 0000000000..d87bab5753 --- /dev/null +++ b/snapshots/countries/TJ_COMMON.json @@ -0,0 +1,703 @@ +{ + "1992-01-01": "New Year's Day", + "1992-03-08": "Mother's Day", + "1992-03-21": "International Nowruz Day", + "1992-03-22": "International Nowruz Day", + "1992-04-04": "Eid al-Fitr", + "1992-05-01": "International Workers' Solidarity Day", + "1992-05-09": "Victory Day", + "1992-06-11": "Eid al-Adha", + "1992-09-09": "Independence Day", + "1993-01-01": "New Year's Day", + "1993-03-08": "Mother's Day", + "1993-03-21": "International Nowruz Day", + "1993-03-22": "International Nowruz Day", + "1993-03-24": "Eid al-Fitr", + "1993-05-01": "International Workers' Solidarity Day", + "1993-05-09": "Victory Day", + "1993-05-31": "Eid al-Adha", + "1993-09-09": "Independence Day", + "1994-01-01": "New Year's Day", + "1994-03-08": "Mother's Day", + "1994-03-13": "Eid al-Fitr", + "1994-03-21": "International Nowruz Day", + "1994-03-22": "International Nowruz Day", + "1994-05-01": "International Workers' Solidarity Day", + "1994-05-09": "Victory Day", + "1994-05-20": "Eid al-Adha", + "1994-09-09": "Independence Day", + "1994-11-06": "Constitution Day", + "1995-01-01": "New Year's Day", + "1995-03-02": "Eid al-Fitr", + "1995-03-08": "Mother's Day", + "1995-03-21": "International Nowruz Day", + "1995-03-22": "International Nowruz Day", + "1995-05-01": "International Workers' Solidarity Day", + "1995-05-09": "Eid al-Adha; Victory Day", + "1995-09-09": "Independence Day", + "1995-11-06": "Constitution Day", + "1996-01-01": "New Year's Day", + "1996-02-19": "Eid al-Fitr", + "1996-03-08": "Mother's Day", + "1996-03-21": "International Nowruz Day", + "1996-03-22": "International Nowruz Day", + "1996-04-27": "Eid al-Adha", + "1996-05-01": "International Workers' Solidarity Day", + "1996-05-09": "Victory Day", + "1996-09-09": "Independence Day", + "1996-11-06": "Constitution Day", + "1997-01-01": "New Year's Day", + "1997-02-08": "Eid al-Fitr", + "1997-03-08": "Mother's Day", + "1997-03-21": "International Nowruz Day", + "1997-03-22": "International Nowruz Day", + "1997-04-17": "Eid al-Adha", + "1997-05-01": "International Workers' Solidarity Day", + "1997-05-09": "Victory Day", + "1997-09-09": "Independence Day", + "1997-11-06": "Constitution Day", + "1998-01-01": "New Year's Day", + "1998-01-29": "Eid al-Fitr", + "1998-03-08": "Mother's Day", + "1998-03-21": "International Nowruz Day", + "1998-03-22": "International Nowruz Day", + "1998-04-07": "Eid al-Adha", + "1998-05-01": "International Workers' Solidarity Day", + "1998-05-09": "Victory Day", + "1998-06-27": "National Unity Day", + "1998-09-09": "Independence Day", + "1998-11-06": "Constitution Day", + "1999-01-01": "New Year's Day", + "1999-01-18": "Eid al-Fitr", + "1999-03-08": "Mother's Day", + "1999-03-21": "International Nowruz Day", + "1999-03-22": "International Nowruz Day", + "1999-03-27": "Eid al-Adha", + "1999-05-01": "International Workers' Solidarity Day", + "1999-05-09": "Victory Day", + "1999-06-27": "National Unity Day", + "1999-09-09": "Independence Day", + "1999-11-06": "Constitution Day", + "2000-01-01": "New Year's Day", + "2000-01-08": "Eid al-Fitr", + "2000-03-08": "Mother's Day", + "2000-03-16": "Eid al-Adha", + "2000-03-21": "International Nowruz Day", + "2000-03-22": "International Nowruz Day", + "2000-05-01": "International Workers' Solidarity Day", + "2000-05-09": "Victory Day", + "2000-06-27": "National Unity Day", + "2000-09-09": "Independence Day", + "2000-11-06": "Constitution Day", + "2000-12-27": "Eid al-Fitr", + "2001-01-01": "New Year's Day", + "2001-03-05": "Eid al-Adha", + "2001-03-08": "Mother's Day", + "2001-03-21": "International Nowruz Day", + "2001-03-22": "International Nowruz Day", + "2001-05-01": "International Workers' Solidarity Day", + "2001-05-09": "Victory Day", + "2001-06-27": "National Unity Day", + "2001-09-09": "Independence Day", + "2001-11-06": "Constitution Day", + "2001-12-16": "Eid al-Fitr", + "2002-01-01": "New Year's Day", + "2002-02-22": "Eid al-Adha", + "2002-03-08": "Mother's Day", + "2002-03-21": "International Nowruz Day", + "2002-03-22": "International Nowruz Day", + "2002-05-01": "International Workers' Solidarity Day", + "2002-05-09": "Victory Day", + "2002-06-27": "National Unity Day", + "2002-09-09": "Independence Day", + "2002-11-06": "Constitution Day", + "2002-12-05": "Eid al-Fitr", + "2003-01-01": "New Year's Day", + "2003-02-11": "Eid al-Adha", + "2003-03-08": "Mother's Day", + "2003-03-21": "International Nowruz Day", + "2003-03-22": "International Nowruz Day", + "2003-03-23": "International Nowruz Day", + "2003-05-01": "International Workers' Solidarity Day", + "2003-05-09": "Victory Day", + "2003-06-27": "National Unity Day", + "2003-09-09": "Independence Day", + "2003-11-06": "Constitution Day", + "2003-11-25": "Eid al-Fitr", + "2004-01-01": "New Year's Day", + "2004-02-01": "Eid al-Adha", + "2004-03-08": "Mother's Day", + "2004-03-21": "International Nowruz Day", + "2004-03-22": "International Nowruz Day", + "2004-03-23": "International Nowruz Day", + "2004-05-01": "International Workers' Solidarity Day", + "2004-05-09": "Victory Day", + "2004-06-27": "National Unity Day", + "2004-09-09": "Independence Day", + "2004-11-06": "Constitution Day", + "2004-11-14": "Eid al-Fitr", + "2005-01-01": "New Year's Day", + "2005-01-21": "Eid al-Adha", + "2005-03-08": "Mother's Day", + "2005-03-21": "International Nowruz Day", + "2005-03-22": "International Nowruz Day", + "2005-03-23": "International Nowruz Day", + "2005-05-01": "International Workers' Solidarity Day", + "2005-05-09": "Victory Day", + "2005-06-27": "National Unity Day", + "2005-09-09": "Independence Day", + "2005-11-03": "Eid al-Fitr", + "2005-11-06": "Constitution Day", + "2006-01-01": "New Year's Day", + "2006-01-10": "Eid al-Adha", + "2006-03-08": "Mother's Day", + "2006-03-21": "International Nowruz Day", + "2006-03-22": "International Nowruz Day", + "2006-03-23": "International Nowruz Day", + "2006-03-24": "International Nowruz Day", + "2006-05-01": "International Workers' Solidarity Day", + "2006-05-09": "Victory Day", + "2006-06-27": "National Unity Day", + "2006-09-09": "Independence Day", + "2006-10-23": "Eid al-Fitr", + "2006-11-06": "Constitution Day", + "2006-12-31": "Eid al-Adha", + "2007-01-01": "New Year's Day", + "2007-03-08": "Mother's Day", + "2007-03-21": "International Nowruz Day", + "2007-03-22": "International Nowruz Day", + "2007-03-23": "International Nowruz Day", + "2007-03-24": "International Nowruz Day", + "2007-05-01": "International Workers' Solidarity Day", + "2007-05-09": "Victory Day", + "2007-06-27": "National Unity Day", + "2007-09-09": "Independence Day", + "2007-10-13": "Eid al-Fitr", + "2007-11-06": "Constitution Day", + "2007-12-20": "Eid al-Adha", + "2008-01-01": "New Year's Day", + "2008-03-08": "Mother's Day", + "2008-03-21": "International Nowruz Day", + "2008-03-22": "International Nowruz Day", + "2008-03-23": "International Nowruz Day", + "2008-03-24": "International Nowruz Day", + "2008-05-01": "International Workers' Solidarity Day", + "2008-05-09": "Victory Day", + "2008-06-27": "National Unity Day", + "2008-09-09": "Independence Day", + "2008-10-01": "Eid al-Fitr", + "2008-11-06": "Constitution Day", + "2008-12-08": "Eid al-Adha", + "2009-01-01": "New Year's Day", + "2009-03-08": "Mother's Day", + "2009-03-21": "International Nowruz Day", + "2009-03-22": "International Nowruz Day", + "2009-03-23": "International Nowruz Day", + "2009-03-24": "International Nowruz Day", + "2009-05-01": "International Workers' Solidarity Day", + "2009-05-09": "Victory Day", + "2009-06-27": "National Unity Day", + "2009-09-09": "Independence Day", + "2009-09-20": "Eid al-Fitr", + "2009-11-06": "Constitution Day", + "2009-11-27": "Eid al-Adha", + "2010-01-01": "New Year's Day", + "2010-03-08": "Mother's Day", + "2010-03-21": "International Nowruz Day", + "2010-03-22": "International Nowruz Day", + "2010-03-23": "International Nowruz Day", + "2010-03-24": "International Nowruz Day", + "2010-05-01": "International Workers' Solidarity Day", + "2010-05-09": "Victory Day", + "2010-06-27": "National Unity Day", + "2010-09-09": "Independence Day", + "2010-09-10": "Eid al-Fitr", + "2010-11-06": "Constitution Day", + "2010-11-16": "Eid al-Adha", + "2011-01-01": "New Year's Day", + "2011-03-08": "Mother's Day", + "2011-03-21": "International Nowruz Day", + "2011-03-22": "International Nowruz Day", + "2011-03-23": "International Nowruz Day", + "2011-03-24": "International Nowruz Day", + "2011-05-01": "International Workers' Solidarity Day", + "2011-05-09": "Victory Day", + "2011-06-27": "National Unity Day", + "2011-08-30": "Eid al-Fitr", + "2011-09-09": "Independence Day", + "2011-11-06": "Constitution Day; Eid al-Adha", + "2012-01-01": "New Year's Day", + "2012-03-08": "Mother's Day", + "2012-03-21": "International Nowruz Day", + "2012-03-22": "International Nowruz Day", + "2012-03-23": "International Nowruz Day", + "2012-03-24": "International Nowruz Day", + "2012-05-01": "International Workers' Solidarity Day", + "2012-05-09": "Victory Day", + "2012-06-27": "National Unity Day", + "2012-08-19": "Eid al-Fitr", + "2012-09-09": "Independence Day", + "2012-10-26": "Eid al-Adha", + "2012-11-06": "Constitution Day", + "2013-01-01": "New Year's Day", + "2013-03-08": "Mother's Day", + "2013-03-21": "International Nowruz Day", + "2013-03-22": "International Nowruz Day", + "2013-03-23": "International Nowruz Day", + "2013-03-24": "International Nowruz Day", + "2013-05-01": "International Workers' Solidarity Day", + "2013-05-09": "Victory Day", + "2013-06-27": "National Unity Day", + "2013-08-08": "Eid al-Fitr", + "2013-09-09": "Independence Day", + "2013-10-15": "Eid al-Adha", + "2013-11-06": "Constitution Day", + "2014-01-01": "New Year's Day", + "2014-03-08": "Mother's Day", + "2014-03-21": "International Nowruz Day", + "2014-03-22": "International Nowruz Day", + "2014-03-23": "International Nowruz Day", + "2014-03-24": "International Nowruz Day", + "2014-05-01": "International Workers' Solidarity Day", + "2014-05-09": "Victory Day", + "2014-06-27": "National Unity Day", + "2014-07-28": "Eid al-Fitr", + "2014-09-09": "Independence Day", + "2014-10-04": "Eid al-Adha", + "2014-11-06": "Constitution Day", + "2015-01-01": "New Year's Day", + "2015-03-08": "Mother's Day", + "2015-03-21": "International Nowruz Day", + "2015-03-22": "International Nowruz Day", + "2015-03-23": "International Nowruz Day", + "2015-03-24": "International Nowruz Day", + "2015-05-01": "International Workers' Solidarity Day", + "2015-05-09": "Victory Day", + "2015-06-27": "National Unity Day", + "2015-07-17": "Eid al-Fitr", + "2015-09-09": "Independence Day", + "2015-09-23": "Eid al-Adha", + "2015-11-06": "Constitution Day", + "2016-01-01": "New Year's Day", + "2016-03-08": "Mother's Day", + "2016-03-21": "International Nowruz Day", + "2016-03-22": "International Nowruz Day", + "2016-03-23": "International Nowruz Day", + "2016-03-24": "International Nowruz Day", + "2016-05-01": "International Workers' Solidarity Day", + "2016-05-09": "Victory Day", + "2016-06-27": "National Unity Day", + "2016-07-06": "Eid al-Fitr", + "2016-09-09": "Independence Day", + "2016-09-11": "Eid al-Adha", + "2016-11-06": "Constitution Day", + "2017-01-01": "New Year's Day", + "2017-03-08": "Mother's Day", + "2017-03-21": "International Nowruz Day", + "2017-03-22": "International Nowruz Day", + "2017-03-23": "International Nowruz Day", + "2017-03-24": "International Nowruz Day", + "2017-05-09": "Victory Day", + "2017-06-25": "Eid al-Fitr", + "2017-06-27": "National Unity Day", + "2017-09-01": "Eid al-Adha", + "2017-09-09": "Independence Day", + "2017-11-06": "Constitution Day", + "2018-01-01": "New Year's Day", + "2018-03-08": "Mother's Day", + "2018-03-21": "International Nowruz Day", + "2018-03-22": "International Nowruz Day", + "2018-03-23": "International Nowruz Day", + "2018-03-24": "International Nowruz Day", + "2018-05-09": "Victory Day", + "2018-06-15": "Eid al-Fitr", + "2018-06-27": "National Unity Day", + "2018-08-21": "Eid al-Adha", + "2018-09-09": "Independence Day", + "2018-11-06": "Constitution Day", + "2019-01-01": "New Year's Day", + "2019-03-08": "Mother's Day", + "2019-03-21": "International Nowruz Day", + "2019-03-22": "International Nowruz Day", + "2019-03-23": "International Nowruz Day", + "2019-03-24": "International Nowruz Day", + "2019-05-09": "Victory Day", + "2019-06-04": "Eid al-Fitr", + "2019-06-27": "National Unity Day", + "2019-08-11": "Eid al-Adha", + "2019-09-09": "Independence Day", + "2019-11-06": "Constitution Day", + "2020-01-01": "New Year's Day", + "2020-03-08": "Mother's Day", + "2020-03-21": "International Nowruz Day", + "2020-03-22": "International Nowruz Day", + "2020-03-23": "International Nowruz Day", + "2020-03-24": "International Nowruz Day", + "2020-05-09": "Victory Day", + "2020-05-24": "Eid al-Fitr", + "2020-06-27": "National Unity Day", + "2020-07-31": "Eid al-Adha", + "2020-09-09": "Independence Day", + "2020-11-06": "Constitution Day", + "2021-01-01": "New Year's Day", + "2021-03-08": "Mother's Day", + "2021-03-21": "International Nowruz Day", + "2021-03-22": "International Nowruz Day", + "2021-03-23": "International Nowruz Day", + "2021-03-24": "International Nowruz Day", + "2021-05-09": "Victory Day", + "2021-05-13": "Eid al-Fitr", + "2021-06-27": "National Unity Day", + "2021-07-20": "Eid al-Adha", + "2021-09-09": "Independence Day", + "2021-11-06": "Constitution Day", + "2022-01-01": "New Year's Day", + "2022-03-08": "Mother's Day", + "2022-03-21": "International Nowruz Day", + "2022-03-22": "International Nowruz Day", + "2022-03-23": "International Nowruz Day", + "2022-03-24": "International Nowruz Day", + "2022-05-02": "Eid al-Fitr", + "2022-05-09": "Victory Day", + "2022-06-27": "National Unity Day", + "2022-07-09": "Eid al-Adha", + "2022-09-09": "Independence Day", + "2022-11-06": "Constitution Day", + "2023-01-01": "New Year's Day", + "2023-03-08": "Mother's Day", + "2023-03-21": "International Nowruz Day", + "2023-03-22": "International Nowruz Day", + "2023-03-23": "International Nowruz Day", + "2023-03-24": "International Nowruz Day", + "2023-04-22": "Eid al-Fitr", + "2023-05-09": "Victory Day", + "2023-06-27": "National Unity Day", + "2023-06-28": "Eid al-Adha", + "2023-09-09": "Independence Day", + "2023-11-06": "Constitution Day", + "2024-01-01": "New Year's Day", + "2024-03-08": "Mother's Day", + "2024-03-21": "International Nowruz Day", + "2024-03-22": "International Nowruz Day", + "2024-03-23": "International Nowruz Day", + "2024-03-24": "International Nowruz Day", + "2024-04-10": "Eid al-Fitr", + "2024-05-09": "Victory Day", + "2024-06-16": "Eid al-Adha", + "2024-06-27": "National Unity Day", + "2024-09-09": "Independence Day", + "2024-11-06": "Constitution Day", + "2025-01-01": "New Year's Day", + "2025-03-08": "Mother's Day", + "2025-03-21": "International Nowruz Day", + "2025-03-22": "International Nowruz Day", + "2025-03-23": "International Nowruz Day", + "2025-03-24": "International Nowruz Day", + "2025-03-30": "Eid al-Fitr", + "2025-05-09": "Victory Day", + "2025-06-06": "Eid al-Adha", + "2025-06-27": "National Unity Day", + "2025-09-09": "Independence Day", + "2025-11-06": "Constitution Day", + "2026-01-01": "New Year's Day", + "2026-03-08": "Mother's Day", + "2026-03-20": "Eid al-Fitr (estimated)", + "2026-03-21": "International Nowruz Day", + "2026-03-22": "International Nowruz Day", + "2026-03-23": "International Nowruz Day", + "2026-03-24": "International Nowruz Day", + "2026-05-09": "Victory Day", + "2026-05-27": "Eid al-Adha (estimated)", + "2026-06-27": "National Unity Day", + "2026-09-09": "Independence Day", + "2026-11-06": "Constitution Day", + "2027-01-01": "New Year's Day", + "2027-03-08": "Mother's Day", + "2027-03-09": "Eid al-Fitr (estimated)", + "2027-03-21": "International Nowruz Day", + "2027-03-22": "International Nowruz Day", + "2027-03-23": "International Nowruz Day", + "2027-03-24": "International Nowruz Day", + "2027-05-09": "Victory Day", + "2027-05-16": "Eid al-Adha (estimated)", + "2027-06-27": "National Unity Day", + "2027-09-09": "Independence Day", + "2027-11-06": "Constitution Day", + "2028-01-01": "New Year's Day", + "2028-02-26": "Eid al-Fitr (estimated)", + "2028-03-08": "Mother's Day", + "2028-03-21": "International Nowruz Day", + "2028-03-22": "International Nowruz Day", + "2028-03-23": "International Nowruz Day", + "2028-03-24": "International Nowruz Day", + "2028-05-05": "Eid al-Adha (estimated)", + "2028-05-09": "Victory Day", + "2028-06-27": "National Unity Day", + "2028-09-09": "Independence Day", + "2028-11-06": "Constitution Day", + "2029-01-01": "New Year's Day", + "2029-02-14": "Eid al-Fitr (estimated)", + "2029-03-08": "Mother's Day", + "2029-03-21": "International Nowruz Day", + "2029-03-22": "International Nowruz Day", + "2029-03-23": "International Nowruz Day", + "2029-03-24": "International Nowruz Day", + "2029-04-24": "Eid al-Adha (estimated)", + "2029-05-09": "Victory Day", + "2029-06-27": "National Unity Day", + "2029-09-09": "Independence Day", + "2029-11-06": "Constitution Day", + "2030-01-01": "New Year's Day", + "2030-02-04": "Eid al-Fitr (estimated)", + "2030-03-08": "Mother's Day", + "2030-03-21": "International Nowruz Day", + "2030-03-22": "International Nowruz Day", + "2030-03-23": "International Nowruz Day", + "2030-03-24": "International Nowruz Day", + "2030-04-13": "Eid al-Adha (estimated)", + "2030-05-09": "Victory Day", + "2030-06-27": "National Unity Day", + "2030-09-09": "Independence Day", + "2030-11-06": "Constitution Day", + "2031-01-01": "New Year's Day", + "2031-01-24": "Eid al-Fitr (estimated)", + "2031-03-08": "Mother's Day", + "2031-03-21": "International Nowruz Day", + "2031-03-22": "International Nowruz Day", + "2031-03-23": "International Nowruz Day", + "2031-03-24": "International Nowruz Day", + "2031-04-02": "Eid al-Adha (estimated)", + "2031-05-09": "Victory Day", + "2031-06-27": "National Unity Day", + "2031-09-09": "Independence Day", + "2031-11-06": "Constitution Day", + "2032-01-01": "New Year's Day", + "2032-01-14": "Eid al-Fitr (estimated)", + "2032-03-08": "Mother's Day", + "2032-03-21": "International Nowruz Day", + "2032-03-22": "Eid al-Adha (estimated); International Nowruz Day", + "2032-03-23": "International Nowruz Day", + "2032-03-24": "International Nowruz Day", + "2032-05-09": "Victory Day", + "2032-06-27": "National Unity Day", + "2032-09-09": "Independence Day", + "2032-11-06": "Constitution Day", + "2033-01-01": "New Year's Day", + "2033-01-02": "Eid al-Fitr (estimated)", + "2033-03-08": "Mother's Day", + "2033-03-11": "Eid al-Adha (estimated)", + "2033-03-21": "International Nowruz Day", + "2033-03-22": "International Nowruz Day", + "2033-03-23": "International Nowruz Day", + "2033-03-24": "International Nowruz Day", + "2033-05-09": "Victory Day", + "2033-06-27": "National Unity Day", + "2033-09-09": "Independence Day", + "2033-11-06": "Constitution Day", + "2033-12-23": "Eid al-Fitr (estimated)", + "2034-01-01": "New Year's Day", + "2034-03-01": "Eid al-Adha (estimated)", + "2034-03-08": "Mother's Day", + "2034-03-21": "International Nowruz Day", + "2034-03-22": "International Nowruz Day", + "2034-03-23": "International Nowruz Day", + "2034-03-24": "International Nowruz Day", + "2034-05-09": "Victory Day", + "2034-06-27": "National Unity Day", + "2034-09-09": "Independence Day", + "2034-11-06": "Constitution Day", + "2034-12-12": "Eid al-Fitr (estimated)", + "2035-01-01": "New Year's Day", + "2035-02-18": "Eid al-Adha (estimated)", + "2035-03-08": "Mother's Day", + "2035-03-21": "International Nowruz Day", + "2035-03-22": "International Nowruz Day", + "2035-03-23": "International Nowruz Day", + "2035-03-24": "International Nowruz Day", + "2035-05-09": "Victory Day", + "2035-06-27": "National Unity Day", + "2035-09-09": "Independence Day", + "2035-11-06": "Constitution Day", + "2035-12-01": "Eid al-Fitr (estimated)", + "2036-01-01": "New Year's Day", + "2036-02-07": "Eid al-Adha (estimated)", + "2036-03-08": "Mother's Day", + "2036-03-21": "International Nowruz Day", + "2036-03-22": "International Nowruz Day", + "2036-03-23": "International Nowruz Day", + "2036-03-24": "International Nowruz Day", + "2036-05-09": "Victory Day", + "2036-06-27": "National Unity Day", + "2036-09-09": "Independence Day", + "2036-11-06": "Constitution Day", + "2036-11-19": "Eid al-Fitr (estimated)", + "2037-01-01": "New Year's Day", + "2037-01-26": "Eid al-Adha (estimated)", + "2037-03-08": "Mother's Day", + "2037-03-21": "International Nowruz Day", + "2037-03-22": "International Nowruz Day", + "2037-03-23": "International Nowruz Day", + "2037-03-24": "International Nowruz Day", + "2037-05-09": "Victory Day", + "2037-06-27": "National Unity Day", + "2037-09-09": "Independence Day", + "2037-11-06": "Constitution Day", + "2037-11-08": "Eid al-Fitr (estimated)", + "2038-01-01": "New Year's Day", + "2038-01-16": "Eid al-Adha (estimated)", + "2038-03-08": "Mother's Day", + "2038-03-21": "International Nowruz Day", + "2038-03-22": "International Nowruz Day", + "2038-03-23": "International Nowruz Day", + "2038-03-24": "International Nowruz Day", + "2038-05-09": "Victory Day", + "2038-06-27": "National Unity Day", + "2038-09-09": "Independence Day", + "2038-10-29": "Eid al-Fitr (estimated)", + "2038-11-06": "Constitution Day", + "2039-01-01": "New Year's Day", + "2039-01-05": "Eid al-Adha (estimated)", + "2039-03-08": "Mother's Day", + "2039-03-21": "International Nowruz Day", + "2039-03-22": "International Nowruz Day", + "2039-03-23": "International Nowruz Day", + "2039-03-24": "International Nowruz Day", + "2039-05-09": "Victory Day", + "2039-06-27": "National Unity Day", + "2039-09-09": "Independence Day", + "2039-10-19": "Eid al-Fitr (estimated)", + "2039-11-06": "Constitution Day", + "2039-12-26": "Eid al-Adha (estimated)", + "2040-01-01": "New Year's Day", + "2040-03-08": "Mother's Day", + "2040-03-21": "International Nowruz Day", + "2040-03-22": "International Nowruz Day", + "2040-03-23": "International Nowruz Day", + "2040-03-24": "International Nowruz Day", + "2040-05-09": "Victory Day", + "2040-06-27": "National Unity Day", + "2040-09-09": "Independence Day", + "2040-10-07": "Eid al-Fitr (estimated)", + "2040-11-06": "Constitution Day", + "2040-12-14": "Eid al-Adha (estimated)", + "2041-01-01": "New Year's Day", + "2041-03-08": "Mother's Day", + "2041-03-21": "International Nowruz Day", + "2041-03-22": "International Nowruz Day", + "2041-03-23": "International Nowruz Day", + "2041-03-24": "International Nowruz Day", + "2041-05-09": "Victory Day", + "2041-06-27": "National Unity Day", + "2041-09-09": "Independence Day", + "2041-09-26": "Eid al-Fitr (estimated)", + "2041-11-06": "Constitution Day", + "2041-12-04": "Eid al-Adha (estimated)", + "2042-01-01": "New Year's Day", + "2042-03-08": "Mother's Day", + "2042-03-21": "International Nowruz Day", + "2042-03-22": "International Nowruz Day", + "2042-03-23": "International Nowruz Day", + "2042-03-24": "International Nowruz Day", + "2042-05-09": "Victory Day", + "2042-06-27": "National Unity Day", + "2042-09-09": "Independence Day", + "2042-09-15": "Eid al-Fitr (estimated)", + "2042-11-06": "Constitution Day", + "2042-11-23": "Eid al-Adha (estimated)", + "2043-01-01": "New Year's Day", + "2043-03-08": "Mother's Day", + "2043-03-21": "International Nowruz Day", + "2043-03-22": "International Nowruz Day", + "2043-03-23": "International Nowruz Day", + "2043-03-24": "International Nowruz Day", + "2043-05-09": "Victory Day", + "2043-06-27": "National Unity Day", + "2043-09-04": "Eid al-Fitr (estimated)", + "2043-09-09": "Independence Day", + "2043-11-06": "Constitution Day", + "2043-11-12": "Eid al-Adha (estimated)", + "2044-01-01": "New Year's Day", + "2044-03-08": "Mother's Day", + "2044-03-21": "International Nowruz Day", + "2044-03-22": "International Nowruz Day", + "2044-03-23": "International Nowruz Day", + "2044-03-24": "International Nowruz Day", + "2044-05-09": "Victory Day", + "2044-06-27": "National Unity Day", + "2044-08-24": "Eid al-Fitr (estimated)", + "2044-09-09": "Independence Day", + "2044-10-31": "Eid al-Adha (estimated)", + "2044-11-06": "Constitution Day", + "2045-01-01": "New Year's Day", + "2045-03-08": "Mother's Day", + "2045-03-21": "International Nowruz Day", + "2045-03-22": "International Nowruz Day", + "2045-03-23": "International Nowruz Day", + "2045-03-24": "International Nowruz Day", + "2045-05-09": "Victory Day", + "2045-06-27": "National Unity Day", + "2045-08-14": "Eid al-Fitr (estimated)", + "2045-09-09": "Independence Day", + "2045-10-21": "Eid al-Adha (estimated)", + "2045-11-06": "Constitution Day", + "2046-01-01": "New Year's Day", + "2046-03-08": "Mother's Day", + "2046-03-21": "International Nowruz Day", + "2046-03-22": "International Nowruz Day", + "2046-03-23": "International Nowruz Day", + "2046-03-24": "International Nowruz Day", + "2046-05-09": "Victory Day", + "2046-06-27": "National Unity Day", + "2046-08-03": "Eid al-Fitr (estimated)", + "2046-09-09": "Independence Day", + "2046-10-10": "Eid al-Adha (estimated)", + "2046-11-06": "Constitution Day", + "2047-01-01": "New Year's Day", + "2047-03-08": "Mother's Day", + "2047-03-21": "International Nowruz Day", + "2047-03-22": "International Nowruz Day", + "2047-03-23": "International Nowruz Day", + "2047-03-24": "International Nowruz Day", + "2047-05-09": "Victory Day", + "2047-06-27": "National Unity Day", + "2047-07-24": "Eid al-Fitr (estimated)", + "2047-09-09": "Independence Day", + "2047-09-30": "Eid al-Adha (estimated)", + "2047-11-06": "Constitution Day", + "2048-01-01": "New Year's Day", + "2048-03-08": "Mother's Day", + "2048-03-21": "International Nowruz Day", + "2048-03-22": "International Nowruz Day", + "2048-03-23": "International Nowruz Day", + "2048-03-24": "International Nowruz Day", + "2048-05-09": "Victory Day", + "2048-06-27": "National Unity Day", + "2048-07-12": "Eid al-Fitr (estimated)", + "2048-09-09": "Independence Day", + "2048-09-19": "Eid al-Adha (estimated)", + "2048-11-06": "Constitution Day", + "2049-01-01": "New Year's Day", + "2049-03-08": "Mother's Day", + "2049-03-21": "International Nowruz Day", + "2049-03-22": "International Nowruz Day", + "2049-03-23": "International Nowruz Day", + "2049-03-24": "International Nowruz Day", + "2049-05-09": "Victory Day", + "2049-06-27": "National Unity Day", + "2049-07-01": "Eid al-Fitr (estimated)", + "2049-09-08": "Eid al-Adha (estimated)", + "2049-09-09": "Independence Day", + "2049-11-06": "Constitution Day", + "2050-01-01": "New Year's Day", + "2050-03-08": "Mother's Day", + "2050-03-21": "International Nowruz Day", + "2050-03-22": "International Nowruz Day", + "2050-03-23": "International Nowruz Day", + "2050-03-24": "International Nowruz Day", + "2050-05-09": "Victory Day", + "2050-06-20": "Eid al-Fitr (estimated)", + "2050-06-27": "National Unity Day", + "2050-08-28": "Eid al-Adha (estimated)", + "2050-09-09": "Independence Day", + "2050-11-06": "Constitution Day" +} From 08d72dd5728024e18ab2dabf7afbebd203468841 Mon Sep 17 00:00:00 2001 From: Prateekshit Jaiswal <67361301+Prateekshit73@users.noreply.github.com> Date: Tue, 26 Aug 2025 06:31:07 +0530 Subject: [PATCH 24/48] Add Comoros holidays (#2827) Signed-off-by: Prateekshit Jaiswal <67361301+Prateekshit73@users.noreply.github.com> Co-authored-by: Prateekshit Co-authored-by: Arkadii Yakovets --- README.md | 9 +- holidays/countries/__init__.py | 1 + holidays/countries/comoros.py | 121 ++++ holidays/registry.py | 1 + snapshots/countries/KM_COMMON.json | 1034 ++++++++++++++++++++++++++++ tests/countries/test_comoros.py | 145 ++++ 6 files changed, 1310 insertions(+), 1 deletion(-) create mode 100644 holidays/countries/comoros.py create mode 100644 snapshots/countries/KM_COMMON.json create mode 100644 tests/countries/test_comoros.py diff --git a/README.md b/README.md index d659a6cf5e..d1ef4405ce 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ and detailed information. ## Available Countries -We currently support 236 country codes. The standard way to refer to a country is by using its [ISO +We currently support 237 country codes. The standard way to refer to a country is by using its [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes), the same used for domain names, and for a subdivision its [ISO 3166-2 code](https://en.wikipedia.org/wiki/ISO_3166-2). Some countries have common or foreign names or @@ -476,6 +476,13 @@ any) in brackets, available languages and additional holiday categories. All cou +Comoros +KM + + + + + Congo CG diff --git a/holidays/countries/__init__.py b/holidays/countries/__init__.py index 19573128cf..f40f1cad22 100644 --- a/holidays/countries/__init__.py +++ b/holidays/countries/__init__.py @@ -59,6 +59,7 @@ from holidays.countries.christmas_island import ChristmasIsland, CX, CXR from holidays.countries.cocos_islands import CocosIslands, CC, CCK from holidays.countries.colombia import Colombia, CO, COL +from holidays.countries.comoros import Comoros, KM, COM from holidays.countries.congo import Congo, CG, COG from holidays.countries.cook_islands import CookIslands, CK, COK from holidays.countries.costa_rica import CostaRica, CR, CRI diff --git a/holidays/countries/comoros.py b/holidays/countries/comoros.py new file mode 100644 index 0000000000..2d2a07cc47 --- /dev/null +++ b/holidays/countries/comoros.py @@ -0,0 +1,121 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from holidays.calendars import _CustomIslamicHolidays +from holidays.calendars.gregorian import JAN, APR, OCT +from holidays.groups import ( + ChristianHolidays, + IslamicHolidays, + InternationalHolidays, + StaticHolidays, +) +from holidays.holiday_base import HolidayBase + + +class Comoros( + HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays, StaticHolidays +): + """Comoros holidays. + + References: + * + * [Prophet's Birthday 2021](https://web.archive.org/web/20250712053206/https://scontent-del1-2.xx.fbcdn.net/v/t39.30808-6/471586197_1113861707132176_3696210890184034016_n.jpg?_nc_cat=100&ccb=1-7&_nc_sid=833d8c&_nc_ohc=3hfvuVNGVbMQ7kNvwHvrgbW&_nc_oc=AdnuDzvtcvdBJMoN-qSW7Pnx2fnzj2TFgwMSRklpM_Na-5AaB9y8D0U5BINcxL-vVL0&_nc_zt=23&_nc_ht=scontent-del1-2.xx&_nc_gid=HWC_59SRsyDfwGxku5bqXw&oh=00_AfSk0LCPS7PARPjdX5-vfM_lr7WxZnrkA9jRyrdUFhoyMQ&oe=68736290) + """ + + country = "KM" + # %s (estimated). + estimated_label = "%s (estimated)" + # Independence from France on July 6, 1975. + start_year = 1976 + + def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): + """ + Args: + islamic_show_estimated: + Whether to add "estimated" label to Islamic holidays name + if holiday date is estimated. + """ + ChristianHolidays.__init__(self) + InternationalHolidays.__init__(self) + IslamicHolidays.__init__( + self, cls=ComorosIslamicHolidays, show_estimated=islamic_show_estimated + ) + StaticHolidays.__init__(self, ComorosStaticHolidays) + super().__init__(*args, **kwargs) + + def _populate_public_holidays(self): + # New Year's Day. + self._add_new_years_day("New Year's Day") + + # Cheikh al Maarouf Day. + self._add_holiday_mar_18("Cheikh al Maarouf Day") + + # Labor Day. + self._add_labor_day("Labour Day") + + # National Day. + self._add_holiday_jul_6("National Day") + + if self._year >= 2006: + # Maore Day. + self._add_holiday_nov_12("Maore Day") + + # Christmas Day. + self._add_christmas_day("Christmas Day") + + # Islamic New Year. + self._add_islamic_new_year_day("Islamic New Year") + + # Prophet's Birthday. + self._add_mawlid_day("Prophet's Birthday") + + # Isra' and Mi'raj. + self._add_isra_and_miraj_day("Isra' and Mi'raj") + + # Eid al-Fitr. + name = "Eid al-Fitr" + self._add_eid_al_fitr_day(name) + self._add_eid_al_fitr_day_two(name) + self._add_eid_al_fitr_day_three(name) + + # Eid al-Adha. + name = "Eid al-Adha" + self._add_eid_al_adha_day(name) + self._add_eid_al_adha_day_two(name) + + +class KM(Comoros): + pass + + +class COM(Comoros): + pass + + +class ComorosIslamicHolidays(_CustomIslamicHolidays): + MAWLID_DATES = { + 2021: (OCT, 19), + } + + +class ComorosStaticHolidays: + """Comoros special holidays. + + References: + * [Décret N°24-056PR](https://web.archive.org/web/20250717033820/https://munganyo.km/decrees/225) + * [Décret N°25-008PR](https://web.archive.org/web/20250715223159/https://munganyo.km/decrees/374) + """ + + special_public_holidays = { + 2024: (APR, 13, "National Holiday"), + 2025: (JAN, 30, "Election Partial Day Holiday"), + } diff --git a/holidays/registry.py b/holidays/registry.py index f2a1fffdc8..e036a4b924 100644 --- a/holidays/registry.py +++ b/holidays/registry.py @@ -67,6 +67,7 @@ "christmas_island": ("ChristmasIsland", "CX", "CXR"), "cocos_islands": ("CocosIslands", "CC", "CCK"), "colombia": ("Colombia", "CO", "COL"), + "comoros": ("Comoros", "KM", "COM"), "congo": ("Congo", "CG", "COG"), "cook_islands": ("CookIslands", "CK", "COK"), "costa_rica": ("CostaRica", "CR", "CRI"), diff --git a/snapshots/countries/KM_COMMON.json b/snapshots/countries/KM_COMMON.json new file mode 100644 index 0000000000..d93106abe2 --- /dev/null +++ b/snapshots/countries/KM_COMMON.json @@ -0,0 +1,1034 @@ +{ + "1976-01-01": "New Year's Day", + "1976-01-02": "Islamic New Year (estimated)", + "1976-03-12": "Prophet's Birthday (estimated)", + "1976-03-18": "Cheikh al Maarouf Day", + "1976-05-01": "Labour Day", + "1976-07-06": "National Day", + "1976-07-24": "Isra' and Mi'raj (estimated)", + "1976-09-24": "Eid al-Fitr (estimated)", + "1976-09-25": "Eid al-Fitr (estimated)", + "1976-09-26": "Eid al-Fitr (estimated)", + "1976-12-01": "Eid al-Adha (estimated)", + "1976-12-02": "Eid al-Adha (estimated)", + "1976-12-22": "Islamic New Year (estimated)", + "1976-12-25": "Christmas Day", + "1977-01-01": "New Year's Day", + "1977-03-02": "Prophet's Birthday (estimated)", + "1977-03-18": "Cheikh al Maarouf Day", + "1977-05-01": "Labour Day", + "1977-07-06": "National Day", + "1977-07-13": "Isra' and Mi'raj (estimated)", + "1977-09-14": "Eid al-Fitr (estimated)", + "1977-09-15": "Eid al-Fitr (estimated)", + "1977-09-16": "Eid al-Fitr (estimated)", + "1977-11-21": "Eid al-Adha (estimated)", + "1977-11-22": "Eid al-Adha (estimated)", + "1977-12-11": "Islamic New Year (estimated)", + "1977-12-25": "Christmas Day", + "1978-01-01": "New Year's Day", + "1978-02-19": "Prophet's Birthday (estimated)", + "1978-03-18": "Cheikh al Maarouf Day", + "1978-05-01": "Labour Day", + "1978-07-02": "Isra' and Mi'raj (estimated)", + "1978-07-06": "National Day", + "1978-09-03": "Eid al-Fitr (estimated)", + "1978-09-04": "Eid al-Fitr (estimated)", + "1978-09-05": "Eid al-Fitr (estimated)", + "1978-11-10": "Eid al-Adha (estimated)", + "1978-11-11": "Eid al-Adha (estimated)", + "1978-12-01": "Islamic New Year (estimated)", + "1978-12-25": "Christmas Day", + "1979-01-01": "New Year's Day", + "1979-02-09": "Prophet's Birthday (estimated)", + "1979-03-18": "Cheikh al Maarouf Day", + "1979-05-01": "Labour Day", + "1979-06-22": "Isra' and Mi'raj (estimated)", + "1979-07-06": "National Day", + "1979-08-23": "Eid al-Fitr (estimated)", + "1979-08-24": "Eid al-Fitr (estimated)", + "1979-08-25": "Eid al-Fitr (estimated)", + "1979-10-31": "Eid al-Adha (estimated)", + "1979-11-01": "Eid al-Adha (estimated)", + "1979-11-20": "Islamic New Year (estimated)", + "1979-12-25": "Christmas Day", + "1980-01-01": "New Year's Day", + "1980-01-30": "Prophet's Birthday (estimated)", + "1980-03-18": "Cheikh al Maarouf Day", + "1980-05-01": "Labour Day", + "1980-06-10": "Isra' and Mi'raj (estimated)", + "1980-07-06": "National Day", + "1980-08-12": "Eid al-Fitr (estimated)", + "1980-08-13": "Eid al-Fitr (estimated)", + "1980-08-14": "Eid al-Fitr (estimated)", + "1980-10-19": "Eid al-Adha (estimated)", + "1980-10-20": "Eid al-Adha (estimated)", + "1980-11-09": "Islamic New Year (estimated)", + "1980-12-25": "Christmas Day", + "1981-01-01": "New Year's Day", + "1981-01-18": "Prophet's Birthday (estimated)", + "1981-03-18": "Cheikh al Maarouf Day", + "1981-05-01": "Labour Day", + "1981-05-31": "Isra' and Mi'raj (estimated)", + "1981-07-06": "National Day", + "1981-08-01": "Eid al-Fitr (estimated)", + "1981-08-02": "Eid al-Fitr (estimated)", + "1981-08-03": "Eid al-Fitr (estimated)", + "1981-10-08": "Eid al-Adha (estimated)", + "1981-10-09": "Eid al-Adha (estimated)", + "1981-10-28": "Islamic New Year (estimated)", + "1981-12-25": "Christmas Day", + "1982-01-01": "New Year's Day", + "1982-01-07": "Prophet's Birthday (estimated)", + "1982-03-18": "Cheikh al Maarouf Day", + "1982-05-01": "Labour Day", + "1982-05-20": "Isra' and Mi'raj (estimated)", + "1982-07-06": "National Day", + "1982-07-21": "Eid al-Fitr (estimated)", + "1982-07-22": "Eid al-Fitr (estimated)", + "1982-07-23": "Eid al-Fitr (estimated)", + "1982-09-27": "Eid al-Adha (estimated)", + "1982-09-28": "Eid al-Adha (estimated)", + "1982-10-18": "Islamic New Year (estimated)", + "1982-12-25": "Christmas Day", + "1982-12-27": "Prophet's Birthday (estimated)", + "1983-01-01": "New Year's Day", + "1983-03-18": "Cheikh al Maarouf Day", + "1983-05-01": "Labour Day", + "1983-05-10": "Isra' and Mi'raj (estimated)", + "1983-07-06": "National Day", + "1983-07-11": "Eid al-Fitr (estimated)", + "1983-07-12": "Eid al-Fitr (estimated)", + "1983-07-13": "Eid al-Fitr (estimated)", + "1983-09-17": "Eid al-Adha (estimated)", + "1983-09-18": "Eid al-Adha (estimated)", + "1983-10-07": "Islamic New Year (estimated)", + "1983-12-16": "Prophet's Birthday (estimated)", + "1983-12-25": "Christmas Day", + "1984-01-01": "New Year's Day", + "1984-03-18": "Cheikh al Maarouf Day", + "1984-04-28": "Isra' and Mi'raj (estimated)", + "1984-05-01": "Labour Day", + "1984-06-30": "Eid al-Fitr (estimated)", + "1984-07-01": "Eid al-Fitr (estimated)", + "1984-07-02": "Eid al-Fitr (estimated)", + "1984-07-06": "National Day", + "1984-09-05": "Eid al-Adha (estimated)", + "1984-09-06": "Eid al-Adha (estimated)", + "1984-09-26": "Islamic New Year (estimated)", + "1984-12-04": "Prophet's Birthday (estimated)", + "1984-12-25": "Christmas Day", + "1985-01-01": "New Year's Day", + "1985-03-18": "Cheikh al Maarouf Day", + "1985-04-17": "Isra' and Mi'raj (estimated)", + "1985-05-01": "Labour Day", + "1985-06-19": "Eid al-Fitr (estimated)", + "1985-06-20": "Eid al-Fitr (estimated)", + "1985-06-21": "Eid al-Fitr (estimated)", + "1985-07-06": "National Day", + "1985-08-26": "Eid al-Adha (estimated)", + "1985-08-27": "Eid al-Adha (estimated)", + "1985-09-15": "Islamic New Year (estimated)", + "1985-11-24": "Prophet's Birthday (estimated)", + "1985-12-25": "Christmas Day", + "1986-01-01": "New Year's Day", + "1986-03-18": "Cheikh al Maarouf Day", + "1986-04-06": "Isra' and Mi'raj (estimated)", + "1986-05-01": "Labour Day", + "1986-06-08": "Eid al-Fitr (estimated)", + "1986-06-09": "Eid al-Fitr (estimated)", + "1986-06-10": "Eid al-Fitr (estimated)", + "1986-07-06": "National Day", + "1986-08-15": "Eid al-Adha (estimated)", + "1986-08-16": "Eid al-Adha (estimated)", + "1986-09-05": "Islamic New Year (estimated)", + "1986-11-14": "Prophet's Birthday (estimated)", + "1986-12-25": "Christmas Day", + "1987-01-01": "New Year's Day", + "1987-03-18": "Cheikh al Maarouf Day", + "1987-03-27": "Isra' and Mi'raj (estimated)", + "1987-05-01": "Labour Day", + "1987-05-28": "Eid al-Fitr (estimated)", + "1987-05-29": "Eid al-Fitr (estimated)", + "1987-05-30": "Eid al-Fitr (estimated)", + "1987-07-06": "National Day", + "1987-08-04": "Eid al-Adha (estimated)", + "1987-08-05": "Eid al-Adha (estimated)", + "1987-08-25": "Islamic New Year (estimated)", + "1987-11-03": "Prophet's Birthday (estimated)", + "1987-12-25": "Christmas Day", + "1988-01-01": "New Year's Day", + "1988-03-15": "Isra' and Mi'raj (estimated)", + "1988-03-18": "Cheikh al Maarouf Day", + "1988-05-01": "Labour Day", + "1988-05-16": "Eid al-Fitr (estimated)", + "1988-05-17": "Eid al-Fitr (estimated)", + "1988-05-18": "Eid al-Fitr (estimated)", + "1988-07-06": "National Day", + "1988-07-23": "Eid al-Adha (estimated)", + "1988-07-24": "Eid al-Adha (estimated)", + "1988-08-13": "Islamic New Year (estimated)", + "1988-10-22": "Prophet's Birthday (estimated)", + "1988-12-25": "Christmas Day", + "1989-01-01": "New Year's Day", + "1989-03-05": "Isra' and Mi'raj (estimated)", + "1989-03-18": "Cheikh al Maarouf Day", + "1989-05-01": "Labour Day", + "1989-05-06": "Eid al-Fitr (estimated)", + "1989-05-07": "Eid al-Fitr (estimated)", + "1989-05-08": "Eid al-Fitr (estimated)", + "1989-07-06": "National Day", + "1989-07-13": "Eid al-Adha (estimated)", + "1989-07-14": "Eid al-Adha (estimated)", + "1989-08-02": "Islamic New Year (estimated)", + "1989-10-11": "Prophet's Birthday (estimated)", + "1989-12-25": "Christmas Day", + "1990-01-01": "New Year's Day", + "1990-02-22": "Isra' and Mi'raj (estimated)", + "1990-03-18": "Cheikh al Maarouf Day", + "1990-04-26": "Eid al-Fitr (estimated)", + "1990-04-27": "Eid al-Fitr (estimated)", + "1990-04-28": "Eid al-Fitr (estimated)", + "1990-05-01": "Labour Day", + "1990-07-02": "Eid al-Adha (estimated)", + "1990-07-03": "Eid al-Adha (estimated)", + "1990-07-06": "National Day", + "1990-07-23": "Islamic New Year (estimated)", + "1990-10-01": "Prophet's Birthday (estimated)", + "1990-12-25": "Christmas Day", + "1991-01-01": "New Year's Day", + "1991-02-11": "Isra' and Mi'raj (estimated)", + "1991-03-18": "Cheikh al Maarouf Day", + "1991-04-15": "Eid al-Fitr (estimated)", + "1991-04-16": "Eid al-Fitr (estimated)", + "1991-04-17": "Eid al-Fitr (estimated)", + "1991-05-01": "Labour Day", + "1991-06-22": "Eid al-Adha (estimated)", + "1991-06-23": "Eid al-Adha (estimated)", + "1991-07-06": "National Day", + "1991-07-12": "Islamic New Year (estimated)", + "1991-09-20": "Prophet's Birthday (estimated)", + "1991-12-25": "Christmas Day", + "1992-01-01": "New Year's Day", + "1992-01-31": "Isra' and Mi'raj (estimated)", + "1992-03-18": "Cheikh al Maarouf Day", + "1992-04-04": "Eid al-Fitr (estimated)", + "1992-04-05": "Eid al-Fitr (estimated)", + "1992-04-06": "Eid al-Fitr (estimated)", + "1992-05-01": "Labour Day", + "1992-06-11": "Eid al-Adha (estimated)", + "1992-06-12": "Eid al-Adha (estimated)", + "1992-07-01": "Islamic New Year (estimated)", + "1992-07-06": "National Day", + "1992-09-09": "Prophet's Birthday (estimated)", + "1992-12-25": "Christmas Day", + "1993-01-01": "New Year's Day", + "1993-01-20": "Isra' and Mi'raj (estimated)", + "1993-03-18": "Cheikh al Maarouf Day", + "1993-03-24": "Eid al-Fitr (estimated)", + "1993-03-25": "Eid al-Fitr (estimated)", + "1993-03-26": "Eid al-Fitr (estimated)", + "1993-05-01": "Labour Day", + "1993-05-31": "Eid al-Adha (estimated)", + "1993-06-01": "Eid al-Adha (estimated)", + "1993-06-21": "Islamic New Year (estimated)", + "1993-07-06": "National Day", + "1993-08-29": "Prophet's Birthday (estimated)", + "1993-12-25": "Christmas Day", + "1994-01-01": "New Year's Day", + "1994-01-09": "Isra' and Mi'raj (estimated)", + "1994-03-13": "Eid al-Fitr (estimated)", + "1994-03-14": "Eid al-Fitr (estimated)", + "1994-03-15": "Eid al-Fitr (estimated)", + "1994-03-18": "Cheikh al Maarouf Day", + "1994-05-01": "Labour Day", + "1994-05-20": "Eid al-Adha (estimated)", + "1994-05-21": "Eid al-Adha (estimated)", + "1994-06-10": "Islamic New Year (estimated)", + "1994-07-06": "National Day", + "1994-08-19": "Prophet's Birthday (estimated)", + "1994-12-25": "Christmas Day", + "1994-12-29": "Isra' and Mi'raj (estimated)", + "1995-01-01": "New Year's Day", + "1995-03-02": "Eid al-Fitr (estimated)", + "1995-03-03": "Eid al-Fitr (estimated)", + "1995-03-04": "Eid al-Fitr (estimated)", + "1995-03-18": "Cheikh al Maarouf Day", + "1995-05-01": "Labour Day", + "1995-05-09": "Eid al-Adha (estimated)", + "1995-05-10": "Eid al-Adha (estimated)", + "1995-05-30": "Islamic New Year (estimated)", + "1995-07-06": "National Day", + "1995-08-08": "Prophet's Birthday (estimated)", + "1995-12-19": "Isra' and Mi'raj (estimated)", + "1995-12-25": "Christmas Day", + "1996-01-01": "New Year's Day", + "1996-02-19": "Eid al-Fitr (estimated)", + "1996-02-20": "Eid al-Fitr (estimated)", + "1996-02-21": "Eid al-Fitr (estimated)", + "1996-03-18": "Cheikh al Maarouf Day", + "1996-04-27": "Eid al-Adha (estimated)", + "1996-04-28": "Eid al-Adha (estimated)", + "1996-05-01": "Labour Day", + "1996-05-18": "Islamic New Year (estimated)", + "1996-07-06": "National Day", + "1996-07-27": "Prophet's Birthday (estimated)", + "1996-12-08": "Isra' and Mi'raj (estimated)", + "1996-12-25": "Christmas Day", + "1997-01-01": "New Year's Day", + "1997-02-08": "Eid al-Fitr (estimated)", + "1997-02-09": "Eid al-Fitr (estimated)", + "1997-02-10": "Eid al-Fitr (estimated)", + "1997-03-18": "Cheikh al Maarouf Day", + "1997-04-17": "Eid al-Adha (estimated)", + "1997-04-18": "Eid al-Adha (estimated)", + "1997-05-01": "Labour Day", + "1997-05-07": "Islamic New Year (estimated)", + "1997-07-06": "National Day", + "1997-07-16": "Prophet's Birthday (estimated)", + "1997-11-27": "Isra' and Mi'raj (estimated)", + "1997-12-25": "Christmas Day", + "1998-01-01": "New Year's Day", + "1998-01-29": "Eid al-Fitr (estimated)", + "1998-01-30": "Eid al-Fitr (estimated)", + "1998-01-31": "Eid al-Fitr (estimated)", + "1998-03-18": "Cheikh al Maarouf Day", + "1998-04-07": "Eid al-Adha (estimated)", + "1998-04-08": "Eid al-Adha (estimated)", + "1998-04-27": "Islamic New Year (estimated)", + "1998-05-01": "Labour Day", + "1998-07-06": "National Day; Prophet's Birthday (estimated)", + "1998-11-16": "Isra' and Mi'raj (estimated)", + "1998-12-25": "Christmas Day", + "1999-01-01": "New Year's Day", + "1999-01-18": "Eid al-Fitr (estimated)", + "1999-01-19": "Eid al-Fitr (estimated)", + "1999-01-20": "Eid al-Fitr (estimated)", + "1999-03-18": "Cheikh al Maarouf Day", + "1999-03-27": "Eid al-Adha (estimated)", + "1999-03-28": "Eid al-Adha (estimated)", + "1999-04-17": "Islamic New Year (estimated)", + "1999-05-01": "Labour Day", + "1999-06-26": "Prophet's Birthday (estimated)", + "1999-07-06": "National Day", + "1999-11-05": "Isra' and Mi'raj (estimated)", + "1999-12-25": "Christmas Day", + "2000-01-01": "New Year's Day", + "2000-01-08": "Eid al-Fitr (estimated)", + "2000-01-09": "Eid al-Fitr (estimated)", + "2000-01-10": "Eid al-Fitr (estimated)", + "2000-03-16": "Eid al-Adha (estimated)", + "2000-03-17": "Eid al-Adha (estimated)", + "2000-03-18": "Cheikh al Maarouf Day", + "2000-04-06": "Islamic New Year (estimated)", + "2000-05-01": "Labour Day", + "2000-06-14": "Prophet's Birthday (estimated)", + "2000-07-06": "National Day", + "2000-10-24": "Isra' and Mi'raj (estimated)", + "2000-12-25": "Christmas Day", + "2000-12-27": "Eid al-Fitr (estimated)", + "2000-12-28": "Eid al-Fitr (estimated)", + "2000-12-29": "Eid al-Fitr (estimated)", + "2001-01-01": "New Year's Day", + "2001-03-05": "Eid al-Adha (estimated)", + "2001-03-06": "Eid al-Adha (estimated)", + "2001-03-18": "Cheikh al Maarouf Day", + "2001-03-26": "Islamic New Year (estimated)", + "2001-05-01": "Labour Day", + "2001-06-04": "Prophet's Birthday (estimated)", + "2001-07-06": "National Day", + "2001-10-14": "Isra' and Mi'raj (estimated)", + "2001-12-16": "Eid al-Fitr (estimated)", + "2001-12-17": "Eid al-Fitr (estimated)", + "2001-12-18": "Eid al-Fitr (estimated)", + "2001-12-25": "Christmas Day", + "2002-01-01": "New Year's Day", + "2002-02-22": "Eid al-Adha (estimated)", + "2002-02-23": "Eid al-Adha (estimated)", + "2002-03-15": "Islamic New Year (estimated)", + "2002-03-18": "Cheikh al Maarouf Day", + "2002-05-01": "Labour Day", + "2002-05-24": "Prophet's Birthday (estimated)", + "2002-07-06": "National Day", + "2002-10-04": "Isra' and Mi'raj (estimated)", + "2002-12-05": "Eid al-Fitr (estimated)", + "2002-12-06": "Eid al-Fitr (estimated)", + "2002-12-07": "Eid al-Fitr (estimated)", + "2002-12-25": "Christmas Day", + "2003-01-01": "New Year's Day", + "2003-02-11": "Eid al-Adha (estimated)", + "2003-02-12": "Eid al-Adha (estimated)", + "2003-03-04": "Islamic New Year (estimated)", + "2003-03-18": "Cheikh al Maarouf Day", + "2003-05-01": "Labour Day", + "2003-05-13": "Prophet's Birthday (estimated)", + "2003-07-06": "National Day", + "2003-09-24": "Isra' and Mi'raj (estimated)", + "2003-11-25": "Eid al-Fitr (estimated)", + "2003-11-26": "Eid al-Fitr (estimated)", + "2003-11-27": "Eid al-Fitr (estimated)", + "2003-12-25": "Christmas Day", + "2004-01-01": "New Year's Day", + "2004-02-01": "Eid al-Adha (estimated)", + "2004-02-02": "Eid al-Adha (estimated)", + "2004-02-21": "Islamic New Year (estimated)", + "2004-03-18": "Cheikh al Maarouf Day", + "2004-05-01": "Labour Day; Prophet's Birthday (estimated)", + "2004-07-06": "National Day", + "2004-09-12": "Isra' and Mi'raj (estimated)", + "2004-11-14": "Eid al-Fitr (estimated)", + "2004-11-15": "Eid al-Fitr (estimated)", + "2004-11-16": "Eid al-Fitr (estimated)", + "2004-12-25": "Christmas Day", + "2005-01-01": "New Year's Day", + "2005-01-21": "Eid al-Adha (estimated)", + "2005-01-22": "Eid al-Adha (estimated)", + "2005-02-10": "Islamic New Year (estimated)", + "2005-03-18": "Cheikh al Maarouf Day", + "2005-04-21": "Prophet's Birthday (estimated)", + "2005-05-01": "Labour Day", + "2005-07-06": "National Day", + "2005-09-01": "Isra' and Mi'raj (estimated)", + "2005-11-03": "Eid al-Fitr (estimated)", + "2005-11-04": "Eid al-Fitr (estimated)", + "2005-11-05": "Eid al-Fitr (estimated)", + "2005-12-25": "Christmas Day", + "2006-01-01": "New Year's Day", + "2006-01-10": "Eid al-Adha (estimated)", + "2006-01-11": "Eid al-Adha (estimated)", + "2006-01-31": "Islamic New Year (estimated)", + "2006-03-18": "Cheikh al Maarouf Day", + "2006-04-10": "Prophet's Birthday (estimated)", + "2006-05-01": "Labour Day", + "2006-07-06": "National Day", + "2006-08-21": "Isra' and Mi'raj (estimated)", + "2006-10-23": "Eid al-Fitr (estimated)", + "2006-10-24": "Eid al-Fitr (estimated)", + "2006-10-25": "Eid al-Fitr (estimated)", + "2006-11-12": "Maore Day", + "2006-12-25": "Christmas Day", + "2006-12-31": "Eid al-Adha (estimated)", + "2007-01-01": "Eid al-Adha (estimated); New Year's Day", + "2007-01-20": "Islamic New Year (estimated)", + "2007-03-18": "Cheikh al Maarouf Day", + "2007-03-31": "Prophet's Birthday (estimated)", + "2007-05-01": "Labour Day", + "2007-07-06": "National Day", + "2007-08-10": "Isra' and Mi'raj (estimated)", + "2007-10-13": "Eid al-Fitr (estimated)", + "2007-10-14": "Eid al-Fitr (estimated)", + "2007-10-15": "Eid al-Fitr (estimated)", + "2007-11-12": "Maore Day", + "2007-12-20": "Eid al-Adha (estimated)", + "2007-12-21": "Eid al-Adha (estimated)", + "2007-12-25": "Christmas Day", + "2008-01-01": "New Year's Day", + "2008-01-10": "Islamic New Year (estimated)", + "2008-03-18": "Cheikh al Maarouf Day", + "2008-03-20": "Prophet's Birthday (estimated)", + "2008-05-01": "Labour Day", + "2008-07-06": "National Day", + "2008-07-30": "Isra' and Mi'raj (estimated)", + "2008-10-01": "Eid al-Fitr (estimated)", + "2008-10-02": "Eid al-Fitr (estimated)", + "2008-10-03": "Eid al-Fitr (estimated)", + "2008-11-12": "Maore Day", + "2008-12-08": "Eid al-Adha (estimated)", + "2008-12-09": "Eid al-Adha (estimated)", + "2008-12-25": "Christmas Day", + "2008-12-29": "Islamic New Year (estimated)", + "2009-01-01": "New Year's Day", + "2009-03-09": "Prophet's Birthday (estimated)", + "2009-03-18": "Cheikh al Maarouf Day", + "2009-05-01": "Labour Day", + "2009-07-06": "National Day", + "2009-07-20": "Isra' and Mi'raj (estimated)", + "2009-09-20": "Eid al-Fitr (estimated)", + "2009-09-21": "Eid al-Fitr (estimated)", + "2009-09-22": "Eid al-Fitr (estimated)", + "2009-11-12": "Maore Day", + "2009-11-27": "Eid al-Adha (estimated)", + "2009-11-28": "Eid al-Adha (estimated)", + "2009-12-18": "Islamic New Year (estimated)", + "2009-12-25": "Christmas Day", + "2010-01-01": "New Year's Day", + "2010-02-26": "Prophet's Birthday (estimated)", + "2010-03-18": "Cheikh al Maarouf Day", + "2010-05-01": "Labour Day", + "2010-07-06": "National Day", + "2010-07-09": "Isra' and Mi'raj (estimated)", + "2010-09-10": "Eid al-Fitr (estimated)", + "2010-09-11": "Eid al-Fitr (estimated)", + "2010-09-12": "Eid al-Fitr (estimated)", + "2010-11-12": "Maore Day", + "2010-11-16": "Eid al-Adha (estimated)", + "2010-11-17": "Eid al-Adha (estimated)", + "2010-12-07": "Islamic New Year (estimated)", + "2010-12-25": "Christmas Day", + "2011-01-01": "New Year's Day", + "2011-02-15": "Prophet's Birthday (estimated)", + "2011-03-18": "Cheikh al Maarouf Day", + "2011-05-01": "Labour Day", + "2011-06-29": "Isra' and Mi'raj (estimated)", + "2011-07-06": "National Day", + "2011-08-30": "Eid al-Fitr (estimated)", + "2011-08-31": "Eid al-Fitr (estimated)", + "2011-09-01": "Eid al-Fitr (estimated)", + "2011-11-06": "Eid al-Adha (estimated)", + "2011-11-07": "Eid al-Adha (estimated)", + "2011-11-12": "Maore Day", + "2011-11-26": "Islamic New Year (estimated)", + "2011-12-25": "Christmas Day", + "2012-01-01": "New Year's Day", + "2012-02-04": "Prophet's Birthday (estimated)", + "2012-03-18": "Cheikh al Maarouf Day", + "2012-05-01": "Labour Day", + "2012-06-17": "Isra' and Mi'raj (estimated)", + "2012-07-06": "National Day", + "2012-08-19": "Eid al-Fitr (estimated)", + "2012-08-20": "Eid al-Fitr (estimated)", + "2012-08-21": "Eid al-Fitr (estimated)", + "2012-10-26": "Eid al-Adha (estimated)", + "2012-10-27": "Eid al-Adha (estimated)", + "2012-11-12": "Maore Day", + "2012-11-15": "Islamic New Year (estimated)", + "2012-12-25": "Christmas Day", + "2013-01-01": "New Year's Day", + "2013-01-24": "Prophet's Birthday (estimated)", + "2013-03-18": "Cheikh al Maarouf Day", + "2013-05-01": "Labour Day", + "2013-06-06": "Isra' and Mi'raj (estimated)", + "2013-07-06": "National Day", + "2013-08-08": "Eid al-Fitr (estimated)", + "2013-08-09": "Eid al-Fitr (estimated)", + "2013-08-10": "Eid al-Fitr (estimated)", + "2013-10-15": "Eid al-Adha (estimated)", + "2013-10-16": "Eid al-Adha (estimated)", + "2013-11-04": "Islamic New Year (estimated)", + "2013-11-12": "Maore Day", + "2013-12-25": "Christmas Day", + "2014-01-01": "New Year's Day", + "2014-01-13": "Prophet's Birthday (estimated)", + "2014-03-18": "Cheikh al Maarouf Day", + "2014-05-01": "Labour Day", + "2014-05-26": "Isra' and Mi'raj (estimated)", + "2014-07-06": "National Day", + "2014-07-28": "Eid al-Fitr (estimated)", + "2014-07-29": "Eid al-Fitr (estimated)", + "2014-07-30": "Eid al-Fitr (estimated)", + "2014-10-04": "Eid al-Adha (estimated)", + "2014-10-05": "Eid al-Adha (estimated)", + "2014-10-25": "Islamic New Year (estimated)", + "2014-11-12": "Maore Day", + "2014-12-25": "Christmas Day", + "2015-01-01": "New Year's Day", + "2015-01-03": "Prophet's Birthday (estimated)", + "2015-03-18": "Cheikh al Maarouf Day", + "2015-05-01": "Labour Day", + "2015-05-16": "Isra' and Mi'raj (estimated)", + "2015-07-06": "National Day", + "2015-07-17": "Eid al-Fitr (estimated)", + "2015-07-18": "Eid al-Fitr (estimated)", + "2015-07-19": "Eid al-Fitr (estimated)", + "2015-09-23": "Eid al-Adha (estimated)", + "2015-09-24": "Eid al-Adha (estimated)", + "2015-10-14": "Islamic New Year (estimated)", + "2015-11-12": "Maore Day", + "2015-12-23": "Prophet's Birthday (estimated)", + "2015-12-25": "Christmas Day", + "2016-01-01": "New Year's Day", + "2016-03-18": "Cheikh al Maarouf Day", + "2016-05-01": "Labour Day", + "2016-05-04": "Isra' and Mi'raj (estimated)", + "2016-07-06": "Eid al-Fitr (estimated); National Day", + "2016-07-07": "Eid al-Fitr (estimated)", + "2016-07-08": "Eid al-Fitr (estimated)", + "2016-09-11": "Eid al-Adha (estimated)", + "2016-09-12": "Eid al-Adha (estimated)", + "2016-10-02": "Islamic New Year (estimated)", + "2016-11-12": "Maore Day", + "2016-12-11": "Prophet's Birthday (estimated)", + "2016-12-25": "Christmas Day", + "2017-01-01": "New Year's Day", + "2017-03-18": "Cheikh al Maarouf Day", + "2017-04-24": "Isra' and Mi'raj (estimated)", + "2017-05-01": "Labour Day", + "2017-06-25": "Eid al-Fitr (estimated)", + "2017-06-26": "Eid al-Fitr (estimated)", + "2017-06-27": "Eid al-Fitr (estimated)", + "2017-07-06": "National Day", + "2017-09-01": "Eid al-Adha (estimated)", + "2017-09-02": "Eid al-Adha (estimated)", + "2017-09-21": "Islamic New Year (estimated)", + "2017-11-12": "Maore Day", + "2017-11-30": "Prophet's Birthday (estimated)", + "2017-12-25": "Christmas Day", + "2018-01-01": "New Year's Day", + "2018-03-18": "Cheikh al Maarouf Day", + "2018-04-13": "Isra' and Mi'raj (estimated)", + "2018-05-01": "Labour Day", + "2018-06-15": "Eid al-Fitr (estimated)", + "2018-06-16": "Eid al-Fitr (estimated)", + "2018-06-17": "Eid al-Fitr (estimated)", + "2018-07-06": "National Day", + "2018-08-21": "Eid al-Adha (estimated)", + "2018-08-22": "Eid al-Adha (estimated)", + "2018-09-11": "Islamic New Year (estimated)", + "2018-11-12": "Maore Day", + "2018-11-20": "Prophet's Birthday (estimated)", + "2018-12-25": "Christmas Day", + "2019-01-01": "New Year's Day", + "2019-03-18": "Cheikh al Maarouf Day", + "2019-04-03": "Isra' and Mi'raj (estimated)", + "2019-05-01": "Labour Day", + "2019-06-04": "Eid al-Fitr (estimated)", + "2019-06-05": "Eid al-Fitr (estimated)", + "2019-06-06": "Eid al-Fitr (estimated)", + "2019-07-06": "National Day", + "2019-08-11": "Eid al-Adha (estimated)", + "2019-08-12": "Eid al-Adha (estimated)", + "2019-08-31": "Islamic New Year (estimated)", + "2019-11-09": "Prophet's Birthday (estimated)", + "2019-11-12": "Maore Day", + "2019-12-25": "Christmas Day", + "2020-01-01": "New Year's Day", + "2020-03-18": "Cheikh al Maarouf Day", + "2020-03-22": "Isra' and Mi'raj (estimated)", + "2020-05-01": "Labour Day", + "2020-05-24": "Eid al-Fitr (estimated)", + "2020-05-25": "Eid al-Fitr (estimated)", + "2020-05-26": "Eid al-Fitr (estimated)", + "2020-07-06": "National Day", + "2020-07-31": "Eid al-Adha (estimated)", + "2020-08-01": "Eid al-Adha (estimated)", + "2020-08-20": "Islamic New Year (estimated)", + "2020-10-29": "Prophet's Birthday (estimated)", + "2020-11-12": "Maore Day", + "2020-12-25": "Christmas Day", + "2021-01-01": "New Year's Day", + "2021-03-11": "Isra' and Mi'raj (estimated)", + "2021-03-18": "Cheikh al Maarouf Day", + "2021-05-01": "Labour Day", + "2021-05-13": "Eid al-Fitr (estimated)", + "2021-05-14": "Eid al-Fitr (estimated)", + "2021-05-15": "Eid al-Fitr (estimated)", + "2021-07-06": "National Day", + "2021-07-20": "Eid al-Adha (estimated)", + "2021-07-21": "Eid al-Adha (estimated)", + "2021-08-09": "Islamic New Year (estimated)", + "2021-10-19": "Prophet's Birthday", + "2021-11-12": "Maore Day", + "2021-12-25": "Christmas Day", + "2022-01-01": "New Year's Day", + "2022-02-28": "Isra' and Mi'raj (estimated)", + "2022-03-18": "Cheikh al Maarouf Day", + "2022-05-01": "Labour Day", + "2022-05-02": "Eid al-Fitr (estimated)", + "2022-05-03": "Eid al-Fitr (estimated)", + "2022-05-04": "Eid al-Fitr (estimated)", + "2022-07-06": "National Day", + "2022-07-09": "Eid al-Adha (estimated)", + "2022-07-10": "Eid al-Adha (estimated)", + "2022-07-30": "Islamic New Year (estimated)", + "2022-10-08": "Prophet's Birthday (estimated)", + "2022-11-12": "Maore Day", + "2022-12-25": "Christmas Day", + "2023-01-01": "New Year's Day", + "2023-02-18": "Isra' and Mi'raj (estimated)", + "2023-03-18": "Cheikh al Maarouf Day", + "2023-04-21": "Eid al-Fitr (estimated)", + "2023-04-22": "Eid al-Fitr (estimated)", + "2023-04-23": "Eid al-Fitr (estimated)", + "2023-05-01": "Labour Day", + "2023-06-28": "Eid al-Adha (estimated)", + "2023-06-29": "Eid al-Adha (estimated)", + "2023-07-06": "National Day", + "2023-07-19": "Islamic New Year (estimated)", + "2023-09-27": "Prophet's Birthday (estimated)", + "2023-11-12": "Maore Day", + "2023-12-25": "Christmas Day", + "2024-01-01": "New Year's Day", + "2024-02-08": "Isra' and Mi'raj (estimated)", + "2024-03-18": "Cheikh al Maarouf Day", + "2024-04-10": "Eid al-Fitr (estimated)", + "2024-04-11": "Eid al-Fitr (estimated)", + "2024-04-12": "Eid al-Fitr (estimated)", + "2024-04-13": "National Holiday", + "2024-05-01": "Labour Day", + "2024-06-16": "Eid al-Adha (estimated)", + "2024-06-17": "Eid al-Adha (estimated)", + "2024-07-06": "National Day", + "2024-07-07": "Islamic New Year (estimated)", + "2024-09-15": "Prophet's Birthday (estimated)", + "2024-11-12": "Maore Day", + "2024-12-25": "Christmas Day", + "2025-01-01": "New Year's Day", + "2025-01-27": "Isra' and Mi'raj (estimated)", + "2025-01-30": "Election Partial Day Holiday", + "2025-03-18": "Cheikh al Maarouf Day", + "2025-03-30": "Eid al-Fitr (estimated)", + "2025-03-31": "Eid al-Fitr (estimated)", + "2025-04-01": "Eid al-Fitr (estimated)", + "2025-05-01": "Labour Day", + "2025-06-06": "Eid al-Adha (estimated)", + "2025-06-07": "Eid al-Adha (estimated)", + "2025-06-26": "Islamic New Year (estimated)", + "2025-07-06": "National Day", + "2025-09-04": "Prophet's Birthday (estimated)", + "2025-11-12": "Maore Day", + "2025-12-25": "Christmas Day", + "2026-01-01": "New Year's Day", + "2026-01-16": "Isra' and Mi'raj (estimated)", + "2026-03-18": "Cheikh al Maarouf Day", + "2026-03-20": "Eid al-Fitr (estimated)", + "2026-03-21": "Eid al-Fitr (estimated)", + "2026-03-22": "Eid al-Fitr (estimated)", + "2026-05-01": "Labour Day", + "2026-05-27": "Eid al-Adha (estimated)", + "2026-05-28": "Eid al-Adha (estimated)", + "2026-06-16": "Islamic New Year (estimated)", + "2026-07-06": "National Day", + "2026-08-25": "Prophet's Birthday (estimated)", + "2026-11-12": "Maore Day", + "2026-12-25": "Christmas Day", + "2027-01-01": "New Year's Day", + "2027-01-05": "Isra' and Mi'raj (estimated)", + "2027-03-09": "Eid al-Fitr (estimated)", + "2027-03-10": "Eid al-Fitr (estimated)", + "2027-03-11": "Eid al-Fitr (estimated)", + "2027-03-18": "Cheikh al Maarouf Day", + "2027-05-01": "Labour Day", + "2027-05-16": "Eid al-Adha (estimated)", + "2027-05-17": "Eid al-Adha (estimated)", + "2027-06-06": "Islamic New Year (estimated)", + "2027-07-06": "National Day", + "2027-08-14": "Prophet's Birthday (estimated)", + "2027-11-12": "Maore Day", + "2027-12-25": "Christmas Day; Isra' and Mi'raj (estimated)", + "2028-01-01": "New Year's Day", + "2028-02-26": "Eid al-Fitr (estimated)", + "2028-02-27": "Eid al-Fitr (estimated)", + "2028-02-28": "Eid al-Fitr (estimated)", + "2028-03-18": "Cheikh al Maarouf Day", + "2028-05-01": "Labour Day", + "2028-05-05": "Eid al-Adha (estimated)", + "2028-05-06": "Eid al-Adha (estimated)", + "2028-05-25": "Islamic New Year (estimated)", + "2028-07-06": "National Day", + "2028-08-03": "Prophet's Birthday (estimated)", + "2028-11-12": "Maore Day", + "2028-12-14": "Isra' and Mi'raj (estimated)", + "2028-12-25": "Christmas Day", + "2029-01-01": "New Year's Day", + "2029-02-14": "Eid al-Fitr (estimated)", + "2029-02-15": "Eid al-Fitr (estimated)", + "2029-02-16": "Eid al-Fitr (estimated)", + "2029-03-18": "Cheikh al Maarouf Day", + "2029-04-24": "Eid al-Adha (estimated)", + "2029-04-25": "Eid al-Adha (estimated)", + "2029-05-01": "Labour Day", + "2029-05-14": "Islamic New Year (estimated)", + "2029-07-06": "National Day", + "2029-07-24": "Prophet's Birthday (estimated)", + "2029-11-12": "Maore Day", + "2029-12-03": "Isra' and Mi'raj (estimated)", + "2029-12-25": "Christmas Day", + "2030-01-01": "New Year's Day", + "2030-02-04": "Eid al-Fitr (estimated)", + "2030-02-05": "Eid al-Fitr (estimated)", + "2030-02-06": "Eid al-Fitr (estimated)", + "2030-03-18": "Cheikh al Maarouf Day", + "2030-04-13": "Eid al-Adha (estimated)", + "2030-04-14": "Eid al-Adha (estimated)", + "2030-05-01": "Labour Day", + "2030-05-03": "Islamic New Year (estimated)", + "2030-07-06": "National Day", + "2030-07-13": "Prophet's Birthday (estimated)", + "2030-11-12": "Maore Day", + "2030-11-23": "Isra' and Mi'raj (estimated)", + "2030-12-25": "Christmas Day", + "2031-01-01": "New Year's Day", + "2031-01-24": "Eid al-Fitr (estimated)", + "2031-01-25": "Eid al-Fitr (estimated)", + "2031-01-26": "Eid al-Fitr (estimated)", + "2031-03-18": "Cheikh al Maarouf Day", + "2031-04-02": "Eid al-Adha (estimated)", + "2031-04-03": "Eid al-Adha (estimated)", + "2031-04-23": "Islamic New Year (estimated)", + "2031-05-01": "Labour Day", + "2031-07-02": "Prophet's Birthday (estimated)", + "2031-07-06": "National Day", + "2031-11-12": "Isra' and Mi'raj (estimated); Maore Day", + "2031-12-25": "Christmas Day", + "2032-01-01": "New Year's Day", + "2032-01-14": "Eid al-Fitr (estimated)", + "2032-01-15": "Eid al-Fitr (estimated)", + "2032-01-16": "Eid al-Fitr (estimated)", + "2032-03-18": "Cheikh al Maarouf Day", + "2032-03-22": "Eid al-Adha (estimated)", + "2032-03-23": "Eid al-Adha (estimated)", + "2032-04-11": "Islamic New Year (estimated)", + "2032-05-01": "Labour Day", + "2032-06-20": "Prophet's Birthday (estimated)", + "2032-07-06": "National Day", + "2032-11-01": "Isra' and Mi'raj (estimated)", + "2032-11-12": "Maore Day", + "2032-12-25": "Christmas Day", + "2033-01-01": "New Year's Day", + "2033-01-02": "Eid al-Fitr (estimated)", + "2033-01-03": "Eid al-Fitr (estimated)", + "2033-01-04": "Eid al-Fitr (estimated)", + "2033-03-11": "Eid al-Adha (estimated)", + "2033-03-12": "Eid al-Adha (estimated)", + "2033-03-18": "Cheikh al Maarouf Day", + "2033-04-01": "Islamic New Year (estimated)", + "2033-05-01": "Labour Day", + "2033-06-09": "Prophet's Birthday (estimated)", + "2033-07-06": "National Day", + "2033-10-21": "Isra' and Mi'raj (estimated)", + "2033-11-12": "Maore Day", + "2033-12-23": "Eid al-Fitr (estimated)", + "2033-12-24": "Eid al-Fitr (estimated)", + "2033-12-25": "Christmas Day; Eid al-Fitr (estimated)", + "2034-01-01": "New Year's Day", + "2034-03-01": "Eid al-Adha (estimated)", + "2034-03-02": "Eid al-Adha (estimated)", + "2034-03-18": "Cheikh al Maarouf Day", + "2034-03-21": "Islamic New Year (estimated)", + "2034-05-01": "Labour Day", + "2034-05-30": "Prophet's Birthday (estimated)", + "2034-07-06": "National Day", + "2034-10-10": "Isra' and Mi'raj (estimated)", + "2034-11-12": "Maore Day", + "2034-12-12": "Eid al-Fitr (estimated)", + "2034-12-13": "Eid al-Fitr (estimated)", + "2034-12-14": "Eid al-Fitr (estimated)", + "2034-12-25": "Christmas Day", + "2035-01-01": "New Year's Day", + "2035-02-18": "Eid al-Adha (estimated)", + "2035-02-19": "Eid al-Adha (estimated)", + "2035-03-11": "Islamic New Year (estimated)", + "2035-03-18": "Cheikh al Maarouf Day", + "2035-05-01": "Labour Day", + "2035-05-20": "Prophet's Birthday (estimated)", + "2035-07-06": "National Day", + "2035-09-29": "Isra' and Mi'raj (estimated)", + "2035-11-12": "Maore Day", + "2035-12-01": "Eid al-Fitr (estimated)", + "2035-12-02": "Eid al-Fitr (estimated)", + "2035-12-03": "Eid al-Fitr (estimated)", + "2035-12-25": "Christmas Day", + "2036-01-01": "New Year's Day", + "2036-02-07": "Eid al-Adha (estimated)", + "2036-02-08": "Eid al-Adha (estimated)", + "2036-02-28": "Islamic New Year (estimated)", + "2036-03-18": "Cheikh al Maarouf Day", + "2036-05-01": "Labour Day", + "2036-05-08": "Prophet's Birthday (estimated)", + "2036-07-06": "National Day", + "2036-09-18": "Isra' and Mi'raj (estimated)", + "2036-11-12": "Maore Day", + "2036-11-19": "Eid al-Fitr (estimated)", + "2036-11-20": "Eid al-Fitr (estimated)", + "2036-11-21": "Eid al-Fitr (estimated)", + "2036-12-25": "Christmas Day", + "2037-01-01": "New Year's Day", + "2037-01-26": "Eid al-Adha (estimated)", + "2037-01-27": "Eid al-Adha (estimated)", + "2037-02-16": "Islamic New Year (estimated)", + "2037-03-18": "Cheikh al Maarouf Day", + "2037-04-28": "Prophet's Birthday (estimated)", + "2037-05-01": "Labour Day", + "2037-07-06": "National Day", + "2037-09-07": "Isra' and Mi'raj (estimated)", + "2037-11-08": "Eid al-Fitr (estimated)", + "2037-11-09": "Eid al-Fitr (estimated)", + "2037-11-10": "Eid al-Fitr (estimated)", + "2037-11-12": "Maore Day", + "2037-12-25": "Christmas Day", + "2038-01-01": "New Year's Day", + "2038-01-16": "Eid al-Adha (estimated)", + "2038-01-17": "Eid al-Adha (estimated)", + "2038-02-05": "Islamic New Year (estimated)", + "2038-03-18": "Cheikh al Maarouf Day", + "2038-04-17": "Prophet's Birthday (estimated)", + "2038-05-01": "Labour Day", + "2038-07-06": "National Day", + "2038-08-28": "Isra' and Mi'raj (estimated)", + "2038-10-29": "Eid al-Fitr (estimated)", + "2038-10-30": "Eid al-Fitr (estimated)", + "2038-10-31": "Eid al-Fitr (estimated)", + "2038-11-12": "Maore Day", + "2038-12-25": "Christmas Day", + "2039-01-01": "New Year's Day", + "2039-01-05": "Eid al-Adha (estimated)", + "2039-01-06": "Eid al-Adha (estimated)", + "2039-01-26": "Islamic New Year (estimated)", + "2039-03-18": "Cheikh al Maarouf Day", + "2039-04-06": "Prophet's Birthday (estimated)", + "2039-05-01": "Labour Day", + "2039-07-06": "National Day", + "2039-08-17": "Isra' and Mi'raj (estimated)", + "2039-10-19": "Eid al-Fitr (estimated)", + "2039-10-20": "Eid al-Fitr (estimated)", + "2039-10-21": "Eid al-Fitr (estimated)", + "2039-11-12": "Maore Day", + "2039-12-25": "Christmas Day", + "2039-12-26": "Eid al-Adha (estimated)", + "2039-12-27": "Eid al-Adha (estimated)", + "2040-01-01": "New Year's Day", + "2040-01-15": "Islamic New Year (estimated)", + "2040-03-18": "Cheikh al Maarouf Day", + "2040-03-25": "Prophet's Birthday (estimated)", + "2040-05-01": "Labour Day", + "2040-07-06": "National Day", + "2040-08-05": "Isra' and Mi'raj (estimated)", + "2040-10-07": "Eid al-Fitr (estimated)", + "2040-10-08": "Eid al-Fitr (estimated)", + "2040-10-09": "Eid al-Fitr (estimated)", + "2040-11-12": "Maore Day", + "2040-12-14": "Eid al-Adha (estimated)", + "2040-12-15": "Eid al-Adha (estimated)", + "2040-12-25": "Christmas Day", + "2041-01-01": "New Year's Day", + "2041-01-04": "Islamic New Year (estimated)", + "2041-03-15": "Prophet's Birthday (estimated)", + "2041-03-18": "Cheikh al Maarouf Day", + "2041-05-01": "Labour Day", + "2041-07-06": "National Day", + "2041-07-25": "Isra' and Mi'raj (estimated)", + "2041-09-26": "Eid al-Fitr (estimated)", + "2041-09-27": "Eid al-Fitr (estimated)", + "2041-09-28": "Eid al-Fitr (estimated)", + "2041-11-12": "Maore Day", + "2041-12-04": "Eid al-Adha (estimated)", + "2041-12-05": "Eid al-Adha (estimated)", + "2041-12-24": "Islamic New Year (estimated)", + "2041-12-25": "Christmas Day", + "2042-01-01": "New Year's Day", + "2042-03-04": "Prophet's Birthday (estimated)", + "2042-03-18": "Cheikh al Maarouf Day", + "2042-05-01": "Labour Day", + "2042-07-06": "National Day", + "2042-07-15": "Isra' and Mi'raj (estimated)", + "2042-09-15": "Eid al-Fitr (estimated)", + "2042-09-16": "Eid al-Fitr (estimated)", + "2042-09-17": "Eid al-Fitr (estimated)", + "2042-11-12": "Maore Day", + "2042-11-23": "Eid al-Adha (estimated)", + "2042-11-24": "Eid al-Adha (estimated)", + "2042-12-14": "Islamic New Year (estimated)", + "2042-12-25": "Christmas Day", + "2043-01-01": "New Year's Day", + "2043-02-22": "Prophet's Birthday (estimated)", + "2043-03-18": "Cheikh al Maarouf Day", + "2043-05-01": "Labour Day", + "2043-07-04": "Isra' and Mi'raj (estimated)", + "2043-07-06": "National Day", + "2043-09-04": "Eid al-Fitr (estimated)", + "2043-09-05": "Eid al-Fitr (estimated)", + "2043-09-06": "Eid al-Fitr (estimated)", + "2043-11-12": "Eid al-Adha (estimated); Maore Day", + "2043-11-13": "Eid al-Adha (estimated)", + "2043-12-03": "Islamic New Year (estimated)", + "2043-12-25": "Christmas Day", + "2044-01-01": "New Year's Day", + "2044-02-11": "Prophet's Birthday (estimated)", + "2044-03-18": "Cheikh al Maarouf Day", + "2044-05-01": "Labour Day", + "2044-06-23": "Isra' and Mi'raj (estimated)", + "2044-07-06": "National Day", + "2044-08-24": "Eid al-Fitr (estimated)", + "2044-08-25": "Eid al-Fitr (estimated)", + "2044-08-26": "Eid al-Fitr (estimated)", + "2044-10-31": "Eid al-Adha (estimated)", + "2044-11-01": "Eid al-Adha (estimated)", + "2044-11-12": "Maore Day", + "2044-11-21": "Islamic New Year (estimated)", + "2044-12-25": "Christmas Day", + "2045-01-01": "New Year's Day", + "2045-01-30": "Prophet's Birthday (estimated)", + "2045-03-18": "Cheikh al Maarouf Day", + "2045-05-01": "Labour Day", + "2045-06-13": "Isra' and Mi'raj (estimated)", + "2045-07-06": "National Day", + "2045-08-14": "Eid al-Fitr (estimated)", + "2045-08-15": "Eid al-Fitr (estimated)", + "2045-08-16": "Eid al-Fitr (estimated)", + "2045-10-21": "Eid al-Adha (estimated)", + "2045-10-22": "Eid al-Adha (estimated)", + "2045-11-10": "Islamic New Year (estimated)", + "2045-11-12": "Maore Day", + "2045-12-25": "Christmas Day", + "2046-01-01": "New Year's Day", + "2046-01-19": "Prophet's Birthday (estimated)", + "2046-03-18": "Cheikh al Maarouf Day", + "2046-05-01": "Labour Day", + "2046-06-02": "Isra' and Mi'raj (estimated)", + "2046-07-06": "National Day", + "2046-08-03": "Eid al-Fitr (estimated)", + "2046-08-04": "Eid al-Fitr (estimated)", + "2046-08-05": "Eid al-Fitr (estimated)", + "2046-10-10": "Eid al-Adha (estimated)", + "2046-10-11": "Eid al-Adha (estimated)", + "2046-10-31": "Islamic New Year (estimated)", + "2046-11-12": "Maore Day", + "2046-12-25": "Christmas Day", + "2047-01-01": "New Year's Day", + "2047-01-08": "Prophet's Birthday (estimated)", + "2047-03-18": "Cheikh al Maarouf Day", + "2047-05-01": "Labour Day", + "2047-05-22": "Isra' and Mi'raj (estimated)", + "2047-07-06": "National Day", + "2047-07-24": "Eid al-Fitr (estimated)", + "2047-07-25": "Eid al-Fitr (estimated)", + "2047-07-26": "Eid al-Fitr (estimated)", + "2047-09-30": "Eid al-Adha (estimated)", + "2047-10-01": "Eid al-Adha (estimated)", + "2047-10-20": "Islamic New Year (estimated)", + "2047-11-12": "Maore Day", + "2047-12-25": "Christmas Day", + "2047-12-29": "Prophet's Birthday (estimated)", + "2048-01-01": "New Year's Day", + "2048-03-18": "Cheikh al Maarouf Day", + "2048-05-01": "Labour Day", + "2048-05-10": "Isra' and Mi'raj (estimated)", + "2048-07-06": "National Day", + "2048-07-12": "Eid al-Fitr (estimated)", + "2048-07-13": "Eid al-Fitr (estimated)", + "2048-07-14": "Eid al-Fitr (estimated)", + "2048-09-19": "Eid al-Adha (estimated)", + "2048-09-20": "Eid al-Adha (estimated)", + "2048-10-09": "Islamic New Year (estimated)", + "2048-11-12": "Maore Day", + "2048-12-18": "Prophet's Birthday (estimated)", + "2048-12-25": "Christmas Day", + "2049-01-01": "New Year's Day", + "2049-03-18": "Cheikh al Maarouf Day", + "2049-04-29": "Isra' and Mi'raj (estimated)", + "2049-05-01": "Labour Day", + "2049-07-01": "Eid al-Fitr (estimated)", + "2049-07-02": "Eid al-Fitr (estimated)", + "2049-07-03": "Eid al-Fitr (estimated)", + "2049-07-06": "National Day", + "2049-09-08": "Eid al-Adha (estimated)", + "2049-09-09": "Eid al-Adha (estimated)", + "2049-09-28": "Islamic New Year (estimated)", + "2049-11-12": "Maore Day", + "2049-12-07": "Prophet's Birthday (estimated)", + "2049-12-25": "Christmas Day", + "2050-01-01": "New Year's Day", + "2050-03-18": "Cheikh al Maarouf Day", + "2050-04-19": "Isra' and Mi'raj (estimated)", + "2050-05-01": "Labour Day", + "2050-06-20": "Eid al-Fitr (estimated)", + "2050-06-21": "Eid al-Fitr (estimated)", + "2050-06-22": "Eid al-Fitr (estimated)", + "2050-07-06": "National Day", + "2050-08-28": "Eid al-Adha (estimated)", + "2050-08-29": "Eid al-Adha (estimated)", + "2050-09-17": "Islamic New Year (estimated)", + "2050-11-12": "Maore Day", + "2050-11-26": "Prophet's Birthday (estimated)", + "2050-12-25": "Christmas Day" +} diff --git a/tests/countries/test_comoros.py b/tests/countries/test_comoros.py new file mode 100644 index 0000000000..60ca4a15a1 --- /dev/null +++ b/tests/countries/test_comoros.py @@ -0,0 +1,145 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from unittest import TestCase + +from holidays.countries.comoros import Comoros, KM, COM +from tests.common import CommonCountryTests + + +class TestComoros(CommonCountryTests, TestCase): + @classmethod + def setUpClass(cls): + years = range(1976, 2050) + super().setUpClass(Comoros, years=years) + cls.no_estimated_holidays = Comoros(years=years, islamic_show_estimated=False) + + def test_country_aliases(self): + self.assertAliases(Comoros, KM, COM) + + def test_no_holidays(self): + self.assertNoHolidays(Comoros(years=1975)) + + def test_special_holidays(self): + self.assertHolidayName("National Holiday", "2024-04-13") + self.assertHolidayName("Election Partial Day Holiday", "2025-01-30") + + def test_new_years_day(self): + self.assertHolidayName("New Year's Day", (f"{year}-01-01" for year in range(1976, 2050))) + + def test_cheikh_al_maarouf_day(self): + self.assertHolidayName( + "Cheikh al Maarouf Day", (f"{year}-03-18" for year in range(1976, 2050)) + ) + + def test_labour_day(self): + self.assertHolidayName("Labour Day", (f"{year}-05-01" for year in range(1976, 2050))) + + def test_national_day(self): + self.assertHolidayName("National Day", (f"{year}-07-06" for year in range(1976, 2050))) + + def test_maore_day(self): + name = "Maore Day" + self.assertNoHolidayName(name, range(1976, 2006)) + self.assertHolidayName(name, (f"{year}-11-12" for year in range(2006, 2050))) + + def test_christmas_day(self): + self.assertHolidayName("Christmas Day", (f"{year}-12-25" for year in range(1976, 2050))) + + def test_islamic_new_year(self): + name = "Islamic New Year" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-08-20", + "2021-08-09", + "2022-07-30", + "2023-07-19", + "2024-07-07", + "2025-06-26", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1976, 2050)) + + def test_prophets_birthday(self): + name = "Prophet's Birthday" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-10-29", + "2021-10-19", + "2022-10-08", + "2023-09-27", + "2024-09-15", + "2025-09-04", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1976, 2050)) + + def test_isra_and_miraj(self): + name = "Isra' and Mi'raj" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-03-22", + "2021-03-11", + "2022-02-28", + "2023-02-18", + "2024-02-08", + "2025-01-27", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1976, 2050)) + + def test_eid_al_fitr(self): + name = "Eid al-Fitr" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-05-24", + "2021-05-13", + "2022-05-02", + "2023-04-21", + "2024-04-10", + "2025-03-30", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1976, 2050)) + + def test_eid_al_adha(self): + name = "Eid al-Adha" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-07-31", + "2021-07-20", + "2022-07-09", + "2023-06-28", + "2024-06-16", + "2025-06-06", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1976, 2050)) + + def test_2022(self): + self.assertHolidays( + Comoros(years=2022), + ("2022-01-01", "New Year's Day"), + ("2022-02-28", "Isra' and Mi'raj (estimated)"), + ("2022-03-18", "Cheikh al Maarouf Day"), + ("2022-05-01", "Labour Day"), + ("2022-05-02", "Eid al-Fitr (estimated)"), + ("2022-05-03", "Eid al-Fitr (estimated)"), + ("2022-05-04", "Eid al-Fitr (estimated)"), + ("2022-07-06", "National Day"), + ("2022-07-09", "Eid al-Adha (estimated)"), + ("2022-07-10", "Eid al-Adha (estimated)"), + ("2022-07-30", "Islamic New Year (estimated)"), + ("2022-10-08", "Prophet's Birthday (estimated)"), + ("2022-11-12", "Maore Day"), + ("2022-12-25", "Christmas Day"), + ) From fd054fc95c83f88c254e5602cb61f3c628cd6101 Mon Sep 17 00:00:00 2001 From: ~Jhellico Date: Tue, 26 Aug 2025 19:01:08 +0300 Subject: [PATCH 25/48] Update Guinea-Bissau holidays (#2859) Co-authored-by: Arkadii Yakovets --- holidays/countries/guinea_bissau.py | 4 ---- holidays/locale/en_US/LC_MESSAGES/GW.po | 16 +++------------- holidays/locale/pt_GW/LC_MESSAGES/GW.po | 16 +++------------- tests/common.py | 12 ++++++++++++ 4 files changed, 18 insertions(+), 30 deletions(-) diff --git a/holidays/countries/guinea_bissau.py b/holidays/countries/guinea_bissau.py index 1bc7923172..852c1ea0e5 100644 --- a/holidays/countries/guinea_bissau.py +++ b/holidays/countries/guinea_bissau.py @@ -28,10 +28,6 @@ class GuineaBissau(HolidayBase, ChristianHolidays, InternationalHolidays, Islami default_language = "pt_GW" # %s (estimated). estimated_label = tr("%s (prevista)") - # %s (observed). - observed_label = tr("%s (ponte)") - # %s (estimated, observed). - observed_estimated_label = tr("%s (prevista, ponte)") supported_languages = ("en_US", "pt_GW") start_year = 2023 diff --git a/holidays/locale/en_US/LC_MESSAGES/GW.po b/holidays/locale/en_US/LC_MESSAGES/GW.po index ea52e4096f..31395ac93b 100644 --- a/holidays/locale/en_US/LC_MESSAGES/GW.po +++ b/holidays/locale/en_US/LC_MESSAGES/GW.po @@ -14,10 +14,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.79\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2025-08-03 15:53+0530\n" -"PO-Revision-Date: 2025-08-03 15:53+0530\n" -"Last-Translator: Kriti Birda \n" +"PO-Revision-Date: 2025-08-26 17:58+0300\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: en_US\n" "MIME-Version: 1.0\n" @@ -31,16 +31,6 @@ msgstr "" msgid "%s (prevista)" msgstr "%s (estimated)" -#. %s (observed). -#, c-format -msgid "%s (ponte)" -msgstr "%s (observed)" - -#. %s (estimated, observed). -#, c-format -msgid "%s (prevista, ponte)" -msgstr "%s (estimated, observed)" - #. New Year's Day. msgid "Ano Novo" msgstr "New Year's Day" diff --git a/holidays/locale/pt_GW/LC_MESSAGES/GW.po b/holidays/locale/pt_GW/LC_MESSAGES/GW.po index bcf9f49546..3ed055327f 100644 --- a/holidays/locale/pt_GW/LC_MESSAGES/GW.po +++ b/holidays/locale/pt_GW/LC_MESSAGES/GW.po @@ -14,10 +14,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.79\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2025-08-03 15:53+0530\n" -"PO-Revision-Date: 2025-08-03 15:53+0530\n" -"Last-Translator: Kriti Birda \n" +"PO-Revision-Date: 2025-08-26 17:59+0300\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: pt_GW\n" "MIME-Version: 1.0\n" @@ -31,16 +31,6 @@ msgstr "" msgid "%s (prevista)" msgstr "" -#. %s (observed). -#, c-format -msgid "%s (ponte)" -msgstr "" - -#. %s (estimated, observed). -#, c-format -msgid "%s (prevista, ponte)" -msgstr "" - #. New Year's Day. msgid "Ano Novo" msgstr "" diff --git a/tests/common.py b/tests/common.py index 717db7850e..b7f4811f7b 100644 --- a/tests/common.py +++ b/tests/common.py @@ -20,6 +20,7 @@ from holidays import HolidayBase from holidays.calendars.gregorian import SUN +from holidays.observed_holiday_base import ObservedHolidayBase PYTHON_LATEST_SUPPORTED_VERSION = "3.13" PYTHON_VERSION = f"{sys.version_info.major}.{sys.version_info.minor}" @@ -373,6 +374,17 @@ def test_observed_estimated_label(self): ) self.assertIn(estimated_label.strip("%s ()"), observed_estimated_label) + def test_observed_label(self): + if getattr(self.holidays, "observed_label", None): + self.assertTrue( + isinstance( + self.holidays, + ObservedHolidayBase, + ), + "The `observed_label` is not required as this entity doesn't handle " + "observed holidays.", + ) + class CommonFinancialTests(CommonTests): """Common test cases for financial entities.""" From 0033a97d28bed2a9b06f414296892d7a5dabb0dc Mon Sep 17 00:00:00 2001 From: Prateekshit Jaiswal <67361301+Prateekshit73@users.noreply.github.com> Date: Tue, 26 Aug 2025 21:45:07 +0530 Subject: [PATCH 26/48] Add Uganda holidays (#2833) Signed-off-by: Prateekshit Jaiswal <67361301+Prateekshit73@users.noreply.github.com> Co-authored-by: Prateekshit Co-authored-by: Arkadii Yakovets --- README.md | 9 +- holidays/countries/__init__.py | 1 + holidays/countries/uganda.py | 99 +++ holidays/registry.py | 1 + snapshots/countries/UG_COMMON.json | 1122 ++++++++++++++++++++++++++++ tests/countries/test_uganda.py | 141 ++++ 6 files changed, 1372 insertions(+), 1 deletion(-) create mode 100644 holidays/countries/uganda.py create mode 100644 snapshots/countries/UG_COMMON.json create mode 100644 tests/countries/test_uganda.py diff --git a/README.md b/README.md index d1ef4405ce..1b75b57468 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ and detailed information. ## Available Countries -We currently support 237 country codes. The standard way to refer to a country is by using its [ISO +We currently support 238 country codes. The standard way to refer to a country is by using its [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes), the same used for domain names, and for a subdivision its [ISO 3166-2 code](https://en.wikipedia.org/wiki/ISO_3166-2). Some countries have common or foreign names or @@ -1694,6 +1694,13 @@ any) in brackets, available languages and additional holiday categories. All cou +Uganda +UG + + + + + Ukraine UA diff --git a/holidays/countries/__init__.py b/holidays/countries/__init__.py index f40f1cad22..ecc28065fe 100644 --- a/holidays/countries/__init__.py +++ b/holidays/countries/__init__.py @@ -251,6 +251,7 @@ from holidays.countries.turkmenistan import Turkmenistan, TM, TKM from holidays.countries.turks_and_caicos_islands import TurksAndCaicosIslands, TC, TCA from holidays.countries.tuvalu import Tuvalu, TV, TUV +from holidays.countries.uganda import Uganda, UG, UGA from holidays.countries.ukraine import Ukraine, UA, UKR from holidays.countries.united_arab_emirates import UnitedArabEmirates, AE, ARE from holidays.countries.united_kingdom import UnitedKingdom, GB, GBR, UK diff --git a/holidays/countries/uganda.py b/holidays/countries/uganda.py new file mode 100644 index 0000000000..a3c5841293 --- /dev/null +++ b/holidays/countries/uganda.py @@ -0,0 +1,99 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays +from holidays.holiday_base import HolidayBase + + +class Uganda(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays): + """Uganda holidays. + + References: + * + * [Public Holidays Act, Cap. 255](https://web.archive.org/web/20250621140041/https://ulii.org/akn/ug/act/1965/23/eng@2000-12-31) + * [National Events and Calendar](https://web.archive.org/web/20250618053410/https://www.vicepresident.go.ug/national-events-and-calender/) + * [National Heroes Day](https://web.archive.org/web/20230622162351/https://publicholidays.africa/uganda/national-heroes-day/) + * [NRM Liberation Day](https://web.archive.org/web/20240124064853/https://thenilewires.com/38th-nrm-a-liberation-day-celebrations-minister-outlines-nrm-achievements/) + * [Archbishop Janani Luwum Day](https://web.archive.org/web/20200805133919/https://www.newvision.co.ug/news/1417242/uganda-declared-february-archbishop-janani-luwum-public-holiday) + * [School Calendar 2024](https://web.archive.org/web/20240519021615/https://www.education.go.ug/wp-content/uploads/2023/11/SCHOOL-CALENDAR.pdf) + * [Public Holidays 2025](https://web.archive.org/web/20250710193157/https://publicholidays.co.ug/) + """ + + country = "UG" + # Uganda gained independence from the United Kingdom on October 9, 1962. + start_year = 1963 + + def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): + """ + Args: + islamic_show_estimated: + Whether to add "estimated" label to Islamic holidays name + if holiday date is estimated. + """ + ChristianHolidays.__init__(self) + InternationalHolidays.__init__(self) + IslamicHolidays.__init__(self, show_estimated=islamic_show_estimated) + super().__init__(*args, **kwargs) + + def _populate_public_holidays(self): + # New Year's Day. + self._add_new_years_day("New Year's Day") + + if self._year >= 1987: + # NRM Liberation Day. + self._add_holiday_jan_26("NRM Liberation Day") + + if self._year >= 2016: + # Archbishop Janani Luwum Day. + self._add_holiday_feb_16("Archbishop Janani Luwum Day") + + # Women's Day. + self._add_womens_day("Women's Day") + + # Good Friday. + self._add_good_friday("Good Friday") + + # Easter Monday. + self._add_easter_monday("Easter Monday") + + # Labor Day. + self._add_labor_day("Labour Day") + + # Uganda Martyrs' Day. + self._add_holiday_jun_3("Uganda Martyrs' Day") + + if self._year >= 2001: + # National Heroes' Day. + self._add_holiday_jun_9("National Heroes' Day") + + # Independence Day. + self._add_holiday_oct_9("Independence Day") + + # Christmas Day. + self._add_christmas_day("Christmas Day") + + # Boxing Day. + self._add_christmas_day_two("Boxing Day") + + # Eid al-Fitr. + self._add_eid_al_fitr_day("Eid al-Fitr") + + # Eid al-Adha. + self._add_eid_al_adha_day("Eid al-Adha") + + +class UG(Uganda): + pass + + +class UGA(Uganda): + pass diff --git a/holidays/registry.py b/holidays/registry.py index e036a4b924..95dcbf134f 100644 --- a/holidays/registry.py +++ b/holidays/registry.py @@ -245,6 +245,7 @@ "turkmenistan": ("Turkmenistan", "TM", "TKM"), "turks_and_caicos_islands": ("TurksAndCaicosIslands", "TC", "TCA"), "tuvalu": ("Tuvalu", "TV", "TUV"), + "uganda": ("Uganda", "UG", "UGA"), "ukraine": ("Ukraine", "UA", "UKR"), "united_arab_emirates": ("UnitedArabEmirates", "AE", "ARE"), "united_kingdom": ("UnitedKingdom", "GB", "GBR", "UK"), diff --git a/snapshots/countries/UG_COMMON.json b/snapshots/countries/UG_COMMON.json new file mode 100644 index 0000000000..d3e1758d5e --- /dev/null +++ b/snapshots/countries/UG_COMMON.json @@ -0,0 +1,1122 @@ +{ + "1963-01-01": "New Year's Day", + "1963-02-24": "Eid al-Fitr (estimated)", + "1963-03-08": "Women's Day", + "1963-04-12": "Good Friday", + "1963-04-15": "Easter Monday", + "1963-05-01": "Labour Day", + "1963-05-03": "Eid al-Adha (estimated)", + "1963-06-03": "Uganda Martyrs' Day", + "1963-10-09": "Independence Day", + "1963-12-25": "Christmas Day", + "1963-12-26": "Boxing Day", + "1964-01-01": "New Year's Day", + "1964-02-14": "Eid al-Fitr (estimated)", + "1964-03-08": "Women's Day", + "1964-03-27": "Good Friday", + "1964-03-30": "Easter Monday", + "1964-04-22": "Eid al-Adha (estimated)", + "1964-05-01": "Labour Day", + "1964-06-03": "Uganda Martyrs' Day", + "1964-10-09": "Independence Day", + "1964-12-25": "Christmas Day", + "1964-12-26": "Boxing Day", + "1965-01-01": "New Year's Day", + "1965-02-02": "Eid al-Fitr (estimated)", + "1965-03-08": "Women's Day", + "1965-04-11": "Eid al-Adha (estimated)", + "1965-04-16": "Good Friday", + "1965-04-19": "Easter Monday", + "1965-05-01": "Labour Day", + "1965-06-03": "Uganda Martyrs' Day", + "1965-10-09": "Independence Day", + "1965-12-25": "Christmas Day", + "1965-12-26": "Boxing Day", + "1966-01-01": "New Year's Day", + "1966-01-22": "Eid al-Fitr (estimated)", + "1966-03-08": "Women's Day", + "1966-04-01": "Eid al-Adha (estimated)", + "1966-04-08": "Good Friday", + "1966-04-11": "Easter Monday", + "1966-05-01": "Labour Day", + "1966-06-03": "Uganda Martyrs' Day", + "1966-10-09": "Independence Day", + "1966-12-25": "Christmas Day", + "1966-12-26": "Boxing Day", + "1967-01-01": "New Year's Day", + "1967-01-12": "Eid al-Fitr (estimated)", + "1967-03-08": "Women's Day", + "1967-03-21": "Eid al-Adha (estimated)", + "1967-03-24": "Good Friday", + "1967-03-27": "Easter Monday", + "1967-05-01": "Labour Day", + "1967-06-03": "Uganda Martyrs' Day", + "1967-10-09": "Independence Day", + "1967-12-25": "Christmas Day", + "1967-12-26": "Boxing Day", + "1968-01-01": "Eid al-Fitr (estimated); New Year's Day", + "1968-03-08": "Women's Day", + "1968-03-09": "Eid al-Adha (estimated)", + "1968-04-12": "Good Friday", + "1968-04-15": "Easter Monday", + "1968-05-01": "Labour Day", + "1968-06-03": "Uganda Martyrs' Day", + "1968-10-09": "Independence Day", + "1968-12-21": "Eid al-Fitr (estimated)", + "1968-12-25": "Christmas Day", + "1968-12-26": "Boxing Day", + "1969-01-01": "New Year's Day", + "1969-02-27": "Eid al-Adha (estimated)", + "1969-03-08": "Women's Day", + "1969-04-04": "Good Friday", + "1969-04-07": "Easter Monday", + "1969-05-01": "Labour Day", + "1969-06-03": "Uganda Martyrs' Day", + "1969-10-09": "Independence Day", + "1969-12-10": "Eid al-Fitr (estimated)", + "1969-12-25": "Christmas Day", + "1969-12-26": "Boxing Day", + "1970-01-01": "New Year's Day", + "1970-02-16": "Eid al-Adha (estimated)", + "1970-03-08": "Women's Day", + "1970-03-27": "Good Friday", + "1970-03-30": "Easter Monday", + "1970-05-01": "Labour Day", + "1970-06-03": "Uganda Martyrs' Day", + "1970-10-09": "Independence Day", + "1970-11-30": "Eid al-Fitr (estimated)", + "1970-12-25": "Christmas Day", + "1970-12-26": "Boxing Day", + "1971-01-01": "New Year's Day", + "1971-02-06": "Eid al-Adha (estimated)", + "1971-03-08": "Women's Day", + "1971-04-09": "Good Friday", + "1971-04-12": "Easter Monday", + "1971-05-01": "Labour Day", + "1971-06-03": "Uganda Martyrs' Day", + "1971-10-09": "Independence Day", + "1971-11-19": "Eid al-Fitr (estimated)", + "1971-12-25": "Christmas Day", + "1971-12-26": "Boxing Day", + "1972-01-01": "New Year's Day", + "1972-01-26": "Eid al-Adha (estimated)", + "1972-03-08": "Women's Day", + "1972-03-31": "Good Friday", + "1972-04-03": "Easter Monday", + "1972-05-01": "Labour Day", + "1972-06-03": "Uganda Martyrs' Day", + "1972-10-09": "Independence Day", + "1972-11-07": "Eid al-Fitr (estimated)", + "1972-12-25": "Christmas Day", + "1972-12-26": "Boxing Day", + "1973-01-01": "New Year's Day", + "1973-01-14": "Eid al-Adha (estimated)", + "1973-03-08": "Women's Day", + "1973-04-20": "Good Friday", + "1973-04-23": "Easter Monday", + "1973-05-01": "Labour Day", + "1973-06-03": "Uganda Martyrs' Day", + "1973-10-09": "Independence Day", + "1973-10-27": "Eid al-Fitr (estimated)", + "1973-12-25": "Christmas Day", + "1973-12-26": "Boxing Day", + "1974-01-01": "New Year's Day", + "1974-01-03": "Eid al-Adha (estimated)", + "1974-03-08": "Women's Day", + "1974-04-12": "Good Friday", + "1974-04-15": "Easter Monday", + "1974-05-01": "Labour Day", + "1974-06-03": "Uganda Martyrs' Day", + "1974-10-09": "Independence Day", + "1974-10-16": "Eid al-Fitr (estimated)", + "1974-12-24": "Eid al-Adha (estimated)", + "1974-12-25": "Christmas Day", + "1974-12-26": "Boxing Day", + "1975-01-01": "New Year's Day", + "1975-03-08": "Women's Day", + "1975-03-28": "Good Friday", + "1975-03-31": "Easter Monday", + "1975-05-01": "Labour Day", + "1975-06-03": "Uganda Martyrs' Day", + "1975-10-06": "Eid al-Fitr (estimated)", + "1975-10-09": "Independence Day", + "1975-12-13": "Eid al-Adha (estimated)", + "1975-12-25": "Christmas Day", + "1975-12-26": "Boxing Day", + "1976-01-01": "New Year's Day", + "1976-03-08": "Women's Day", + "1976-04-16": "Good Friday", + "1976-04-19": "Easter Monday", + "1976-05-01": "Labour Day", + "1976-06-03": "Uganda Martyrs' Day", + "1976-09-24": "Eid al-Fitr (estimated)", + "1976-10-09": "Independence Day", + "1976-12-01": "Eid al-Adha (estimated)", + "1976-12-25": "Christmas Day", + "1976-12-26": "Boxing Day", + "1977-01-01": "New Year's Day", + "1977-03-08": "Women's Day", + "1977-04-08": "Good Friday", + "1977-04-11": "Easter Monday", + "1977-05-01": "Labour Day", + "1977-06-03": "Uganda Martyrs' Day", + "1977-09-14": "Eid al-Fitr (estimated)", + "1977-10-09": "Independence Day", + "1977-11-21": "Eid al-Adha (estimated)", + "1977-12-25": "Christmas Day", + "1977-12-26": "Boxing Day", + "1978-01-01": "New Year's Day", + "1978-03-08": "Women's Day", + "1978-03-24": "Good Friday", + "1978-03-27": "Easter Monday", + "1978-05-01": "Labour Day", + "1978-06-03": "Uganda Martyrs' Day", + "1978-09-03": "Eid al-Fitr (estimated)", + "1978-10-09": "Independence Day", + "1978-11-10": "Eid al-Adha (estimated)", + "1978-12-25": "Christmas Day", + "1978-12-26": "Boxing Day", + "1979-01-01": "New Year's Day", + "1979-03-08": "Women's Day", + "1979-04-13": "Good Friday", + "1979-04-16": "Easter Monday", + "1979-05-01": "Labour Day", + "1979-06-03": "Uganda Martyrs' Day", + "1979-08-23": "Eid al-Fitr (estimated)", + "1979-10-09": "Independence Day", + "1979-10-31": "Eid al-Adha (estimated)", + "1979-12-25": "Christmas Day", + "1979-12-26": "Boxing Day", + "1980-01-01": "New Year's Day", + "1980-03-08": "Women's Day", + "1980-04-04": "Good Friday", + "1980-04-07": "Easter Monday", + "1980-05-01": "Labour Day", + "1980-06-03": "Uganda Martyrs' Day", + "1980-08-12": "Eid al-Fitr (estimated)", + "1980-10-09": "Independence Day", + "1980-10-19": "Eid al-Adha (estimated)", + "1980-12-25": "Christmas Day", + "1980-12-26": "Boxing Day", + "1981-01-01": "New Year's Day", + "1981-03-08": "Women's Day", + "1981-04-17": "Good Friday", + "1981-04-20": "Easter Monday", + "1981-05-01": "Labour Day", + "1981-06-03": "Uganda Martyrs' Day", + "1981-08-01": "Eid al-Fitr (estimated)", + "1981-10-08": "Eid al-Adha (estimated)", + "1981-10-09": "Independence Day", + "1981-12-25": "Christmas Day", + "1981-12-26": "Boxing Day", + "1982-01-01": "New Year's Day", + "1982-03-08": "Women's Day", + "1982-04-09": "Good Friday", + "1982-04-12": "Easter Monday", + "1982-05-01": "Labour Day", + "1982-06-03": "Uganda Martyrs' Day", + "1982-07-21": "Eid al-Fitr (estimated)", + "1982-09-27": "Eid al-Adha (estimated)", + "1982-10-09": "Independence Day", + "1982-12-25": "Christmas Day", + "1982-12-26": "Boxing Day", + "1983-01-01": "New Year's Day", + "1983-03-08": "Women's Day", + "1983-04-01": "Good Friday", + "1983-04-04": "Easter Monday", + "1983-05-01": "Labour Day", + "1983-06-03": "Uganda Martyrs' Day", + "1983-07-11": "Eid al-Fitr (estimated)", + "1983-09-17": "Eid al-Adha (estimated)", + "1983-10-09": "Independence Day", + "1983-12-25": "Christmas Day", + "1983-12-26": "Boxing Day", + "1984-01-01": "New Year's Day", + "1984-03-08": "Women's Day", + "1984-04-20": "Good Friday", + "1984-04-23": "Easter Monday", + "1984-05-01": "Labour Day", + "1984-06-03": "Uganda Martyrs' Day", + "1984-06-30": "Eid al-Fitr (estimated)", + "1984-09-05": "Eid al-Adha (estimated)", + "1984-10-09": "Independence Day", + "1984-12-25": "Christmas Day", + "1984-12-26": "Boxing Day", + "1985-01-01": "New Year's Day", + "1985-03-08": "Women's Day", + "1985-04-05": "Good Friday", + "1985-04-08": "Easter Monday", + "1985-05-01": "Labour Day", + "1985-06-03": "Uganda Martyrs' Day", + "1985-06-19": "Eid al-Fitr (estimated)", + "1985-08-26": "Eid al-Adha (estimated)", + "1985-10-09": "Independence Day", + "1985-12-25": "Christmas Day", + "1985-12-26": "Boxing Day", + "1986-01-01": "New Year's Day", + "1986-03-08": "Women's Day", + "1986-03-28": "Good Friday", + "1986-03-31": "Easter Monday", + "1986-05-01": "Labour Day", + "1986-06-03": "Uganda Martyrs' Day", + "1986-06-08": "Eid al-Fitr (estimated)", + "1986-08-15": "Eid al-Adha (estimated)", + "1986-10-09": "Independence Day", + "1986-12-25": "Christmas Day", + "1986-12-26": "Boxing Day", + "1987-01-01": "New Year's Day", + "1987-01-26": "NRM Liberation Day", + "1987-03-08": "Women's Day", + "1987-04-17": "Good Friday", + "1987-04-20": "Easter Monday", + "1987-05-01": "Labour Day", + "1987-05-28": "Eid al-Fitr (estimated)", + "1987-06-03": "Uganda Martyrs' Day", + "1987-08-04": "Eid al-Adha (estimated)", + "1987-10-09": "Independence Day", + "1987-12-25": "Christmas Day", + "1987-12-26": "Boxing Day", + "1988-01-01": "New Year's Day", + "1988-01-26": "NRM Liberation Day", + "1988-03-08": "Women's Day", + "1988-04-01": "Good Friday", + "1988-04-04": "Easter Monday", + "1988-05-01": "Labour Day", + "1988-05-16": "Eid al-Fitr (estimated)", + "1988-06-03": "Uganda Martyrs' Day", + "1988-07-23": "Eid al-Adha (estimated)", + "1988-10-09": "Independence Day", + "1988-12-25": "Christmas Day", + "1988-12-26": "Boxing Day", + "1989-01-01": "New Year's Day", + "1989-01-26": "NRM Liberation Day", + "1989-03-08": "Women's Day", + "1989-03-24": "Good Friday", + "1989-03-27": "Easter Monday", + "1989-05-01": "Labour Day", + "1989-05-06": "Eid al-Fitr (estimated)", + "1989-06-03": "Uganda Martyrs' Day", + "1989-07-13": "Eid al-Adha (estimated)", + "1989-10-09": "Independence Day", + "1989-12-25": "Christmas Day", + "1989-12-26": "Boxing Day", + "1990-01-01": "New Year's Day", + "1990-01-26": "NRM Liberation Day", + "1990-03-08": "Women's Day", + "1990-04-13": "Good Friday", + "1990-04-16": "Easter Monday", + "1990-04-26": "Eid al-Fitr (estimated)", + "1990-05-01": "Labour Day", + "1990-06-03": "Uganda Martyrs' Day", + "1990-07-02": "Eid al-Adha (estimated)", + "1990-10-09": "Independence Day", + "1990-12-25": "Christmas Day", + "1990-12-26": "Boxing Day", + "1991-01-01": "New Year's Day", + "1991-01-26": "NRM Liberation Day", + "1991-03-08": "Women's Day", + "1991-03-29": "Good Friday", + "1991-04-01": "Easter Monday", + "1991-04-15": "Eid al-Fitr (estimated)", + "1991-05-01": "Labour Day", + "1991-06-03": "Uganda Martyrs' Day", + "1991-06-22": "Eid al-Adha (estimated)", + "1991-10-09": "Independence Day", + "1991-12-25": "Christmas Day", + "1991-12-26": "Boxing Day", + "1992-01-01": "New Year's Day", + "1992-01-26": "NRM Liberation Day", + "1992-03-08": "Women's Day", + "1992-04-04": "Eid al-Fitr (estimated)", + "1992-04-17": "Good Friday", + "1992-04-20": "Easter Monday", + "1992-05-01": "Labour Day", + "1992-06-03": "Uganda Martyrs' Day", + "1992-06-11": "Eid al-Adha (estimated)", + "1992-10-09": "Independence Day", + "1992-12-25": "Christmas Day", + "1992-12-26": "Boxing Day", + "1993-01-01": "New Year's Day", + "1993-01-26": "NRM Liberation Day", + "1993-03-08": "Women's Day", + "1993-03-24": "Eid al-Fitr (estimated)", + "1993-04-09": "Good Friday", + "1993-04-12": "Easter Monday", + "1993-05-01": "Labour Day", + "1993-05-31": "Eid al-Adha (estimated)", + "1993-06-03": "Uganda Martyrs' Day", + "1993-10-09": "Independence Day", + "1993-12-25": "Christmas Day", + "1993-12-26": "Boxing Day", + "1994-01-01": "New Year's Day", + "1994-01-26": "NRM Liberation Day", + "1994-03-08": "Women's Day", + "1994-03-13": "Eid al-Fitr (estimated)", + "1994-04-01": "Good Friday", + "1994-04-04": "Easter Monday", + "1994-05-01": "Labour Day", + "1994-05-20": "Eid al-Adha (estimated)", + "1994-06-03": "Uganda Martyrs' Day", + "1994-10-09": "Independence Day", + "1994-12-25": "Christmas Day", + "1994-12-26": "Boxing Day", + "1995-01-01": "New Year's Day", + "1995-01-26": "NRM Liberation Day", + "1995-03-02": "Eid al-Fitr (estimated)", + "1995-03-08": "Women's Day", + "1995-04-14": "Good Friday", + "1995-04-17": "Easter Monday", + "1995-05-01": "Labour Day", + "1995-05-09": "Eid al-Adha (estimated)", + "1995-06-03": "Uganda Martyrs' Day", + "1995-10-09": "Independence Day", + "1995-12-25": "Christmas Day", + "1995-12-26": "Boxing Day", + "1996-01-01": "New Year's Day", + "1996-01-26": "NRM Liberation Day", + "1996-02-19": "Eid al-Fitr (estimated)", + "1996-03-08": "Women's Day", + "1996-04-05": "Good Friday", + "1996-04-08": "Easter Monday", + "1996-04-27": "Eid al-Adha (estimated)", + "1996-05-01": "Labour Day", + "1996-06-03": "Uganda Martyrs' Day", + "1996-10-09": "Independence Day", + "1996-12-25": "Christmas Day", + "1996-12-26": "Boxing Day", + "1997-01-01": "New Year's Day", + "1997-01-26": "NRM Liberation Day", + "1997-02-08": "Eid al-Fitr (estimated)", + "1997-03-08": "Women's Day", + "1997-03-28": "Good Friday", + "1997-03-31": "Easter Monday", + "1997-04-17": "Eid al-Adha (estimated)", + "1997-05-01": "Labour Day", + "1997-06-03": "Uganda Martyrs' Day", + "1997-10-09": "Independence Day", + "1997-12-25": "Christmas Day", + "1997-12-26": "Boxing Day", + "1998-01-01": "New Year's Day", + "1998-01-26": "NRM Liberation Day", + "1998-01-29": "Eid al-Fitr (estimated)", + "1998-03-08": "Women's Day", + "1998-04-07": "Eid al-Adha (estimated)", + "1998-04-10": "Good Friday", + "1998-04-13": "Easter Monday", + "1998-05-01": "Labour Day", + "1998-06-03": "Uganda Martyrs' Day", + "1998-10-09": "Independence Day", + "1998-12-25": "Christmas Day", + "1998-12-26": "Boxing Day", + "1999-01-01": "New Year's Day", + "1999-01-18": "Eid al-Fitr (estimated)", + "1999-01-26": "NRM Liberation Day", + "1999-03-08": "Women's Day", + "1999-03-27": "Eid al-Adha (estimated)", + "1999-04-02": "Good Friday", + "1999-04-05": "Easter Monday", + "1999-05-01": "Labour Day", + "1999-06-03": "Uganda Martyrs' Day", + "1999-10-09": "Independence Day", + "1999-12-25": "Christmas Day", + "1999-12-26": "Boxing Day", + "2000-01-01": "New Year's Day", + "2000-01-08": "Eid al-Fitr (estimated)", + "2000-01-26": "NRM Liberation Day", + "2000-03-08": "Women's Day", + "2000-03-16": "Eid al-Adha (estimated)", + "2000-04-21": "Good Friday", + "2000-04-24": "Easter Monday", + "2000-05-01": "Labour Day", + "2000-06-03": "Uganda Martyrs' Day", + "2000-10-09": "Independence Day", + "2000-12-25": "Christmas Day", + "2000-12-26": "Boxing Day", + "2000-12-27": "Eid al-Fitr (estimated)", + "2001-01-01": "New Year's Day", + "2001-01-26": "NRM Liberation Day", + "2001-03-05": "Eid al-Adha (estimated)", + "2001-03-08": "Women's Day", + "2001-04-13": "Good Friday", + "2001-04-16": "Easter Monday", + "2001-05-01": "Labour Day", + "2001-06-03": "Uganda Martyrs' Day", + "2001-06-09": "National Heroes' Day", + "2001-10-09": "Independence Day", + "2001-12-16": "Eid al-Fitr (estimated)", + "2001-12-25": "Christmas Day", + "2001-12-26": "Boxing Day", + "2002-01-01": "New Year's Day", + "2002-01-26": "NRM Liberation Day", + "2002-02-22": "Eid al-Adha (estimated)", + "2002-03-08": "Women's Day", + "2002-03-29": "Good Friday", + "2002-04-01": "Easter Monday", + "2002-05-01": "Labour Day", + "2002-06-03": "Uganda Martyrs' Day", + "2002-06-09": "National Heroes' Day", + "2002-10-09": "Independence Day", + "2002-12-05": "Eid al-Fitr (estimated)", + "2002-12-25": "Christmas Day", + "2002-12-26": "Boxing Day", + "2003-01-01": "New Year's Day", + "2003-01-26": "NRM Liberation Day", + "2003-02-11": "Eid al-Adha (estimated)", + "2003-03-08": "Women's Day", + "2003-04-18": "Good Friday", + "2003-04-21": "Easter Monday", + "2003-05-01": "Labour Day", + "2003-06-03": "Uganda Martyrs' Day", + "2003-06-09": "National Heroes' Day", + "2003-10-09": "Independence Day", + "2003-11-25": "Eid al-Fitr (estimated)", + "2003-12-25": "Christmas Day", + "2003-12-26": "Boxing Day", + "2004-01-01": "New Year's Day", + "2004-01-26": "NRM Liberation Day", + "2004-02-01": "Eid al-Adha (estimated)", + "2004-03-08": "Women's Day", + "2004-04-09": "Good Friday", + "2004-04-12": "Easter Monday", + "2004-05-01": "Labour Day", + "2004-06-03": "Uganda Martyrs' Day", + "2004-06-09": "National Heroes' Day", + "2004-10-09": "Independence Day", + "2004-11-14": "Eid al-Fitr (estimated)", + "2004-12-25": "Christmas Day", + "2004-12-26": "Boxing Day", + "2005-01-01": "New Year's Day", + "2005-01-21": "Eid al-Adha (estimated)", + "2005-01-26": "NRM Liberation Day", + "2005-03-08": "Women's Day", + "2005-03-25": "Good Friday", + "2005-03-28": "Easter Monday", + "2005-05-01": "Labour Day", + "2005-06-03": "Uganda Martyrs' Day", + "2005-06-09": "National Heroes' Day", + "2005-10-09": "Independence Day", + "2005-11-03": "Eid al-Fitr (estimated)", + "2005-12-25": "Christmas Day", + "2005-12-26": "Boxing Day", + "2006-01-01": "New Year's Day", + "2006-01-10": "Eid al-Adha (estimated)", + "2006-01-26": "NRM Liberation Day", + "2006-03-08": "Women's Day", + "2006-04-14": "Good Friday", + "2006-04-17": "Easter Monday", + "2006-05-01": "Labour Day", + "2006-06-03": "Uganda Martyrs' Day", + "2006-06-09": "National Heroes' Day", + "2006-10-09": "Independence Day", + "2006-10-23": "Eid al-Fitr (estimated)", + "2006-12-25": "Christmas Day", + "2006-12-26": "Boxing Day", + "2006-12-31": "Eid al-Adha (estimated)", + "2007-01-01": "New Year's Day", + "2007-01-26": "NRM Liberation Day", + "2007-03-08": "Women's Day", + "2007-04-06": "Good Friday", + "2007-04-09": "Easter Monday", + "2007-05-01": "Labour Day", + "2007-06-03": "Uganda Martyrs' Day", + "2007-06-09": "National Heroes' Day", + "2007-10-09": "Independence Day", + "2007-10-13": "Eid al-Fitr (estimated)", + "2007-12-20": "Eid al-Adha (estimated)", + "2007-12-25": "Christmas Day", + "2007-12-26": "Boxing Day", + "2008-01-01": "New Year's Day", + "2008-01-26": "NRM Liberation Day", + "2008-03-08": "Women's Day", + "2008-03-21": "Good Friday", + "2008-03-24": "Easter Monday", + "2008-05-01": "Labour Day", + "2008-06-03": "Uganda Martyrs' Day", + "2008-06-09": "National Heroes' Day", + "2008-10-01": "Eid al-Fitr (estimated)", + "2008-10-09": "Independence Day", + "2008-12-08": "Eid al-Adha (estimated)", + "2008-12-25": "Christmas Day", + "2008-12-26": "Boxing Day", + "2009-01-01": "New Year's Day", + "2009-01-26": "NRM Liberation Day", + "2009-03-08": "Women's Day", + "2009-04-10": "Good Friday", + "2009-04-13": "Easter Monday", + "2009-05-01": "Labour Day", + "2009-06-03": "Uganda Martyrs' Day", + "2009-06-09": "National Heroes' Day", + "2009-09-20": "Eid al-Fitr (estimated)", + "2009-10-09": "Independence Day", + "2009-11-27": "Eid al-Adha (estimated)", + "2009-12-25": "Christmas Day", + "2009-12-26": "Boxing Day", + "2010-01-01": "New Year's Day", + "2010-01-26": "NRM Liberation Day", + "2010-03-08": "Women's Day", + "2010-04-02": "Good Friday", + "2010-04-05": "Easter Monday", + "2010-05-01": "Labour Day", + "2010-06-03": "Uganda Martyrs' Day", + "2010-06-09": "National Heroes' Day", + "2010-09-10": "Eid al-Fitr (estimated)", + "2010-10-09": "Independence Day", + "2010-11-16": "Eid al-Adha (estimated)", + "2010-12-25": "Christmas Day", + "2010-12-26": "Boxing Day", + "2011-01-01": "New Year's Day", + "2011-01-26": "NRM Liberation Day", + "2011-03-08": "Women's Day", + "2011-04-22": "Good Friday", + "2011-04-25": "Easter Monday", + "2011-05-01": "Labour Day", + "2011-06-03": "Uganda Martyrs' Day", + "2011-06-09": "National Heroes' Day", + "2011-08-30": "Eid al-Fitr (estimated)", + "2011-10-09": "Independence Day", + "2011-11-06": "Eid al-Adha (estimated)", + "2011-12-25": "Christmas Day", + "2011-12-26": "Boxing Day", + "2012-01-01": "New Year's Day", + "2012-01-26": "NRM Liberation Day", + "2012-03-08": "Women's Day", + "2012-04-06": "Good Friday", + "2012-04-09": "Easter Monday", + "2012-05-01": "Labour Day", + "2012-06-03": "Uganda Martyrs' Day", + "2012-06-09": "National Heroes' Day", + "2012-08-19": "Eid al-Fitr (estimated)", + "2012-10-09": "Independence Day", + "2012-10-26": "Eid al-Adha (estimated)", + "2012-12-25": "Christmas Day", + "2012-12-26": "Boxing Day", + "2013-01-01": "New Year's Day", + "2013-01-26": "NRM Liberation Day", + "2013-03-08": "Women's Day", + "2013-03-29": "Good Friday", + "2013-04-01": "Easter Monday", + "2013-05-01": "Labour Day", + "2013-06-03": "Uganda Martyrs' Day", + "2013-06-09": "National Heroes' Day", + "2013-08-08": "Eid al-Fitr (estimated)", + "2013-10-09": "Independence Day", + "2013-10-15": "Eid al-Adha (estimated)", + "2013-12-25": "Christmas Day", + "2013-12-26": "Boxing Day", + "2014-01-01": "New Year's Day", + "2014-01-26": "NRM Liberation Day", + "2014-03-08": "Women's Day", + "2014-04-18": "Good Friday", + "2014-04-21": "Easter Monday", + "2014-05-01": "Labour Day", + "2014-06-03": "Uganda Martyrs' Day", + "2014-06-09": "National Heroes' Day", + "2014-07-28": "Eid al-Fitr (estimated)", + "2014-10-04": "Eid al-Adha (estimated)", + "2014-10-09": "Independence Day", + "2014-12-25": "Christmas Day", + "2014-12-26": "Boxing Day", + "2015-01-01": "New Year's Day", + "2015-01-26": "NRM Liberation Day", + "2015-03-08": "Women's Day", + "2015-04-03": "Good Friday", + "2015-04-06": "Easter Monday", + "2015-05-01": "Labour Day", + "2015-06-03": "Uganda Martyrs' Day", + "2015-06-09": "National Heroes' Day", + "2015-07-17": "Eid al-Fitr (estimated)", + "2015-09-23": "Eid al-Adha (estimated)", + "2015-10-09": "Independence Day", + "2015-12-25": "Christmas Day", + "2015-12-26": "Boxing Day", + "2016-01-01": "New Year's Day", + "2016-01-26": "NRM Liberation Day", + "2016-02-16": "Archbishop Janani Luwum Day", + "2016-03-08": "Women's Day", + "2016-03-25": "Good Friday", + "2016-03-28": "Easter Monday", + "2016-05-01": "Labour Day", + "2016-06-03": "Uganda Martyrs' Day", + "2016-06-09": "National Heroes' Day", + "2016-07-06": "Eid al-Fitr (estimated)", + "2016-09-11": "Eid al-Adha (estimated)", + "2016-10-09": "Independence Day", + "2016-12-25": "Christmas Day", + "2016-12-26": "Boxing Day", + "2017-01-01": "New Year's Day", + "2017-01-26": "NRM Liberation Day", + "2017-02-16": "Archbishop Janani Luwum Day", + "2017-03-08": "Women's Day", + "2017-04-14": "Good Friday", + "2017-04-17": "Easter Monday", + "2017-05-01": "Labour Day", + "2017-06-03": "Uganda Martyrs' Day", + "2017-06-09": "National Heroes' Day", + "2017-06-25": "Eid al-Fitr (estimated)", + "2017-09-01": "Eid al-Adha (estimated)", + "2017-10-09": "Independence Day", + "2017-12-25": "Christmas Day", + "2017-12-26": "Boxing Day", + "2018-01-01": "New Year's Day", + "2018-01-26": "NRM Liberation Day", + "2018-02-16": "Archbishop Janani Luwum Day", + "2018-03-08": "Women's Day", + "2018-03-30": "Good Friday", + "2018-04-02": "Easter Monday", + "2018-05-01": "Labour Day", + "2018-06-03": "Uganda Martyrs' Day", + "2018-06-09": "National Heroes' Day", + "2018-06-15": "Eid al-Fitr (estimated)", + "2018-08-21": "Eid al-Adha (estimated)", + "2018-10-09": "Independence Day", + "2018-12-25": "Christmas Day", + "2018-12-26": "Boxing Day", + "2019-01-01": "New Year's Day", + "2019-01-26": "NRM Liberation Day", + "2019-02-16": "Archbishop Janani Luwum Day", + "2019-03-08": "Women's Day", + "2019-04-19": "Good Friday", + "2019-04-22": "Easter Monday", + "2019-05-01": "Labour Day", + "2019-06-03": "Uganda Martyrs' Day", + "2019-06-04": "Eid al-Fitr (estimated)", + "2019-06-09": "National Heroes' Day", + "2019-08-11": "Eid al-Adha (estimated)", + "2019-10-09": "Independence Day", + "2019-12-25": "Christmas Day", + "2019-12-26": "Boxing Day", + "2020-01-01": "New Year's Day", + "2020-01-26": "NRM Liberation Day", + "2020-02-16": "Archbishop Janani Luwum Day", + "2020-03-08": "Women's Day", + "2020-04-10": "Good Friday", + "2020-04-13": "Easter Monday", + "2020-05-01": "Labour Day", + "2020-05-24": "Eid al-Fitr (estimated)", + "2020-06-03": "Uganda Martyrs' Day", + "2020-06-09": "National Heroes' Day", + "2020-07-31": "Eid al-Adha (estimated)", + "2020-10-09": "Independence Day", + "2020-12-25": "Christmas Day", + "2020-12-26": "Boxing Day", + "2021-01-01": "New Year's Day", + "2021-01-26": "NRM Liberation Day", + "2021-02-16": "Archbishop Janani Luwum Day", + "2021-03-08": "Women's Day", + "2021-04-02": "Good Friday", + "2021-04-05": "Easter Monday", + "2021-05-01": "Labour Day", + "2021-05-13": "Eid al-Fitr (estimated)", + "2021-06-03": "Uganda Martyrs' Day", + "2021-06-09": "National Heroes' Day", + "2021-07-20": "Eid al-Adha (estimated)", + "2021-10-09": "Independence Day", + "2021-12-25": "Christmas Day", + "2021-12-26": "Boxing Day", + "2022-01-01": "New Year's Day", + "2022-01-26": "NRM Liberation Day", + "2022-02-16": "Archbishop Janani Luwum Day", + "2022-03-08": "Women's Day", + "2022-04-15": "Good Friday", + "2022-04-18": "Easter Monday", + "2022-05-01": "Labour Day", + "2022-05-02": "Eid al-Fitr (estimated)", + "2022-06-03": "Uganda Martyrs' Day", + "2022-06-09": "National Heroes' Day", + "2022-07-09": "Eid al-Adha (estimated)", + "2022-10-09": "Independence Day", + "2022-12-25": "Christmas Day", + "2022-12-26": "Boxing Day", + "2023-01-01": "New Year's Day", + "2023-01-26": "NRM Liberation Day", + "2023-02-16": "Archbishop Janani Luwum Day", + "2023-03-08": "Women's Day", + "2023-04-07": "Good Friday", + "2023-04-10": "Easter Monday", + "2023-04-21": "Eid al-Fitr (estimated)", + "2023-05-01": "Labour Day", + "2023-06-03": "Uganda Martyrs' Day", + "2023-06-09": "National Heroes' Day", + "2023-06-28": "Eid al-Adha (estimated)", + "2023-10-09": "Independence Day", + "2023-12-25": "Christmas Day", + "2023-12-26": "Boxing Day", + "2024-01-01": "New Year's Day", + "2024-01-26": "NRM Liberation Day", + "2024-02-16": "Archbishop Janani Luwum Day", + "2024-03-08": "Women's Day", + "2024-03-29": "Good Friday", + "2024-04-01": "Easter Monday", + "2024-04-10": "Eid al-Fitr (estimated)", + "2024-05-01": "Labour Day", + "2024-06-03": "Uganda Martyrs' Day", + "2024-06-09": "National Heroes' Day", + "2024-06-16": "Eid al-Adha (estimated)", + "2024-10-09": "Independence Day", + "2024-12-25": "Christmas Day", + "2024-12-26": "Boxing Day", + "2025-01-01": "New Year's Day", + "2025-01-26": "NRM Liberation Day", + "2025-02-16": "Archbishop Janani Luwum Day", + "2025-03-08": "Women's Day", + "2025-03-30": "Eid al-Fitr (estimated)", + "2025-04-18": "Good Friday", + "2025-04-21": "Easter Monday", + "2025-05-01": "Labour Day", + "2025-06-03": "Uganda Martyrs' Day", + "2025-06-06": "Eid al-Adha (estimated)", + "2025-06-09": "National Heroes' Day", + "2025-10-09": "Independence Day", + "2025-12-25": "Christmas Day", + "2025-12-26": "Boxing Day", + "2026-01-01": "New Year's Day", + "2026-01-26": "NRM Liberation Day", + "2026-02-16": "Archbishop Janani Luwum Day", + "2026-03-08": "Women's Day", + "2026-03-20": "Eid al-Fitr (estimated)", + "2026-04-03": "Good Friday", + "2026-04-06": "Easter Monday", + "2026-05-01": "Labour Day", + "2026-05-27": "Eid al-Adha (estimated)", + "2026-06-03": "Uganda Martyrs' Day", + "2026-06-09": "National Heroes' Day", + "2026-10-09": "Independence Day", + "2026-12-25": "Christmas Day", + "2026-12-26": "Boxing Day", + "2027-01-01": "New Year's Day", + "2027-01-26": "NRM Liberation Day", + "2027-02-16": "Archbishop Janani Luwum Day", + "2027-03-08": "Women's Day", + "2027-03-09": "Eid al-Fitr (estimated)", + "2027-03-26": "Good Friday", + "2027-03-29": "Easter Monday", + "2027-05-01": "Labour Day", + "2027-05-16": "Eid al-Adha (estimated)", + "2027-06-03": "Uganda Martyrs' Day", + "2027-06-09": "National Heroes' Day", + "2027-10-09": "Independence Day", + "2027-12-25": "Christmas Day", + "2027-12-26": "Boxing Day", + "2028-01-01": "New Year's Day", + "2028-01-26": "NRM Liberation Day", + "2028-02-16": "Archbishop Janani Luwum Day", + "2028-02-26": "Eid al-Fitr (estimated)", + "2028-03-08": "Women's Day", + "2028-04-14": "Good Friday", + "2028-04-17": "Easter Monday", + "2028-05-01": "Labour Day", + "2028-05-05": "Eid al-Adha (estimated)", + "2028-06-03": "Uganda Martyrs' Day", + "2028-06-09": "National Heroes' Day", + "2028-10-09": "Independence Day", + "2028-12-25": "Christmas Day", + "2028-12-26": "Boxing Day", + "2029-01-01": "New Year's Day", + "2029-01-26": "NRM Liberation Day", + "2029-02-14": "Eid al-Fitr (estimated)", + "2029-02-16": "Archbishop Janani Luwum Day", + "2029-03-08": "Women's Day", + "2029-03-30": "Good Friday", + "2029-04-02": "Easter Monday", + "2029-04-24": "Eid al-Adha (estimated)", + "2029-05-01": "Labour Day", + "2029-06-03": "Uganda Martyrs' Day", + "2029-06-09": "National Heroes' Day", + "2029-10-09": "Independence Day", + "2029-12-25": "Christmas Day", + "2029-12-26": "Boxing Day", + "2030-01-01": "New Year's Day", + "2030-01-26": "NRM Liberation Day", + "2030-02-04": "Eid al-Fitr (estimated)", + "2030-02-16": "Archbishop Janani Luwum Day", + "2030-03-08": "Women's Day", + "2030-04-13": "Eid al-Adha (estimated)", + "2030-04-19": "Good Friday", + "2030-04-22": "Easter Monday", + "2030-05-01": "Labour Day", + "2030-06-03": "Uganda Martyrs' Day", + "2030-06-09": "National Heroes' Day", + "2030-10-09": "Independence Day", + "2030-12-25": "Christmas Day", + "2030-12-26": "Boxing Day", + "2031-01-01": "New Year's Day", + "2031-01-24": "Eid al-Fitr (estimated)", + "2031-01-26": "NRM Liberation Day", + "2031-02-16": "Archbishop Janani Luwum Day", + "2031-03-08": "Women's Day", + "2031-04-02": "Eid al-Adha (estimated)", + "2031-04-11": "Good Friday", + "2031-04-14": "Easter Monday", + "2031-05-01": "Labour Day", + "2031-06-03": "Uganda Martyrs' Day", + "2031-06-09": "National Heroes' Day", + "2031-10-09": "Independence Day", + "2031-12-25": "Christmas Day", + "2031-12-26": "Boxing Day", + "2032-01-01": "New Year's Day", + "2032-01-14": "Eid al-Fitr (estimated)", + "2032-01-26": "NRM Liberation Day", + "2032-02-16": "Archbishop Janani Luwum Day", + "2032-03-08": "Women's Day", + "2032-03-22": "Eid al-Adha (estimated)", + "2032-03-26": "Good Friday", + "2032-03-29": "Easter Monday", + "2032-05-01": "Labour Day", + "2032-06-03": "Uganda Martyrs' Day", + "2032-06-09": "National Heroes' Day", + "2032-10-09": "Independence Day", + "2032-12-25": "Christmas Day", + "2032-12-26": "Boxing Day", + "2033-01-01": "New Year's Day", + "2033-01-02": "Eid al-Fitr (estimated)", + "2033-01-26": "NRM Liberation Day", + "2033-02-16": "Archbishop Janani Luwum Day", + "2033-03-08": "Women's Day", + "2033-03-11": "Eid al-Adha (estimated)", + "2033-04-15": "Good Friday", + "2033-04-18": "Easter Monday", + "2033-05-01": "Labour Day", + "2033-06-03": "Uganda Martyrs' Day", + "2033-06-09": "National Heroes' Day", + "2033-10-09": "Independence Day", + "2033-12-23": "Eid al-Fitr (estimated)", + "2033-12-25": "Christmas Day", + "2033-12-26": "Boxing Day", + "2034-01-01": "New Year's Day", + "2034-01-26": "NRM Liberation Day", + "2034-02-16": "Archbishop Janani Luwum Day", + "2034-03-01": "Eid al-Adha (estimated)", + "2034-03-08": "Women's Day", + "2034-04-07": "Good Friday", + "2034-04-10": "Easter Monday", + "2034-05-01": "Labour Day", + "2034-06-03": "Uganda Martyrs' Day", + "2034-06-09": "National Heroes' Day", + "2034-10-09": "Independence Day", + "2034-12-12": "Eid al-Fitr (estimated)", + "2034-12-25": "Christmas Day", + "2034-12-26": "Boxing Day", + "2035-01-01": "New Year's Day", + "2035-01-26": "NRM Liberation Day", + "2035-02-16": "Archbishop Janani Luwum Day", + "2035-02-18": "Eid al-Adha (estimated)", + "2035-03-08": "Women's Day", + "2035-03-23": "Good Friday", + "2035-03-26": "Easter Monday", + "2035-05-01": "Labour Day", + "2035-06-03": "Uganda Martyrs' Day", + "2035-06-09": "National Heroes' Day", + "2035-10-09": "Independence Day", + "2035-12-01": "Eid al-Fitr (estimated)", + "2035-12-25": "Christmas Day", + "2035-12-26": "Boxing Day", + "2036-01-01": "New Year's Day", + "2036-01-26": "NRM Liberation Day", + "2036-02-07": "Eid al-Adha (estimated)", + "2036-02-16": "Archbishop Janani Luwum Day", + "2036-03-08": "Women's Day", + "2036-04-11": "Good Friday", + "2036-04-14": "Easter Monday", + "2036-05-01": "Labour Day", + "2036-06-03": "Uganda Martyrs' Day", + "2036-06-09": "National Heroes' Day", + "2036-10-09": "Independence Day", + "2036-11-19": "Eid al-Fitr (estimated)", + "2036-12-25": "Christmas Day", + "2036-12-26": "Boxing Day", + "2037-01-01": "New Year's Day", + "2037-01-26": "Eid al-Adha (estimated); NRM Liberation Day", + "2037-02-16": "Archbishop Janani Luwum Day", + "2037-03-08": "Women's Day", + "2037-04-03": "Good Friday", + "2037-04-06": "Easter Monday", + "2037-05-01": "Labour Day", + "2037-06-03": "Uganda Martyrs' Day", + "2037-06-09": "National Heroes' Day", + "2037-10-09": "Independence Day", + "2037-11-08": "Eid al-Fitr (estimated)", + "2037-12-25": "Christmas Day", + "2037-12-26": "Boxing Day", + "2038-01-01": "New Year's Day", + "2038-01-16": "Eid al-Adha (estimated)", + "2038-01-26": "NRM Liberation Day", + "2038-02-16": "Archbishop Janani Luwum Day", + "2038-03-08": "Women's Day", + "2038-04-23": "Good Friday", + "2038-04-26": "Easter Monday", + "2038-05-01": "Labour Day", + "2038-06-03": "Uganda Martyrs' Day", + "2038-06-09": "National Heroes' Day", + "2038-10-09": "Independence Day", + "2038-10-29": "Eid al-Fitr (estimated)", + "2038-12-25": "Christmas Day", + "2038-12-26": "Boxing Day", + "2039-01-01": "New Year's Day", + "2039-01-05": "Eid al-Adha (estimated)", + "2039-01-26": "NRM Liberation Day", + "2039-02-16": "Archbishop Janani Luwum Day", + "2039-03-08": "Women's Day", + "2039-04-08": "Good Friday", + "2039-04-11": "Easter Monday", + "2039-05-01": "Labour Day", + "2039-06-03": "Uganda Martyrs' Day", + "2039-06-09": "National Heroes' Day", + "2039-10-09": "Independence Day", + "2039-10-19": "Eid al-Fitr (estimated)", + "2039-12-25": "Christmas Day", + "2039-12-26": "Boxing Day; Eid al-Adha (estimated)", + "2040-01-01": "New Year's Day", + "2040-01-26": "NRM Liberation Day", + "2040-02-16": "Archbishop Janani Luwum Day", + "2040-03-08": "Women's Day", + "2040-03-30": "Good Friday", + "2040-04-02": "Easter Monday", + "2040-05-01": "Labour Day", + "2040-06-03": "Uganda Martyrs' Day", + "2040-06-09": "National Heroes' Day", + "2040-10-07": "Eid al-Fitr (estimated)", + "2040-10-09": "Independence Day", + "2040-12-14": "Eid al-Adha (estimated)", + "2040-12-25": "Christmas Day", + "2040-12-26": "Boxing Day", + "2041-01-01": "New Year's Day", + "2041-01-26": "NRM Liberation Day", + "2041-02-16": "Archbishop Janani Luwum Day", + "2041-03-08": "Women's Day", + "2041-04-19": "Good Friday", + "2041-04-22": "Easter Monday", + "2041-05-01": "Labour Day", + "2041-06-03": "Uganda Martyrs' Day", + "2041-06-09": "National Heroes' Day", + "2041-09-26": "Eid al-Fitr (estimated)", + "2041-10-09": "Independence Day", + "2041-12-04": "Eid al-Adha (estimated)", + "2041-12-25": "Christmas Day", + "2041-12-26": "Boxing Day", + "2042-01-01": "New Year's Day", + "2042-01-26": "NRM Liberation Day", + "2042-02-16": "Archbishop Janani Luwum Day", + "2042-03-08": "Women's Day", + "2042-04-04": "Good Friday", + "2042-04-07": "Easter Monday", + "2042-05-01": "Labour Day", + "2042-06-03": "Uganda Martyrs' Day", + "2042-06-09": "National Heroes' Day", + "2042-09-15": "Eid al-Fitr (estimated)", + "2042-10-09": "Independence Day", + "2042-11-23": "Eid al-Adha (estimated)", + "2042-12-25": "Christmas Day", + "2042-12-26": "Boxing Day", + "2043-01-01": "New Year's Day", + "2043-01-26": "NRM Liberation Day", + "2043-02-16": "Archbishop Janani Luwum Day", + "2043-03-08": "Women's Day", + "2043-03-27": "Good Friday", + "2043-03-30": "Easter Monday", + "2043-05-01": "Labour Day", + "2043-06-03": "Uganda Martyrs' Day", + "2043-06-09": "National Heroes' Day", + "2043-09-04": "Eid al-Fitr (estimated)", + "2043-10-09": "Independence Day", + "2043-11-12": "Eid al-Adha (estimated)", + "2043-12-25": "Christmas Day", + "2043-12-26": "Boxing Day", + "2044-01-01": "New Year's Day", + "2044-01-26": "NRM Liberation Day", + "2044-02-16": "Archbishop Janani Luwum Day", + "2044-03-08": "Women's Day", + "2044-04-15": "Good Friday", + "2044-04-18": "Easter Monday", + "2044-05-01": "Labour Day", + "2044-06-03": "Uganda Martyrs' Day", + "2044-06-09": "National Heroes' Day", + "2044-08-24": "Eid al-Fitr (estimated)", + "2044-10-09": "Independence Day", + "2044-10-31": "Eid al-Adha (estimated)", + "2044-12-25": "Christmas Day", + "2044-12-26": "Boxing Day", + "2045-01-01": "New Year's Day", + "2045-01-26": "NRM Liberation Day", + "2045-02-16": "Archbishop Janani Luwum Day", + "2045-03-08": "Women's Day", + "2045-04-07": "Good Friday", + "2045-04-10": "Easter Monday", + "2045-05-01": "Labour Day", + "2045-06-03": "Uganda Martyrs' Day", + "2045-06-09": "National Heroes' Day", + "2045-08-14": "Eid al-Fitr (estimated)", + "2045-10-09": "Independence Day", + "2045-10-21": "Eid al-Adha (estimated)", + "2045-12-25": "Christmas Day", + "2045-12-26": "Boxing Day", + "2046-01-01": "New Year's Day", + "2046-01-26": "NRM Liberation Day", + "2046-02-16": "Archbishop Janani Luwum Day", + "2046-03-08": "Women's Day", + "2046-03-23": "Good Friday", + "2046-03-26": "Easter Monday", + "2046-05-01": "Labour Day", + "2046-06-03": "Uganda Martyrs' Day", + "2046-06-09": "National Heroes' Day", + "2046-08-03": "Eid al-Fitr (estimated)", + "2046-10-09": "Independence Day", + "2046-10-10": "Eid al-Adha (estimated)", + "2046-12-25": "Christmas Day", + "2046-12-26": "Boxing Day", + "2047-01-01": "New Year's Day", + "2047-01-26": "NRM Liberation Day", + "2047-02-16": "Archbishop Janani Luwum Day", + "2047-03-08": "Women's Day", + "2047-04-12": "Good Friday", + "2047-04-15": "Easter Monday", + "2047-05-01": "Labour Day", + "2047-06-03": "Uganda Martyrs' Day", + "2047-06-09": "National Heroes' Day", + "2047-07-24": "Eid al-Fitr (estimated)", + "2047-09-30": "Eid al-Adha (estimated)", + "2047-10-09": "Independence Day", + "2047-12-25": "Christmas Day", + "2047-12-26": "Boxing Day", + "2048-01-01": "New Year's Day", + "2048-01-26": "NRM Liberation Day", + "2048-02-16": "Archbishop Janani Luwum Day", + "2048-03-08": "Women's Day", + "2048-04-03": "Good Friday", + "2048-04-06": "Easter Monday", + "2048-05-01": "Labour Day", + "2048-06-03": "Uganda Martyrs' Day", + "2048-06-09": "National Heroes' Day", + "2048-07-12": "Eid al-Fitr (estimated)", + "2048-09-19": "Eid al-Adha (estimated)", + "2048-10-09": "Independence Day", + "2048-12-25": "Christmas Day", + "2048-12-26": "Boxing Day", + "2049-01-01": "New Year's Day", + "2049-01-26": "NRM Liberation Day", + "2049-02-16": "Archbishop Janani Luwum Day", + "2049-03-08": "Women's Day", + "2049-04-16": "Good Friday", + "2049-04-19": "Easter Monday", + "2049-05-01": "Labour Day", + "2049-06-03": "Uganda Martyrs' Day", + "2049-06-09": "National Heroes' Day", + "2049-07-01": "Eid al-Fitr (estimated)", + "2049-09-08": "Eid al-Adha (estimated)", + "2049-10-09": "Independence Day", + "2049-12-25": "Christmas Day", + "2049-12-26": "Boxing Day", + "2050-01-01": "New Year's Day", + "2050-01-26": "NRM Liberation Day", + "2050-02-16": "Archbishop Janani Luwum Day", + "2050-03-08": "Women's Day", + "2050-04-08": "Good Friday", + "2050-04-11": "Easter Monday", + "2050-05-01": "Labour Day", + "2050-06-03": "Uganda Martyrs' Day", + "2050-06-09": "National Heroes' Day", + "2050-06-20": "Eid al-Fitr (estimated)", + "2050-08-28": "Eid al-Adha (estimated)", + "2050-10-09": "Independence Day", + "2050-12-25": "Christmas Day", + "2050-12-26": "Boxing Day" +} diff --git a/tests/countries/test_uganda.py b/tests/countries/test_uganda.py new file mode 100644 index 0000000000..ee293b5231 --- /dev/null +++ b/tests/countries/test_uganda.py @@ -0,0 +1,141 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from unittest import TestCase + +from holidays.countries.uganda import Uganda, UG, UGA +from tests.common import CommonCountryTests + + +class TestUganda(CommonCountryTests, TestCase): + @classmethod + def setUpClass(cls): + years = range(1963, 2050) + super().setUpClass(Uganda, years=years) + cls.no_estimated_holidays = Uganda(years=years, islamic_show_estimated=False) + + def test_country_aliases(self): + self.assertAliases(Uganda, UG, UGA) + + def test_no_holidays(self): + self.assertNoHolidays(Uganda(years=1962)) + + def test_new_years_day(self): + self.assertHolidayName("New Year's Day", (f"{year}-01-01" for year in range(1963, 2050))) + + def test_nrm_liberation_day(self): + name = "NRM Liberation Day" + self.assertHolidayName(name, (f"{year}-01-26" for year in range(1987, 2050))) + self.assertNoHolidayName(name, range(1963, 1987)) + + def test_archbishop_janani_luwum_day(self): + name = "Archbishop Janani Luwum Day" + self.assertHolidayName(name, (f"{year}-02-16" for year in range(2016, 2050))) + self.assertNoHolidayName(name, range(1963, 2016)) + + def test_womens_day(self): + self.assertHolidayName("Women's Day", (f"{year}-03-08" for year in range(1963, 2050))) + + def test_good_friday(self): + name = "Good Friday" + self.assertHolidayName( + name, + "2020-04-10", + "2021-04-02", + "2022-04-15", + "2023-04-07", + "2024-03-29", + "2025-04-18", + ) + self.assertHolidayName(name, range(1963, 2050)) + + def test_easter_monday(self): + name = "Easter Monday" + self.assertHolidayName( + name, + "2020-04-13", + "2021-04-05", + "2022-04-18", + "2023-04-10", + "2024-04-01", + "2025-04-21", + ) + self.assertHolidayName(name, range(1963, 2050)) + + def test_labour_day(self): + self.assertHolidayName("Labour Day", (f"{year}-05-01" for year in range(1963, 2050))) + + def test_uganda_martyrs_day(self): + self.assertHolidayName( + "Uganda Martyrs' Day", (f"{year}-06-03" for year in range(1963, 2050)) + ) + + def test_national_heroes_day(self): + name = "National Heroes' Day" + self.assertHolidayName(name, (f"{year}-06-09" for year in range(2001, 2050))) + self.assertNoHolidayName(name, range(1963, 2001)) + + def test_independence_day(self): + self.assertHolidayName("Independence Day", (f"{year}-10-09" for year in range(1963, 2050))) + + def test_christmas_day(self): + self.assertHolidayName("Christmas Day", (f"{year}-12-25" for year in range(1963, 2050))) + + def test_boxing_day(self): + self.assertHolidayName("Boxing Day", (f"{year}-12-26" for year in range(1963, 2050))) + + def test_eid_al_fitr(self): + name = "Eid al-Fitr" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-05-24", + "2021-05-13", + "2022-05-02", + "2023-04-21", + "2024-04-10", + "2025-03-30", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1963, 2050)) + + def test_eid_al_adha(self): + name = "Eid al-Adha" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-07-31", + "2021-07-20", + "2022-07-09", + "2023-06-28", + "2024-06-16", + "2025-06-06", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1963, 2050)) + + def test_2020(self): + self.assertHolidays( + Uganda(years=2020), + ("2020-01-01", "New Year's Day"), + ("2020-01-26", "NRM Liberation Day"), + ("2020-02-16", "Archbishop Janani Luwum Day"), + ("2020-03-08", "Women's Day"), + ("2020-04-10", "Good Friday"), + ("2020-04-13", "Easter Monday"), + ("2020-05-01", "Labour Day"), + ("2020-05-24", "Eid al-Fitr (estimated)"), + ("2020-06-03", "Uganda Martyrs' Day"), + ("2020-06-09", "National Heroes' Day"), + ("2020-07-31", "Eid al-Adha (estimated)"), + ("2020-10-09", "Independence Day"), + ("2020-12-25", "Christmas Day"), + ("2020-12-26", "Boxing Day"), + ) From 114ae3df8e7845a8edc03bf5981287ec1c2dc558 Mon Sep 17 00:00:00 2001 From: Prateekshit Jaiswal <67361301+Prateekshit73@users.noreply.github.com> Date: Tue, 26 Aug 2025 23:11:12 +0530 Subject: [PATCH 27/48] Add Somalia holidays (#2848) Signed-off-by: Prateekshit Jaiswal <67361301+Prateekshit73@users.noreply.github.com> Co-authored-by: Prateekshit Co-authored-by: Arkadii Yakovets --- README.md | 9 +- holidays/countries/__init__.py | 1 + holidays/countries/somalia.py | 77 +++ holidays/registry.py | 1 + snapshots/countries/SO_COMMON.json | 912 +++++++++++++++++++++++++++++ tests/countries/test_somalia.py | 141 +++++ 6 files changed, 1140 insertions(+), 1 deletion(-) create mode 100644 holidays/countries/somalia.py create mode 100644 snapshots/countries/SO_COMMON.json create mode 100644 tests/countries/test_somalia.py diff --git a/README.md b/README.md index 1b75b57468..035f9bd0ad 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ and detailed information. ## Available Countries -We currently support 238 country codes. The standard way to refer to a country is by using its [ISO +We currently support 239 country codes. The standard way to refer to a country is by using its [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes), the same used for domain names, and for a subdivision its [ISO 3166-2 code](https://en.wikipedia.org/wiki/ISO_3166-2). Some countries have common or foreign names or @@ -1526,6 +1526,13 @@ any) in brackets, available languages and additional holiday categories. All cou +Somalia +SO + + + + + South Africa ZA diff --git a/holidays/countries/__init__.py b/holidays/countries/__init__.py index ecc28065fe..19f92efc14 100644 --- a/holidays/countries/__init__.py +++ b/holidays/countries/__init__.py @@ -223,6 +223,7 @@ from holidays.countries.slovakia import Slovakia, SK, SVK from holidays.countries.slovenia import Slovenia, SI, SVN from holidays.countries.solomon_islands import SolomonIslands, SB, SLB +from holidays.countries.somalia import Somalia, SO, SOM from holidays.countries.south_africa import SouthAfrica, ZA, ZAF from holidays.countries.south_georgia_and_the_south_sandwich_islands import ( SouthGeorgiaAndTheSouthSandwichIslands, diff --git a/holidays/countries/somalia.py b/holidays/countries/somalia.py new file mode 100644 index 0000000000..f4b5affd58 --- /dev/null +++ b/holidays/countries/somalia.py @@ -0,0 +1,77 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from holidays.groups import InternationalHolidays, IslamicHolidays +from holidays.holiday_base import HolidayBase + + +class Somalia(HolidayBase, InternationalHolidays, IslamicHolidays): + """Somalia holidays. + + References: + * + * + """ + + country = "SO" + # Unification of Somaliland and Italian Somaliland into the Somali Republic on July 1st, 1960. + start_year = 1961 + + def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): + """ + Args: + islamic_show_estimated: + Whether to add "estimated" label to Islamic holidays name + if holiday date is estimated. + """ + InternationalHolidays.__init__(self) + IslamicHolidays.__init__(self, show_estimated=islamic_show_estimated) + super().__init__(*args, **kwargs) + + def _populate_public_holidays(self): + # New Year's Day. + self._add_new_years_day("New Year's Day") + + # Labor Day. + self._add_labor_day("Labour Day") + + # Independence Day. + self._add_holiday_jun_26("Independence Day") + + # Republic Day. + self._add_holiday_jul_1("Republic Day") + + # Islamic New Year. + self._add_islamic_new_year_day("Islamic New Year") + + # Ashura. + self._add_ashura_day("Ashura") + + # Prophet's Birthday. + self._add_mawlid_day("Prophet's Birthday") + + # Isra' and Mi'raj. + self._add_isra_and_miraj_day("Isra' and Mi'raj") + + # Eid al-Fitr. + self._add_eid_al_fitr_day("Eid al-Fitr") + + # Eid al-Adha. + self._add_eid_al_adha_day("Eid al-Adha") + + +class SO(Somalia): + pass + + +class SOM(Somalia): + pass diff --git a/holidays/registry.py b/holidays/registry.py index 95dcbf134f..cdb66cf695 100644 --- a/holidays/registry.py +++ b/holidays/registry.py @@ -217,6 +217,7 @@ "slovakia": ("Slovakia", "SK", "SVK"), "slovenia": ("Slovenia", "SI", "SVN"), "solomon_islands": ("SolomonIslands", "SB", "SLB"), + "somalia": ("Somalia", "SO", "SOM"), "south_africa": ("SouthAfrica", "ZA", "ZAF"), "south_georgia_and_the_south_sandwich_islands": ( "SouthGeorgiaAndTheSouthSandwichIslands", diff --git a/snapshots/countries/SO_COMMON.json b/snapshots/countries/SO_COMMON.json new file mode 100644 index 0000000000..76b055f59a --- /dev/null +++ b/snapshots/countries/SO_COMMON.json @@ -0,0 +1,912 @@ +{ + "1961-01-01": "New Year's Day", + "1961-01-14": "Isra' and Mi'raj (estimated)", + "1961-03-18": "Eid al-Fitr (estimated)", + "1961-05-01": "Labour Day", + "1961-05-25": "Eid al-Adha (estimated)", + "1961-06-14": "Islamic New Year (estimated)", + "1961-06-23": "Ashura (estimated)", + "1961-06-26": "Independence Day", + "1961-07-01": "Republic Day", + "1961-08-23": "Prophet's Birthday (estimated)", + "1962-01-01": "New Year's Day", + "1962-01-04": "Isra' and Mi'raj (estimated)", + "1962-03-07": "Eid al-Fitr (estimated)", + "1962-05-01": "Labour Day", + "1962-05-14": "Eid al-Adha (estimated)", + "1962-06-03": "Islamic New Year (estimated)", + "1962-06-12": "Ashura (estimated)", + "1962-06-26": "Independence Day", + "1962-07-01": "Republic Day", + "1962-08-12": "Prophet's Birthday (estimated)", + "1962-12-24": "Isra' and Mi'raj (estimated)", + "1963-01-01": "New Year's Day", + "1963-02-24": "Eid al-Fitr (estimated)", + "1963-05-01": "Labour Day", + "1963-05-03": "Eid al-Adha (estimated)", + "1963-05-24": "Islamic New Year (estimated)", + "1963-06-02": "Ashura (estimated)", + "1963-06-26": "Independence Day", + "1963-07-01": "Republic Day", + "1963-08-02": "Prophet's Birthday (estimated)", + "1963-12-13": "Isra' and Mi'raj (estimated)", + "1964-01-01": "New Year's Day", + "1964-02-14": "Eid al-Fitr (estimated)", + "1964-04-22": "Eid al-Adha (estimated)", + "1964-05-01": "Labour Day", + "1964-05-12": "Islamic New Year (estimated)", + "1964-05-21": "Ashura (estimated)", + "1964-06-26": "Independence Day", + "1964-07-01": "Republic Day", + "1964-07-21": "Prophet's Birthday (estimated)", + "1964-12-01": "Isra' and Mi'raj (estimated)", + "1965-01-01": "New Year's Day", + "1965-02-02": "Eid al-Fitr (estimated)", + "1965-04-11": "Eid al-Adha (estimated)", + "1965-05-01": "Islamic New Year (estimated); Labour Day", + "1965-05-10": "Ashura (estimated)", + "1965-06-26": "Independence Day", + "1965-07-01": "Republic Day", + "1965-07-10": "Prophet's Birthday (estimated)", + "1965-11-20": "Isra' and Mi'raj (estimated)", + "1966-01-01": "New Year's Day", + "1966-01-22": "Eid al-Fitr (estimated)", + "1966-04-01": "Eid al-Adha (estimated)", + "1966-04-21": "Islamic New Year (estimated)", + "1966-04-30": "Ashura (estimated)", + "1966-05-01": "Labour Day", + "1966-06-26": "Independence Day", + "1966-07-01": "Prophet's Birthday (estimated); Republic Day", + "1966-11-10": "Isra' and Mi'raj (estimated)", + "1967-01-01": "New Year's Day", + "1967-01-12": "Eid al-Fitr (estimated)", + "1967-03-21": "Eid al-Adha (estimated)", + "1967-04-11": "Islamic New Year (estimated)", + "1967-04-20": "Ashura (estimated)", + "1967-05-01": "Labour Day", + "1967-06-19": "Prophet's Birthday (estimated)", + "1967-06-26": "Independence Day", + "1967-07-01": "Republic Day", + "1967-10-30": "Isra' and Mi'raj (estimated)", + "1968-01-01": "Eid al-Fitr (estimated); New Year's Day", + "1968-03-09": "Eid al-Adha (estimated)", + "1968-03-30": "Islamic New Year (estimated)", + "1968-04-08": "Ashura (estimated)", + "1968-05-01": "Labour Day", + "1968-06-08": "Prophet's Birthday (estimated)", + "1968-06-26": "Independence Day", + "1968-07-01": "Republic Day", + "1968-10-19": "Isra' and Mi'raj (estimated)", + "1968-12-21": "Eid al-Fitr (estimated)", + "1969-01-01": "New Year's Day", + "1969-02-27": "Eid al-Adha (estimated)", + "1969-03-19": "Islamic New Year (estimated)", + "1969-03-28": "Ashura (estimated)", + "1969-05-01": "Labour Day", + "1969-05-28": "Prophet's Birthday (estimated)", + "1969-06-26": "Independence Day", + "1969-07-01": "Republic Day", + "1969-10-08": "Isra' and Mi'raj (estimated)", + "1969-12-10": "Eid al-Fitr (estimated)", + "1970-01-01": "New Year's Day", + "1970-02-16": "Eid al-Adha (estimated)", + "1970-03-09": "Islamic New Year (estimated)", + "1970-03-18": "Ashura (estimated)", + "1970-05-01": "Labour Day", + "1970-05-18": "Prophet's Birthday (estimated)", + "1970-06-26": "Independence Day", + "1970-07-01": "Republic Day", + "1970-09-28": "Isra' and Mi'raj (estimated)", + "1970-11-30": "Eid al-Fitr (estimated)", + "1971-01-01": "New Year's Day", + "1971-02-06": "Eid al-Adha (estimated)", + "1971-02-26": "Islamic New Year (estimated)", + "1971-03-07": "Ashura (estimated)", + "1971-05-01": "Labour Day", + "1971-05-07": "Prophet's Birthday (estimated)", + "1971-06-26": "Independence Day", + "1971-07-01": "Republic Day", + "1971-09-17": "Isra' and Mi'raj (estimated)", + "1971-11-19": "Eid al-Fitr (estimated)", + "1972-01-01": "New Year's Day", + "1972-01-26": "Eid al-Adha (estimated)", + "1972-02-16": "Islamic New Year (estimated)", + "1972-02-25": "Ashura (estimated)", + "1972-04-25": "Prophet's Birthday (estimated)", + "1972-05-01": "Labour Day", + "1972-06-26": "Independence Day", + "1972-07-01": "Republic Day", + "1972-09-05": "Isra' and Mi'raj (estimated)", + "1972-11-07": "Eid al-Fitr (estimated)", + "1973-01-01": "New Year's Day", + "1973-01-14": "Eid al-Adha (estimated)", + "1973-02-04": "Islamic New Year (estimated)", + "1973-02-13": "Ashura (estimated)", + "1973-04-15": "Prophet's Birthday (estimated)", + "1973-05-01": "Labour Day", + "1973-06-26": "Independence Day", + "1973-07-01": "Republic Day", + "1973-08-25": "Isra' and Mi'raj (estimated)", + "1973-10-27": "Eid al-Fitr (estimated)", + "1974-01-01": "New Year's Day", + "1974-01-03": "Eid al-Adha (estimated)", + "1974-01-24": "Islamic New Year (estimated)", + "1974-02-02": "Ashura (estimated)", + "1974-04-04": "Prophet's Birthday (estimated)", + "1974-05-01": "Labour Day", + "1974-06-26": "Independence Day", + "1974-07-01": "Republic Day", + "1974-08-15": "Isra' and Mi'raj (estimated)", + "1974-10-16": "Eid al-Fitr (estimated)", + "1974-12-24": "Eid al-Adha (estimated)", + "1975-01-01": "New Year's Day", + "1975-01-13": "Islamic New Year (estimated)", + "1975-01-22": "Ashura (estimated)", + "1975-03-24": "Prophet's Birthday (estimated)", + "1975-05-01": "Labour Day", + "1975-06-26": "Independence Day", + "1975-07-01": "Republic Day", + "1975-08-05": "Isra' and Mi'raj (estimated)", + "1975-10-06": "Eid al-Fitr (estimated)", + "1975-12-13": "Eid al-Adha (estimated)", + "1976-01-01": "New Year's Day", + "1976-01-02": "Islamic New Year (estimated)", + "1976-01-11": "Ashura (estimated)", + "1976-03-12": "Prophet's Birthday (estimated)", + "1976-05-01": "Labour Day", + "1976-06-26": "Independence Day", + "1976-07-01": "Republic Day", + "1976-07-24": "Isra' and Mi'raj (estimated)", + "1976-09-24": "Eid al-Fitr (estimated)", + "1976-12-01": "Eid al-Adha (estimated)", + "1976-12-22": "Islamic New Year (estimated)", + "1976-12-31": "Ashura (estimated)", + "1977-01-01": "New Year's Day", + "1977-03-02": "Prophet's Birthday (estimated)", + "1977-05-01": "Labour Day", + "1977-06-26": "Independence Day", + "1977-07-01": "Republic Day", + "1977-07-13": "Isra' and Mi'raj (estimated)", + "1977-09-14": "Eid al-Fitr (estimated)", + "1977-11-21": "Eid al-Adha (estimated)", + "1977-12-11": "Islamic New Year (estimated)", + "1977-12-20": "Ashura (estimated)", + "1978-01-01": "New Year's Day", + "1978-02-19": "Prophet's Birthday (estimated)", + "1978-05-01": "Labour Day", + "1978-06-26": "Independence Day", + "1978-07-01": "Republic Day", + "1978-07-02": "Isra' and Mi'raj (estimated)", + "1978-09-03": "Eid al-Fitr (estimated)", + "1978-11-10": "Eid al-Adha (estimated)", + "1978-12-01": "Islamic New Year (estimated)", + "1978-12-10": "Ashura (estimated)", + "1979-01-01": "New Year's Day", + "1979-02-09": "Prophet's Birthday (estimated)", + "1979-05-01": "Labour Day", + "1979-06-22": "Isra' and Mi'raj (estimated)", + "1979-06-26": "Independence Day", + "1979-07-01": "Republic Day", + "1979-08-23": "Eid al-Fitr (estimated)", + "1979-10-31": "Eid al-Adha (estimated)", + "1979-11-20": "Islamic New Year (estimated)", + "1979-11-29": "Ashura (estimated)", + "1980-01-01": "New Year's Day", + "1980-01-30": "Prophet's Birthday (estimated)", + "1980-05-01": "Labour Day", + "1980-06-10": "Isra' and Mi'raj (estimated)", + "1980-06-26": "Independence Day", + "1980-07-01": "Republic Day", + "1980-08-12": "Eid al-Fitr (estimated)", + "1980-10-19": "Eid al-Adha (estimated)", + "1980-11-09": "Islamic New Year (estimated)", + "1980-11-18": "Ashura (estimated)", + "1981-01-01": "New Year's Day", + "1981-01-18": "Prophet's Birthday (estimated)", + "1981-05-01": "Labour Day", + "1981-05-31": "Isra' and Mi'raj (estimated)", + "1981-06-26": "Independence Day", + "1981-07-01": "Republic Day", + "1981-08-01": "Eid al-Fitr (estimated)", + "1981-10-08": "Eid al-Adha (estimated)", + "1981-10-28": "Islamic New Year (estimated)", + "1981-11-06": "Ashura (estimated)", + "1982-01-01": "New Year's Day", + "1982-01-07": "Prophet's Birthday (estimated)", + "1982-05-01": "Labour Day", + "1982-05-20": "Isra' and Mi'raj (estimated)", + "1982-06-26": "Independence Day", + "1982-07-01": "Republic Day", + "1982-07-21": "Eid al-Fitr (estimated)", + "1982-09-27": "Eid al-Adha (estimated)", + "1982-10-18": "Islamic New Year (estimated)", + "1982-10-27": "Ashura (estimated)", + "1982-12-27": "Prophet's Birthday (estimated)", + "1983-01-01": "New Year's Day", + "1983-05-01": "Labour Day", + "1983-05-10": "Isra' and Mi'raj (estimated)", + "1983-06-26": "Independence Day", + "1983-07-01": "Republic Day", + "1983-07-11": "Eid al-Fitr (estimated)", + "1983-09-17": "Eid al-Adha (estimated)", + "1983-10-07": "Islamic New Year (estimated)", + "1983-10-16": "Ashura (estimated)", + "1983-12-16": "Prophet's Birthday (estimated)", + "1984-01-01": "New Year's Day", + "1984-04-28": "Isra' and Mi'raj (estimated)", + "1984-05-01": "Labour Day", + "1984-06-26": "Independence Day", + "1984-06-30": "Eid al-Fitr (estimated)", + "1984-07-01": "Republic Day", + "1984-09-05": "Eid al-Adha (estimated)", + "1984-09-26": "Islamic New Year (estimated)", + "1984-10-05": "Ashura (estimated)", + "1984-12-04": "Prophet's Birthday (estimated)", + "1985-01-01": "New Year's Day", + "1985-04-17": "Isra' and Mi'raj (estimated)", + "1985-05-01": "Labour Day", + "1985-06-19": "Eid al-Fitr (estimated)", + "1985-06-26": "Independence Day", + "1985-07-01": "Republic Day", + "1985-08-26": "Eid al-Adha (estimated)", + "1985-09-15": "Islamic New Year (estimated)", + "1985-09-24": "Ashura (estimated)", + "1985-11-24": "Prophet's Birthday (estimated)", + "1986-01-01": "New Year's Day", + "1986-04-06": "Isra' and Mi'raj (estimated)", + "1986-05-01": "Labour Day", + "1986-06-08": "Eid al-Fitr (estimated)", + "1986-06-26": "Independence Day", + "1986-07-01": "Republic Day", + "1986-08-15": "Eid al-Adha (estimated)", + "1986-09-05": "Islamic New Year (estimated)", + "1986-09-14": "Ashura (estimated)", + "1986-11-14": "Prophet's Birthday (estimated)", + "1987-01-01": "New Year's Day", + "1987-03-27": "Isra' and Mi'raj (estimated)", + "1987-05-01": "Labour Day", + "1987-05-28": "Eid al-Fitr (estimated)", + "1987-06-26": "Independence Day", + "1987-07-01": "Republic Day", + "1987-08-04": "Eid al-Adha (estimated)", + "1987-08-25": "Islamic New Year (estimated)", + "1987-09-03": "Ashura (estimated)", + "1987-11-03": "Prophet's Birthday (estimated)", + "1988-01-01": "New Year's Day", + "1988-03-15": "Isra' and Mi'raj (estimated)", + "1988-05-01": "Labour Day", + "1988-05-16": "Eid al-Fitr (estimated)", + "1988-06-26": "Independence Day", + "1988-07-01": "Republic Day", + "1988-07-23": "Eid al-Adha (estimated)", + "1988-08-13": "Islamic New Year (estimated)", + "1988-08-22": "Ashura (estimated)", + "1988-10-22": "Prophet's Birthday (estimated)", + "1989-01-01": "New Year's Day", + "1989-03-05": "Isra' and Mi'raj (estimated)", + "1989-05-01": "Labour Day", + "1989-05-06": "Eid al-Fitr (estimated)", + "1989-06-26": "Independence Day", + "1989-07-01": "Republic Day", + "1989-07-13": "Eid al-Adha (estimated)", + "1989-08-02": "Islamic New Year (estimated)", + "1989-08-11": "Ashura (estimated)", + "1989-10-11": "Prophet's Birthday (estimated)", + "1990-01-01": "New Year's Day", + "1990-02-22": "Isra' and Mi'raj (estimated)", + "1990-04-26": "Eid al-Fitr (estimated)", + "1990-05-01": "Labour Day", + "1990-06-26": "Independence Day", + "1990-07-01": "Republic Day", + "1990-07-02": "Eid al-Adha (estimated)", + "1990-07-23": "Islamic New Year (estimated)", + "1990-08-01": "Ashura (estimated)", + "1990-10-01": "Prophet's Birthday (estimated)", + "1991-01-01": "New Year's Day", + "1991-02-11": "Isra' and Mi'raj (estimated)", + "1991-04-15": "Eid al-Fitr (estimated)", + "1991-05-01": "Labour Day", + "1991-06-22": "Eid al-Adha (estimated)", + "1991-06-26": "Independence Day", + "1991-07-01": "Republic Day", + "1991-07-12": "Islamic New Year (estimated)", + "1991-07-21": "Ashura (estimated)", + "1991-09-20": "Prophet's Birthday (estimated)", + "1992-01-01": "New Year's Day", + "1992-01-31": "Isra' and Mi'raj (estimated)", + "1992-04-04": "Eid al-Fitr (estimated)", + "1992-05-01": "Labour Day", + "1992-06-11": "Eid al-Adha (estimated)", + "1992-06-26": "Independence Day", + "1992-07-01": "Islamic New Year (estimated); Republic Day", + "1992-07-10": "Ashura (estimated)", + "1992-09-09": "Prophet's Birthday (estimated)", + "1993-01-01": "New Year's Day", + "1993-01-20": "Isra' and Mi'raj (estimated)", + "1993-03-24": "Eid al-Fitr (estimated)", + "1993-05-01": "Labour Day", + "1993-05-31": "Eid al-Adha (estimated)", + "1993-06-21": "Islamic New Year (estimated)", + "1993-06-26": "Independence Day", + "1993-06-30": "Ashura (estimated)", + "1993-07-01": "Republic Day", + "1993-08-29": "Prophet's Birthday (estimated)", + "1994-01-01": "New Year's Day", + "1994-01-09": "Isra' and Mi'raj (estimated)", + "1994-03-13": "Eid al-Fitr (estimated)", + "1994-05-01": "Labour Day", + "1994-05-20": "Eid al-Adha (estimated)", + "1994-06-10": "Islamic New Year (estimated)", + "1994-06-19": "Ashura (estimated)", + "1994-06-26": "Independence Day", + "1994-07-01": "Republic Day", + "1994-08-19": "Prophet's Birthday (estimated)", + "1994-12-29": "Isra' and Mi'raj (estimated)", + "1995-01-01": "New Year's Day", + "1995-03-02": "Eid al-Fitr (estimated)", + "1995-05-01": "Labour Day", + "1995-05-09": "Eid al-Adha (estimated)", + "1995-05-30": "Islamic New Year (estimated)", + "1995-06-08": "Ashura (estimated)", + "1995-06-26": "Independence Day", + "1995-07-01": "Republic Day", + "1995-08-08": "Prophet's Birthday (estimated)", + "1995-12-19": "Isra' and Mi'raj (estimated)", + "1996-01-01": "New Year's Day", + "1996-02-19": "Eid al-Fitr (estimated)", + "1996-04-27": "Eid al-Adha (estimated)", + "1996-05-01": "Labour Day", + "1996-05-18": "Islamic New Year (estimated)", + "1996-05-27": "Ashura (estimated)", + "1996-06-26": "Independence Day", + "1996-07-01": "Republic Day", + "1996-07-27": "Prophet's Birthday (estimated)", + "1996-12-08": "Isra' and Mi'raj (estimated)", + "1997-01-01": "New Year's Day", + "1997-02-08": "Eid al-Fitr (estimated)", + "1997-04-17": "Eid al-Adha (estimated)", + "1997-05-01": "Labour Day", + "1997-05-07": "Islamic New Year (estimated)", + "1997-05-16": "Ashura (estimated)", + "1997-06-26": "Independence Day", + "1997-07-01": "Republic Day", + "1997-07-16": "Prophet's Birthday (estimated)", + "1997-11-27": "Isra' and Mi'raj (estimated)", + "1998-01-01": "New Year's Day", + "1998-01-29": "Eid al-Fitr (estimated)", + "1998-04-07": "Eid al-Adha (estimated)", + "1998-04-27": "Islamic New Year (estimated)", + "1998-05-01": "Labour Day", + "1998-05-06": "Ashura (estimated)", + "1998-06-26": "Independence Day", + "1998-07-01": "Republic Day", + "1998-07-06": "Prophet's Birthday (estimated)", + "1998-11-16": "Isra' and Mi'raj (estimated)", + "1999-01-01": "New Year's Day", + "1999-01-18": "Eid al-Fitr (estimated)", + "1999-03-27": "Eid al-Adha (estimated)", + "1999-04-17": "Islamic New Year (estimated)", + "1999-04-26": "Ashura (estimated)", + "1999-05-01": "Labour Day", + "1999-06-26": "Independence Day; Prophet's Birthday (estimated)", + "1999-07-01": "Republic Day", + "1999-11-05": "Isra' and Mi'raj (estimated)", + "2000-01-01": "New Year's Day", + "2000-01-08": "Eid al-Fitr (estimated)", + "2000-03-16": "Eid al-Adha (estimated)", + "2000-04-06": "Islamic New Year (estimated)", + "2000-04-15": "Ashura (estimated)", + "2000-05-01": "Labour Day", + "2000-06-14": "Prophet's Birthday (estimated)", + "2000-06-26": "Independence Day", + "2000-07-01": "Republic Day", + "2000-10-24": "Isra' and Mi'raj (estimated)", + "2000-12-27": "Eid al-Fitr (estimated)", + "2001-01-01": "New Year's Day", + "2001-03-05": "Eid al-Adha (estimated)", + "2001-03-26": "Islamic New Year (estimated)", + "2001-04-04": "Ashura (estimated)", + "2001-05-01": "Labour Day", + "2001-06-04": "Prophet's Birthday (estimated)", + "2001-06-26": "Independence Day", + "2001-07-01": "Republic Day", + "2001-10-14": "Isra' and Mi'raj (estimated)", + "2001-12-16": "Eid al-Fitr (estimated)", + "2002-01-01": "New Year's Day", + "2002-02-22": "Eid al-Adha (estimated)", + "2002-03-15": "Islamic New Year (estimated)", + "2002-03-24": "Ashura (estimated)", + "2002-05-01": "Labour Day", + "2002-05-24": "Prophet's Birthday (estimated)", + "2002-06-26": "Independence Day", + "2002-07-01": "Republic Day", + "2002-10-04": "Isra' and Mi'raj (estimated)", + "2002-12-05": "Eid al-Fitr (estimated)", + "2003-01-01": "New Year's Day", + "2003-02-11": "Eid al-Adha (estimated)", + "2003-03-04": "Islamic New Year (estimated)", + "2003-03-13": "Ashura (estimated)", + "2003-05-01": "Labour Day", + "2003-05-13": "Prophet's Birthday (estimated)", + "2003-06-26": "Independence Day", + "2003-07-01": "Republic Day", + "2003-09-24": "Isra' and Mi'raj (estimated)", + "2003-11-25": "Eid al-Fitr (estimated)", + "2004-01-01": "New Year's Day", + "2004-02-01": "Eid al-Adha (estimated)", + "2004-02-21": "Islamic New Year (estimated)", + "2004-03-01": "Ashura (estimated)", + "2004-05-01": "Labour Day; Prophet's Birthday (estimated)", + "2004-06-26": "Independence Day", + "2004-07-01": "Republic Day", + "2004-09-12": "Isra' and Mi'raj (estimated)", + "2004-11-14": "Eid al-Fitr (estimated)", + "2005-01-01": "New Year's Day", + "2005-01-21": "Eid al-Adha (estimated)", + "2005-02-10": "Islamic New Year (estimated)", + "2005-02-19": "Ashura (estimated)", + "2005-04-21": "Prophet's Birthday (estimated)", + "2005-05-01": "Labour Day", + "2005-06-26": "Independence Day", + "2005-07-01": "Republic Day", + "2005-09-01": "Isra' and Mi'raj (estimated)", + "2005-11-03": "Eid al-Fitr (estimated)", + "2006-01-01": "New Year's Day", + "2006-01-10": "Eid al-Adha (estimated)", + "2006-01-31": "Islamic New Year (estimated)", + "2006-02-09": "Ashura (estimated)", + "2006-04-10": "Prophet's Birthday (estimated)", + "2006-05-01": "Labour Day", + "2006-06-26": "Independence Day", + "2006-07-01": "Republic Day", + "2006-08-21": "Isra' and Mi'raj (estimated)", + "2006-10-23": "Eid al-Fitr (estimated)", + "2006-12-31": "Eid al-Adha (estimated)", + "2007-01-01": "New Year's Day", + "2007-01-20": "Islamic New Year (estimated)", + "2007-01-29": "Ashura (estimated)", + "2007-03-31": "Prophet's Birthday (estimated)", + "2007-05-01": "Labour Day", + "2007-06-26": "Independence Day", + "2007-07-01": "Republic Day", + "2007-08-10": "Isra' and Mi'raj (estimated)", + "2007-10-13": "Eid al-Fitr (estimated)", + "2007-12-20": "Eid al-Adha (estimated)", + "2008-01-01": "New Year's Day", + "2008-01-10": "Islamic New Year (estimated)", + "2008-01-19": "Ashura (estimated)", + "2008-03-20": "Prophet's Birthday (estimated)", + "2008-05-01": "Labour Day", + "2008-06-26": "Independence Day", + "2008-07-01": "Republic Day", + "2008-07-30": "Isra' and Mi'raj (estimated)", + "2008-10-01": "Eid al-Fitr (estimated)", + "2008-12-08": "Eid al-Adha (estimated)", + "2008-12-29": "Islamic New Year (estimated)", + "2009-01-01": "New Year's Day", + "2009-01-07": "Ashura (estimated)", + "2009-03-09": "Prophet's Birthday (estimated)", + "2009-05-01": "Labour Day", + "2009-06-26": "Independence Day", + "2009-07-01": "Republic Day", + "2009-07-20": "Isra' and Mi'raj (estimated)", + "2009-09-20": "Eid al-Fitr (estimated)", + "2009-11-27": "Eid al-Adha (estimated)", + "2009-12-18": "Islamic New Year (estimated)", + "2009-12-27": "Ashura (estimated)", + "2010-01-01": "New Year's Day", + "2010-02-26": "Prophet's Birthday (estimated)", + "2010-05-01": "Labour Day", + "2010-06-26": "Independence Day", + "2010-07-01": "Republic Day", + "2010-07-09": "Isra' and Mi'raj (estimated)", + "2010-09-10": "Eid al-Fitr (estimated)", + "2010-11-16": "Eid al-Adha (estimated)", + "2010-12-07": "Islamic New Year (estimated)", + "2010-12-16": "Ashura (estimated)", + "2011-01-01": "New Year's Day", + "2011-02-15": "Prophet's Birthday (estimated)", + "2011-05-01": "Labour Day", + "2011-06-26": "Independence Day", + "2011-06-29": "Isra' and Mi'raj (estimated)", + "2011-07-01": "Republic Day", + "2011-08-30": "Eid al-Fitr (estimated)", + "2011-11-06": "Eid al-Adha (estimated)", + "2011-11-26": "Islamic New Year (estimated)", + "2011-12-05": "Ashura (estimated)", + "2012-01-01": "New Year's Day", + "2012-02-04": "Prophet's Birthday (estimated)", + "2012-05-01": "Labour Day", + "2012-06-17": "Isra' and Mi'raj (estimated)", + "2012-06-26": "Independence Day", + "2012-07-01": "Republic Day", + "2012-08-19": "Eid al-Fitr (estimated)", + "2012-10-26": "Eid al-Adha (estimated)", + "2012-11-15": "Islamic New Year (estimated)", + "2012-11-24": "Ashura (estimated)", + "2013-01-01": "New Year's Day", + "2013-01-24": "Prophet's Birthday (estimated)", + "2013-05-01": "Labour Day", + "2013-06-06": "Isra' and Mi'raj (estimated)", + "2013-06-26": "Independence Day", + "2013-07-01": "Republic Day", + "2013-08-08": "Eid al-Fitr (estimated)", + "2013-10-15": "Eid al-Adha (estimated)", + "2013-11-04": "Islamic New Year (estimated)", + "2013-11-13": "Ashura (estimated)", + "2014-01-01": "New Year's Day", + "2014-01-13": "Prophet's Birthday (estimated)", + "2014-05-01": "Labour Day", + "2014-05-26": "Isra' and Mi'raj (estimated)", + "2014-06-26": "Independence Day", + "2014-07-01": "Republic Day", + "2014-07-28": "Eid al-Fitr (estimated)", + "2014-10-04": "Eid al-Adha (estimated)", + "2014-10-25": "Islamic New Year (estimated)", + "2014-11-03": "Ashura (estimated)", + "2015-01-01": "New Year's Day", + "2015-01-03": "Prophet's Birthday (estimated)", + "2015-05-01": "Labour Day", + "2015-05-16": "Isra' and Mi'raj (estimated)", + "2015-06-26": "Independence Day", + "2015-07-01": "Republic Day", + "2015-07-17": "Eid al-Fitr (estimated)", + "2015-09-23": "Eid al-Adha (estimated)", + "2015-10-14": "Islamic New Year (estimated)", + "2015-10-23": "Ashura (estimated)", + "2015-12-23": "Prophet's Birthday (estimated)", + "2016-01-01": "New Year's Day", + "2016-05-01": "Labour Day", + "2016-05-04": "Isra' and Mi'raj (estimated)", + "2016-06-26": "Independence Day", + "2016-07-01": "Republic Day", + "2016-07-06": "Eid al-Fitr (estimated)", + "2016-09-11": "Eid al-Adha (estimated)", + "2016-10-02": "Islamic New Year (estimated)", + "2016-10-11": "Ashura (estimated)", + "2016-12-11": "Prophet's Birthday (estimated)", + "2017-01-01": "New Year's Day", + "2017-04-24": "Isra' and Mi'raj (estimated)", + "2017-05-01": "Labour Day", + "2017-06-25": "Eid al-Fitr (estimated)", + "2017-06-26": "Independence Day", + "2017-07-01": "Republic Day", + "2017-09-01": "Eid al-Adha (estimated)", + "2017-09-21": "Islamic New Year (estimated)", + "2017-09-30": "Ashura (estimated)", + "2017-11-30": "Prophet's Birthday (estimated)", + "2018-01-01": "New Year's Day", + "2018-04-13": "Isra' and Mi'raj (estimated)", + "2018-05-01": "Labour Day", + "2018-06-15": "Eid al-Fitr (estimated)", + "2018-06-26": "Independence Day", + "2018-07-01": "Republic Day", + "2018-08-21": "Eid al-Adha (estimated)", + "2018-09-11": "Islamic New Year (estimated)", + "2018-09-20": "Ashura (estimated)", + "2018-11-20": "Prophet's Birthday (estimated)", + "2019-01-01": "New Year's Day", + "2019-04-03": "Isra' and Mi'raj (estimated)", + "2019-05-01": "Labour Day", + "2019-06-04": "Eid al-Fitr (estimated)", + "2019-06-26": "Independence Day", + "2019-07-01": "Republic Day", + "2019-08-11": "Eid al-Adha (estimated)", + "2019-08-31": "Islamic New Year (estimated)", + "2019-09-09": "Ashura (estimated)", + "2019-11-09": "Prophet's Birthday (estimated)", + "2020-01-01": "New Year's Day", + "2020-03-22": "Isra' and Mi'raj (estimated)", + "2020-05-01": "Labour Day", + "2020-05-24": "Eid al-Fitr (estimated)", + "2020-06-26": "Independence Day", + "2020-07-01": "Republic Day", + "2020-07-31": "Eid al-Adha (estimated)", + "2020-08-20": "Islamic New Year (estimated)", + "2020-08-29": "Ashura (estimated)", + "2020-10-29": "Prophet's Birthday (estimated)", + "2021-01-01": "New Year's Day", + "2021-03-11": "Isra' and Mi'raj (estimated)", + "2021-05-01": "Labour Day", + "2021-05-13": "Eid al-Fitr (estimated)", + "2021-06-26": "Independence Day", + "2021-07-01": "Republic Day", + "2021-07-20": "Eid al-Adha (estimated)", + "2021-08-09": "Islamic New Year (estimated)", + "2021-08-18": "Ashura (estimated)", + "2021-10-18": "Prophet's Birthday (estimated)", + "2022-01-01": "New Year's Day", + "2022-02-28": "Isra' and Mi'raj (estimated)", + "2022-05-01": "Labour Day", + "2022-05-02": "Eid al-Fitr (estimated)", + "2022-06-26": "Independence Day", + "2022-07-01": "Republic Day", + "2022-07-09": "Eid al-Adha (estimated)", + "2022-07-30": "Islamic New Year (estimated)", + "2022-08-08": "Ashura (estimated)", + "2022-10-08": "Prophet's Birthday (estimated)", + "2023-01-01": "New Year's Day", + "2023-02-18": "Isra' and Mi'raj (estimated)", + "2023-04-21": "Eid al-Fitr (estimated)", + "2023-05-01": "Labour Day", + "2023-06-26": "Independence Day", + "2023-06-28": "Eid al-Adha (estimated)", + "2023-07-01": "Republic Day", + "2023-07-19": "Islamic New Year (estimated)", + "2023-07-28": "Ashura (estimated)", + "2023-09-27": "Prophet's Birthday (estimated)", + "2024-01-01": "New Year's Day", + "2024-02-08": "Isra' and Mi'raj (estimated)", + "2024-04-10": "Eid al-Fitr (estimated)", + "2024-05-01": "Labour Day", + "2024-06-16": "Eid al-Adha (estimated)", + "2024-06-26": "Independence Day", + "2024-07-01": "Republic Day", + "2024-07-07": "Islamic New Year (estimated)", + "2024-07-16": "Ashura (estimated)", + "2024-09-15": "Prophet's Birthday (estimated)", + "2025-01-01": "New Year's Day", + "2025-01-27": "Isra' and Mi'raj (estimated)", + "2025-03-30": "Eid al-Fitr (estimated)", + "2025-05-01": "Labour Day", + "2025-06-06": "Eid al-Adha (estimated)", + "2025-06-26": "Independence Day; Islamic New Year (estimated)", + "2025-07-01": "Republic Day", + "2025-07-05": "Ashura (estimated)", + "2025-09-04": "Prophet's Birthday (estimated)", + "2026-01-01": "New Year's Day", + "2026-01-16": "Isra' and Mi'raj (estimated)", + "2026-03-20": "Eid al-Fitr (estimated)", + "2026-05-01": "Labour Day", + "2026-05-27": "Eid al-Adha (estimated)", + "2026-06-16": "Islamic New Year (estimated)", + "2026-06-25": "Ashura (estimated)", + "2026-06-26": "Independence Day", + "2026-07-01": "Republic Day", + "2026-08-25": "Prophet's Birthday (estimated)", + "2027-01-01": "New Year's Day", + "2027-01-05": "Isra' and Mi'raj (estimated)", + "2027-03-09": "Eid al-Fitr (estimated)", + "2027-05-01": "Labour Day", + "2027-05-16": "Eid al-Adha (estimated)", + "2027-06-06": "Islamic New Year (estimated)", + "2027-06-15": "Ashura (estimated)", + "2027-06-26": "Independence Day", + "2027-07-01": "Republic Day", + "2027-08-14": "Prophet's Birthday (estimated)", + "2027-12-25": "Isra' and Mi'raj (estimated)", + "2028-01-01": "New Year's Day", + "2028-02-26": "Eid al-Fitr (estimated)", + "2028-05-01": "Labour Day", + "2028-05-05": "Eid al-Adha (estimated)", + "2028-05-25": "Islamic New Year (estimated)", + "2028-06-03": "Ashura (estimated)", + "2028-06-26": "Independence Day", + "2028-07-01": "Republic Day", + "2028-08-03": "Prophet's Birthday (estimated)", + "2028-12-14": "Isra' and Mi'raj (estimated)", + "2029-01-01": "New Year's Day", + "2029-02-14": "Eid al-Fitr (estimated)", + "2029-04-24": "Eid al-Adha (estimated)", + "2029-05-01": "Labour Day", + "2029-05-14": "Islamic New Year (estimated)", + "2029-05-23": "Ashura (estimated)", + "2029-06-26": "Independence Day", + "2029-07-01": "Republic Day", + "2029-07-24": "Prophet's Birthday (estimated)", + "2029-12-03": "Isra' and Mi'raj (estimated)", + "2030-01-01": "New Year's Day", + "2030-02-04": "Eid al-Fitr (estimated)", + "2030-04-13": "Eid al-Adha (estimated)", + "2030-05-01": "Labour Day", + "2030-05-03": "Islamic New Year (estimated)", + "2030-05-12": "Ashura (estimated)", + "2030-06-26": "Independence Day", + "2030-07-01": "Republic Day", + "2030-07-13": "Prophet's Birthday (estimated)", + "2030-11-23": "Isra' and Mi'raj (estimated)", + "2031-01-01": "New Year's Day", + "2031-01-24": "Eid al-Fitr (estimated)", + "2031-04-02": "Eid al-Adha (estimated)", + "2031-04-23": "Islamic New Year (estimated)", + "2031-05-01": "Labour Day", + "2031-05-02": "Ashura (estimated)", + "2031-06-26": "Independence Day", + "2031-07-01": "Republic Day", + "2031-07-02": "Prophet's Birthday (estimated)", + "2031-11-12": "Isra' and Mi'raj (estimated)", + "2032-01-01": "New Year's Day", + "2032-01-14": "Eid al-Fitr (estimated)", + "2032-03-22": "Eid al-Adha (estimated)", + "2032-04-11": "Islamic New Year (estimated)", + "2032-04-20": "Ashura (estimated)", + "2032-05-01": "Labour Day", + "2032-06-20": "Prophet's Birthday (estimated)", + "2032-06-26": "Independence Day", + "2032-07-01": "Republic Day", + "2032-11-01": "Isra' and Mi'raj (estimated)", + "2033-01-01": "New Year's Day", + "2033-01-02": "Eid al-Fitr (estimated)", + "2033-03-11": "Eid al-Adha (estimated)", + "2033-04-01": "Islamic New Year (estimated)", + "2033-04-10": "Ashura (estimated)", + "2033-05-01": "Labour Day", + "2033-06-09": "Prophet's Birthday (estimated)", + "2033-06-26": "Independence Day", + "2033-07-01": "Republic Day", + "2033-10-21": "Isra' and Mi'raj (estimated)", + "2033-12-23": "Eid al-Fitr (estimated)", + "2034-01-01": "New Year's Day", + "2034-03-01": "Eid al-Adha (estimated)", + "2034-03-21": "Islamic New Year (estimated)", + "2034-03-30": "Ashura (estimated)", + "2034-05-01": "Labour Day", + "2034-05-30": "Prophet's Birthday (estimated)", + "2034-06-26": "Independence Day", + "2034-07-01": "Republic Day", + "2034-10-10": "Isra' and Mi'raj (estimated)", + "2034-12-12": "Eid al-Fitr (estimated)", + "2035-01-01": "New Year's Day", + "2035-02-18": "Eid al-Adha (estimated)", + "2035-03-11": "Islamic New Year (estimated)", + "2035-03-20": "Ashura (estimated)", + "2035-05-01": "Labour Day", + "2035-05-20": "Prophet's Birthday (estimated)", + "2035-06-26": "Independence Day", + "2035-07-01": "Republic Day", + "2035-09-29": "Isra' and Mi'raj (estimated)", + "2035-12-01": "Eid al-Fitr (estimated)", + "2036-01-01": "New Year's Day", + "2036-02-07": "Eid al-Adha (estimated)", + "2036-02-28": "Islamic New Year (estimated)", + "2036-03-08": "Ashura (estimated)", + "2036-05-01": "Labour Day", + "2036-05-08": "Prophet's Birthday (estimated)", + "2036-06-26": "Independence Day", + "2036-07-01": "Republic Day", + "2036-09-18": "Isra' and Mi'raj (estimated)", + "2036-11-19": "Eid al-Fitr (estimated)", + "2037-01-01": "New Year's Day", + "2037-01-26": "Eid al-Adha (estimated)", + "2037-02-16": "Islamic New Year (estimated)", + "2037-02-25": "Ashura (estimated)", + "2037-04-28": "Prophet's Birthday (estimated)", + "2037-05-01": "Labour Day", + "2037-06-26": "Independence Day", + "2037-07-01": "Republic Day", + "2037-09-07": "Isra' and Mi'raj (estimated)", + "2037-11-08": "Eid al-Fitr (estimated)", + "2038-01-01": "New Year's Day", + "2038-01-16": "Eid al-Adha (estimated)", + "2038-02-05": "Islamic New Year (estimated)", + "2038-02-14": "Ashura (estimated)", + "2038-04-17": "Prophet's Birthday (estimated)", + "2038-05-01": "Labour Day", + "2038-06-26": "Independence Day", + "2038-07-01": "Republic Day", + "2038-08-28": "Isra' and Mi'raj (estimated)", + "2038-10-29": "Eid al-Fitr (estimated)", + "2039-01-01": "New Year's Day", + "2039-01-05": "Eid al-Adha (estimated)", + "2039-01-26": "Islamic New Year (estimated)", + "2039-02-04": "Ashura (estimated)", + "2039-04-06": "Prophet's Birthday (estimated)", + "2039-05-01": "Labour Day", + "2039-06-26": "Independence Day", + "2039-07-01": "Republic Day", + "2039-08-17": "Isra' and Mi'raj (estimated)", + "2039-10-19": "Eid al-Fitr (estimated)", + "2039-12-26": "Eid al-Adha (estimated)", + "2040-01-01": "New Year's Day", + "2040-01-15": "Islamic New Year (estimated)", + "2040-01-24": "Ashura (estimated)", + "2040-03-25": "Prophet's Birthday (estimated)", + "2040-05-01": "Labour Day", + "2040-06-26": "Independence Day", + "2040-07-01": "Republic Day", + "2040-08-05": "Isra' and Mi'raj (estimated)", + "2040-10-07": "Eid al-Fitr (estimated)", + "2040-12-14": "Eid al-Adha (estimated)", + "2041-01-01": "New Year's Day", + "2041-01-04": "Islamic New Year (estimated)", + "2041-01-13": "Ashura (estimated)", + "2041-03-15": "Prophet's Birthday (estimated)", + "2041-05-01": "Labour Day", + "2041-06-26": "Independence Day", + "2041-07-01": "Republic Day", + "2041-07-25": "Isra' and Mi'raj (estimated)", + "2041-09-26": "Eid al-Fitr (estimated)", + "2041-12-04": "Eid al-Adha (estimated)", + "2041-12-24": "Islamic New Year (estimated)", + "2042-01-01": "New Year's Day", + "2042-01-02": "Ashura (estimated)", + "2042-03-04": "Prophet's Birthday (estimated)", + "2042-05-01": "Labour Day", + "2042-06-26": "Independence Day", + "2042-07-01": "Republic Day", + "2042-07-15": "Isra' and Mi'raj (estimated)", + "2042-09-15": "Eid al-Fitr (estimated)", + "2042-11-23": "Eid al-Adha (estimated)", + "2042-12-14": "Islamic New Year (estimated)", + "2042-12-23": "Ashura (estimated)", + "2043-01-01": "New Year's Day", + "2043-02-22": "Prophet's Birthday (estimated)", + "2043-05-01": "Labour Day", + "2043-06-26": "Independence Day", + "2043-07-01": "Republic Day", + "2043-07-04": "Isra' and Mi'raj (estimated)", + "2043-09-04": "Eid al-Fitr (estimated)", + "2043-11-12": "Eid al-Adha (estimated)", + "2043-12-03": "Islamic New Year (estimated)", + "2043-12-12": "Ashura (estimated)", + "2044-01-01": "New Year's Day", + "2044-02-11": "Prophet's Birthday (estimated)", + "2044-05-01": "Labour Day", + "2044-06-23": "Isra' and Mi'raj (estimated)", + "2044-06-26": "Independence Day", + "2044-07-01": "Republic Day", + "2044-08-24": "Eid al-Fitr (estimated)", + "2044-10-31": "Eid al-Adha (estimated)", + "2044-11-21": "Islamic New Year (estimated)", + "2044-11-30": "Ashura (estimated)", + "2045-01-01": "New Year's Day", + "2045-01-30": "Prophet's Birthday (estimated)", + "2045-05-01": "Labour Day", + "2045-06-13": "Isra' and Mi'raj (estimated)", + "2045-06-26": "Independence Day", + "2045-07-01": "Republic Day", + "2045-08-14": "Eid al-Fitr (estimated)", + "2045-10-21": "Eid al-Adha (estimated)", + "2045-11-10": "Islamic New Year (estimated)", + "2045-11-19": "Ashura (estimated)", + "2046-01-01": "New Year's Day", + "2046-01-19": "Prophet's Birthday (estimated)", + "2046-05-01": "Labour Day", + "2046-06-02": "Isra' and Mi'raj (estimated)", + "2046-06-26": "Independence Day", + "2046-07-01": "Republic Day", + "2046-08-03": "Eid al-Fitr (estimated)", + "2046-10-10": "Eid al-Adha (estimated)", + "2046-10-31": "Islamic New Year (estimated)", + "2046-11-09": "Ashura (estimated)", + "2047-01-01": "New Year's Day", + "2047-01-08": "Prophet's Birthday (estimated)", + "2047-05-01": "Labour Day", + "2047-05-22": "Isra' and Mi'raj (estimated)", + "2047-06-26": "Independence Day", + "2047-07-01": "Republic Day", + "2047-07-24": "Eid al-Fitr (estimated)", + "2047-09-30": "Eid al-Adha (estimated)", + "2047-10-20": "Islamic New Year (estimated)", + "2047-10-29": "Ashura (estimated)", + "2047-12-29": "Prophet's Birthday (estimated)", + "2048-01-01": "New Year's Day", + "2048-05-01": "Labour Day", + "2048-05-10": "Isra' and Mi'raj (estimated)", + "2048-06-26": "Independence Day", + "2048-07-01": "Republic Day", + "2048-07-12": "Eid al-Fitr (estimated)", + "2048-09-19": "Eid al-Adha (estimated)", + "2048-10-09": "Islamic New Year (estimated)", + "2048-10-18": "Ashura (estimated)", + "2048-12-18": "Prophet's Birthday (estimated)", + "2049-01-01": "New Year's Day", + "2049-04-29": "Isra' and Mi'raj (estimated)", + "2049-05-01": "Labour Day", + "2049-06-26": "Independence Day", + "2049-07-01": "Eid al-Fitr (estimated); Republic Day", + "2049-09-08": "Eid al-Adha (estimated)", + "2049-09-28": "Islamic New Year (estimated)", + "2049-10-07": "Ashura (estimated)", + "2049-12-07": "Prophet's Birthday (estimated)", + "2050-01-01": "New Year's Day", + "2050-04-19": "Isra' and Mi'raj (estimated)", + "2050-05-01": "Labour Day", + "2050-06-20": "Eid al-Fitr (estimated)", + "2050-06-26": "Independence Day", + "2050-07-01": "Republic Day", + "2050-08-28": "Eid al-Adha (estimated)", + "2050-09-17": "Islamic New Year (estimated)", + "2050-09-26": "Ashura (estimated)", + "2050-11-26": "Prophet's Birthday (estimated)" +} diff --git a/tests/countries/test_somalia.py b/tests/countries/test_somalia.py new file mode 100644 index 0000000000..f8f3a6aa45 --- /dev/null +++ b/tests/countries/test_somalia.py @@ -0,0 +1,141 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from unittest import TestCase + +from holidays.countries.somalia import Somalia, SO, SOM +from tests.common import CommonCountryTests + + +class TestSomalia(CommonCountryTests, TestCase): + @classmethod + def setUpClass(cls): + years = range(1961, 2050) + super().setUpClass(Somalia, years=years) + cls.no_estimated_holidays = Somalia(years=years, islamic_show_estimated=False) + + def test_country_aliases(self): + self.assertAliases(Somalia, SO, SOM) + + def test_no_holidays(self): + self.assertNoHolidays(Somalia(years=1960)) + + def test_new_years_day(self): + self.assertHolidayName("New Year's Day", (f"{year}-01-01" for year in range(1961, 2050))) + + def test_labour_day(self): + self.assertHolidayName("Labour Day", (f"{year}-05-01" for year in range(1961, 2050))) + + def test_independence_day(self): + self.assertHolidayName("Independence Day", (f"{year}-06-26" for year in range(1961, 2050))) + + def test_republic_day(self): + self.assertHolidayName("Republic Day", (f"{year}-07-01" for year in range(1961, 2050))) + + def test_islamic_new_year(self): + name = "Islamic New Year" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-08-20", + "2021-08-09", + "2022-07-30", + "2023-07-19", + "2024-07-07", + "2025-06-26", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1961, 2050)) + + def test_ashura(self): + name = "Ashura" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-08-29", + "2021-08-18", + "2022-08-08", + "2023-07-28", + "2024-07-16", + "2025-07-05", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1961, 2050)) + + def test_prophets_birthday(self): + name = "Prophet's Birthday" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-10-29", + "2021-10-18", + "2022-10-08", + "2023-09-27", + "2024-09-15", + "2025-09-04", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1961, 2050)) + + def test_isra_and_miraj(self): + name = "Isra' and Mi'raj" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-03-22", + "2021-03-11", + "2022-02-28", + "2023-02-18", + "2024-02-08", + "2025-01-27", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1961, 2050)) + + def test_eid_al_fitr(self): + name = "Eid al-Fitr" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-05-24", + "2021-05-13", + "2022-05-02", + "2023-04-21", + "2024-04-10", + "2025-03-30", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1961, 2050)) + + def test_eid_al_adha(self): + name = "Eid al-Adha" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-07-31", + "2021-07-20", + "2022-07-09", + "2023-06-28", + "2024-06-16", + "2025-06-06", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1961, 2050)) + + def test_2018(self): + self.assertHolidays( + Somalia(years=2018), + ("2018-01-01", "New Year's Day"), + ("2018-04-13", "Isra' and Mi'raj (estimated)"), + ("2018-05-01", "Labour Day"), + ("2018-06-15", "Eid al-Fitr (estimated)"), + ("2018-06-26", "Independence Day"), + ("2018-07-01", "Republic Day"), + ("2018-08-21", "Eid al-Adha (estimated)"), + ("2018-09-11", "Islamic New Year (estimated)"), + ("2018-09-20", "Ashura (estimated)"), + ("2018-11-20", "Prophet's Birthday (estimated)"), + ) From 9b410bf63af96747b0dc987a2f6e0aa857e32d44 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Tue, 26 Aug 2025 11:18:12 -0700 Subject: [PATCH 28/48] Update monthly downloads badge data source --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 035f9bd0ad..d97aa369b3 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ specific date is a holiday as fast and flexible as possible. PyPI - PyPI monthly downloads PyPI version Latest release date + PyPI monthly downloads PyPI version Latest release date From 2bd265274149ccbd7e3a35c2b1987d8686c9e399 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:13:09 -0700 Subject: [PATCH 29/48] Bump mkdocstrings-python from 1.17.0 to 1.18.0 (#2865) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/docs.txt b/requirements/docs.txt index ea227becea..a13cd94885 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -4,5 +4,5 @@ markdown-include==0.8.1 mkdocs-gen-files==0.5.0 mkdocs-literate-nav==0.6.2 mkdocs==1.6.1 -mkdocstrings-python==1.17.0 +mkdocstrings-python==1.18.0 zipp==3.23.0 # not directly required, pinned by Snyk to avoid a vulnerability From 962b3ca6d5d5a06b04c1d587d2b595847627a154 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:28:09 -0700 Subject: [PATCH 30/48] Bump ruff from 0.12.9 to 0.12.10 (#2864) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index f2b6098141..ecac1f4e4e 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -8,7 +8,7 @@ lingva==5.0.6 pre-commit==4.3.0 pygithub==2.7.0 requests==2.32.5 -ruff==0.12.9 +ruff==0.12.10 tox==4.28.4 urllib3>=2.2.2 # not directly required, pinned by Snyk to avoid a vulnerability zipp>=3.19.1 # not directly required, pinned by Snyk to avoid a vulnerability From 8f1fd3a11319bf9584ec1521d25d60055ab8f5b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Aug 2025 20:10:21 -0700 Subject: [PATCH 31/48] Bump github/codeql-action from 3.29.10 to 3.29.11 (#2867) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci-cd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 035c80ff75..d521e512d7 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -58,12 +58,12 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 - name: Initialize CodeQL - uses: github/codeql-action/init@96f518a34f7a870018057716cc4d7a5c014bd61c + uses: github/codeql-action/init@3c3833e0f8c1c83d449a7478aa59c036a9165498 with: languages: python - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@96f518a34f7a870018057716cc4d7a5c014bd61c + uses: github/codeql-action/analyze@3c3833e0f8c1c83d449a7478aa59c036a9165498 with: category: '/language:python' From 06aebe86f3bad8b7f72d14302289cda5eae6b48c Mon Sep 17 00:00:00 2001 From: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com> Date: Thu, 28 Aug 2025 10:14:35 +0700 Subject: [PATCH 32/48] Update Tanzania holidays: extend holidays support to 1965 (#2821) Co-authored-by: ~Jhellico --- holidays/countries/tanzania.py | 438 +++++++---- holidays/locale/en_US/LC_MESSAGES/TZ.po | 88 ++- holidays/locale/sw/LC_MESSAGES/TZ.po | 80 +- snapshots/countries/TZ_COMMON.json | 959 +++++++++++++++++++----- tests/countries/test_tanzania.py | 419 ++++++++--- 5 files changed, 1475 insertions(+), 509 deletions(-) diff --git a/holidays/countries/tanzania.py b/holidays/countries/tanzania.py index a82a2d1c9f..c53217467f 100644 --- a/holidays/countries/tanzania.py +++ b/holidays/countries/tanzania.py @@ -10,10 +10,25 @@ # Website: https://github.com/vacanza/holidays # License: MIT (see LICENSE file) +from datetime import date from gettext import gettext as tr from holidays.calendars import _CustomIslamicHolidays -from holidays.calendars.gregorian import JAN, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC +from holidays.calendars.gregorian import ( + JAN, + FEB, + MAR, + APR, + MAY, + JUN, + JUL, + AUG, + SEP, + OCT, + NOV, + DEC, + _timedelta, +) from holidays.constants import BANK, PUBLIC from holidays.groups import ( ChristianHolidays, @@ -21,40 +36,65 @@ IslamicHolidays, StaticHolidays, ) -from holidays.holiday_base import HolidayBase +from holidays.observed_holiday_base import ( + ObservedHolidayBase, + SAT_TO_NEXT_TUE, + SAT_SUN_TO_NEXT_MON, + SAT_SUN_TO_NEXT_MON_TUE, +) class Tanzania( - HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays, StaticHolidays + ObservedHolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays, StaticHolidays ): """Tanzania holidays. References: - * [1962](https://old.tanzlii.org/tz/legislation/act/1962/48/) - * [1964](https://web.archive.org/web/20250426030228/http://www.parliament.go.tz/polis/uploads/bills/acts/1565172859-The%20Public%20Holidays%20Ordinance%20(amendment)%20Act,%201964.pdf) - * [1966](https://web.archive.org/web/20241130122429/http://www.parliament.go.tz/polis/uploads/bills/acts/1565692654-The%20Public%20Holidays%20Ordinance%20(Amendment)%20Act,%201966.pdf) - * [1993](https://web.archive.org/web/20250425095011/https://www.parliament.go.tz/polis/uploads/bills/acts/1566639469-The%20Written%20Laws%20(Miscellaneous%20Amendments)%20Act,%201993.pdf) - * [1994](https://web.archive.org/web/20241130115733/http://www.parliament.go.tz/polis/uploads/bills/acts/1566638051-The%20Written%20Laws%20(Miscellaneous%20Amendments)%20(No.%202)%20Act,%201994.pdf) - * [2002](https://web.archive.org/web/20250427172313/http://parliament.go.tz/polis/uploads/bills/acts/1454076376-ActNo-25-2002.pdf) + * [Act No. 57 of 1964](https://web.archive.org/web/20250426030228/http://www.parliament.go.tz/polis/uploads/bills/acts/1565172859-The%20Public%20Holidays%20Ordinance%20(amendment)%20Act,%201964.pdf) + * [Act No. 28 of 1966](https://web.archive.org/web/20241130122429/http://www.parliament.go.tz/polis/uploads/bills/acts/1565692654-The%20Public%20Holidays%20Ordinance%20(Amendment)%20Act,%201966.pdf) + * [Regular Notice No. 115 of 1973](https://web.archive.org/web/20250726035131/https://archive.gazettes.africa/archive/tz/1973/tz-government-gazette-dated-1973-02-02-no-5.pdf) + * [Act No. 1 of 1993](https://web.archive.org/web/20250425095011/https://www.parliament.go.tz/polis/uploads/bills/acts/1566639469-The%20Written%20Laws%20(Miscellaneous%20Amendments)%20Act,%201993.pdf) + * [Act No. 10 of 1994](https://web.archive.org/web/20240515125908/https://www.parliament.go.tz/polis/uploads/bills/acts/1566638051-The%20Written%20Laws%20(Miscellaneous%20Amendments)%20(No.%202)%20Act,%201994.pdf) + * [Supplements No. 39 of 2002](https://web.archive.org/web/20250726035133/https://media.tanzlii.org/media/legislation/375064/source_file/276a8691d29bd8a3/tz-act-gn-2002-451-publication-document.pdf) + * [Act No. 25 of 2002](https://web.archive.org/web/20250427172313/http://parliament.go.tz/polis/uploads/bills/acts/1454076376-ActNo-25-2002.pdf) + * [Government Notice No. 486 of 2022](https://web.archive.org/web/20250815171402/https://media.tanzlii.org/media/legislation/325046/source_file/aaaaa31bca89a995/tz-act-gn-2022-486-publication-document.pdf) + * [The Public Holidays Act (as of 2025)](https://web.archive.org/web/20250726035253/https://www.nps.go.tz/uploads/documents/sw-1751397436-THE%20PUBLIC%20HOLIDAYS%20ACT.pdf) * * - * - * Checked With: - * [2023](https://web.archive.org/web/20250403094322/https://www.bot.go.tz/webdocs/Other/2023%20public%20holidays.pdf) + * [2025](https://web.archive.org/web/20250214094413/https://www.bot.go.tz/webdocs/Other/PUBLIC%20HOLIDAYS%202025.pdf) + * [2024](https://web.archive.org/web/20250403094322/https://www.bot.go.tz/webdocs/Other/2023%20public%20holidays.pdf) + * [2023](https://web.archive.org/web/20230811104654/https://www.bot.go.tz/webdocs/Other/2023%20public%20holidays.pdf) * [2022](https://web.archive.org/web/20230123001009/https://www.bot.go.tz/webdocs/Other/PUBLIC%20HOLIDAYS%202022.pdf) * [2021](https://web.archive.org/web/20210812134750/https://www.bot.go.tz/webdocs/Other/PUBLIC%20HOLIDAYS%202021.pdf) - * [2020](https://web.archive.org/web/20201219014125/https://www.bot.go.tz/webdocs/Other/PUBLIC%20HOLIDAYS%202020.pdf) - * [2018](https://web.archive.org/web/20190528223244/http://issamichuzi.blogspot.com:80/2017/11/sikukuu-za-kitaifa-zenye-mapumziko-kwa.html) - * [from 2013 onwards](https://web.archive.org/web/20250130093727/https://www.timeanddate.com/holidays/tanzania/) - - Limitations: - * Only works from 1994 onwards due to the lack of sources for certain legislation: - * Government Notices No. 79 of 1977 - * Government Notices No. 300 of 1985 - * Government Notices No. 296 of 1994 - * Exact Islamic holidays dates are only available for 2013-2023; the rest are estimates. + * [2020 (2)](https://web.archive.org/web/20201219014125/https://www.bot.go.tz/webdocs/Other/PUBLIC%20HOLIDAYS%202020.pdf) + * [2020 (1)](https://web.archive.org/web/20250717184907/https://archive.gazettes.africa/archive/tz/2019/tz-government-gazette-dated-2019-11-08-no-46.pdf) + * [2018](https://web.archive.org/web/20250726041516/https://www.michuzi.co.tz/2017/11/sikukuu-za-kitaifa-zenye-mapumziko-kwa.html) + * [2014](https://web.archive.org/web/20250726041327/https://archive.gazettes.africa/archive/tz/2013/tz-government-gazette-dated-2013-07-12-no-28.pdf) + * [2013](https://web.archive.org/web/20250717184650/https://archive.gazettes.africa/archive/tz/2012/tz-government-gazette-dated-2012-11-30-no-48.pdf) + * [2011](https://web.archive.org/web/20250726041328/https://archive.gazettes.africa/archive/tz/2010/tz-government-gazette-dated-2010-10-08-no-41.pdf) + * [2010](https://web.archive.org/web/20250726041331/https://archive.gazettes.africa/archive/tz/2009/tz-government-gazette-dated-2009-09-25-no-39.pdf) + * [2009](https://web.archive.org/web/20250726042634/https://archive.gazettes.africa/archive/tz/2008/tz-government-gazette-dated-2008-09-19-no-38.pdf) + * [2007](https://web.archive.org/web/20250726035107/https://archive.gazettes.africa/archive/tz/2006/tz-government-gazette-dated-2006-09-29-no-39.pdf) + * [2006](https://web.archive.org/web/20250726042507/https://archive.gazettes.africa/archive/tz/2005/tz-government-gazette-dated-2005-11-11-no-45.pdf) + * [2004](https://web.archive.org/web/20250726042505/https://archive.gazettes.africa/archive/tz/2003/tz-government-gazette-dated-2003-10-24-no-43.pdf) + * [2003](https://web.archive.org/web/20250726042558/https://archive.gazettes.africa/archive/tz/2002/tz-government-gazette-dated-2002-12-06-no-49.pdf) + * [2002](https://web.archive.org/web/20250726042713/https://archive.gazettes.africa/archive/tz/2001/tz-government-gazette-dated-2001-09-28-no-39.pdf) + * [2001](https://web.archive.org/web/20250726042632/https://archive.gazettes.africa/archive/tz/2000/tz-government-gazette-dated-2000-09-22-no-38.pdf) + * [1998](https://web.archive.org/web/20250726042845/https://archive.gazettes.africa/archive/tz/1997/tz-government-gazette-dated-1997-10-17-no-42.pdf) + * [1994](https://web.archive.org/web/20250726043005/https://archive.gazettes.africa/archive/tz/1993/tz-government-gazette-dated-1993-10-15-no-42.pdf) + * [1992](https://web.archive.org/web/20250726043006/https://archive.gazettes.africa/archive/tz/1991/tz-government-gazette-dated-1991-08-30-no-35.pdf) + * [1991](https://web.archive.org/web/20250726043011/https://archive.gazettes.africa/archive/tz/1990/tz-government-gazette-dated-1990-08-24-no-36.pdf) + * [1987](https://web.archive.org/web/20250726043022/https://archive.gazettes.africa/archive/tz/1986/tz-government-gazette-dated-1986-10-10-no-41.pdf) + * [1984](https://web.archive.org/web/20250726043037/https://archive.gazettes.africa/archive/tz/1983/tz-government-gazette-dated-1983-11-18-no-46.pdf) + * [1983](https://web.archive.org/web/20250726042943/https://archive.gazettes.africa/archive/tz/1982/tz-government-gazette-dated-1982-11-12-no-46.pdf) + * [1982](https://web.archive.org/web/20250726043116/https://archive.gazettes.africa/archive/tz/1981/tz-government-gazette-dated-1981-09-25-no-39.pdf) + * [1975](https://web.archive.org/web/20250726043340/https://archive.gazettes.africa/archive/tz/1974/tz-government-gazette-dated-1974-10-25-no-43.pdf) + * [1970](https://web.archive.org/web/20250717155730/https://archive.gazettes.africa/archive/tz/1969/tz-government-gazette-dated-1969-09-26-no-42.pdf) + * [1969](https://web.archive.org/web/20250726043344/https://archive.gazettes.africa/archive/tz/1968/tz-government-gazette-dated-1968-11-29-no-53.pdf) + * [1965](https://web.archive.org/web/20250717150107/https://archive.gazettes.africa/archive/tz/1964/tz-government-gazette-dated-1964-12-18-no-75.pdf) + * """ country = "TZ" @@ -62,9 +102,13 @@ class Tanzania( default_language = "sw" # %s (estimated). estimated_label = tr("%s (makisio)") + # %s (observed). + observed_label = tr("Badala ya %s") + # %s (observed, estimated). + observed_estimated_label = tr("Badala ya %s (makisio)") supported_languages = ("en_US", "sw") - # Written Law (Miscellaneous Amendments) (No. 2) Act, 1994. - start_year = 1994 + # Public Holidays Ordinance (Amendment) Act, 1964. + start_year = 1965 def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): """ @@ -81,6 +125,33 @@ def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): StaticHolidays.__init__(self, TanzaniaStaticHolidays) super().__init__(*args, **kwargs) + def _populate_observed(self, dts: set[date], dts_special: set[date]) -> None: + """ + Applies `SAT_SUN_TO_NEXT_MON_TUE` instead of `SAT_SUN_TO_NEXT_MON` + observed_rule for Christmas Day and the first day of Eid al-Fitr + holidays, based on section 4 of the Ordinance. + + Added via Act No. 10 of 1994 on July 29th, 1994. + Removed via G.N. No. 486 of 2022 on July 15th, 2022. + + For 1994 and 2022 edge cases, see `special_public_holidays_observed`. + """ + if self._year <= 1994 or self._year >= 2022: + return + + # If a holiday falls on Holy Saturday. + holy_saturday = _timedelta(self._easter_sunday, -1) + + for dt in sorted(dts): + if dt in dts_special: + rule = SAT_SUN_TO_NEXT_MON_TUE + elif dt == holy_saturday: + rule = SAT_TO_NEXT_TUE + else: + rule = SAT_SUN_TO_NEXT_MON + for name in self.get_list(dt): + self._add_observed(dt, name, rule) + def _populate_bank_holidays(self): # Sikukuu ya Pasaka. # Status: In-Use. @@ -90,144 +161,128 @@ def _populate_bank_holidays(self): self._add_easter_sunday(tr("Sikukuu ya Pasaka")) def _populate_public_holidays(self): - # In-lieus ("Badala ya %s") are observed on Monday should it fall on the weekends. - # Abrogated in Public Holidays Ordinance No. 28 of 1966. - # Reinstituted in Written Law (Miscellaneous Amendments) (No. 2) Act, 1994. - # Claimed to be abrogated again on an unspecified date. + dts_observed = set() + dts_special = set() - # Fixed Date Holidays. - - # Mwaka Mpya. - # Status: In-Use. - # Abrogated in Public Holidays Ordinance No. 28 of 1966. - # Reinstituted prior to the Written Law (Miscellaneous Amendments) (No. 1) Act, 1993. - - # New Year's Day. - self._add_new_years_day(tr("Mwaka Mpya")) - - # Mapinduzi ya Zanzibar. - # Status: In-Use. - # Commemorates the fall of the Sultanate of Zanzibar on Jan 12, 1964. + # Removed via Act No. 28 of 1966 on August 4th, 1966. + # Readded in 1987. + if self._year <= 1966 or self._year >= 1987: + # New Year's Day. + dts_observed.add(self._add_new_years_day(tr("Mwaka Mpya"))) # Zanzibar Revolution Day. - self._add_holiday_jan_12(tr("Mapinduzi ya Zanzibar")) - - # Siku ya kumbukumbu ya Rais wa Kwanza wa Serikali ya Mapinduzi Zanzibar - # Sheikh Abeid Amani Karume. - # Status: In-Use. - # Commemorates the death of Abeid Amani Karume on Apr 7, 1972. - # Assumed to start via Government Notices 79 of 1977. - - self._add_holiday_apr_7( - # The Sheikh Abeid Amani Karume Day. - tr( - "Siku ya kumbukumbu ya Rais wa Kwanza wa Serikali ya Mapinduzi Zanzibar " - "Sheikh Abeid Amani Karume" + dts_observed.add(self._add_holiday_jan_12(tr("Mapinduzi ya Zanzibar"))) + + # Added via Regular Notice No. 115 of 1973 on January 27th, 1973. + # Name changed in 1977 with the merger of ASP and TANU into CCM. + # Removed via Act No. 1 of 1993 on February 19th, 1993. + if 1973 <= self._year <= 1993: + self._add_holiday_feb_5( + # CCM Party Founding Day. + tr("Kuzaliwa kwa Chama cha Mapinduzi") + if self._year >= 1977 + # Afro-Shirazi Party Founding Day. + else tr("Kuzaliwa kwa ASP") ) - ) - # Muungano wa Tanganyika na Zanzibar. - # Status: In-Use. - # Commemorates the creation of the United Republic of Tanzania on Apr 26, 1964. - - # Union Celebrations. - self._add_holiday_apr_26(tr("Muungano wa Tanganyika na Zanzibar")) - - # Sikukuu ya Wafanyakazi. - # Status: In-Use. - - # Worker's Day. - self._add_labor_day(tr("Sikukuu ya Wafanyakazi")) - - # Sabasaba. - # Status: In-Use. - # Celebrates the formation of Tanganyika African National Union party on Jul 7, 1954. - # First started in the Public Holidays Ordinance No. 57 of 1964. - # Abrogated in 1993 (need official source on this) - # Reinstituted via Government Notices 296 of 1994. - - # International Trade Fair. - self._add_holiday_jul_7(tr("Sabasaba")) - - # Siku ya Wakulima. - # Status: In-Use. - # Also known as Nane Nane. - # Started via Government Notices 296 of 1994 to replace Sabasaba. + # Added in 2006. + if self._year >= 2006: + dts_observed.add( + self._add_holiday_apr_7( + # The Sheikh Abeid Amani Karume Day. + tr( + "Siku ya kumbukumbu ya Rais wa Kwanza wa Serikali ya Mapinduzi Zanzibar " + "Sheikh Abeid Amani Karume" + ) + ) + ) - # Peasants Day. - self._add_holiday_aug_8(tr("Siku ya Wakulima")) + # Good Friday. + self._add_good_friday(tr("Ijumaa Kuu")) - # Kumbukumbu ya Mwalimu Nyerere. - # Status: In-Use. - # Commemorates the death of Julius Kambarage Nyerere on Oct 14, 1999. - # Adopted in Written Law (Miscellaneous Amendments) (No. 3) Act, 2002. + # Easter Monday. + self._add_easter_monday(tr("Jumatatu ya Pasaka")) - if self._year >= 2003: - # The Mwalimu Nyerere Day. - self._add_holiday_oct_14(tr("Kumbukumbu ya Mwalimu Nyerere")) + dts_observed.add( + self._add_holiday_apr_26( + # Union Celebrations. + tr("Muungano wa Tanzania") + if self._year >= 1991 + # Union Day. + else tr("Sikukuu ya Muungano") + ) + ) - # Uhuru na Jamhuri. - # Status: In-Use. - # Commemorates the Independence of Tanganyika from the United Kingdom on Dec 9, 1961. + # International Workers' Day. + dts_observed.add(self._add_labor_day(tr("Sikukuu ya Wafanyakazi Ulimwenguni"))) + + # Renamed Peasants' Day in 1977. + # Name reverted back, with English name changed to International Trade Fair in 1994. + if self._year >= 1994: + # International Trade Fair. + name = tr("Sabasaba") + elif self._year >= 1977: + # Peasants' Day. + name = tr("Sikukuu ya Wakulima") + else: + # Saba Saba Day. + name = tr("Saba Saba") + dts_observed.add(self._add_holiday_jul_7(name)) + + # Made into its own holiday separate from Saba Saba Day in 1995. + if self._year >= 1995: + # Peasants' Day. + dts_observed.add(self._add_holiday_aug_8(tr("Sikukuu ya Wakulima"))) + + # Added via Supplements No. 39 of 2002 on October 4th, 2002. + # Reaffirmed via Act No. 25 of 2002 on November 14th, 2002. + if self._year >= 2002: + dts_observed.add( + self._add_holiday_oct_14( + # The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race. + tr("Kumbukumbu ya Mwalimu Nyerere na Kilele cha mbio za Mwenge") + ) + ) # Independence and Republic Day. - self._add_holiday_dec_9(tr("Uhuru na Jamhuri")) - - # Kuzaliwa Kristo. - # Status: In-Use. + dts_observed.add(self._add_holiday_dec_9(tr("Uhuru na Jamhuri"))) # Christmas Day. - self._add_christmas_day(tr("Kuzaliwa Kristo")) - - # Siku ya Kupeana Zawadi. - # Status: In-Use. - # Abrogated in Public Holidays Ordinance No. 28 of 1966. - # Reinstituted in Written Law (Miscellaneous Amendments) (No. 1) Act, 1993. - - # Boxing Day. - self._add_christmas_day_two(tr("Siku ya Kupeana Zawadi")) - - # Christian Calendar Holidays. - - # Ijumaa Kuu. - # Status: In-Use. - - # Good Friday. - self._add_good_friday(tr("Ijumaa Kuu")) - - # Jumatatu ya Pasaka. - # Status: In-Use. + dt = self._add_christmas_day(tr("Kuzaliwa Kristo")) + dts_observed.add(dt) + dts_special.add(dt) - # Easter Monday. - self._add_easter_monday(tr("Jumatatu ya Pasaka")) + # Removed via Act No. 28 of 1966 on August 4th, 1966 + # Readded via Act No. 1 of 1993 on February 19th, 1993. + if self._year <= 1965 or self._year >= 1993: + # Boxing Day. + dts_observed.add(self._add_christmas_day_two(tr("Siku ya Kupeana Zawadi"))) - # Islamic Calendar Holidays. + # Islamic Holidays. - # Eid El-Fitry. - # Status: In-Use. - # Used to be celebrated for 2 days in the 1964 and 1966 amendments. + # The 1975 official calendar lists only one Eid al-Fitr, unlike other contemporary sources + # (e.g., 1970, 1982). No legal changes have been found to explain this, so it is assumed + # to be a clerical error. # Eid al-Fitr. - self._add_eid_al_fitr_day(tr("Eid El-Fitry")) - - # Eid El-Hajj. - # Status: In-Use. - # Used to be celebrated for 2 days in the 1964 amendments. + name = tr("Eid El-Fitri") + dts = self._add_eid_al_fitr_day(name) + dts_observed.update(dts) + dts_special.update(dts) + dts_observed.update(self._add_eid_al_fitr_day_two(name)) # Eid al-Adha. - self._add_eid_al_adha_day(tr("Eid El-Hajj")) - - # Maulidi. - # Status: In-Use. + name = tr("Eid El Hajj") + dts_observed.update(self._add_eid_al_adha_day(name)) + # Removed via Act No. 28 of 1966 on August 4th, 1966 + if self._year <= 1966: + dts_observed.update(self._add_eid_al_adha_day_two(name)) # Prophet's Birthday. - self._add_mawlid_day(tr("Maulidi")) + dts_observed.update(self._add_mawlid_day(tr("Maulidi"))) - # Defunct Holidays. - - # 5th Day of February ??? (Name Unavailable) - # Status: Defunct. - # Abrogated in Written Law (Miscellaneous Amendments) (No. 1) Act, 1993. + if self.observed: + self._populate_observed(dts_observed, dts_special) class TZ(Tanzania): @@ -239,8 +294,31 @@ class TZA(Tanzania): class TanzaniaIslamicHolidays(_CustomIslamicHolidays): - EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2013, 2023) + EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2013, 2025) EID_AL_ADHA_DATES = { + # https://web.archive.org/web/20250717150107/https://archive.gazettes.africa/archive/tz/1964/tz-government-gazette-dated-1964-12-18-no-75.pdf + 1965: (APR, 13), + # https://web.archive.org/web/20250717095924/https://archive.gazettes.africa/archive/tz/1967/tz-government-gazette-dated-1967-03-17-no-12.pdf + 1967: (MAR, 22), + # https://web.archive.org/web/20250726040536/https://archive.gazettes.africa/archive/tz/1968/tz-government-gazette-dated-1968-03-01-no-9.pdf + 1968: (MAR, 10), + 1969: (FEB, 28), + # https://web.archive.org/web/20250726040512/https://archive.gazettes.africa/archive/tz/1969/tz-government-gazette-dated-1969-09-26-no-42.pdf + 1970: (FEB, 17), + 1975: (DEC, 14), + 1982: (OCT, 5), + 1983: (SEP, 25), + 1984: (SEP, 9), + 1987: (AUG, 7), + 1991: (JUN, 21), + 1992: (JUN, 12), + 1994: (MAY, 20), + 1998: (APR, 7), + 2001: (MAR, 5), + 2003: (FEB, 12), + 2004: (FEB, 2), + 2006: (JAN, 9), + 2007: (JAN, 1), 2014: (OCT, 5), 2016: (SEP, 16), 2017: (SEP, 2), @@ -249,10 +327,34 @@ class TanzaniaIslamicHolidays(_CustomIslamicHolidays): 2021: (JUL, 21), 2022: (JUL, 10), 2023: (JUN, 29), + 2024: (JUN, 17), + 2025: (JUN, 7), } - EID_AL_FITR_DATES_CONFIRMED_YEARS = (2013, 2024) + EID_AL_FITR_DATES_CONFIRMED_YEARS = (2013, 2025) EID_AL_FITR_DATES = { + # https://web.archive.org/web/20250726040204/https://archive.gazettes.africa/archive/tz/1964/tz-government-gazette-dated-1964-12-18-no-75.pdf + 1965: (FEB, 3), + # https://web.archive.org/web/20250726040214/https://archive.gazettes.africa/archive/tz/1967/tz-government-gazette-dated-1967-01-10-no-2.pdf + 1967: (JAN, 13), + # https://web.archive.org/web/20250726040216/https://archive.gazettes.africa/archive/tz/1967/tz-government-gazette-dated-1967-12-30-no-58.pdf + 1968: (JAN, 2), + 1969: (DEC, 11), + # 1970 Rough Estimate wasn't updated from last year figure. + 1975: (OCT, 7), + 1982: (JUL, 24), + 1983: (JUL, 13), + 1984: (JUL, 4), + 1987: (MAY, 29), + 1991: (APR, 15), + 1992: (APR, 5), + 1994: (MAR, 12), + 1998: (JAN, 29), + 2001: (DEC, 26), + 2003: (NOV, 27), + 2004: (OCT, 18), + 2006: (OCT, 29), + 2007: (OCT, 13), 2014: (JUL, 29), 2015: (JUL, 18), 2016: (JUL, 7), @@ -261,10 +363,33 @@ class TanzaniaIslamicHolidays(_CustomIslamicHolidays): 2021: (MAY, 14), 2022: (MAY, 3), 2023: (APR, 22), + 2025: (MAR, 31), } - MAWLID_DATES_CONFIRMED_YEARS = (2013, 2023) + MAWLID_DATES_CONFIRMED_YEARS = (2013, 2025) MAWLID_DATES = { + # https://web.archive.org/web/20250726040036/https://archive.gazettes.africa/archive/tz/1965/tz-government-gazette-dated-1965-02-12-no-7.pdf + 1965: (JUL, 12), + # https://web.archive.org/web/20250726040035/https://archive.gazettes.africa/archive/tz/1967/tz-government-gazette-dated-1967-06-16-no-26.pdf + 1967: (JUN, 21), + # https://web.archive.org/web/20250717095809/https://archive.gazettes.africa/archive/tz/1968/tz-government-gazette-dated-1968-06-07-no-23.pdf + 1968: (JUN, 10), + 1969: (MAY, 29), + # 1970 Rough Estimate wasn't updated from last year figure. + 1975: (MAR, 25), + 1982: (JAN, 8), + 1983: (DEC, 20), + 1984: (DEC, 8), + 1987: (NOV, 4), + 1991: (OCT, 19), + 1992: (SEP, 10), + 1994: (AUG, 18), + 1998: (APR, 7), + 2001: (JUL, 6), + 2003: (MAY, 12), + 2004: (MAY, 2), + 2006: (APR, 10), + 2007: (MAR, 31), 2014: (JAN, 14), 2015: ((JAN, 3), (DEC, 24)), 2016: (DEC, 12), @@ -274,14 +399,18 @@ class TanzaniaIslamicHolidays(_CustomIslamicHolidays): 2021: (OCT, 19), 2022: (OCT, 9), 2023: (SEP, 28), + 2024: (SEP, 16), } class TanzaniaStaticHolidays: - # Special Holidays. + """Tanzania special holidays. - # John Pombe Magufuli Inauguration Day. - john_magufuli_inauguration = tr("Sikukuu ya Kuapishwa kwa John Pombe Magufuli") + References: + * [G.N. No. 2440 of 1967](https://web.archive.org/web/20250726035513/https://archive.gazettes.africa/archive/tz/1967/tz-government-gazette-dated-1967-11-28-no-50a.pdf) + * + * + """ # Tanzania General Election Day. tz_election_day = tr("Sikukuu ya Uchaguzi Mkuu wa Tanzania") @@ -290,11 +419,14 @@ class TanzaniaStaticHolidays: phc_census_day = tr("Siku ya Sensa ya Kitaifa ya Watu na Makazi") # John Pombe Magufuli's Funeral. - john_magufuli_funeral = tr("Mazishi cha John Pombe Magufuli") + john_magufuli_funeral = tr("Mazishi ya John Pombe Magufuli") special_public_holidays = { + # Inauguration of East African Economic Community. + 1967: (DEC, 1, tr("Uzinduzi wa Jumuiya ya Kiuchumi ya Afrika Mashariki")), 2002: (AUG, 25, phc_census_day), - 2015: (NOV, 5, john_magufuli_inauguration), + # John Pombe Magufuli Inauguration Day. + 2015: (NOV, 5, tr("Sikukuu ya Kuapishwa kwa John Pombe Magufuli")), 2020: (OCT, 28, tz_election_day), 2021: ( (MAR, 22, john_magufuli_funeral), @@ -302,3 +434,15 @@ class TanzaniaStaticHolidays: ), 2022: (AUG, 23, phc_census_day), } + special_public_holidays_observed = { + # Christmas Day. + 1994: (DEC, 27, tr("Kuzaliwa Kristo")), + 2022: ( + # New Year's Day. + (JAN, 3, tr("Mwaka Mpya")), + # International Workers' Day. + (MAY, 2, tr("Sikukuu ya Wafanyakazi Ulimwenguni")), + # Eid al-Adha. + (JUL, 11, tr("Eid El Hajj")), + ), + } diff --git a/holidays/locale/en_US/LC_MESSAGES/TZ.po b/holidays/locale/en_US/LC_MESSAGES/TZ.po index 4e495390cd..125f716409 100644 --- a/holidays/locale/en_US/LC_MESSAGES/TZ.po +++ b/holidays/locale/en_US/LC_MESSAGES/TZ.po @@ -14,17 +14,17 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.57\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-10-07 15:05+0700\n" -"PO-Revision-Date: 2024-09-07 17:41+0300\n" -"Last-Translator: ~Jhellico \n" +"PO-Revision-Date: 2025-08-27 14:28+0700\n" +"Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: en_US\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Lingua 4.15.0\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.7\n" "X-Source-Language: sw\n" #. %s (estimated). @@ -32,6 +32,16 @@ msgstr "" msgid "%s (makisio)" msgstr "%s (estimated)" +#. %s (observed). +#, c-format +msgid "Badala ya %s" +msgstr "%s (observed)" + +#. %s (observed, estimated). +#, c-format +msgid "Badala ya %s (makisio)" +msgstr "%s (observed, estimated)" + #. Easter Sunday. msgid "Sikukuu ya Pasaka" msgstr "Easter Sunday" @@ -44,30 +54,54 @@ msgstr "New Year's Day" msgid "Mapinduzi ya Zanzibar" msgstr "Zanzibar Revolution Day" +#. CCM Party Founding Day. +msgid "Kuzaliwa kwa Chama cha Mapinduzi" +msgstr "CCM Party Founding Day" + +#. Afro-Shirazi Party Founding Day. +msgid "Kuzaliwa kwa ASP" +msgstr "Afro-Shirazi Party Founding Day" + #. The Sheikh Abeid Amani Karume Day. msgid "" "Siku ya kumbukumbu ya Rais wa Kwanza wa Serikali ya Mapinduzi Zanzibar Sheikh Abeid Amani Karume" msgstr "The Sheikh Abeid Amani Karume Day" +#. Good Friday. +msgid "Ijumaa Kuu" +msgstr "Good Friday" + +#. Easter Monday. +msgid "Jumatatu ya Pasaka" +msgstr "Easter Monday" + #. Union Celebrations. -msgid "Muungano wa Tanganyika na Zanzibar" +msgid "Muungano wa Tanzania" msgstr "Union Celebrations" -#. Worker's Day. -msgid "Sikukuu ya Wafanyakazi" -msgstr "Worker's Day" +#. Union Day. +msgid "Sikukuu ya Muungano" +msgstr "Union Day" + +#. International Workers' Day. +msgid "Sikukuu ya Wafanyakazi Ulimwenguni" +msgstr "International Workers' Day" #. International Trade Fair. msgid "Sabasaba" msgstr "International Trade Fair" -#. Peasants Day. -msgid "Siku ya Wakulima" -msgstr "Peasants Day" +#. Peasants' Day. +msgid "Sikukuu ya Wakulima" +msgstr "Peasants' Day" -#. The Mwalimu Nyerere Day. -msgid "Kumbukumbu ya Mwalimu Nyerere" -msgstr "The Mwalimu Nyerere Day" +#. Saba Saba Day. +msgid "Saba Saba" +msgstr "Saba Saba Day" + +#. The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race. +msgid "Kumbukumbu ya Mwalimu Nyerere na Kilele cha mbio za Mwenge" +msgstr "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race" #. Independence and Republic Day. msgid "Uhuru na Jamhuri" @@ -81,30 +115,18 @@ msgstr "Christmas Day" msgid "Siku ya Kupeana Zawadi" msgstr "Boxing Day" -#. Good Friday. -msgid "Ijumaa Kuu" -msgstr "Good Friday" - -#. Easter Monday. -msgid "Jumatatu ya Pasaka" -msgstr "Easter Monday" - #. Eid al-Fitr. -msgid "Eid El-Fitry" +msgid "Eid El-Fitri" msgstr "Eid al-Fitr" #. Eid al-Adha. -msgid "Eid El-Hajj" +msgid "Eid El Hajj" msgstr "Eid al-Adha" #. Prophet's Birthday. msgid "Maulidi" msgstr "Prophet's Birthday" -#. John Pombe Magufuli Inauguration Day. -msgid "Sikukuu ya Kuapishwa kwa John Pombe Magufuli" -msgstr "John Pombe Magufuli Inauguration Day" - #. Tanzania General Election Day. msgid "Sikukuu ya Uchaguzi Mkuu wa Tanzania" msgstr "Tanzania General Election Day" @@ -114,5 +136,13 @@ msgid "Siku ya Sensa ya Kitaifa ya Watu na Makazi" msgstr "National Population and Housing Census Day" #. John Pombe Magufuli's Funeral. -msgid "Mazishi cha John Pombe Magufuli" +msgid "Mazishi ya John Pombe Magufuli" msgstr "John Pombe Magufuli's Funeral" + +#. Inauguration of East African Economic Community. +msgid "Uzinduzi wa Jumuiya ya Kiuchumi ya Afrika Mashariki" +msgstr "Inauguration of East African Economic Community" + +#. John Pombe Magufuli Inauguration Day. +msgid "Sikukuu ya Kuapishwa kwa John Pombe Magufuli" +msgstr "John Pombe Magufuli Inauguration Day" diff --git a/holidays/locale/sw/LC_MESSAGES/TZ.po b/holidays/locale/sw/LC_MESSAGES/TZ.po index 1119dea655..674be1c3e3 100644 --- a/holidays/locale/sw/LC_MESSAGES/TZ.po +++ b/holidays/locale/sw/LC_MESSAGES/TZ.po @@ -14,9 +14,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.35\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-10-07 15:05+0700\n" -"PO-Revision-Date: 2023-10-07 15:16+0700\n" +"PO-Revision-Date: 2025-08-27 14:29+0700\n" "Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: sw\n" @@ -24,7 +24,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Lingua 4.15.0\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.7\n" "X-Source-Language: sw\n" #. %s (estimated). @@ -32,6 +32,16 @@ msgstr "" msgid "%s (makisio)" msgstr "" +#. %s (observed). +#, c-format +msgid "Badala ya %s" +msgstr "" + +#. %s (observed, estimated). +#, c-format +msgid "Badala ya %s (makisio)" +msgstr "" + #. Easter Sunday. msgid "Sikukuu ya Pasaka" msgstr "" @@ -44,29 +54,53 @@ msgstr "" msgid "Mapinduzi ya Zanzibar" msgstr "" +#. CCM Party Founding Day. +msgid "Kuzaliwa kwa Chama cha Mapinduzi" +msgstr "" + +#. Afro-Shirazi Party Founding Day. +msgid "Kuzaliwa kwa ASP" +msgstr "" + #. The Sheikh Abeid Amani Karume Day. msgid "" "Siku ya kumbukumbu ya Rais wa Kwanza wa Serikali ya Mapinduzi Zanzibar Sheikh Abeid Amani Karume" msgstr "" +#. Good Friday. +msgid "Ijumaa Kuu" +msgstr "" + +#. Easter Monday. +msgid "Jumatatu ya Pasaka" +msgstr "" + #. Union Celebrations. -msgid "Muungano wa Tanganyika na Zanzibar" +msgid "Muungano wa Tanzania" +msgstr "" + +#. Union Day. +msgid "Sikukuu ya Muungano" msgstr "" -#. Worker's Day. -msgid "Sikukuu ya Wafanyakazi" +#. International Workers' Day. +msgid "Sikukuu ya Wafanyakazi Ulimwenguni" msgstr "" #. International Trade Fair. msgid "Sabasaba" msgstr "" -#. Peasants Day. -msgid "Siku ya Wakulima" +#. Peasants' Day. +msgid "Sikukuu ya Wakulima" msgstr "" -#. The Mwalimu Nyerere Day. -msgid "Kumbukumbu ya Mwalimu Nyerere" +#. Saba Saba Day. +msgid "Saba Saba" +msgstr "" + +#. The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race. +msgid "Kumbukumbu ya Mwalimu Nyerere na Kilele cha mbio za Mwenge" msgstr "" #. Independence and Republic Day. @@ -81,30 +115,18 @@ msgstr "" msgid "Siku ya Kupeana Zawadi" msgstr "" -#. Good Friday. -msgid "Ijumaa Kuu" -msgstr "" - -#. Easter Monday. -msgid "Jumatatu ya Pasaka" -msgstr "" - #. Eid al-Fitr. -msgid "Eid El-Fitry" +msgid "Eid El-Fitri" msgstr "" #. Eid al-Adha. -msgid "Eid El-Hajj" +msgid "Eid El Hajj" msgstr "" #. Prophet's Birthday. msgid "Maulidi" msgstr "" -#. John Pombe Magufuli Inauguration Day. -msgid "Sikukuu ya Kuapishwa kwa John Pombe Magufuli" -msgstr "" - #. Tanzania General Election Day. msgid "Sikukuu ya Uchaguzi Mkuu wa Tanzania" msgstr "" @@ -114,5 +136,13 @@ msgid "Siku ya Sensa ya Kitaifa ya Watu na Makazi" msgstr "" #. John Pombe Magufuli's Funeral. -msgid "Mazishi cha John Pombe Magufuli" +msgid "Mazishi ya John Pombe Magufuli" +msgstr "" + +#. Inauguration of East African Economic Community. +msgid "Uzinduzi wa Jumuiya ya Kiuchumi ya Afrika Mashariki" +msgstr "" + +#. John Pombe Magufuli Inauguration Day. +msgid "Sikukuu ya Kuapishwa kwa John Pombe Magufuli" msgstr "" diff --git a/snapshots/countries/TZ_COMMON.json b/snapshots/countries/TZ_COMMON.json index 7e052a9b46..2677aa8c0d 100644 --- a/snapshots/countries/TZ_COMMON.json +++ b/snapshots/countries/TZ_COMMON.json @@ -1,245 +1,702 @@ { + "1965-01-01": "New Year's Day", + "1965-01-12": "Zanzibar Revolution Day", + "1965-02-03": "Eid al-Fitr", + "1965-02-04": "Eid al-Fitr", + "1965-04-13": "Eid al-Adha", + "1965-04-14": "Eid al-Adha", + "1965-04-16": "Good Friday", + "1965-04-18": "Easter Sunday", + "1965-04-19": "Easter Monday", + "1965-04-26": "Union Day", + "1965-05-01": "International Workers' Day", + "1965-07-07": "Saba Saba Day", + "1965-07-12": "Prophet's Birthday", + "1965-12-09": "Independence and Republic Day", + "1965-12-25": "Christmas Day", + "1965-12-26": "Boxing Day", + "1966-01-01": "New Year's Day", + "1966-01-12": "Zanzibar Revolution Day", + "1966-01-22": "Eid al-Fitr (estimated)", + "1966-01-23": "Eid al-Fitr (estimated)", + "1966-04-01": "Eid al-Adha (estimated)", + "1966-04-02": "Eid al-Adha (estimated)", + "1966-04-08": "Good Friday", + "1966-04-10": "Easter Sunday", + "1966-04-11": "Easter Monday", + "1966-04-26": "Union Day", + "1966-05-01": "International Workers' Day", + "1966-07-01": "Prophet's Birthday (estimated)", + "1966-07-07": "Saba Saba Day", + "1966-12-09": "Independence and Republic Day", + "1966-12-25": "Christmas Day", + "1967-01-12": "Zanzibar Revolution Day", + "1967-01-13": "Eid al-Fitr", + "1967-01-14": "Eid al-Fitr", + "1967-03-22": "Eid al-Adha", + "1967-03-24": "Good Friday", + "1967-03-26": "Easter Sunday", + "1967-03-27": "Easter Monday", + "1967-04-26": "Union Day", + "1967-05-01": "International Workers' Day", + "1967-06-21": "Prophet's Birthday", + "1967-07-07": "Saba Saba Day", + "1967-12-01": "Inauguration of East African Economic Community", + "1967-12-09": "Independence and Republic Day", + "1967-12-25": "Christmas Day", + "1968-01-02": "Eid al-Fitr", + "1968-01-03": "Eid al-Fitr", + "1968-01-12": "Zanzibar Revolution Day", + "1968-03-10": "Eid al-Adha", + "1968-04-12": "Good Friday", + "1968-04-14": "Easter Sunday", + "1968-04-15": "Easter Monday", + "1968-04-26": "Union Day", + "1968-05-01": "International Workers' Day", + "1968-06-10": "Prophet's Birthday", + "1968-07-07": "Saba Saba Day", + "1968-12-09": "Independence and Republic Day", + "1968-12-25": "Christmas Day", + "1969-01-12": "Zanzibar Revolution Day", + "1969-02-28": "Eid al-Adha", + "1969-04-04": "Good Friday", + "1969-04-06": "Easter Sunday", + "1969-04-07": "Easter Monday", + "1969-04-26": "Union Day", + "1969-05-01": "International Workers' Day", + "1969-05-29": "Prophet's Birthday", + "1969-07-07": "Saba Saba Day", + "1969-12-09": "Independence and Republic Day", + "1969-12-11": "Eid al-Fitr", + "1969-12-12": "Eid al-Fitr", + "1969-12-25": "Christmas Day", + "1970-01-12": "Zanzibar Revolution Day", + "1970-02-17": "Eid al-Adha", + "1970-03-27": "Good Friday", + "1970-03-29": "Easter Sunday", + "1970-03-30": "Easter Monday", + "1970-04-26": "Union Day", + "1970-05-01": "International Workers' Day", + "1970-05-18": "Prophet's Birthday (estimated)", + "1970-07-07": "Saba Saba Day", + "1970-11-30": "Eid al-Fitr (estimated)", + "1970-12-01": "Eid al-Fitr (estimated)", + "1970-12-09": "Independence and Republic Day", + "1970-12-25": "Christmas Day", + "1971-01-12": "Zanzibar Revolution Day", + "1971-02-06": "Eid al-Adha (estimated)", + "1971-04-09": "Good Friday", + "1971-04-11": "Easter Sunday", + "1971-04-12": "Easter Monday", + "1971-04-26": "Union Day", + "1971-05-01": "International Workers' Day", + "1971-05-07": "Prophet's Birthday (estimated)", + "1971-07-07": "Saba Saba Day", + "1971-11-19": "Eid al-Fitr (estimated)", + "1971-11-20": "Eid al-Fitr (estimated)", + "1971-12-09": "Independence and Republic Day", + "1971-12-25": "Christmas Day", + "1972-01-12": "Zanzibar Revolution Day", + "1972-01-26": "Eid al-Adha (estimated)", + "1972-03-31": "Good Friday", + "1972-04-02": "Easter Sunday", + "1972-04-03": "Easter Monday", + "1972-04-25": "Prophet's Birthday (estimated)", + "1972-04-26": "Union Day", + "1972-05-01": "International Workers' Day", + "1972-07-07": "Saba Saba Day", + "1972-11-07": "Eid al-Fitr (estimated)", + "1972-11-08": "Eid al-Fitr (estimated)", + "1972-12-09": "Independence and Republic Day", + "1972-12-25": "Christmas Day", + "1973-01-12": "Zanzibar Revolution Day", + "1973-01-14": "Eid al-Adha (estimated)", + "1973-02-05": "Afro-Shirazi Party Founding Day", + "1973-04-15": "Prophet's Birthday (estimated)", + "1973-04-20": "Good Friday", + "1973-04-22": "Easter Sunday", + "1973-04-23": "Easter Monday", + "1973-04-26": "Union Day", + "1973-05-01": "International Workers' Day", + "1973-07-07": "Saba Saba Day", + "1973-10-27": "Eid al-Fitr (estimated)", + "1973-10-28": "Eid al-Fitr (estimated)", + "1973-12-09": "Independence and Republic Day", + "1973-12-25": "Christmas Day", + "1974-01-03": "Eid al-Adha (estimated)", + "1974-01-12": "Zanzibar Revolution Day", + "1974-02-05": "Afro-Shirazi Party Founding Day", + "1974-04-04": "Prophet's Birthday (estimated)", + "1974-04-12": "Good Friday", + "1974-04-14": "Easter Sunday", + "1974-04-15": "Easter Monday", + "1974-04-26": "Union Day", + "1974-05-01": "International Workers' Day", + "1974-07-07": "Saba Saba Day", + "1974-10-16": "Eid al-Fitr (estimated)", + "1974-10-17": "Eid al-Fitr (estimated)", + "1974-12-09": "Independence and Republic Day", + "1974-12-24": "Eid al-Adha (estimated)", + "1974-12-25": "Christmas Day", + "1975-01-12": "Zanzibar Revolution Day", + "1975-02-05": "Afro-Shirazi Party Founding Day", + "1975-03-25": "Prophet's Birthday", + "1975-03-28": "Good Friday", + "1975-03-30": "Easter Sunday", + "1975-03-31": "Easter Monday", + "1975-04-26": "Union Day", + "1975-05-01": "International Workers' Day", + "1975-07-07": "Saba Saba Day", + "1975-10-07": "Eid al-Fitr", + "1975-10-08": "Eid al-Fitr", + "1975-12-09": "Independence and Republic Day", + "1975-12-14": "Eid al-Adha", + "1975-12-25": "Christmas Day", + "1976-01-12": "Zanzibar Revolution Day", + "1976-02-05": "Afro-Shirazi Party Founding Day", + "1976-03-12": "Prophet's Birthday (estimated)", + "1976-04-16": "Good Friday", + "1976-04-18": "Easter Sunday", + "1976-04-19": "Easter Monday", + "1976-04-26": "Union Day", + "1976-05-01": "International Workers' Day", + "1976-07-07": "Saba Saba Day", + "1976-09-24": "Eid al-Fitr (estimated)", + "1976-09-25": "Eid al-Fitr (estimated)", + "1976-12-01": "Eid al-Adha (estimated)", + "1976-12-09": "Independence and Republic Day", + "1976-12-25": "Christmas Day", + "1977-01-12": "Zanzibar Revolution Day", + "1977-02-05": "CCM Party Founding Day", + "1977-03-02": "Prophet's Birthday (estimated)", + "1977-04-08": "Good Friday", + "1977-04-10": "Easter Sunday", + "1977-04-11": "Easter Monday", + "1977-04-26": "Union Day", + "1977-05-01": "International Workers' Day", + "1977-07-07": "Peasants' Day", + "1977-09-14": "Eid al-Fitr (estimated)", + "1977-09-15": "Eid al-Fitr (estimated)", + "1977-11-21": "Eid al-Adha (estimated)", + "1977-12-09": "Independence and Republic Day", + "1977-12-25": "Christmas Day", + "1978-01-12": "Zanzibar Revolution Day", + "1978-02-05": "CCM Party Founding Day", + "1978-02-19": "Prophet's Birthday (estimated)", + "1978-03-24": "Good Friday", + "1978-03-26": "Easter Sunday", + "1978-03-27": "Easter Monday", + "1978-04-26": "Union Day", + "1978-05-01": "International Workers' Day", + "1978-07-07": "Peasants' Day", + "1978-09-03": "Eid al-Fitr (estimated)", + "1978-09-04": "Eid al-Fitr (estimated)", + "1978-11-10": "Eid al-Adha (estimated)", + "1978-12-09": "Independence and Republic Day", + "1978-12-25": "Christmas Day", + "1979-01-12": "Zanzibar Revolution Day", + "1979-02-05": "CCM Party Founding Day", + "1979-02-09": "Prophet's Birthday (estimated)", + "1979-04-13": "Good Friday", + "1979-04-15": "Easter Sunday", + "1979-04-16": "Easter Monday", + "1979-04-26": "Union Day", + "1979-05-01": "International Workers' Day", + "1979-07-07": "Peasants' Day", + "1979-08-23": "Eid al-Fitr (estimated)", + "1979-08-24": "Eid al-Fitr (estimated)", + "1979-10-31": "Eid al-Adha (estimated)", + "1979-12-09": "Independence and Republic Day", + "1979-12-25": "Christmas Day", + "1980-01-12": "Zanzibar Revolution Day", + "1980-01-30": "Prophet's Birthday (estimated)", + "1980-02-05": "CCM Party Founding Day", + "1980-04-04": "Good Friday", + "1980-04-06": "Easter Sunday", + "1980-04-07": "Easter Monday", + "1980-04-26": "Union Day", + "1980-05-01": "International Workers' Day", + "1980-07-07": "Peasants' Day", + "1980-08-12": "Eid al-Fitr (estimated)", + "1980-08-13": "Eid al-Fitr (estimated)", + "1980-10-19": "Eid al-Adha (estimated)", + "1980-12-09": "Independence and Republic Day", + "1980-12-25": "Christmas Day", + "1981-01-12": "Zanzibar Revolution Day", + "1981-01-18": "Prophet's Birthday (estimated)", + "1981-02-05": "CCM Party Founding Day", + "1981-04-17": "Good Friday", + "1981-04-19": "Easter Sunday", + "1981-04-20": "Easter Monday", + "1981-04-26": "Union Day", + "1981-05-01": "International Workers' Day", + "1981-07-07": "Peasants' Day", + "1981-08-01": "Eid al-Fitr (estimated)", + "1981-08-02": "Eid al-Fitr (estimated)", + "1981-10-08": "Eid al-Adha (estimated)", + "1981-12-09": "Independence and Republic Day", + "1981-12-25": "Christmas Day", + "1982-01-08": "Prophet's Birthday", + "1982-01-12": "Zanzibar Revolution Day", + "1982-02-05": "CCM Party Founding Day", + "1982-04-09": "Good Friday", + "1982-04-11": "Easter Sunday", + "1982-04-12": "Easter Monday", + "1982-04-26": "Union Day", + "1982-05-01": "International Workers' Day", + "1982-07-07": "Peasants' Day", + "1982-07-24": "Eid al-Fitr", + "1982-07-25": "Eid al-Fitr", + "1982-10-05": "Eid al-Adha", + "1982-12-09": "Independence and Republic Day", + "1982-12-25": "Christmas Day", + "1983-01-12": "Zanzibar Revolution Day", + "1983-02-05": "CCM Party Founding Day", + "1983-04-01": "Good Friday", + "1983-04-03": "Easter Sunday", + "1983-04-04": "Easter Monday", + "1983-04-26": "Union Day", + "1983-05-01": "International Workers' Day", + "1983-07-07": "Peasants' Day", + "1983-07-13": "Eid al-Fitr", + "1983-07-14": "Eid al-Fitr", + "1983-09-25": "Eid al-Adha", + "1983-12-09": "Independence and Republic Day", + "1983-12-20": "Prophet's Birthday", + "1983-12-25": "Christmas Day", + "1984-01-12": "Zanzibar Revolution Day", + "1984-02-05": "CCM Party Founding Day", + "1984-04-20": "Good Friday", + "1984-04-22": "Easter Sunday", + "1984-04-23": "Easter Monday", + "1984-04-26": "Union Day", + "1984-05-01": "International Workers' Day", + "1984-07-04": "Eid al-Fitr", + "1984-07-05": "Eid al-Fitr", + "1984-07-07": "Peasants' Day", + "1984-09-09": "Eid al-Adha", + "1984-12-08": "Prophet's Birthday", + "1984-12-09": "Independence and Republic Day", + "1984-12-25": "Christmas Day", + "1985-01-12": "Zanzibar Revolution Day", + "1985-02-05": "CCM Party Founding Day", + "1985-04-05": "Good Friday", + "1985-04-07": "Easter Sunday", + "1985-04-08": "Easter Monday", + "1985-04-26": "Union Day", + "1985-05-01": "International Workers' Day", + "1985-06-19": "Eid al-Fitr (estimated)", + "1985-06-20": "Eid al-Fitr (estimated)", + "1985-07-07": "Peasants' Day", + "1985-08-26": "Eid al-Adha (estimated)", + "1985-11-24": "Prophet's Birthday (estimated)", + "1985-12-09": "Independence and Republic Day", + "1985-12-25": "Christmas Day", + "1986-01-12": "Zanzibar Revolution Day", + "1986-02-05": "CCM Party Founding Day", + "1986-03-28": "Good Friday", + "1986-03-30": "Easter Sunday", + "1986-03-31": "Easter Monday", + "1986-04-26": "Union Day", + "1986-05-01": "International Workers' Day", + "1986-06-08": "Eid al-Fitr (estimated)", + "1986-06-09": "Eid al-Fitr (estimated)", + "1986-07-07": "Peasants' Day", + "1986-08-15": "Eid al-Adha (estimated)", + "1986-11-14": "Prophet's Birthday (estimated)", + "1986-12-09": "Independence and Republic Day", + "1986-12-25": "Christmas Day", + "1987-01-01": "New Year's Day", + "1987-01-12": "Zanzibar Revolution Day", + "1987-02-05": "CCM Party Founding Day", + "1987-04-17": "Good Friday", + "1987-04-19": "Easter Sunday", + "1987-04-20": "Easter Monday", + "1987-04-26": "Union Day", + "1987-05-01": "International Workers' Day", + "1987-05-29": "Eid al-Fitr", + "1987-05-30": "Eid al-Fitr", + "1987-07-07": "Peasants' Day", + "1987-08-07": "Eid al-Adha", + "1987-11-04": "Prophet's Birthday", + "1987-12-09": "Independence and Republic Day", + "1987-12-25": "Christmas Day", + "1988-01-01": "New Year's Day", + "1988-01-12": "Zanzibar Revolution Day", + "1988-02-05": "CCM Party Founding Day", + "1988-04-01": "Good Friday", + "1988-04-03": "Easter Sunday", + "1988-04-04": "Easter Monday", + "1988-04-26": "Union Day", + "1988-05-01": "International Workers' Day", + "1988-05-16": "Eid al-Fitr (estimated)", + "1988-05-17": "Eid al-Fitr (estimated)", + "1988-07-07": "Peasants' Day", + "1988-07-23": "Eid al-Adha (estimated)", + "1988-10-22": "Prophet's Birthday (estimated)", + "1988-12-09": "Independence and Republic Day", + "1988-12-25": "Christmas Day", + "1989-01-01": "New Year's Day", + "1989-01-12": "Zanzibar Revolution Day", + "1989-02-05": "CCM Party Founding Day", + "1989-03-24": "Good Friday", + "1989-03-26": "Easter Sunday", + "1989-03-27": "Easter Monday", + "1989-04-26": "Union Day", + "1989-05-01": "International Workers' Day", + "1989-05-06": "Eid al-Fitr (estimated)", + "1989-05-07": "Eid al-Fitr (estimated)", + "1989-07-07": "Peasants' Day", + "1989-07-13": "Eid al-Adha (estimated)", + "1989-10-11": "Prophet's Birthday (estimated)", + "1989-12-09": "Independence and Republic Day", + "1989-12-25": "Christmas Day", + "1990-01-01": "New Year's Day", + "1990-01-12": "Zanzibar Revolution Day", + "1990-02-05": "CCM Party Founding Day", + "1990-04-13": "Good Friday", + "1990-04-15": "Easter Sunday", + "1990-04-16": "Easter Monday", + "1990-04-26": "Eid al-Fitr (estimated); Union Day", + "1990-04-27": "Eid al-Fitr (estimated)", + "1990-05-01": "International Workers' Day", + "1990-07-02": "Eid al-Adha (estimated)", + "1990-07-07": "Peasants' Day", + "1990-10-01": "Prophet's Birthday (estimated)", + "1990-12-09": "Independence and Republic Day", + "1990-12-25": "Christmas Day", + "1991-01-01": "New Year's Day", + "1991-01-12": "Zanzibar Revolution Day", + "1991-02-05": "CCM Party Founding Day", + "1991-03-29": "Good Friday", + "1991-03-31": "Easter Sunday", + "1991-04-01": "Easter Monday", + "1991-04-15": "Eid al-Fitr", + "1991-04-16": "Eid al-Fitr", + "1991-04-26": "Union Celebrations", + "1991-05-01": "International Workers' Day", + "1991-06-21": "Eid al-Adha", + "1991-07-07": "Peasants' Day", + "1991-10-19": "Prophet's Birthday", + "1991-12-09": "Independence and Republic Day", + "1991-12-25": "Christmas Day", + "1992-01-01": "New Year's Day", + "1992-01-12": "Zanzibar Revolution Day", + "1992-02-05": "CCM Party Founding Day", + "1992-04-05": "Eid al-Fitr", + "1992-04-06": "Eid al-Fitr", + "1992-04-17": "Good Friday", + "1992-04-19": "Easter Sunday", + "1992-04-20": "Easter Monday", + "1992-04-26": "Union Celebrations", + "1992-05-01": "International Workers' Day", + "1992-06-12": "Eid al-Adha", + "1992-07-07": "Peasants' Day", + "1992-09-10": "Prophet's Birthday", + "1992-12-09": "Independence and Republic Day", + "1992-12-25": "Christmas Day", + "1993-01-01": "New Year's Day", + "1993-01-12": "Zanzibar Revolution Day", + "1993-02-05": "CCM Party Founding Day", + "1993-03-24": "Eid al-Fitr (estimated)", + "1993-03-25": "Eid al-Fitr (estimated)", + "1993-04-09": "Good Friday", + "1993-04-11": "Easter Sunday", + "1993-04-12": "Easter Monday", + "1993-04-26": "Union Celebrations", + "1993-05-01": "International Workers' Day", + "1993-05-31": "Eid al-Adha (estimated)", + "1993-07-07": "Peasants' Day", + "1993-08-29": "Prophet's Birthday (estimated)", + "1993-12-09": "Independence and Republic Day", + "1993-12-25": "Christmas Day", + "1993-12-26": "Boxing Day", "1994-01-01": "New Year's Day", "1994-01-12": "Zanzibar Revolution Day", - "1994-03-13": "Eid al-Fitr (estimated)", + "1994-03-12": "Eid al-Fitr", + "1994-03-13": "Eid al-Fitr", "1994-04-01": "Good Friday", "1994-04-03": "Easter Sunday", "1994-04-04": "Easter Monday", - "1994-04-07": "The Sheikh Abeid Amani Karume Day", "1994-04-26": "Union Celebrations", - "1994-05-01": "Worker's Day", - "1994-05-20": "Eid al-Adha (estimated)", + "1994-05-01": "International Workers' Day", + "1994-05-20": "Eid al-Adha", "1994-07-07": "International Trade Fair", - "1994-08-08": "Peasants Day", - "1994-08-19": "Prophet's Birthday (estimated)", + "1994-08-18": "Prophet's Birthday", "1994-12-09": "Independence and Republic Day", "1994-12-25": "Christmas Day", "1994-12-26": "Boxing Day", + "1994-12-27": "Christmas Day (observed)", "1995-01-01": "New Year's Day", + "1995-01-02": "New Year's Day (observed)", "1995-01-12": "Zanzibar Revolution Day", "1995-03-02": "Eid al-Fitr (estimated)", - "1995-04-07": "The Sheikh Abeid Amani Karume Day", + "1995-03-03": "Eid al-Fitr (estimated)", "1995-04-14": "Good Friday", "1995-04-16": "Easter Sunday", "1995-04-17": "Easter Monday", "1995-04-26": "Union Celebrations", - "1995-05-01": "Worker's Day", + "1995-05-01": "International Workers' Day", "1995-05-09": "Eid al-Adha (estimated)", "1995-07-07": "International Trade Fair", - "1995-08-08": "Peasants Day; Prophet's Birthday (estimated)", + "1995-08-08": "Peasants' Day; Prophet's Birthday (estimated)", "1995-12-09": "Independence and Republic Day", + "1995-12-11": "Independence and Republic Day (observed)", "1995-12-25": "Christmas Day", "1995-12-26": "Boxing Day", "1996-01-01": "New Year's Day", "1996-01-12": "Zanzibar Revolution Day", "1996-02-19": "Eid al-Fitr (estimated)", + "1996-02-20": "Eid al-Fitr (estimated)", "1996-04-05": "Good Friday", - "1996-04-07": "Easter Sunday; The Sheikh Abeid Amani Karume Day", + "1996-04-07": "Easter Sunday", "1996-04-08": "Easter Monday", "1996-04-26": "Union Celebrations", "1996-04-27": "Eid al-Adha (estimated)", - "1996-05-01": "Worker's Day", + "1996-04-29": "Eid al-Adha (observed, estimated)", + "1996-05-01": "International Workers' Day", "1996-07-07": "International Trade Fair", + "1996-07-08": "International Trade Fair (observed)", "1996-07-27": "Prophet's Birthday (estimated)", - "1996-08-08": "Peasants Day", + "1996-07-29": "Prophet's Birthday (observed, estimated)", + "1996-08-08": "Peasants' Day", "1996-12-09": "Independence and Republic Day", "1996-12-25": "Christmas Day", "1996-12-26": "Boxing Day", "1997-01-01": "New Year's Day", "1997-01-12": "Zanzibar Revolution Day", + "1997-01-13": "Zanzibar Revolution Day (observed)", "1997-02-08": "Eid al-Fitr (estimated)", + "1997-02-09": "Eid al-Fitr (estimated)", + "1997-02-10": "Eid al-Fitr (observed, estimated)", "1997-03-28": "Good Friday", "1997-03-30": "Easter Sunday", "1997-03-31": "Easter Monday", - "1997-04-07": "The Sheikh Abeid Amani Karume Day", "1997-04-17": "Eid al-Adha (estimated)", "1997-04-26": "Union Celebrations", - "1997-05-01": "Worker's Day", + "1997-04-28": "Union Celebrations (observed)", + "1997-05-01": "International Workers' Day", "1997-07-07": "International Trade Fair", "1997-07-16": "Prophet's Birthday (estimated)", - "1997-08-08": "Peasants Day", + "1997-08-08": "Peasants' Day", "1997-12-09": "Independence and Republic Day", "1997-12-25": "Christmas Day", "1997-12-26": "Boxing Day", "1998-01-01": "New Year's Day", "1998-01-12": "Zanzibar Revolution Day", - "1998-01-29": "Eid al-Fitr (estimated)", - "1998-04-07": "Eid al-Adha (estimated); The Sheikh Abeid Amani Karume Day", + "1998-01-29": "Eid al-Fitr", + "1998-01-30": "Eid al-Fitr", + "1998-04-07": "Eid al-Adha; Prophet's Birthday", "1998-04-10": "Good Friday", "1998-04-12": "Easter Sunday", "1998-04-13": "Easter Monday", "1998-04-26": "Union Celebrations", - "1998-05-01": "Worker's Day", - "1998-07-06": "Prophet's Birthday (estimated)", + "1998-04-27": "Union Celebrations (observed)", + "1998-05-01": "International Workers' Day", "1998-07-07": "International Trade Fair", - "1998-08-08": "Peasants Day", + "1998-08-08": "Peasants' Day", + "1998-08-10": "Peasants' Day (observed)", "1998-12-09": "Independence and Republic Day", "1998-12-25": "Christmas Day", "1998-12-26": "Boxing Day", + "1998-12-28": "Boxing Day (observed)", "1999-01-01": "New Year's Day", "1999-01-12": "Zanzibar Revolution Day", "1999-01-18": "Eid al-Fitr (estimated)", + "1999-01-19": "Eid al-Fitr (estimated)", "1999-03-27": "Eid al-Adha (estimated)", + "1999-03-29": "Eid al-Adha (observed, estimated)", "1999-04-02": "Good Friday", "1999-04-04": "Easter Sunday", "1999-04-05": "Easter Monday", - "1999-04-07": "The Sheikh Abeid Amani Karume Day", "1999-04-26": "Union Celebrations", - "1999-05-01": "Worker's Day", + "1999-05-01": "International Workers' Day", + "1999-05-03": "International Workers' Day (observed)", "1999-06-26": "Prophet's Birthday (estimated)", + "1999-06-28": "Prophet's Birthday (observed, estimated)", "1999-07-07": "International Trade Fair", - "1999-08-08": "Peasants Day", + "1999-08-08": "Peasants' Day", + "1999-08-09": "Peasants' Day (observed)", "1999-12-09": "Independence and Republic Day", "1999-12-25": "Christmas Day", "1999-12-26": "Boxing Day", + "1999-12-27": "Boxing Day (observed); Christmas Day (observed)", "2000-01-01": "New Year's Day", + "2000-01-03": "New Year's Day (observed)", "2000-01-08": "Eid al-Fitr (estimated)", + "2000-01-09": "Eid al-Fitr (estimated)", + "2000-01-10": "Eid al-Fitr (observed, estimated)", "2000-01-12": "Zanzibar Revolution Day", "2000-03-16": "Eid al-Adha (estimated)", - "2000-04-07": "The Sheikh Abeid Amani Karume Day", "2000-04-21": "Good Friday", "2000-04-23": "Easter Sunday", "2000-04-24": "Easter Monday", "2000-04-26": "Union Celebrations", - "2000-05-01": "Worker's Day", + "2000-05-01": "International Workers' Day", "2000-06-14": "Prophet's Birthday (estimated)", "2000-07-07": "International Trade Fair", - "2000-08-08": "Peasants Day", + "2000-08-08": "Peasants' Day", "2000-12-09": "Independence and Republic Day", + "2000-12-11": "Independence and Republic Day (observed)", "2000-12-25": "Christmas Day", "2000-12-26": "Boxing Day", "2000-12-27": "Eid al-Fitr (estimated)", + "2000-12-28": "Eid al-Fitr (estimated)", "2001-01-01": "New Year's Day", "2001-01-12": "Zanzibar Revolution Day", - "2001-03-05": "Eid al-Adha (estimated)", - "2001-04-07": "The Sheikh Abeid Amani Karume Day", + "2001-03-05": "Eid al-Adha", "2001-04-13": "Good Friday", "2001-04-15": "Easter Sunday", "2001-04-16": "Easter Monday", "2001-04-26": "Union Celebrations", - "2001-05-01": "Worker's Day", - "2001-06-04": "Prophet's Birthday (estimated)", + "2001-05-01": "International Workers' Day", + "2001-07-06": "Prophet's Birthday", "2001-07-07": "International Trade Fair", - "2001-08-08": "Peasants Day", + "2001-07-09": "International Trade Fair (observed)", + "2001-08-08": "Peasants' Day", "2001-12-09": "Independence and Republic Day", - "2001-12-16": "Eid al-Fitr (estimated)", + "2001-12-10": "Independence and Republic Day (observed)", "2001-12-25": "Christmas Day", - "2001-12-26": "Boxing Day", + "2001-12-26": "Boxing Day; Eid al-Fitr", + "2001-12-27": "Eid al-Fitr", "2002-01-01": "New Year's Day", "2002-01-12": "Zanzibar Revolution Day", + "2002-01-14": "Zanzibar Revolution Day (observed)", "2002-02-22": "Eid al-Adha (estimated)", "2002-03-29": "Good Friday", "2002-03-31": "Easter Sunday", "2002-04-01": "Easter Monday", - "2002-04-07": "The Sheikh Abeid Amani Karume Day", "2002-04-26": "Union Celebrations", - "2002-05-01": "Worker's Day", + "2002-05-01": "International Workers' Day", "2002-05-24": "Prophet's Birthday (estimated)", "2002-07-07": "International Trade Fair", - "2002-08-08": "Peasants Day", + "2002-07-08": "International Trade Fair (observed)", + "2002-08-08": "Peasants' Day", "2002-08-25": "National Population and Housing Census Day", + "2002-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2002-12-05": "Eid al-Fitr (estimated)", + "2002-12-06": "Eid al-Fitr (estimated)", "2002-12-09": "Independence and Republic Day", "2002-12-25": "Christmas Day", "2002-12-26": "Boxing Day", "2003-01-01": "New Year's Day", "2003-01-12": "Zanzibar Revolution Day", - "2003-02-11": "Eid al-Adha (estimated)", - "2003-04-07": "The Sheikh Abeid Amani Karume Day", + "2003-01-13": "Zanzibar Revolution Day (observed)", + "2003-02-12": "Eid al-Adha", "2003-04-18": "Good Friday", "2003-04-20": "Easter Sunday", "2003-04-21": "Easter Monday", "2003-04-26": "Union Celebrations", - "2003-05-01": "Worker's Day", - "2003-05-13": "Prophet's Birthday (estimated)", + "2003-04-28": "Union Celebrations (observed)", + "2003-05-01": "International Workers' Day", + "2003-05-12": "Prophet's Birthday", "2003-07-07": "International Trade Fair", - "2003-08-08": "Peasants Day", - "2003-10-14": "The Mwalimu Nyerere Day", - "2003-11-25": "Eid al-Fitr (estimated)", + "2003-08-08": "Peasants' Day", + "2003-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", + "2003-11-27": "Eid al-Fitr", + "2003-11-28": "Eid al-Fitr", "2003-12-09": "Independence and Republic Day", "2003-12-25": "Christmas Day", "2003-12-26": "Boxing Day", "2004-01-01": "New Year's Day", "2004-01-12": "Zanzibar Revolution Day", - "2004-02-01": "Eid al-Adha (estimated)", - "2004-04-07": "The Sheikh Abeid Amani Karume Day", + "2004-02-02": "Eid al-Adha", "2004-04-09": "Good Friday", "2004-04-11": "Easter Sunday", "2004-04-12": "Easter Monday", "2004-04-26": "Union Celebrations", - "2004-05-01": "Prophet's Birthday (estimated); Worker's Day", + "2004-05-01": "International Workers' Day", + "2004-05-02": "Prophet's Birthday", + "2004-05-03": "International Workers' Day (observed); Prophet's Birthday (observed)", "2004-07-07": "International Trade Fair", - "2004-08-08": "Peasants Day", - "2004-10-14": "The Mwalimu Nyerere Day", - "2004-11-14": "Eid al-Fitr (estimated)", + "2004-08-08": "Peasants' Day", + "2004-08-09": "Peasants' Day (observed)", + "2004-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", + "2004-10-18": "Eid al-Fitr", + "2004-10-19": "Eid al-Fitr", "2004-12-09": "Independence and Republic Day", "2004-12-25": "Christmas Day", "2004-12-26": "Boxing Day", + "2004-12-27": "Boxing Day (observed); Christmas Day (observed)", "2005-01-01": "New Year's Day", + "2005-01-03": "New Year's Day (observed)", "2005-01-12": "Zanzibar Revolution Day", "2005-01-21": "Eid al-Adha (estimated)", "2005-03-25": "Good Friday", "2005-03-27": "Easter Sunday", "2005-03-28": "Easter Monday", - "2005-04-07": "The Sheikh Abeid Amani Karume Day", "2005-04-21": "Prophet's Birthday (estimated)", "2005-04-26": "Union Celebrations", - "2005-05-01": "Worker's Day", + "2005-05-01": "International Workers' Day", + "2005-05-02": "International Workers' Day (observed)", "2005-07-07": "International Trade Fair", - "2005-08-08": "Peasants Day", - "2005-10-14": "The Mwalimu Nyerere Day", + "2005-08-08": "Peasants' Day", + "2005-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2005-11-03": "Eid al-Fitr (estimated)", + "2005-11-04": "Eid al-Fitr (estimated)", "2005-12-09": "Independence and Republic Day", "2005-12-25": "Christmas Day", "2005-12-26": "Boxing Day", + "2005-12-27": "Christmas Day (observed)", "2006-01-01": "New Year's Day", - "2006-01-10": "Eid al-Adha (estimated)", + "2006-01-02": "New Year's Day (observed)", + "2006-01-09": "Eid al-Adha", "2006-01-12": "Zanzibar Revolution Day", "2006-04-07": "The Sheikh Abeid Amani Karume Day", - "2006-04-10": "Prophet's Birthday (estimated)", + "2006-04-10": "Prophet's Birthday", "2006-04-14": "Good Friday", "2006-04-16": "Easter Sunday", "2006-04-17": "Easter Monday", "2006-04-26": "Union Celebrations", - "2006-05-01": "Worker's Day", + "2006-05-01": "International Workers' Day", "2006-07-07": "International Trade Fair", - "2006-08-08": "Peasants Day", - "2006-10-14": "The Mwalimu Nyerere Day", - "2006-10-23": "Eid al-Fitr (estimated)", + "2006-08-08": "Peasants' Day", + "2006-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", + "2006-10-16": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race (observed)", + "2006-10-29": "Eid al-Fitr", + "2006-10-30": "Eid al-Fitr", + "2006-10-31": "Eid al-Fitr (observed)", "2006-12-09": "Independence and Republic Day", + "2006-12-11": "Independence and Republic Day (observed)", "2006-12-25": "Christmas Day", "2006-12-26": "Boxing Day", - "2006-12-31": "Eid al-Adha (estimated)", - "2007-01-01": "New Year's Day", + "2007-01-01": "Eid al-Adha; New Year's Day", "2007-01-12": "Zanzibar Revolution Day", - "2007-03-31": "Prophet's Birthday (estimated)", + "2007-03-31": "Prophet's Birthday", + "2007-04-02": "Prophet's Birthday (observed)", "2007-04-06": "Good Friday", "2007-04-07": "The Sheikh Abeid Amani Karume Day", "2007-04-08": "Easter Sunday", "2007-04-09": "Easter Monday", + "2007-04-10": "The Sheikh Abeid Amani Karume Day (observed)", "2007-04-26": "Union Celebrations", - "2007-05-01": "Worker's Day", + "2007-05-01": "International Workers' Day", "2007-07-07": "International Trade Fair", - "2007-08-08": "Peasants Day", - "2007-10-13": "Eid al-Fitr (estimated)", - "2007-10-14": "The Mwalimu Nyerere Day", + "2007-07-09": "International Trade Fair (observed)", + "2007-08-08": "Peasants' Day", + "2007-10-13": "Eid al-Fitr", + "2007-10-14": "Eid al-Fitr; The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", + "2007-10-15": "Eid al-Fitr (observed); The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race (observed)", "2007-12-09": "Independence and Republic Day", - "2007-12-20": "Eid al-Adha (estimated)", + "2007-12-10": "Independence and Republic Day (observed)", "2007-12-25": "Christmas Day", "2007-12-26": "Boxing Day", "2008-01-01": "New Year's Day", "2008-01-12": "Zanzibar Revolution Day", + "2008-01-14": "Zanzibar Revolution Day (observed)", "2008-03-20": "Prophet's Birthday (estimated)", "2008-03-21": "Good Friday", "2008-03-23": "Easter Sunday", "2008-03-24": "Easter Monday", "2008-04-07": "The Sheikh Abeid Amani Karume Day", "2008-04-26": "Union Celebrations", - "2008-05-01": "Worker's Day", + "2008-04-28": "Union Celebrations (observed)", + "2008-05-01": "International Workers' Day", "2008-07-07": "International Trade Fair", - "2008-08-08": "Peasants Day", + "2008-08-08": "Peasants' Day", "2008-10-01": "Eid al-Fitr (estimated)", - "2008-10-14": "The Mwalimu Nyerere Day", + "2008-10-02": "Eid al-Fitr (estimated)", + "2008-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2008-12-08": "Eid al-Adha (estimated)", "2008-12-09": "Independence and Republic Day", "2008-12-25": "Christmas Day", @@ -252,15 +709,20 @@ "2009-04-12": "Easter Sunday", "2009-04-13": "Easter Monday", "2009-04-26": "Union Celebrations", - "2009-05-01": "Worker's Day", + "2009-04-27": "Union Celebrations (observed)", + "2009-05-01": "International Workers' Day", "2009-07-07": "International Trade Fair", - "2009-08-08": "Peasants Day", + "2009-08-08": "Peasants' Day", + "2009-08-10": "Peasants' Day (observed)", "2009-09-20": "Eid al-Fitr (estimated)", - "2009-10-14": "The Mwalimu Nyerere Day", + "2009-09-21": "Eid al-Fitr (estimated)", + "2009-09-22": "Eid al-Fitr (observed, estimated)", + "2009-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2009-11-27": "Eid al-Adha (estimated)", "2009-12-09": "Independence and Republic Day", "2009-12-25": "Christmas Day", "2009-12-26": "Boxing Day", + "2009-12-28": "Boxing Day (observed)", "2010-01-01": "New Year's Day", "2010-01-12": "Zanzibar Revolution Day", "2010-02-26": "Prophet's Birthday (estimated)", @@ -269,16 +731,22 @@ "2010-04-05": "Easter Monday", "2010-04-07": "The Sheikh Abeid Amani Karume Day", "2010-04-26": "Union Celebrations", - "2010-05-01": "Worker's Day", + "2010-05-01": "International Workers' Day", + "2010-05-03": "International Workers' Day (observed)", "2010-07-07": "International Trade Fair", - "2010-08-08": "Peasants Day", + "2010-08-08": "Peasants' Day", + "2010-08-09": "Peasants' Day (observed)", "2010-09-10": "Eid al-Fitr (estimated)", - "2010-10-14": "The Mwalimu Nyerere Day", + "2010-09-11": "Eid al-Fitr (estimated)", + "2010-09-13": "Eid al-Fitr (observed, estimated)", + "2010-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2010-11-16": "Eid al-Adha (estimated)", "2010-12-09": "Independence and Republic Day", "2010-12-25": "Christmas Day", "2010-12-26": "Boxing Day", + "2010-12-27": "Boxing Day (observed); Christmas Day (observed)", "2011-01-01": "New Year's Day", + "2011-01-03": "New Year's Day (observed)", "2011-01-12": "Zanzibar Revolution Day", "2011-02-15": "Prophet's Birthday (estimated)", "2011-04-07": "The Sheikh Abeid Amani Karume Day", @@ -286,84 +754,110 @@ "2011-04-24": "Easter Sunday", "2011-04-25": "Easter Monday", "2011-04-26": "Union Celebrations", - "2011-05-01": "Worker's Day", + "2011-05-01": "International Workers' Day", + "2011-05-02": "International Workers' Day (observed)", "2011-07-07": "International Trade Fair", - "2011-08-08": "Peasants Day", + "2011-08-08": "Peasants' Day", "2011-08-30": "Eid al-Fitr (estimated)", - "2011-10-14": "The Mwalimu Nyerere Day", + "2011-08-31": "Eid al-Fitr (estimated)", + "2011-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2011-11-06": "Eid al-Adha (estimated)", + "2011-11-07": "Eid al-Adha (observed, estimated)", "2011-12-09": "Independence and Republic Day", "2011-12-25": "Christmas Day", "2011-12-26": "Boxing Day", + "2011-12-27": "Christmas Day (observed)", "2012-01-01": "New Year's Day", + "2012-01-02": "New Year's Day (observed)", "2012-01-12": "Zanzibar Revolution Day", "2012-02-04": "Prophet's Birthday (estimated)", + "2012-02-06": "Prophet's Birthday (observed, estimated)", "2012-04-06": "Good Friday", "2012-04-07": "The Sheikh Abeid Amani Karume Day", "2012-04-08": "Easter Sunday", "2012-04-09": "Easter Monday", + "2012-04-10": "The Sheikh Abeid Amani Karume Day (observed)", "2012-04-26": "Union Celebrations", - "2012-05-01": "Worker's Day", + "2012-05-01": "International Workers' Day", "2012-07-07": "International Trade Fair", - "2012-08-08": "Peasants Day", + "2012-07-09": "International Trade Fair (observed)", + "2012-08-08": "Peasants' Day", "2012-08-19": "Eid al-Fitr (estimated)", - "2012-10-14": "The Mwalimu Nyerere Day", + "2012-08-20": "Eid al-Fitr (estimated)", + "2012-08-21": "Eid al-Fitr (observed, estimated)", + "2012-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", + "2012-10-15": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race (observed)", "2012-10-26": "Eid al-Adha (estimated)", "2012-12-09": "Independence and Republic Day", + "2012-12-10": "Independence and Republic Day (observed)", "2012-12-25": "Christmas Day", "2012-12-26": "Boxing Day", "2013-01-01": "New Year's Day", "2013-01-12": "Zanzibar Revolution Day", + "2013-01-14": "Zanzibar Revolution Day (observed)", "2013-01-24": "Prophet's Birthday", "2013-03-29": "Good Friday", "2013-03-31": "Easter Sunday", "2013-04-01": "Easter Monday", "2013-04-07": "The Sheikh Abeid Amani Karume Day", + "2013-04-08": "The Sheikh Abeid Amani Karume Day (observed)", "2013-04-26": "Union Celebrations", - "2013-05-01": "Worker's Day", + "2013-05-01": "International Workers' Day", "2013-07-07": "International Trade Fair", - "2013-08-08": "Eid al-Fitr; Peasants Day", - "2013-10-14": "The Mwalimu Nyerere Day", + "2013-07-08": "International Trade Fair (observed)", + "2013-08-08": "Eid al-Fitr; Peasants' Day", + "2013-08-09": "Eid al-Fitr", + "2013-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2013-10-15": "Eid al-Adha", "2013-12-09": "Independence and Republic Day", "2013-12-25": "Christmas Day", "2013-12-26": "Boxing Day", "2014-01-01": "New Year's Day", "2014-01-12": "Zanzibar Revolution Day", + "2014-01-13": "Zanzibar Revolution Day (observed)", "2014-01-14": "Prophet's Birthday", "2014-04-07": "The Sheikh Abeid Amani Karume Day", "2014-04-18": "Good Friday", "2014-04-20": "Easter Sunday", "2014-04-21": "Easter Monday", "2014-04-26": "Union Celebrations", - "2014-05-01": "Worker's Day", + "2014-04-28": "Union Celebrations (observed)", + "2014-05-01": "International Workers' Day", "2014-07-07": "International Trade Fair", "2014-07-29": "Eid al-Fitr", - "2014-08-08": "Peasants Day", + "2014-07-30": "Eid al-Fitr", + "2014-08-08": "Peasants' Day", "2014-10-05": "Eid al-Adha", - "2014-10-14": "The Mwalimu Nyerere Day", + "2014-10-06": "Eid al-Adha (observed)", + "2014-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2014-12-09": "Independence and Republic Day", "2014-12-25": "Christmas Day", "2014-12-26": "Boxing Day", "2015-01-01": "New Year's Day", "2015-01-03": "Prophet's Birthday", + "2015-01-05": "Prophet's Birthday (observed)", "2015-01-12": "Zanzibar Revolution Day", "2015-04-03": "Good Friday", "2015-04-05": "Easter Sunday", "2015-04-06": "Easter Monday", "2015-04-07": "The Sheikh Abeid Amani Karume Day", "2015-04-26": "Union Celebrations", - "2015-05-01": "Worker's Day", + "2015-04-27": "Union Celebrations (observed)", + "2015-05-01": "International Workers' Day", "2015-07-07": "International Trade Fair", "2015-07-18": "Eid al-Fitr", - "2015-08-08": "Peasants Day", + "2015-07-19": "Eid al-Fitr", + "2015-07-20": "Eid al-Fitr (observed)", + "2015-08-08": "Peasants' Day", + "2015-08-10": "Peasants' Day (observed)", "2015-09-23": "Eid al-Adha", - "2015-10-14": "The Mwalimu Nyerere Day", + "2015-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2015-11-05": "John Pombe Magufuli Inauguration Day", "2015-12-09": "Independence and Republic Day", "2015-12-24": "Prophet's Birthday", "2015-12-25": "Christmas Day", "2015-12-26": "Boxing Day", + "2015-12-28": "Boxing Day (observed)", "2016-01-01": "New Year's Day", "2016-01-12": "Zanzibar Revolution Day", "2016-03-25": "Good Friday", @@ -371,30 +865,38 @@ "2016-03-28": "Easter Monday", "2016-04-07": "The Sheikh Abeid Amani Karume Day", "2016-04-26": "Union Celebrations", - "2016-05-01": "Worker's Day", + "2016-05-01": "International Workers' Day", + "2016-05-02": "International Workers' Day (observed)", "2016-07-07": "Eid al-Fitr; International Trade Fair", - "2016-08-08": "Peasants Day", + "2016-07-08": "Eid al-Fitr", + "2016-08-08": "Peasants' Day", "2016-09-16": "Eid al-Adha", - "2016-10-14": "The Mwalimu Nyerere Day", + "2016-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2016-12-09": "Independence and Republic Day", "2016-12-12": "Prophet's Birthday", "2016-12-25": "Christmas Day", "2016-12-26": "Boxing Day", + "2016-12-27": "Christmas Day (observed)", "2017-01-01": "New Year's Day", + "2017-01-02": "New Year's Day (observed)", "2017-01-12": "Zanzibar Revolution Day", "2017-04-07": "The Sheikh Abeid Amani Karume Day", "2017-04-14": "Good Friday", "2017-04-16": "Easter Sunday", "2017-04-17": "Easter Monday", "2017-04-26": "Union Celebrations", - "2017-05-01": "Worker's Day", + "2017-05-01": "International Workers' Day", "2017-06-26": "Eid al-Fitr", + "2017-06-27": "Eid al-Fitr", "2017-07-07": "International Trade Fair", - "2017-08-08": "Peasants Day", + "2017-08-08": "Peasants' Day", "2017-09-02": "Eid al-Adha", - "2017-10-14": "The Mwalimu Nyerere Day", + "2017-09-04": "Eid al-Adha (observed)", + "2017-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", + "2017-10-16": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race (observed)", "2017-12-01": "Prophet's Birthday", "2017-12-09": "Independence and Republic Day", + "2017-12-11": "Independence and Republic Day (observed)", "2017-12-25": "Christmas Day", "2017-12-26": "Boxing Day", "2018-01-01": "New Year's Day", @@ -403,52 +905,69 @@ "2018-04-01": "Easter Sunday", "2018-04-02": "Easter Monday", "2018-04-07": "The Sheikh Abeid Amani Karume Day", + "2018-04-09": "The Sheikh Abeid Amani Karume Day (observed)", "2018-04-26": "Union Celebrations", - "2018-05-01": "Worker's Day", + "2018-05-01": "International Workers' Day", "2018-06-15": "Eid al-Fitr", + "2018-06-16": "Eid al-Fitr", + "2018-06-18": "Eid al-Fitr (observed)", "2018-07-07": "International Trade Fair", - "2018-08-08": "Peasants Day", + "2018-07-09": "International Trade Fair (observed)", + "2018-08-08": "Peasants' Day", "2018-08-22": "Eid al-Adha", - "2018-10-14": "The Mwalimu Nyerere Day", + "2018-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", + "2018-10-15": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race (observed)", "2018-11-21": "Prophet's Birthday", "2018-12-09": "Independence and Republic Day", + "2018-12-10": "Independence and Republic Day (observed)", "2018-12-25": "Christmas Day", "2018-12-26": "Boxing Day", "2019-01-01": "New Year's Day", "2019-01-12": "Zanzibar Revolution Day", + "2019-01-14": "Zanzibar Revolution Day (observed)", "2019-04-07": "The Sheikh Abeid Amani Karume Day", + "2019-04-08": "The Sheikh Abeid Amani Karume Day (observed)", "2019-04-19": "Good Friday", "2019-04-21": "Easter Sunday", "2019-04-22": "Easter Monday", "2019-04-26": "Union Celebrations", - "2019-05-01": "Worker's Day", + "2019-05-01": "International Workers' Day", "2019-06-05": "Eid al-Fitr", + "2019-06-06": "Eid al-Fitr", "2019-07-07": "International Trade Fair", - "2019-08-08": "Peasants Day", + "2019-07-08": "International Trade Fair (observed)", + "2019-08-08": "Peasants' Day", "2019-08-13": "Eid al-Adha", - "2019-10-14": "The Mwalimu Nyerere Day", + "2019-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2019-11-10": "Prophet's Birthday", + "2019-11-11": "Prophet's Birthday (observed)", "2019-12-09": "Independence and Republic Day", "2019-12-25": "Christmas Day", "2019-12-26": "Boxing Day", "2020-01-01": "New Year's Day", "2020-01-12": "Zanzibar Revolution Day", + "2020-01-13": "Zanzibar Revolution Day (observed)", "2020-04-07": "The Sheikh Abeid Amani Karume Day", "2020-04-10": "Good Friday", "2020-04-12": "Easter Sunday", "2020-04-13": "Easter Monday", "2020-04-26": "Union Celebrations", - "2020-05-01": "Worker's Day", + "2020-04-27": "Union Celebrations (observed)", + "2020-05-01": "International Workers' Day", "2020-05-24": "Eid al-Fitr", + "2020-05-25": "Eid al-Fitr", + "2020-05-26": "Eid al-Fitr (observed)", "2020-07-07": "International Trade Fair", "2020-07-31": "Eid al-Adha", - "2020-08-08": "Peasants Day", - "2020-10-14": "The Mwalimu Nyerere Day", + "2020-08-08": "Peasants' Day", + "2020-08-10": "Peasants' Day (observed)", + "2020-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2020-10-28": "Tanzania General Election Day", "2020-10-29": "Prophet's Birthday", "2020-12-09": "Independence and Republic Day", "2020-12-25": "Christmas Day", "2020-12-26": "Boxing Day", + "2020-12-28": "Boxing Day (observed)", "2021-01-01": "New Year's Day", "2021-01-12": "Zanzibar Revolution Day", "2021-03-22": "John Pombe Magufuli's Funeral", @@ -458,31 +977,40 @@ "2021-04-05": "Easter Monday", "2021-04-07": "The Sheikh Abeid Amani Karume Day", "2021-04-26": "Union Celebrations", - "2021-05-01": "Worker's Day", + "2021-05-01": "International Workers' Day", + "2021-05-03": "International Workers' Day (observed)", "2021-05-14": "Eid al-Fitr", + "2021-05-15": "Eid al-Fitr", + "2021-05-17": "Eid al-Fitr (observed)", "2021-07-07": "International Trade Fair", "2021-07-21": "Eid al-Adha", - "2021-08-08": "Peasants Day", - "2021-10-14": "The Mwalimu Nyerere Day", + "2021-08-08": "Peasants' Day", + "2021-08-09": "Peasants' Day (observed)", + "2021-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2021-10-19": "Prophet's Birthday", "2021-12-09": "Independence and Republic Day", "2021-12-25": "Christmas Day", "2021-12-26": "Boxing Day", + "2021-12-27": "Boxing Day (observed); Christmas Day (observed)", "2022-01-01": "New Year's Day", + "2022-01-03": "New Year's Day (observed)", "2022-01-12": "Zanzibar Revolution Day", "2022-04-07": "The Sheikh Abeid Amani Karume Day", "2022-04-15": "Good Friday", "2022-04-17": "Easter Sunday", "2022-04-18": "Easter Monday", "2022-04-26": "Union Celebrations", - "2022-05-01": "Worker's Day", + "2022-05-01": "International Workers' Day", + "2022-05-02": "International Workers' Day (observed)", "2022-05-03": "Eid al-Fitr", + "2022-05-04": "Eid al-Fitr", "2022-07-07": "International Trade Fair", "2022-07-10": "Eid al-Adha", - "2022-08-08": "Peasants Day", + "2022-07-11": "Eid al-Adha (observed)", + "2022-08-08": "Peasants' Day", "2022-08-23": "National Population and Housing Census Day", "2022-10-09": "Prophet's Birthday", - "2022-10-14": "The Mwalimu Nyerere Day", + "2022-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2022-12-09": "Independence and Republic Day", "2022-12-25": "Christmas Day", "2022-12-26": "Boxing Day", @@ -492,13 +1020,14 @@ "2023-04-09": "Easter Sunday", "2023-04-10": "Easter Monday", "2023-04-22": "Eid al-Fitr", + "2023-04-23": "Eid al-Fitr", "2023-04-26": "Union Celebrations", - "2023-05-01": "Worker's Day", + "2023-05-01": "International Workers' Day", "2023-06-29": "Eid al-Adha", "2023-07-07": "International Trade Fair", - "2023-08-08": "Peasants Day", + "2023-08-08": "Peasants' Day", "2023-09-28": "Prophet's Birthday", - "2023-10-14": "The Mwalimu Nyerere Day", + "2023-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2023-12-09": "Independence and Republic Day", "2023-12-25": "Christmas Day", "2023-12-26": "Boxing Day", @@ -509,154 +1038,164 @@ "2024-04-01": "Easter Monday", "2024-04-07": "The Sheikh Abeid Amani Karume Day", "2024-04-10": "Eid al-Fitr", + "2024-04-11": "Eid al-Fitr", "2024-04-26": "Union Celebrations", - "2024-05-01": "Worker's Day", - "2024-06-16": "Eid al-Adha (estimated)", + "2024-05-01": "International Workers' Day", + "2024-06-17": "Eid al-Adha", "2024-07-07": "International Trade Fair", - "2024-08-08": "Peasants Day", - "2024-09-15": "Prophet's Birthday (estimated)", - "2024-10-14": "The Mwalimu Nyerere Day", + "2024-08-08": "Peasants' Day", + "2024-09-16": "Prophet's Birthday", + "2024-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2024-12-09": "Independence and Republic Day", "2024-12-25": "Christmas Day", "2024-12-26": "Boxing Day", "2025-01-01": "New Year's Day", "2025-01-12": "Zanzibar Revolution Day", - "2025-03-30": "Eid al-Fitr (estimated)", + "2025-03-31": "Eid al-Fitr", + "2025-04-01": "Eid al-Fitr", "2025-04-07": "The Sheikh Abeid Amani Karume Day", "2025-04-18": "Good Friday", "2025-04-20": "Easter Sunday", "2025-04-21": "Easter Monday", "2025-04-26": "Union Celebrations", - "2025-05-01": "Worker's Day", - "2025-06-06": "Eid al-Adha (estimated)", + "2025-05-01": "International Workers' Day", + "2025-06-07": "Eid al-Adha", "2025-07-07": "International Trade Fair", - "2025-08-08": "Peasants Day", - "2025-09-04": "Prophet's Birthday (estimated)", - "2025-10-14": "The Mwalimu Nyerere Day", + "2025-08-08": "Peasants' Day", + "2025-09-04": "Prophet's Birthday", + "2025-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2025-12-09": "Independence and Republic Day", "2025-12-25": "Christmas Day", "2025-12-26": "Boxing Day", "2026-01-01": "New Year's Day", "2026-01-12": "Zanzibar Revolution Day", "2026-03-20": "Eid al-Fitr (estimated)", + "2026-03-21": "Eid al-Fitr (estimated)", "2026-04-03": "Good Friday", "2026-04-05": "Easter Sunday", "2026-04-06": "Easter Monday", "2026-04-07": "The Sheikh Abeid Amani Karume Day", "2026-04-26": "Union Celebrations", - "2026-05-01": "Worker's Day", + "2026-05-01": "International Workers' Day", "2026-05-27": "Eid al-Adha (estimated)", "2026-07-07": "International Trade Fair", - "2026-08-08": "Peasants Day", + "2026-08-08": "Peasants' Day", "2026-08-25": "Prophet's Birthday (estimated)", - "2026-10-14": "The Mwalimu Nyerere Day", + "2026-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2026-12-09": "Independence and Republic Day", "2026-12-25": "Christmas Day", "2026-12-26": "Boxing Day", "2027-01-01": "New Year's Day", "2027-01-12": "Zanzibar Revolution Day", "2027-03-09": "Eid al-Fitr (estimated)", + "2027-03-10": "Eid al-Fitr (estimated)", "2027-03-26": "Good Friday", "2027-03-28": "Easter Sunday", "2027-03-29": "Easter Monday", "2027-04-07": "The Sheikh Abeid Amani Karume Day", "2027-04-26": "Union Celebrations", - "2027-05-01": "Worker's Day", + "2027-05-01": "International Workers' Day", "2027-05-16": "Eid al-Adha (estimated)", "2027-07-07": "International Trade Fair", - "2027-08-08": "Peasants Day", + "2027-08-08": "Peasants' Day", "2027-08-14": "Prophet's Birthday (estimated)", - "2027-10-14": "The Mwalimu Nyerere Day", + "2027-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2027-12-09": "Independence and Republic Day", "2027-12-25": "Christmas Day", "2027-12-26": "Boxing Day", "2028-01-01": "New Year's Day", "2028-01-12": "Zanzibar Revolution Day", "2028-02-26": "Eid al-Fitr (estimated)", + "2028-02-27": "Eid al-Fitr (estimated)", "2028-04-07": "The Sheikh Abeid Amani Karume Day", "2028-04-14": "Good Friday", "2028-04-16": "Easter Sunday", "2028-04-17": "Easter Monday", "2028-04-26": "Union Celebrations", - "2028-05-01": "Worker's Day", + "2028-05-01": "International Workers' Day", "2028-05-05": "Eid al-Adha (estimated)", "2028-07-07": "International Trade Fair", "2028-08-03": "Prophet's Birthday (estimated)", - "2028-08-08": "Peasants Day", - "2028-10-14": "The Mwalimu Nyerere Day", + "2028-08-08": "Peasants' Day", + "2028-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2028-12-09": "Independence and Republic Day", "2028-12-25": "Christmas Day", "2028-12-26": "Boxing Day", "2029-01-01": "New Year's Day", "2029-01-12": "Zanzibar Revolution Day", "2029-02-14": "Eid al-Fitr (estimated)", + "2029-02-15": "Eid al-Fitr (estimated)", "2029-03-30": "Good Friday", "2029-04-01": "Easter Sunday", "2029-04-02": "Easter Monday", "2029-04-07": "The Sheikh Abeid Amani Karume Day", "2029-04-24": "Eid al-Adha (estimated)", "2029-04-26": "Union Celebrations", - "2029-05-01": "Worker's Day", + "2029-05-01": "International Workers' Day", "2029-07-07": "International Trade Fair", "2029-07-24": "Prophet's Birthday (estimated)", - "2029-08-08": "Peasants Day", - "2029-10-14": "The Mwalimu Nyerere Day", + "2029-08-08": "Peasants' Day", + "2029-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2029-12-09": "Independence and Republic Day", "2029-12-25": "Christmas Day", "2029-12-26": "Boxing Day", "2030-01-01": "New Year's Day", "2030-01-12": "Zanzibar Revolution Day", "2030-02-04": "Eid al-Fitr (estimated)", + "2030-02-05": "Eid al-Fitr (estimated)", "2030-04-07": "The Sheikh Abeid Amani Karume Day", "2030-04-13": "Eid al-Adha (estimated)", "2030-04-19": "Good Friday", "2030-04-21": "Easter Sunday", "2030-04-22": "Easter Monday", "2030-04-26": "Union Celebrations", - "2030-05-01": "Worker's Day", + "2030-05-01": "International Workers' Day", "2030-07-07": "International Trade Fair", "2030-07-13": "Prophet's Birthday (estimated)", - "2030-08-08": "Peasants Day", - "2030-10-14": "The Mwalimu Nyerere Day", + "2030-08-08": "Peasants' Day", + "2030-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2030-12-09": "Independence and Republic Day", "2030-12-25": "Christmas Day", "2030-12-26": "Boxing Day", "2031-01-01": "New Year's Day", "2031-01-12": "Zanzibar Revolution Day", "2031-01-24": "Eid al-Fitr (estimated)", + "2031-01-25": "Eid al-Fitr (estimated)", "2031-04-02": "Eid al-Adha (estimated)", "2031-04-07": "The Sheikh Abeid Amani Karume Day", "2031-04-11": "Good Friday", "2031-04-13": "Easter Sunday", "2031-04-14": "Easter Monday", "2031-04-26": "Union Celebrations", - "2031-05-01": "Worker's Day", + "2031-05-01": "International Workers' Day", "2031-07-02": "Prophet's Birthday (estimated)", "2031-07-07": "International Trade Fair", - "2031-08-08": "Peasants Day", - "2031-10-14": "The Mwalimu Nyerere Day", + "2031-08-08": "Peasants' Day", + "2031-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2031-12-09": "Independence and Republic Day", "2031-12-25": "Christmas Day", "2031-12-26": "Boxing Day", "2032-01-01": "New Year's Day", "2032-01-12": "Zanzibar Revolution Day", "2032-01-14": "Eid al-Fitr (estimated)", + "2032-01-15": "Eid al-Fitr (estimated)", "2032-03-22": "Eid al-Adha (estimated)", "2032-03-26": "Good Friday", "2032-03-28": "Easter Sunday", "2032-03-29": "Easter Monday", "2032-04-07": "The Sheikh Abeid Amani Karume Day", "2032-04-26": "Union Celebrations", - "2032-05-01": "Worker's Day", + "2032-05-01": "International Workers' Day", "2032-06-20": "Prophet's Birthday (estimated)", "2032-07-07": "International Trade Fair", - "2032-08-08": "Peasants Day", - "2032-10-14": "The Mwalimu Nyerere Day", + "2032-08-08": "Peasants' Day", + "2032-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2032-12-09": "Independence and Republic Day", "2032-12-25": "Christmas Day", "2032-12-26": "Boxing Day", "2033-01-01": "New Year's Day", "2033-01-02": "Eid al-Fitr (estimated)", + "2033-01-03": "Eid al-Fitr (estimated)", "2033-01-12": "Zanzibar Revolution Day", "2033-03-11": "Eid al-Adha (estimated)", "2033-04-07": "The Sheikh Abeid Amani Karume Day", @@ -664,13 +1203,14 @@ "2033-04-17": "Easter Sunday", "2033-04-18": "Easter Monday", "2033-04-26": "Union Celebrations", - "2033-05-01": "Worker's Day", + "2033-05-01": "International Workers' Day", "2033-06-09": "Prophet's Birthday (estimated)", "2033-07-07": "International Trade Fair", - "2033-08-08": "Peasants Day", - "2033-10-14": "The Mwalimu Nyerere Day", + "2033-08-08": "Peasants' Day", + "2033-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2033-12-09": "Independence and Republic Day", "2033-12-23": "Eid al-Fitr (estimated)", + "2033-12-24": "Eid al-Fitr (estimated)", "2033-12-25": "Christmas Day", "2033-12-26": "Boxing Day", "2034-01-01": "New Year's Day", @@ -680,13 +1220,14 @@ "2034-04-09": "Easter Sunday", "2034-04-10": "Easter Monday", "2034-04-26": "Union Celebrations", - "2034-05-01": "Worker's Day", + "2034-05-01": "International Workers' Day", "2034-05-30": "Prophet's Birthday (estimated)", "2034-07-07": "International Trade Fair", - "2034-08-08": "Peasants Day", - "2034-10-14": "The Mwalimu Nyerere Day", + "2034-08-08": "Peasants' Day", + "2034-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2034-12-09": "Independence and Republic Day", "2034-12-12": "Eid al-Fitr (estimated)", + "2034-12-13": "Eid al-Fitr (estimated)", "2034-12-25": "Christmas Day", "2034-12-26": "Boxing Day", "2035-01-01": "New Year's Day", @@ -697,12 +1238,13 @@ "2035-03-26": "Easter Monday", "2035-04-07": "The Sheikh Abeid Amani Karume Day", "2035-04-26": "Union Celebrations", - "2035-05-01": "Worker's Day", + "2035-05-01": "International Workers' Day", "2035-05-20": "Prophet's Birthday (estimated)", "2035-07-07": "International Trade Fair", - "2035-08-08": "Peasants Day", - "2035-10-14": "The Mwalimu Nyerere Day", + "2035-08-08": "Peasants' Day", + "2035-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2035-12-01": "Eid al-Fitr (estimated)", + "2035-12-02": "Eid al-Fitr (estimated)", "2035-12-09": "Independence and Republic Day", "2035-12-25": "Christmas Day", "2035-12-26": "Boxing Day", @@ -714,12 +1256,13 @@ "2036-04-13": "Easter Sunday", "2036-04-14": "Easter Monday", "2036-04-26": "Union Celebrations", - "2036-05-01": "Worker's Day", + "2036-05-01": "International Workers' Day", "2036-05-08": "Prophet's Birthday (estimated)", "2036-07-07": "International Trade Fair", - "2036-08-08": "Peasants Day", - "2036-10-14": "The Mwalimu Nyerere Day", + "2036-08-08": "Peasants' Day", + "2036-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2036-11-19": "Eid al-Fitr (estimated)", + "2036-11-20": "Eid al-Fitr (estimated)", "2036-12-09": "Independence and Republic Day", "2036-12-25": "Christmas Day", "2036-12-26": "Boxing Day", @@ -732,11 +1275,12 @@ "2037-04-07": "The Sheikh Abeid Amani Karume Day", "2037-04-26": "Union Celebrations", "2037-04-28": "Prophet's Birthday (estimated)", - "2037-05-01": "Worker's Day", + "2037-05-01": "International Workers' Day", "2037-07-07": "International Trade Fair", - "2037-08-08": "Peasants Day", - "2037-10-14": "The Mwalimu Nyerere Day", + "2037-08-08": "Peasants' Day", + "2037-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2037-11-08": "Eid al-Fitr (estimated)", + "2037-11-09": "Eid al-Fitr (estimated)", "2037-12-09": "Independence and Republic Day", "2037-12-25": "Christmas Day", "2037-12-26": "Boxing Day", @@ -748,11 +1292,12 @@ "2038-04-23": "Good Friday", "2038-04-25": "Easter Sunday", "2038-04-26": "Easter Monday; Union Celebrations", - "2038-05-01": "Worker's Day", + "2038-05-01": "International Workers' Day", "2038-07-07": "International Trade Fair", - "2038-08-08": "Peasants Day", - "2038-10-14": "The Mwalimu Nyerere Day", + "2038-08-08": "Peasants' Day", + "2038-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2038-10-29": "Eid al-Fitr (estimated)", + "2038-10-30": "Eid al-Fitr (estimated)", "2038-12-09": "Independence and Republic Day", "2038-12-25": "Christmas Day", "2038-12-26": "Boxing Day", @@ -765,11 +1310,12 @@ "2039-04-10": "Easter Sunday", "2039-04-11": "Easter Monday", "2039-04-26": "Union Celebrations", - "2039-05-01": "Worker's Day", + "2039-05-01": "International Workers' Day", "2039-07-07": "International Trade Fair", - "2039-08-08": "Peasants Day", - "2039-10-14": "The Mwalimu Nyerere Day", + "2039-08-08": "Peasants' Day", + "2039-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2039-10-19": "Eid al-Fitr (estimated)", + "2039-10-20": "Eid al-Fitr (estimated)", "2039-12-09": "Independence and Republic Day", "2039-12-25": "Christmas Day", "2039-12-26": "Boxing Day; Eid al-Adha (estimated)", @@ -781,11 +1327,12 @@ "2040-04-02": "Easter Monday", "2040-04-07": "The Sheikh Abeid Amani Karume Day", "2040-04-26": "Union Celebrations", - "2040-05-01": "Worker's Day", + "2040-05-01": "International Workers' Day", "2040-07-07": "International Trade Fair", - "2040-08-08": "Peasants Day", + "2040-08-08": "Peasants' Day", "2040-10-07": "Eid al-Fitr (estimated)", - "2040-10-14": "The Mwalimu Nyerere Day", + "2040-10-08": "Eid al-Fitr (estimated)", + "2040-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2040-12-09": "Independence and Republic Day", "2040-12-14": "Eid al-Adha (estimated)", "2040-12-25": "Christmas Day", @@ -798,11 +1345,12 @@ "2041-04-21": "Easter Sunday", "2041-04-22": "Easter Monday", "2041-04-26": "Union Celebrations", - "2041-05-01": "Worker's Day", + "2041-05-01": "International Workers' Day", "2041-07-07": "International Trade Fair", - "2041-08-08": "Peasants Day", + "2041-08-08": "Peasants' Day", "2041-09-26": "Eid al-Fitr (estimated)", - "2041-10-14": "The Mwalimu Nyerere Day", + "2041-09-27": "Eid al-Fitr (estimated)", + "2041-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2041-12-04": "Eid al-Adha (estimated)", "2041-12-09": "Independence and Republic Day", "2041-12-25": "Christmas Day", @@ -814,11 +1362,12 @@ "2042-04-06": "Easter Sunday", "2042-04-07": "Easter Monday; The Sheikh Abeid Amani Karume Day", "2042-04-26": "Union Celebrations", - "2042-05-01": "Worker's Day", + "2042-05-01": "International Workers' Day", "2042-07-07": "International Trade Fair", - "2042-08-08": "Peasants Day", + "2042-08-08": "Peasants' Day", "2042-09-15": "Eid al-Fitr (estimated)", - "2042-10-14": "The Mwalimu Nyerere Day", + "2042-09-16": "Eid al-Fitr (estimated)", + "2042-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2042-11-23": "Eid al-Adha (estimated)", "2042-12-09": "Independence and Republic Day", "2042-12-25": "Christmas Day", @@ -831,11 +1380,12 @@ "2043-03-30": "Easter Monday", "2043-04-07": "The Sheikh Abeid Amani Karume Day", "2043-04-26": "Union Celebrations", - "2043-05-01": "Worker's Day", + "2043-05-01": "International Workers' Day", "2043-07-07": "International Trade Fair", - "2043-08-08": "Peasants Day", + "2043-08-08": "Peasants' Day", "2043-09-04": "Eid al-Fitr (estimated)", - "2043-10-14": "The Mwalimu Nyerere Day", + "2043-09-05": "Eid al-Fitr (estimated)", + "2043-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2043-11-12": "Eid al-Adha (estimated)", "2043-12-09": "Independence and Republic Day", "2043-12-25": "Christmas Day", @@ -848,11 +1398,12 @@ "2044-04-17": "Easter Sunday", "2044-04-18": "Easter Monday", "2044-04-26": "Union Celebrations", - "2044-05-01": "Worker's Day", + "2044-05-01": "International Workers' Day", "2044-07-07": "International Trade Fair", - "2044-08-08": "Peasants Day", + "2044-08-08": "Peasants' Day", "2044-08-24": "Eid al-Fitr (estimated)", - "2044-10-14": "The Mwalimu Nyerere Day", + "2044-08-25": "Eid al-Fitr (estimated)", + "2044-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2044-10-31": "Eid al-Adha (estimated)", "2044-12-09": "Independence and Republic Day", "2044-12-25": "Christmas Day", @@ -864,11 +1415,12 @@ "2045-04-09": "Easter Sunday", "2045-04-10": "Easter Monday", "2045-04-26": "Union Celebrations", - "2045-05-01": "Worker's Day", + "2045-05-01": "International Workers' Day", "2045-07-07": "International Trade Fair", - "2045-08-08": "Peasants Day", + "2045-08-08": "Peasants' Day", "2045-08-14": "Eid al-Fitr (estimated)", - "2045-10-14": "The Mwalimu Nyerere Day", + "2045-08-15": "Eid al-Fitr (estimated)", + "2045-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2045-10-21": "Eid al-Adha (estimated)", "2045-12-09": "Independence and Republic Day", "2045-12-25": "Christmas Day", @@ -881,12 +1433,13 @@ "2046-03-26": "Easter Monday", "2046-04-07": "The Sheikh Abeid Amani Karume Day", "2046-04-26": "Union Celebrations", - "2046-05-01": "Worker's Day", + "2046-05-01": "International Workers' Day", "2046-07-07": "International Trade Fair", "2046-08-03": "Eid al-Fitr (estimated)", - "2046-08-08": "Peasants Day", + "2046-08-04": "Eid al-Fitr (estimated)", + "2046-08-08": "Peasants' Day", "2046-10-10": "Eid al-Adha (estimated)", - "2046-10-14": "The Mwalimu Nyerere Day", + "2046-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2046-12-09": "Independence and Republic Day", "2046-12-25": "Christmas Day", "2046-12-26": "Boxing Day", @@ -898,12 +1451,13 @@ "2047-04-14": "Easter Sunday", "2047-04-15": "Easter Monday", "2047-04-26": "Union Celebrations", - "2047-05-01": "Worker's Day", + "2047-05-01": "International Workers' Day", "2047-07-07": "International Trade Fair", "2047-07-24": "Eid al-Fitr (estimated)", - "2047-08-08": "Peasants Day", + "2047-07-25": "Eid al-Fitr (estimated)", + "2047-08-08": "Peasants' Day", "2047-09-30": "Eid al-Adha (estimated)", - "2047-10-14": "The Mwalimu Nyerere Day", + "2047-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2047-12-09": "Independence and Republic Day", "2047-12-25": "Christmas Day", "2047-12-26": "Boxing Day", @@ -915,12 +1469,13 @@ "2048-04-06": "Easter Monday", "2048-04-07": "The Sheikh Abeid Amani Karume Day", "2048-04-26": "Union Celebrations", - "2048-05-01": "Worker's Day", + "2048-05-01": "International Workers' Day", "2048-07-07": "International Trade Fair", "2048-07-12": "Eid al-Fitr (estimated)", - "2048-08-08": "Peasants Day", + "2048-07-13": "Eid al-Fitr (estimated)", + "2048-08-08": "Peasants' Day", "2048-09-19": "Eid al-Adha (estimated)", - "2048-10-14": "The Mwalimu Nyerere Day", + "2048-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2048-12-09": "Independence and Republic Day", "2048-12-18": "Prophet's Birthday (estimated)", "2048-12-25": "Christmas Day", @@ -932,12 +1487,13 @@ "2049-04-18": "Easter Sunday", "2049-04-19": "Easter Monday", "2049-04-26": "Union Celebrations", - "2049-05-01": "Worker's Day", + "2049-05-01": "International Workers' Day", "2049-07-01": "Eid al-Fitr (estimated)", + "2049-07-02": "Eid al-Fitr (estimated)", "2049-07-07": "International Trade Fair", - "2049-08-08": "Peasants Day", + "2049-08-08": "Peasants' Day", "2049-09-08": "Eid al-Adha (estimated)", - "2049-10-14": "The Mwalimu Nyerere Day", + "2049-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2049-12-07": "Prophet's Birthday (estimated)", "2049-12-09": "Independence and Republic Day", "2049-12-25": "Christmas Day", @@ -949,12 +1505,13 @@ "2050-04-10": "Easter Sunday", "2050-04-11": "Easter Monday", "2050-04-26": "Union Celebrations", - "2050-05-01": "Worker's Day", + "2050-05-01": "International Workers' Day", "2050-06-20": "Eid al-Fitr (estimated)", + "2050-06-21": "Eid al-Fitr (estimated)", "2050-07-07": "International Trade Fair", - "2050-08-08": "Peasants Day", + "2050-08-08": "Peasants' Day", "2050-08-28": "Eid al-Adha (estimated)", - "2050-10-14": "The Mwalimu Nyerere Day", + "2050-10-14": "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race", "2050-11-26": "Prophet's Birthday (estimated)", "2050-12-09": "Independence and Republic Day", "2050-12-25": "Christmas Day", diff --git a/tests/countries/test_tanzania.py b/tests/countries/test_tanzania.py index c3586ad81a..2280494ad9 100644 --- a/tests/countries/test_tanzania.py +++ b/tests/countries/test_tanzania.py @@ -20,17 +20,22 @@ class TestTanzania(CommonCountryTests, TestCase): @classmethod def setUpClass(cls): - super().setUpClass(Tanzania, years=range(1994, 2077)) + years = range(1965, 2050) + super().setUpClass(Tanzania, years=years, years_non_observed=years) + cls.bank_holidays = Tanzania(categories=BANK, years=years) + cls.no_estimated_holidays = Tanzania(years=years, islamic_show_estimated=False) def test_country_aliases(self): self.assertAliases(Tanzania, TZ, TZA) def test_no_holidays(self): - self.assertNoHolidays(Tanzania(years=1993)) - self.assertNoHolidays(Tanzania(years=1993, categories=BANK)) + self.assertNoHolidays( + Tanzania(categories=self.test_class.supported_categories, years=1964) + ) def test_special_holidays(self): self.assertHoliday( + "1967-12-01", "2002-08-25", "2015-11-05", "2020-10-28", @@ -39,117 +44,315 @@ def test_special_holidays(self): "2022-08-23", ) - def test_2018_all(self): - self.assertHolidays( - Tanzania(categories=(BANK, PUBLIC), years=2018), - ("2018-01-01", "Mwaka Mpya"), - ("2018-01-12", "Mapinduzi ya Zanzibar"), - ("2018-03-30", "Ijumaa Kuu"), - ("2018-04-01", "Sikukuu ya Pasaka"), - ("2018-04-02", "Jumatatu ya Pasaka"), - ( - "2018-04-07", - ( - "Siku ya kumbukumbu ya Rais wa Kwanza wa Serikali ya Mapinduzi Zanzibar " - "Sheikh Abeid Amani Karume" - ), - ), - ("2018-04-26", "Muungano wa Tanganyika na Zanzibar"), - ("2018-05-01", "Sikukuu ya Wafanyakazi"), - ("2018-06-15", "Eid El-Fitry"), - ("2018-07-07", "Sabasaba"), - ("2018-08-08", "Siku ya Wakulima"), - ("2018-08-22", "Eid El-Hajj"), - ("2018-10-14", "Kumbukumbu ya Mwalimu Nyerere"), - ("2018-11-21", "Maulidi"), - ("2018-12-09", "Uhuru na Jamhuri"), - ("2018-12-25", "Kuzaliwa Kristo"), - ("2018-12-26", "Siku ya Kupeana Zawadi"), - ) - - def test_2020_all(self): - self.assertHolidays( - Tanzania(categories=(BANK, PUBLIC), years=2020), - ("2020-01-01", "Mwaka Mpya"), - ("2020-01-12", "Mapinduzi ya Zanzibar"), - ( - "2020-04-07", - ( - "Siku ya kumbukumbu ya Rais wa Kwanza wa Serikali ya Mapinduzi Zanzibar " - "Sheikh Abeid Amani Karume" - ), - ), - ("2020-04-10", "Ijumaa Kuu"), - ("2020-04-12", "Sikukuu ya Pasaka"), - ("2020-04-13", "Jumatatu ya Pasaka"), - ("2020-04-26", "Muungano wa Tanganyika na Zanzibar"), - ("2020-05-01", "Sikukuu ya Wafanyakazi"), - ("2020-05-24", "Eid El-Fitry"), - ("2020-07-07", "Sabasaba"), - ("2020-07-31", "Eid El-Hajj"), - ("2020-08-08", "Siku ya Wakulima"), - ("2020-10-14", "Kumbukumbu ya Mwalimu Nyerere"), - ("2020-10-28", "Sikukuu ya Uchaguzi Mkuu wa Tanzania"), - ("2020-10-29", "Maulidi"), - ("2020-12-09", "Uhuru na Jamhuri"), - ("2020-12-25", "Kuzaliwa Kristo"), - ("2020-12-26", "Siku ya Kupeana Zawadi"), - ) - - def test_2021_all(self): - self.assertHolidays( - Tanzania(categories=(BANK, PUBLIC), years=2021), - ("2021-01-01", "Mwaka Mpya"), - ("2021-01-12", "Mapinduzi ya Zanzibar"), - ("2021-03-22", "Mazishi cha John Pombe Magufuli"), - ("2021-03-25", "Mazishi cha John Pombe Magufuli"), - ("2021-04-02", "Ijumaa Kuu"), - ("2021-04-04", "Sikukuu ya Pasaka"), - ("2021-04-05", "Jumatatu ya Pasaka"), - ( - "2021-04-07", - ( - "Siku ya kumbukumbu ya Rais wa Kwanza wa Serikali ya Mapinduzi Zanzibar " - "Sheikh Abeid Amani Karume" - ), - ), - ("2021-04-26", "Muungano wa Tanganyika na Zanzibar"), - ("2021-05-01", "Sikukuu ya Wafanyakazi"), - ("2021-05-14", "Eid El-Fitry"), - ("2021-07-07", "Sabasaba"), - ("2021-07-21", "Eid El-Hajj"), - ("2021-08-08", "Siku ya Wakulima"), - ("2021-10-14", "Kumbukumbu ya Mwalimu Nyerere"), - ("2021-10-19", "Maulidi"), - ("2021-12-09", "Uhuru na Jamhuri"), - ("2021-12-25", "Kuzaliwa Kristo"), - ("2021-12-26", "Siku ya Kupeana Zawadi"), + def test_new_years_day(self): + name = "Mwaka Mpya" + self.assertHolidayName( + name, (f"{year}-01-01" for year in (*range(1965, 1967), *range(1987, 2050))) + ) + self.assertNoHolidayName(name, range(1967, 1987)) + obs_dt = ( + "2012-01-02", + "2017-01-02", + "2022-01-03", + ) + self.assertHolidayName(f"Badala ya {name}", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_zanzibar_revolution_day(self): + name = "Mapinduzi ya Zanzibar" + self.assertHolidayName(name, (f"{year}-01-12" for year in range(1965, 2050))) + obs_dt = ( + "2014-01-13", + "2019-01-14", + "2020-01-13", + ) + self.assertHolidayName(f"Badala ya {name}", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_party_founding_day(self): + name_asp = "Kuzaliwa kwa ASP" + name_ccm = "Kuzaliwa kwa Chama cha Mapinduzi" + self.assertHolidayName(name_asp, (f"{year}-02-05" for year in range(1973, 1977))) + self.assertHolidayName(name_ccm, (f"{year}-02-05" for year in range(1977, 1994))) + self.assertNoHolidayName(name_asp, range(1965, 1973), range(1977, 2050)) + self.assertNoHolidayName(name_ccm, range(1965, 1977), range(1994, 2050)) + + def test_sheikh_abeid_amani_karume_day(self): + name = ( + "Siku ya kumbukumbu ya Rais wa Kwanza wa Serikali ya " + "Mapinduzi Zanzibar Sheikh Abeid Amani Karume" + ) + self.assertHolidayName(name, (f"{year}-04-07" for year in range(2006, 2050))) + self.assertNoHolidayName(name, range(1965, 2006)) + obs_dt = ( + "2012-04-10", + "2013-04-08", + "2018-04-09", + "2019-04-08", + ) + self.assertHolidayName(f"Badala ya {name}", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_good_friday(self): + name = "Ijumaa Kuu" + self.assertHolidayName( + name, + "2020-04-10", + "2021-04-02", + "2022-04-15", + "2023-04-07", + "2024-03-29", + "2025-04-18", + ) + self.assertHolidayName(name, range(1965, 2050)) + + def test_easter_sunday(self): + name = "Sikukuu ya Pasaka" + self.assertHolidayName( + name, + self.bank_holidays, + "2020-04-12", + "2021-04-04", + "2022-04-17", + "2023-04-09", + "2024-03-31", + "2025-04-20", + ) + self.assertHolidayName(name, self.bank_holidays, range(1965, 2050)) + self.assertNoHolidayName(name, range(1965, 2050)) + + def test_easter_monday(self): + name = "Jumatatu ya Pasaka" + self.assertHolidayName( + name, + "2020-04-13", + "2021-04-05", + "2022-04-18", + "2023-04-10", + "2024-04-01", + "2025-04-21", + ) + self.assertHolidayName(name, range(1965, 2050)) + + def test_union_celebrations(self): + name_day = "Sikukuu ya Muungano" + name_celebrations = "Muungano wa Tanzania" + self.assertHolidayName(name_day, (f"{year}-04-26" for year in range(1965, 1991))) + self.assertHolidayName(name_celebrations, (f"{year}-04-26" for year in range(1991, 2050))) + self.assertNoHolidayName(name_day, range(1991, 2050)) + self.assertNoHolidayName(name_celebrations, range(1965, 1991)) + obs_dt = ( + "2008-04-28", + "2009-04-27", + "2014-04-28", + "2015-04-27", + "2020-04-27", + ) + self.assertHolidayName(f"Badala ya {name_celebrations}", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_international_workers_day(self): + name = "Sikukuu ya Wafanyakazi Ulimwenguni" + self.assertHolidayName(name, (f"{year}-05-01" for year in range(1965, 2050))) + obs_dt = ( + "2010-05-03", + "2011-05-02", + "2016-05-02", + "2021-05-03", + "2022-05-02", + ) + self.assertHolidayName(f"Badala ya {name}", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_international_trade_fair_and_peasants_day(self): + name_1965 = "Saba Saba" + name_1977 = "Sikukuu ya Wakulima" + name_1994 = "Sabasaba" + + self.assertHolidayName(name_1965, (f"{year}-07-07" for year in range(1965, 1977))) + self.assertHolidayName( + name_1977, + (f"{year}-07-07" for year in range(1977, 1994)), + (f"{year}-08-08" for year in range(1995, 2050)), + ) + self.assertHolidayName(name_1994, (f"{year}-07-07" for year in range(1994, 2050))) + self.assertNoHolidayName(name_1965, range(1977, 2050)) + self.assertNoHolidayName(name_1977, range(1965, 1977), 1994) + self.assertNoHolidayName(name_1994, range(1965, 1994)) + + obs_dt_jul7 = ( + "2007-07-09", + "2012-07-09", + "2013-07-08", + "2018-07-09", + "2019-07-08", + ) + self.assertHolidayName(f"Badala ya {name_1994}", obs_dt_jul7) + + obs_dt_aug8 = ( + "2009-08-10", + "2010-08-09", + "2015-08-10", + "2020-08-10", + "2021-08-09", + ) + self.assertHolidayName(f"Badala ya {name_1977}", obs_dt_aug8) + self.assertNoNonObservedHoliday(obs_dt_jul7, obs_dt_aug8) + + def test_the_mwalimu_nyerere_day_and_the_climax_of_the_uhuru_torch_race(self): + name = "Kumbukumbu ya Mwalimu Nyerere na Kilele cha mbio za Mwenge" + self.assertHolidayName(name, (f"{year}-10-14" for year in range(2002, 2050))) + self.assertNoHolidayName(name, range(1965, 2002)) + obs_dt = ( + "2006-10-16", + "2007-10-15", + "2012-10-15", + "2017-10-16", + "2018-10-15", + ) + self.assertHolidayName(f"Badala ya {name}", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_independence_and_republic_day(self): + name = "Uhuru na Jamhuri" + self.assertHolidayName(name, (f"{year}-12-09" for year in range(1965, 2050))) + obs_dt = ( + "2006-12-11", + "2007-12-10", + "2012-12-10", + "2017-12-11", + "2018-12-10", + ) + self.assertHolidayName(f"Badala ya {name}", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_christmas_day(self): + name = "Kuzaliwa Kristo" + self.assertHolidayName(name, (f"{year}-12-25" for year in range(1965, 2050))) + obs_dt = ( + "1994-12-27", + "2005-12-27", + "2010-12-27", + "2011-12-27", + "2016-12-27", + "2021-12-27", + ) + self.assertHolidayName(f"Badala ya {name}", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_boxing_day(self): + name = "Siku ya Kupeana Zawadi" + self.assertHolidayName( + name, (f"{year}-12-26" for year in (*range(1965, 1966), *range(1993, 2050))) + ) + self.assertNoHolidayName(name, range(1966, 1993)) + obs_dt = ( + "2009-12-28", + "2010-12-27", + "2015-12-28", + "2020-12-28", + "2021-12-27", + ) + self.assertHolidayName(f"Badala ya {name}", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_eid_al_fitr(self): + name = "Eid El-Fitri" + self.assertHolidayName( + name, + "1965-02-03", + "1965-02-04", + "2020-05-24", + "2020-05-25", + "2021-05-14", + "2021-05-15", + "2022-05-03", + "2022-05-04", + "2023-04-22", + "2023-04-23", + "2024-04-10", + "2024-04-11", + "2025-03-31", + "2025-04-01", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1965, 2050)) + obs_dt = ( + "2018-06-18", + "2020-05-26", + "2021-05-17", + ) + self.assertHolidayName(f"Badala ya {name}", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_eid_al_adha(self): + name = "Eid El Hajj" + self.assertHolidayName( + name, + "1965-04-13", + "1965-04-14", + "2020-07-31", + "2021-07-21", + "2022-07-10", + "2023-06-29", + "2024-06-17", + "2025-06-07", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1965, 2050)) + obs_dt = ( + "2014-10-06", + "2017-09-04", + "2022-07-11", + ) + self.assertHolidayName(f"Badala ya {name}", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_prophets_birthday(self): + name = "Maulidi" + self.assertHolidayName( + name, + "1965-07-12", + "2020-10-29", + "2021-10-19", + "2022-10-09", + "2023-09-28", + "2024-09-16", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(1965, 2050)) + obs_dt = ( + "2015-01-05", + "2019-11-11", ) + self.assertHolidayName(f"Badala ya {name}", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) def test_2022_all(self): self.assertHolidays( Tanzania(categories=(BANK, PUBLIC), years=2022), ("2022-01-01", "Mwaka Mpya"), + ("2022-01-03", "Badala ya Mwaka Mpya"), ("2022-01-12", "Mapinduzi ya Zanzibar"), ( "2022-04-07", ( - "Siku ya kumbukumbu ya Rais wa Kwanza wa Serikali ya Mapinduzi Zanzibar " - "Sheikh Abeid Amani Karume" + "Siku ya kumbukumbu ya Rais wa Kwanza wa Serikali ya " + "Mapinduzi Zanzibar Sheikh Abeid Amani Karume" ), ), ("2022-04-15", "Ijumaa Kuu"), ("2022-04-17", "Sikukuu ya Pasaka"), ("2022-04-18", "Jumatatu ya Pasaka"), - ("2022-04-26", "Muungano wa Tanganyika na Zanzibar"), - ("2022-05-01", "Sikukuu ya Wafanyakazi"), - ("2022-05-03", "Eid El-Fitry"), + ("2022-04-26", "Muungano wa Tanzania"), + ("2022-05-01", "Sikukuu ya Wafanyakazi Ulimwenguni"), + ("2022-05-02", "Badala ya Sikukuu ya Wafanyakazi Ulimwenguni"), + ("2022-05-03", "Eid El-Fitri"), + ("2022-05-04", "Eid El-Fitri"), ("2022-07-07", "Sabasaba"), - ("2022-07-10", "Eid El-Hajj"), - ("2022-08-08", "Siku ya Wakulima"), + ("2022-07-10", "Eid El Hajj"), + ("2022-07-11", "Badala ya Eid El Hajj"), + ("2022-08-08", "Sikukuu ya Wakulima"), ("2022-08-23", "Siku ya Sensa ya Kitaifa ya Watu na Makazi"), ("2022-10-09", "Maulidi"), - ("2022-10-14", "Kumbukumbu ya Mwalimu Nyerere"), + ("2022-10-14", "Kumbukumbu ya Mwalimu Nyerere na Kilele cha mbio za Mwenge"), ("2022-12-09", "Uhuru na Jamhuri"), ("2022-12-25", "Kuzaliwa Kristo"), ("2022-12-26", "Siku ya Kupeana Zawadi"), @@ -162,20 +365,21 @@ def test_l10n_default(self): ( "2023-04-07", ( - "Ijumaa Kuu; Siku ya kumbukumbu ya Rais wa Kwanza wa Serikali " - "ya Mapinduzi Zanzibar Sheikh Abeid Amani Karume" + "Ijumaa Kuu; Siku ya kumbukumbu ya Rais wa Kwanza wa Serikali ya " + "Mapinduzi Zanzibar Sheikh Abeid Amani Karume" ), ), ("2023-04-09", "Sikukuu ya Pasaka"), ("2023-04-10", "Jumatatu ya Pasaka"), - ("2023-04-22", "Eid El-Fitry"), - ("2023-04-26", "Muungano wa Tanganyika na Zanzibar"), - ("2023-05-01", "Sikukuu ya Wafanyakazi"), - ("2023-06-29", "Eid El-Hajj"), + ("2023-04-22", "Eid El-Fitri"), + ("2023-04-23", "Eid El-Fitri"), + ("2023-04-26", "Muungano wa Tanzania"), + ("2023-05-01", "Sikukuu ya Wafanyakazi Ulimwenguni"), + ("2023-06-29", "Eid El Hajj"), ("2023-07-07", "Sabasaba"), - ("2023-08-08", "Siku ya Wakulima"), + ("2023-08-08", "Sikukuu ya Wakulima"), ("2023-09-28", "Maulidi"), - ("2023-10-14", "Kumbukumbu ya Mwalimu Nyerere"), + ("2023-10-14", "Kumbukumbu ya Mwalimu Nyerere na Kilele cha mbio za Mwenge"), ("2023-12-09", "Uhuru na Jamhuri"), ("2023-12-25", "Kuzaliwa Kristo"), ("2023-12-26", "Siku ya Kupeana Zawadi"), @@ -190,13 +394,14 @@ def test_l10n_en_us(self): ("2023-04-09", "Easter Sunday"), ("2023-04-10", "Easter Monday"), ("2023-04-22", "Eid al-Fitr"), + ("2023-04-23", "Eid al-Fitr"), ("2023-04-26", "Union Celebrations"), - ("2023-05-01", "Worker's Day"), + ("2023-05-01", "International Workers' Day"), ("2023-06-29", "Eid al-Adha"), ("2023-07-07", "International Trade Fair"), - ("2023-08-08", "Peasants Day"), + ("2023-08-08", "Peasants' Day"), ("2023-09-28", "Prophet's Birthday"), - ("2023-10-14", "The Mwalimu Nyerere Day"), + ("2023-10-14", "The Mwalimu Nyerere Day and Climax of the Uhuru Torch Race"), ("2023-12-09", "Independence and Republic Day"), ("2023-12-25", "Christmas Day"), ("2023-12-26", "Boxing Day"), From 98de7d51dd4f11bb19fab474d3dd4d09ae62ed20 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Aug 2025 08:35:29 -0700 Subject: [PATCH 33/48] Bump coverage from 7.10.4 to 7.10.5 (#2866) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/tests.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/tests.txt b/requirements/tests.txt index c0f1f08a09..bfddc2152f 100644 --- a/requirements/tests.txt +++ b/requirements/tests.txt @@ -1,6 +1,6 @@ # Test requirements. -coverage==7.10.4 +coverage==7.10.5 importlib-metadata==8.7.0; python_version < '3.10' numpy<2.1.0; python_version < '3.10' numpy==2.2.6; python_version == '3.10' From 446b01a2cb17f31d57d22023bad279bea26701a7 Mon Sep 17 00:00:00 2001 From: ~Jhellico Date: Thu, 28 Aug 2025 18:46:49 +0300 Subject: [PATCH 34/48] Update Georgia holidays: add August 29, 2025 special holiday (#2863) --- README.md | 2 +- holidays/countries/georgia.py | 16 +++++++++------- holidays/locale/en_US/LC_MESSAGES/GE.po | 10 +++++++--- holidays/locale/ka/LC_MESSAGES/GE.po | 10 +++++++--- holidays/locale/uk/LC_MESSAGES/GE.po | 10 +++++++--- snapshots/countries/GE_COMMON.json | 3 ++- tests/countries/test_georgia.py | 15 +++++++++------ 7 files changed, 42 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index d97aa369b3..4d91afad62 100644 --- a/README.md +++ b/README.md @@ -704,7 +704,7 @@ any) in brackets, available languages and additional holiday categories. All cou GE en_US, ka, uk -GOVERNMENT + Germany diff --git a/holidays/countries/georgia.py b/holidays/countries/georgia.py index ad43bd4037..4423bc9e64 100644 --- a/holidays/countries/georgia.py +++ b/holidays/countries/georgia.py @@ -12,9 +12,8 @@ from gettext import gettext as tr -from holidays.calendars.gregorian import MAY +from holidays.calendars.gregorian import MAY, AUG from holidays.calendars.julian import JULIAN_CALENDAR -from holidays.constants import GOVERNMENT, PUBLIC from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays from holidays.holiday_base import HolidayBase @@ -29,7 +28,6 @@ class Georgia(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid """ country = "GE" - supported_categories = (GOVERNMENT, PUBLIC) default_language = "ka" supported_languages = ("en_US", "ka", "uk") start_year = 1991 @@ -109,10 +107,14 @@ class GeorgiaStaticHolidays: """Georgia special holidays. References: - * + * [Decree 167 of 15/05/2024](https://web.archive.org/web/20240620045954/https://www.matsne.gov.ge/ka/document/view/6173967?publication=0) + * [Decree 381 of 25/08/2025](https://archive.org/details/matsne-6612161-0) """ - special_government_holidays = { - # Day of Family Sanctity and Respect for Parents. - 2024: (MAY, 17, tr("ოჯახის სიწმინდისა და მშობლების პატივისცემის დღე")), + # Public Holiday. + public_holiday = tr("უქმე დღე") + + special_public_holidays = { + 2024: (MAY, 17, public_holiday), + 2025: (AUG, 29, public_holiday), } diff --git a/holidays/locale/en_US/LC_MESSAGES/GE.po b/holidays/locale/en_US/LC_MESSAGES/GE.po index fbae43e9ef..ff3ec2945e 100644 --- a/holidays/locale/en_US/LC_MESSAGES/GE.po +++ b/holidays/locale/en_US/LC_MESSAGES/GE.po @@ -14,10 +14,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.50\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-07-18 17:31+0300\n" -"PO-Revision-Date: 2024-05-23 11:01+0700\n" -"Last-Translator: PPsyrius \n" +"PO-Revision-Date: 2025-08-28 01:04+0300\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: en_US\n" "MIME-Version: 1.0\n" @@ -94,3 +94,7 @@ msgstr "Holiday of Svetitskhovloba, Robe of Jesus" #. Saint George's Day. msgid "გიორგობა" msgstr "Saint George's Day" + +#. Public Holiday. +msgid "უქმე დღე" +msgstr "Public Holiday" diff --git a/holidays/locale/ka/LC_MESSAGES/GE.po b/holidays/locale/ka/LC_MESSAGES/GE.po index 22d2fbe71d..c978febd0b 100644 --- a/holidays/locale/ka/LC_MESSAGES/GE.po +++ b/holidays/locale/ka/LC_MESSAGES/GE.po @@ -14,10 +14,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.50\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-07-18 17:31+0300\n" -"PO-Revision-Date: 2024-05-23 11:01+0700\n" -"Last-Translator: PPsyrius \n" +"PO-Revision-Date: 2025-08-28 01:04+0300\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: ka\n" "MIME-Version: 1.0\n" @@ -94,3 +94,7 @@ msgstr "" #. Saint George's Day. msgid "გიორგობა" msgstr "" + +#. Public Holiday. +msgid "უქმე დღე" +msgstr "" diff --git a/holidays/locale/uk/LC_MESSAGES/GE.po b/holidays/locale/uk/LC_MESSAGES/GE.po index 07bd340dcf..5e52ed9bfb 100644 --- a/holidays/locale/uk/LC_MESSAGES/GE.po +++ b/holidays/locale/uk/LC_MESSAGES/GE.po @@ -14,10 +14,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.50\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-07-18 17:31+0300\n" -"PO-Revision-Date: 2024-05-23 11:01+0700\n" -"Last-Translator: PPsyrius \n" +"PO-Revision-Date: 2025-08-28 01:04+0300\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: uk\n" "MIME-Version: 1.0\n" @@ -94,3 +94,7 @@ msgstr "Свято Светіцховлоба, Ризи Господньої" #. Saint George's Day. msgid "გიორგობა" msgstr "День Святого Георгія" + +#. Public Holiday. +msgid "უქმე დღე" +msgstr "Вихідний день" diff --git a/snapshots/countries/GE_COMMON.json b/snapshots/countries/GE_COMMON.json index 24cac83769..2a807fa4e3 100644 --- a/snapshots/countries/GE_COMMON.json +++ b/snapshots/countries/GE_COMMON.json @@ -569,7 +569,7 @@ "2024-05-06": "Easter Monday", "2024-05-09": "Day of Victory over Fascism", "2024-05-12": "Saint Andrew's Day", - "2024-05-17": "Day of Family Sanctity and Respect for Parents", + "2024-05-17": "Public Holiday", "2024-05-26": "Independence Day", "2024-08-28": "Dormition of the Mother of God", "2024-10-14": "Holiday of Svetitskhovloba, Robe of Jesus", @@ -590,6 +590,7 @@ "2025-05-17": "Day of Family Sanctity and Respect for Parents", "2025-05-26": "Independence Day", "2025-08-28": "Dormition of the Mother of God", + "2025-08-29": "Public Holiday", "2025-10-14": "Holiday of Svetitskhovloba, Robe of Jesus", "2025-11-23": "Saint George's Day", "2026-01-01": "New Year's Day", diff --git a/tests/countries/test_georgia.py b/tests/countries/test_georgia.py index 8e612745af..ae6cd3f975 100644 --- a/tests/countries/test_georgia.py +++ b/tests/countries/test_georgia.py @@ -12,7 +12,6 @@ from unittest import TestCase -from holidays.constants import GOVERNMENT from holidays.countries.georgia import Georgia, GE, GEO from tests.common import CommonCountryTests @@ -28,6 +27,12 @@ def test_country_aliases(self): def test_no_holidays(self): self.assertNoHolidays(Georgia(years=1990)) + def test_special_holidays(self): + self.assertHoliday( + "2024-05-17", + "2025-08-29", + ) + def test_new_years_day(self): self.assertHolidayName( "ახალი წელი", @@ -121,11 +126,6 @@ def test_family_sanctity_day(self): self.assertHolidayName(name, (f"{year}-05-17" for year in range(2025, 2050))) self.assertNoHolidayName(name, range(1991, 2025)) - self.assertHolidays( - Georgia(categories=GOVERNMENT, years=2024), - ("2024-05-17", name), - ) - def test_independence_day(self): self.assertHolidayName( "დამოუკიდებლობის დღე", (f"{year}-05-26" for year in range(1991, 2050)) @@ -158,6 +158,7 @@ def test_l10n_default(self): ("2025-05-17", "ოჯახის სიწმინდისა და მშობლების პატივისცემის დღე"), ("2025-05-26", "დამოუკიდებლობის დღე"), ("2025-08-28", "მარიამობა"), + ("2025-08-29", "უქმე დღე"), ("2025-10-14", "მცხეთობის"), ("2025-11-23", "გიორგობა"), ) @@ -181,6 +182,7 @@ def test_l10n_en_us(self): ("2025-05-17", "Day of Family Sanctity and Respect for Parents"), ("2025-05-26", "Independence Day"), ("2025-08-28", "Dormition of the Mother of God"), + ("2025-08-29", "Public Holiday"), ("2025-10-14", "Holiday of Svetitskhovloba, Robe of Jesus"), ("2025-11-23", "Saint George's Day"), ) @@ -204,6 +206,7 @@ def test_l10n_uk(self): ("2025-05-17", "День святості родини та поваги до батьків"), ("2025-05-26", "День незалежності"), ("2025-08-28", "Успіння Пресвятої Богородиці"), + ("2025-08-29", "Вихідний день"), ("2025-10-14", "Свято Светіцховлоба, Ризи Господньої"), ("2025-11-23", "День Святого Георгія"), ) From 23dc23058a724b1e5eefbd63e225f5f07a4aed69 Mon Sep 17 00:00:00 2001 From: ~Jhellico Date: Thu, 28 Aug 2025 18:47:57 +0300 Subject: [PATCH 35/48] Add `estimated_label` to all countries with Islamic holidays (#2860) Co-authored-by: Arkadii Yakovets --- holidays/countries/argentina.py | 4 + holidays/countries/bosnia_and_herzegovina.py | 4 + holidays/countries/burkina_faso.py | 5 + holidays/countries/cameroon.py | 5 + holidays/countries/chad.py | 5 + holidays/countries/gabon.py | 2 + holidays/countries/kyrgyzstan.py | 2 + holidays/countries/maldives.py | 2 + holidays/countries/mauritania.py | 2 + holidays/countries/nigeria.py | 5 + holidays/countries/somalia.py | 2 + holidays/countries/spain.py | 4 + holidays/countries/uganda.py | 2 + holidays/groups/eastern.py | 2 +- holidays/locale/bs/LC_MESSAGES/BA.po | 14 ++- holidays/locale/en_US/LC_MESSAGES/AR.po | 16 ++- holidays/locale/en_US/LC_MESSAGES/BA.po | 14 ++- holidays/locale/en_US/LC_MESSAGES/ES.po | 14 ++- holidays/locale/es/LC_MESSAGES/AR.po | 16 ++- holidays/locale/es/LC_MESSAGES/ES.po | 14 ++- holidays/locale/sr/LC_MESSAGES/BA.po | 14 ++- holidays/locale/uk/LC_MESSAGES/AR.po | 16 ++- holidays/locale/uk/LC_MESSAGES/BA.po | 14 ++- holidays/locale/uk/LC_MESSAGES/ES.po | 14 ++- snapshots/countries/CM_COMMON.json | 58 +++++----- snapshots/countries/NG_COMMON.json | 110 +++++++++---------- tests/common.py | 20 ++-- 27 files changed, 265 insertions(+), 115 deletions(-) diff --git a/holidays/countries/argentina.py b/holidays/countries/argentina.py index eb33a154e6..54fd33519d 100644 --- a/holidays/countries/argentina.py +++ b/holidays/countries/argentina.py @@ -147,6 +147,10 @@ class Argentina( country = "AR" default_language = "es" + # %s (estimated). + estimated_label = tr("%s (estimado)") + # %s (observed, estimated). + observed_estimated_label = tr("%s (observado, estimado)") # %s (observed). observed_label = tr("%s (observado)") # Decree-Law 2446. diff --git a/holidays/countries/bosnia_and_herzegovina.py b/holidays/countries/bosnia_and_herzegovina.py index cfa8a888fa..defb6e2336 100644 --- a/holidays/countries/bosnia_and_herzegovina.py +++ b/holidays/countries/bosnia_and_herzegovina.py @@ -55,6 +55,10 @@ class BosniaAndHerzegovina( country = "BA" default_language = "bs" + # %s (estimated). + estimated_label = tr("%s (procijenjeno)") + # %s (observed, estimated). + observed_estimated_label = tr("%s (preneseno, procijenjeno)") # %s (observed). observed_label = tr("%s (preneseno)") subdivisions = ( diff --git a/holidays/countries/burkina_faso.py b/holidays/countries/burkina_faso.py index 29ab091c70..86d38f5626 100644 --- a/holidays/countries/burkina_faso.py +++ b/holidays/countries/burkina_faso.py @@ -24,6 +24,11 @@ class BurkinaFaso(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, """ country = "BF" + # %s (estimated). + estimated_label = "%s (estimated)" + # %s (observed, estimated). + observed_estimated_label = "%s (observed, estimated)" + # %s (observed). observed_label = "%s (observed)" # On 5 August 1960, Burkina Faso (Republic of Upper Volta at that time) # gained independence from France. diff --git a/holidays/countries/cameroon.py b/holidays/countries/cameroon.py index 4f7b559d5b..670e3a1548 100644 --- a/holidays/countries/cameroon.py +++ b/holidays/countries/cameroon.py @@ -33,6 +33,11 @@ class Cameroon( """ country = "CM" + # %s (estimated). + estimated_label = "%s (estimated)" + # %s (observed, estimated). + observed_estimated_label = "%s (observed, estimated)" + # %s (observed). observed_label = "%s (observed)" # On 1 January 1960, French Cameroun gained independence from France. start_year = 1960 diff --git a/holidays/countries/chad.py b/holidays/countries/chad.py index 08269ba64e..8ef69d2446 100644 --- a/holidays/countries/chad.py +++ b/holidays/countries/chad.py @@ -32,6 +32,11 @@ class Chad( """ country = "TD" + # %s (estimated). + estimated_label = "%s (estimated)" + # %s (observed, estimated). + observed_estimated_label = "%s (observed, estimated)" + # %s (observed). observed_label = "%s (observed)" # On 11 August 1960, Chad gained independence from France. start_year = 1961 diff --git a/holidays/countries/gabon.py b/holidays/countries/gabon.py index 897512e089..27d2df3bda 100644 --- a/holidays/countries/gabon.py +++ b/holidays/countries/gabon.py @@ -27,6 +27,8 @@ class Gabon(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolida """ country = "GA" + # %s (estimated). + estimated_label = "%s (estimated)" # On 17 August 1960, Gabon gained independence from France. start_year = 1961 diff --git a/holidays/countries/kyrgyzstan.py b/holidays/countries/kyrgyzstan.py index 87bc5604f0..103eeaa188 100644 --- a/holidays/countries/kyrgyzstan.py +++ b/holidays/countries/kyrgyzstan.py @@ -23,6 +23,8 @@ class Kyrgyzstan(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicH """ country = "KG" + # %s (estimated). + estimated_label = "%s (estimated)" def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): """ diff --git a/holidays/countries/maldives.py b/holidays/countries/maldives.py index 6b31a08ab0..6c5f83d4f5 100644 --- a/holidays/countries/maldives.py +++ b/holidays/countries/maldives.py @@ -25,6 +25,8 @@ class Maldives(HolidayBase, InternationalHolidays, IslamicHolidays): """ country = "MV" + # %s (estimated). + estimated_label = "%s (estimated)" weekend = {FRI, SAT} def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): diff --git a/holidays/countries/mauritania.py b/holidays/countries/mauritania.py index fdc76bc531..c8b00a9be0 100644 --- a/holidays/countries/mauritania.py +++ b/holidays/countries/mauritania.py @@ -24,6 +24,8 @@ class Mauritania(HolidayBase, InternationalHolidays, IslamicHolidays): """ country = "MR" + # %s (estimated). + estimated_label = "%s (estimated)" weekend = {FRI, SAT} def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): diff --git a/holidays/countries/nigeria.py b/holidays/countries/nigeria.py index 4541a87227..f514f1e356 100644 --- a/holidays/countries/nigeria.py +++ b/holidays/countries/nigeria.py @@ -30,6 +30,11 @@ class Nigeria( """ country = "NG" + # %s (estimated). + estimated_label = "%s (estimated)" + # %s (observed, estimated). + observed_estimated_label = "%s (observed, estimated)" + # %s (observed). observed_label = "%s (observed)" start_year = 1979 diff --git a/holidays/countries/somalia.py b/holidays/countries/somalia.py index f4b5affd58..a174b02c13 100644 --- a/holidays/countries/somalia.py +++ b/holidays/countries/somalia.py @@ -23,6 +23,8 @@ class Somalia(HolidayBase, InternationalHolidays, IslamicHolidays): """ country = "SO" + # %s (estimated). + estimated_label = "%s (estimated)" # Unification of Somaliland and Italian Somaliland into the Somali Republic on July 1st, 1960. start_year = 1961 diff --git a/holidays/countries/spain.py b/holidays/countries/spain.py index 903b54f79c..9b9978def1 100644 --- a/holidays/countries/spain.py +++ b/holidays/countries/spain.py @@ -52,6 +52,10 @@ class Spain( country = "ES" default_language = "es" + # %s (estimated). + estimated_label = tr("%s (estimado)") + # Monday following %s (estimated). + observed_estimated_label = tr("Lunes siguiente a %s (estimado)") # Monday following %s. observed_label = tr("Lunes siguiente a %s") subdivisions = ( diff --git a/holidays/countries/uganda.py b/holidays/countries/uganda.py index a3c5841293..5107f3f923 100644 --- a/holidays/countries/uganda.py +++ b/holidays/countries/uganda.py @@ -29,6 +29,8 @@ class Uganda(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolid """ country = "UG" + # %s (estimated). + estimated_label = "%s (estimated)" # Uganda gained independence from the United Kingdom on October 9, 1962. start_year = 1963 diff --git a/holidays/groups/eastern.py b/holidays/groups/eastern.py index a177a86514..0a2d6798af 100644 --- a/holidays/groups/eastern.py +++ b/holidays/groups/eastern.py @@ -33,7 +33,7 @@ def _add_eastern_calendar_holiday( Adds customizable estimation label to holiday name if holiday date is an estimation. """ - estimated_label = getattr(self, "estimated_label", "%s (estimated)") + estimated_label = getattr(self, "estimated_label", "%s") dt, is_estimated = dt_estimated if days_delta and dt: diff --git a/holidays/locale/bs/LC_MESSAGES/BA.po b/holidays/locale/bs/LC_MESSAGES/BA.po index 706ef2041f..22085354fd 100644 --- a/holidays/locale/bs/LC_MESSAGES/BA.po +++ b/holidays/locale/bs/LC_MESSAGES/BA.po @@ -14,9 +14,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.28\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-06-26 18:31+0300\n" -"PO-Revision-Date: 2023-06-26 18:34+0300\n" +"PO-Revision-Date: 2025-08-26 18:49+0300\n" "Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: bs\n" @@ -27,6 +27,16 @@ msgstr "" "X-Generator: Poedit 3.2.2\n" "X-Source-Language: bs\n" +#. %s (estimated). +#, c-format +msgid "%s (procijenjeno)" +msgstr "" + +#. %s (observed, estimated). +#, c-format +msgid "%s (preneseno, procijenjeno)" +msgstr "" + #. %s (observed). #, c-format msgid "%s (preneseno)" diff --git a/holidays/locale/en_US/LC_MESSAGES/AR.po b/holidays/locale/en_US/LC_MESSAGES/AR.po index f6a6a4c15e..343ffe16c2 100644 --- a/holidays/locale/en_US/LC_MESSAGES/AR.po +++ b/holidays/locale/en_US/LC_MESSAGES/AR.po @@ -14,10 +14,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.73\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-03-02 00:39+0700\n" -"PO-Revision-Date: 2025-05-06 10:34+0700\n" -"Last-Translator: PPsyrius \n" +"PO-Revision-Date: 2025-08-26 18:30+0300\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: en_US\n" "MIME-Version: 1.0\n" @@ -27,6 +27,16 @@ msgstr "" "X-Generator: Poedit 3.6\n" "X-Source-Language: es\n" +#. %s (estimated). +#, c-format +msgid "%s (estimado)" +msgstr "%s (estimated)" + +#. %s (observed, estimated). +#, c-format +msgid "%s (observado, estimado)" +msgstr "%s (observed, estimated)" + #. %s (observed). #, c-format msgid "%s (observado)" diff --git a/holidays/locale/en_US/LC_MESSAGES/BA.po b/holidays/locale/en_US/LC_MESSAGES/BA.po index 4c0b509711..b0900a0864 100644 --- a/holidays/locale/en_US/LC_MESSAGES/BA.po +++ b/holidays/locale/en_US/LC_MESSAGES/BA.po @@ -14,9 +14,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.42\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-06-26 18:31+0300\n" -"PO-Revision-Date: 2024-01-23 20:44+0200\n" +"PO-Revision-Date: 2025-08-26 18:49+0300\n" "Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: en_US\n" @@ -27,6 +27,16 @@ msgstr "" "X-Generator: Poedit 3.4\n" "X-Source-Language: bs\n" +#. %s (estimated). +#, c-format +msgid "%s (procijenjeno)" +msgstr "%s (estimated)" + +#. %s (observed, estimated). +#, c-format +msgid "%s (preneseno, procijenjeno)" +msgstr "%s (observed, estimated)" + #. %s (observed). #, c-format msgid "%s (preneseno)" diff --git a/holidays/locale/en_US/LC_MESSAGES/ES.po b/holidays/locale/en_US/LC_MESSAGES/ES.po index d368f5a3ca..46824ca5ef 100644 --- a/holidays/locale/en_US/LC_MESSAGES/ES.po +++ b/holidays/locale/en_US/LC_MESSAGES/ES.po @@ -14,9 +14,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.56\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-12-26 19:23+0200\n" -"PO-Revision-Date: 2024-08-31 18:20+0300\n" +"PO-Revision-Date: 2025-08-26 18:42+0300\n" "Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: en_US\n" @@ -27,6 +27,16 @@ msgstr "" "X-Generator: Poedit 3.4\n" "X-Source-Language: es\n" +#. %s (estimated). +#, c-format +msgid "%s (estimado)" +msgstr "%s (estimated)" + +#. Monday following %s (estimated). +#, c-format +msgid "Lunes siguiente a %s (estimado)" +msgstr "Monday following %s (estimated)" + #. Monday following %s. #, c-format msgid "Lunes siguiente a %s" diff --git a/holidays/locale/es/LC_MESSAGES/AR.po b/holidays/locale/es/LC_MESSAGES/AR.po index ba8a63088c..85d02b82df 100644 --- a/holidays/locale/es/LC_MESSAGES/AR.po +++ b/holidays/locale/es/LC_MESSAGES/AR.po @@ -14,10 +14,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.73\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-03-02 00:39+0700\n" -"PO-Revision-Date: 2025-05-06 10:34+0700\n" -"Last-Translator: PPsyrius \n" +"PO-Revision-Date: 2025-08-26 18:30+0300\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: es\n" "MIME-Version: 1.0\n" @@ -27,6 +27,16 @@ msgstr "" "X-Generator: Poedit 3.6\n" "X-Source-Language: es\n" +#. %s (estimated). +#, c-format +msgid "%s (estimado)" +msgstr "" + +#. %s (observed, estimated). +#, c-format +msgid "%s (observado, estimado)" +msgstr "" + #. %s (observed). #, c-format msgid "%s (observado)" diff --git a/holidays/locale/es/LC_MESSAGES/ES.po b/holidays/locale/es/LC_MESSAGES/ES.po index 59276b7ec5..c72082ad85 100644 --- a/holidays/locale/es/LC_MESSAGES/ES.po +++ b/holidays/locale/es/LC_MESSAGES/ES.po @@ -14,9 +14,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.40\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-12-26 19:23+0200\n" -"PO-Revision-Date: 2023-12-26 19:32+0200\n" +"PO-Revision-Date: 2025-08-26 18:42+0300\n" "Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: es\n" @@ -27,6 +27,16 @@ msgstr "" "X-Generator: Poedit 3.4\n" "X-Source-Language: es\n" +#. %s (estimated). +#, c-format +msgid "%s (estimado)" +msgstr "" + +#. Monday following %s (estimated). +#, c-format +msgid "Lunes siguiente a %s (estimado)" +msgstr "" + #. Monday following %s. #, c-format msgid "Lunes siguiente a %s" diff --git a/holidays/locale/sr/LC_MESSAGES/BA.po b/holidays/locale/sr/LC_MESSAGES/BA.po index 58a17dcf6c..167a37252a 100644 --- a/holidays/locale/sr/LC_MESSAGES/BA.po +++ b/holidays/locale/sr/LC_MESSAGES/BA.po @@ -14,9 +14,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.28\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-06-26 18:31+0300\n" -"PO-Revision-Date: 2023-06-26 18:46+0300\n" +"PO-Revision-Date: 2025-08-26 18:49+0300\n" "Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: sr\n" @@ -27,6 +27,16 @@ msgstr "" "X-Generator: Poedit 3.2.2\n" "X-Source-Language: bs\n" +#. %s (estimated). +#, c-format +msgid "%s (procijenjeno)" +msgstr "%s (процењено)" + +#. %s (observed, estimated). +#, c-format +msgid "%s (preneseno, procijenjeno)" +msgstr "%s (пренешено, процењено)" + #. %s (observed). #, c-format msgid "%s (preneseno)" diff --git a/holidays/locale/uk/LC_MESSAGES/AR.po b/holidays/locale/uk/LC_MESSAGES/AR.po index 6296a523fc..31d8dd147a 100644 --- a/holidays/locale/uk/LC_MESSAGES/AR.po +++ b/holidays/locale/uk/LC_MESSAGES/AR.po @@ -14,10 +14,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.73\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-03-02 00:39+0700\n" -"PO-Revision-Date: 2025-05-06 10:34+0700\n" -"Last-Translator: PPsyrius \n" +"PO-Revision-Date: 2025-08-26 18:30+0300\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: uk\n" "MIME-Version: 1.0\n" @@ -27,6 +27,16 @@ msgstr "" "X-Generator: Poedit 3.6\n" "X-Source-Language: es\n" +#. %s (estimated). +#, c-format +msgid "%s (estimado)" +msgstr "%s (приблизна дата)" + +#. %s (observed, estimated). +#, c-format +msgid "%s (observado, estimado)" +msgstr "%s (вихідний, приблизна дата)" + #. %s (observed). #, c-format msgid "%s (observado)" diff --git a/holidays/locale/uk/LC_MESSAGES/BA.po b/holidays/locale/uk/LC_MESSAGES/BA.po index 84aa207891..6537f9800f 100644 --- a/holidays/locale/uk/LC_MESSAGES/BA.po +++ b/holidays/locale/uk/LC_MESSAGES/BA.po @@ -14,9 +14,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.28\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-06-26 18:31+0300\n" -"PO-Revision-Date: 2023-06-26 18:59+0300\n" +"PO-Revision-Date: 2025-08-26 18:50+0300\n" "Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: uk\n" @@ -27,6 +27,16 @@ msgstr "" "X-Generator: Poedit 3.2.2\n" "X-Source-Language: bs\n" +#. %s (estimated). +#, c-format +msgid "%s (procijenjeno)" +msgstr "%s (приблизна дата)" + +#. %s (observed, estimated). +#, c-format +msgid "%s (preneseno, procijenjeno)" +msgstr "%s (вихідний, приблизна дата)" + #. %s (observed). #, c-format msgid "%s (preneseno)" diff --git a/holidays/locale/uk/LC_MESSAGES/ES.po b/holidays/locale/uk/LC_MESSAGES/ES.po index de9b89cbea..7ad5425024 100644 --- a/holidays/locale/uk/LC_MESSAGES/ES.po +++ b/holidays/locale/uk/LC_MESSAGES/ES.po @@ -14,9 +14,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.40\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-12-26 19:23+0200\n" -"PO-Revision-Date: 2023-12-26 19:58+0200\n" +"PO-Revision-Date: 2025-08-26 18:43+0300\n" "Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: uk\n" @@ -27,6 +27,16 @@ msgstr "" "X-Generator: Poedit 3.4\n" "X-Source-Language: es\n" +#. %s (estimated). +#, c-format +msgid "%s (estimado)" +msgstr "%s (приблизна дата)" + +#. Monday following %s (estimated). +#, c-format +msgid "Lunes siguiente a %s (estimado)" +msgstr "Понеділок після %s (приблизна дата)" + #. Monday following %s. #, c-format msgid "Lunes siguiente a %s" diff --git a/snapshots/countries/CM_COMMON.json b/snapshots/countries/CM_COMMON.json index 6287f820bb..192af58959 100644 --- a/snapshots/countries/CM_COMMON.json +++ b/snapshots/countries/CM_COMMON.json @@ -27,12 +27,12 @@ "1962-05-14": "Eid al-Adha (estimated)", "1962-05-31": "Ascension Day", "1962-08-12": "Mawlid (estimated)", - "1962-08-13": "Mawlid (estimated) (observed)", + "1962-08-13": "Mawlid (observed, estimated)", "1962-08-15": "Assumption Day", "1962-12-25": "Christmas Day", "1963-01-01": "New Year's Day", "1963-02-24": "Eid al-Fitr (estimated)", - "1963-02-25": "Eid al-Fitr (estimated) (observed)", + "1963-02-25": "Eid al-Fitr (observed, estimated)", "1963-04-12": "Good Friday", "1963-05-01": "Labour Day", "1963-05-03": "Eid al-Adha (estimated)", @@ -52,7 +52,7 @@ "1965-01-01": "New Year's Day", "1965-02-02": "Eid al-Fitr (estimated)", "1965-04-11": "Eid al-Adha (estimated)", - "1965-04-12": "Eid al-Adha (estimated) (observed)", + "1965-04-12": "Eid al-Adha (observed, estimated)", "1965-04-16": "Good Friday", "1965-05-01": "Labour Day", "1965-05-27": "Ascension Day", @@ -138,11 +138,11 @@ "1972-12-25": "Christmas Day", "1973-01-01": "New Year's Day", "1973-01-14": "Eid al-Adha (estimated)", - "1973-01-15": "Eid al-Adha (estimated) (observed)", + "1973-01-15": "Eid al-Adha (observed, estimated)", "1973-02-11": "Youth Day", "1973-02-12": "Youth Day (observed)", "1973-04-15": "Mawlid (estimated)", - "1973-04-16": "Mawlid (estimated) (observed)", + "1973-04-16": "Mawlid (observed, estimated)", "1973-04-20": "Good Friday", "1973-05-01": "Labour Day", "1973-05-20": "National Day", @@ -203,14 +203,14 @@ "1978-01-02": "New Year's Day (observed)", "1978-02-11": "Youth Day", "1978-02-19": "Mawlid (estimated)", - "1978-02-20": "Mawlid (estimated) (observed)", + "1978-02-20": "Mawlid (observed, estimated)", "1978-03-24": "Good Friday", "1978-05-01": "Labour Day", "1978-05-04": "Ascension Day", "1978-05-20": "National Day", "1978-08-15": "Assumption Day", "1978-09-03": "Eid al-Fitr (estimated)", - "1978-09-04": "Eid al-Fitr (estimated) (observed)", + "1978-09-04": "Eid al-Fitr (observed, estimated)", "1978-11-10": "Eid al-Adha (estimated)", "1978-12-25": "Christmas Day", "1979-01-01": "New Year's Day", @@ -236,11 +236,11 @@ "1980-08-12": "Eid al-Fitr (estimated)", "1980-08-15": "Assumption Day", "1980-10-19": "Eid al-Adha (estimated)", - "1980-10-20": "Eid al-Adha (estimated) (observed)", + "1980-10-20": "Eid al-Adha (observed, estimated)", "1980-12-25": "Christmas Day", "1981-01-01": "New Year's Day", "1981-01-18": "Mawlid (estimated)", - "1981-01-19": "Mawlid (estimated) (observed)", + "1981-01-19": "Mawlid (observed, estimated)", "1981-02-11": "Youth Day", "1981-04-17": "Good Friday", "1981-05-01": "Labour Day", @@ -298,7 +298,7 @@ "1985-08-15": "Assumption Day", "1985-08-26": "Eid al-Adha (estimated)", "1985-11-24": "Mawlid (estimated)", - "1985-11-25": "Mawlid (estimated) (observed)", + "1985-11-25": "Mawlid (observed, estimated)", "1985-12-25": "Christmas Day", "1986-01-01": "New Year's Day", "1986-02-11": "Youth Day", @@ -307,7 +307,7 @@ "1986-05-08": "Ascension Day", "1986-05-20": "National Day", "1986-06-08": "Eid al-Fitr (estimated)", - "1986-06-09": "Eid al-Fitr (estimated) (observed)", + "1986-06-09": "Eid al-Fitr (observed, estimated)", "1986-08-15": "Assumption Day; Eid al-Adha (estimated)", "1986-11-14": "Mawlid (estimated)", "1986-12-25": "Christmas Day", @@ -391,12 +391,12 @@ "1993-08-15": "Assumption Day", "1993-08-16": "Assumption Day (observed)", "1993-08-29": "Mawlid (estimated)", - "1993-08-30": "Mawlid (estimated) (observed)", + "1993-08-30": "Mawlid (observed, estimated)", "1993-12-25": "Christmas Day", "1994-01-01": "New Year's Day", "1994-02-11": "Youth Day", "1994-03-13": "Eid al-Fitr (estimated)", - "1994-03-14": "Eid al-Fitr (estimated) (observed)", + "1994-03-14": "Eid al-Fitr (observed, estimated)", "1994-04-01": "Good Friday", "1994-05-01": "Labour Day", "1994-05-02": "Labour Day (observed)", @@ -770,15 +770,15 @@ "2024-05-09": "Ascension Day", "2024-05-20": "National Day", "2024-06-16": "Eid al-Adha (estimated)", - "2024-06-17": "Eid al-Adha (estimated) (observed)", + "2024-06-17": "Eid al-Adha (observed, estimated)", "2024-08-15": "Assumption Day", "2024-09-15": "Mawlid (estimated)", - "2024-09-16": "Mawlid (estimated) (observed)", + "2024-09-16": "Mawlid (observed, estimated)", "2024-12-25": "Christmas Day", "2025-01-01": "New Year's Day", "2025-02-11": "Youth Day", "2025-03-30": "Eid al-Fitr (estimated)", - "2025-03-31": "Eid al-Fitr (estimated) (observed)", + "2025-03-31": "Eid al-Fitr (observed, estimated)", "2025-04-18": "Good Friday", "2025-05-01": "Labour Day", "2025-05-20": "National Day", @@ -805,7 +805,7 @@ "2027-05-01": "Labour Day", "2027-05-06": "Ascension Day", "2027-05-16": "Eid al-Adha (estimated)", - "2027-05-17": "Eid al-Adha (estimated) (observed)", + "2027-05-17": "Eid al-Adha (observed, estimated)", "2027-05-20": "National Day", "2027-08-14": "Mawlid (estimated)", "2027-08-15": "Assumption Day", @@ -866,13 +866,13 @@ "2032-05-06": "Ascension Day", "2032-05-20": "National Day", "2032-06-20": "Mawlid (estimated)", - "2032-06-21": "Mawlid (estimated) (observed)", + "2032-06-21": "Mawlid (observed, estimated)", "2032-08-15": "Assumption Day", "2032-08-16": "Assumption Day (observed)", "2032-12-25": "Christmas Day", "2033-01-01": "New Year's Day", "2033-01-02": "Eid al-Fitr (estimated)", - "2033-01-03": "Eid al-Fitr (estimated) (observed)", + "2033-01-03": "Eid al-Fitr (observed, estimated)", "2033-02-11": "Youth Day", "2033-03-11": "Eid al-Adha (estimated)", "2033-04-15": "Good Friday", @@ -901,12 +901,12 @@ "2035-02-11": "Youth Day", "2035-02-12": "Youth Day (observed)", "2035-02-18": "Eid al-Adha (estimated)", - "2035-02-19": "Eid al-Adha (estimated) (observed)", + "2035-02-19": "Eid al-Adha (observed, estimated)", "2035-03-23": "Good Friday", "2035-05-01": "Labour Day", "2035-05-03": "Ascension Day", "2035-05-20": "Mawlid (estimated); National Day", - "2035-05-21": "Mawlid (estimated) (observed); National Day (observed)", + "2035-05-21": "Mawlid (observed, estimated); National Day (observed)", "2035-08-15": "Assumption Day", "2035-12-01": "Eid al-Fitr (estimated)", "2035-12-25": "Christmas Day", @@ -931,7 +931,7 @@ "2037-05-20": "National Day", "2037-08-15": "Assumption Day", "2037-11-08": "Eid al-Fitr (estimated)", - "2037-11-09": "Eid al-Fitr (estimated) (observed)", + "2037-11-09": "Eid al-Fitr (observed, estimated)", "2037-12-25": "Christmas Day", "2038-01-01": "New Year's Day", "2038-01-16": "Eid al-Adha (estimated)", @@ -963,7 +963,7 @@ "2040-01-02": "New Year's Day (observed)", "2040-02-11": "Youth Day", "2040-03-25": "Mawlid (estimated)", - "2040-03-26": "Mawlid (estimated) (observed)", + "2040-03-26": "Mawlid (observed, estimated)", "2040-03-30": "Good Friday", "2040-05-01": "Labour Day", "2040-05-10": "Ascension Day", @@ -971,7 +971,7 @@ "2040-05-21": "National Day (observed)", "2040-08-15": "Assumption Day", "2040-10-07": "Eid al-Fitr (estimated)", - "2040-10-08": "Eid al-Fitr (estimated) (observed)", + "2040-10-08": "Eid al-Fitr (observed, estimated)", "2040-12-14": "Eid al-Adha (estimated)", "2040-12-25": "Christmas Day", "2041-01-01": "New Year's Day", @@ -995,12 +995,12 @@ "2042-08-15": "Assumption Day", "2042-09-15": "Eid al-Fitr (estimated)", "2042-11-23": "Eid al-Adha (estimated)", - "2042-11-24": "Eid al-Adha (estimated) (observed)", + "2042-11-24": "Eid al-Adha (observed, estimated)", "2042-12-25": "Christmas Day", "2043-01-01": "New Year's Day", "2043-02-11": "Youth Day", "2043-02-22": "Mawlid (estimated)", - "2043-02-23": "Mawlid (estimated) (observed)", + "2043-02-23": "Mawlid (observed, estimated)", "2043-03-27": "Good Friday", "2043-05-01": "Labour Day", "2043-05-07": "Ascension Day", @@ -1058,7 +1058,7 @@ "2047-09-30": "Eid al-Adha (estimated)", "2047-12-25": "Christmas Day", "2047-12-29": "Mawlid (estimated)", - "2047-12-30": "Mawlid (estimated) (observed)", + "2047-12-30": "Mawlid (observed, estimated)", "2048-01-01": "New Year's Day", "2048-02-11": "Youth Day", "2048-04-03": "Good Friday", @@ -1066,7 +1066,7 @@ "2048-05-14": "Ascension Day", "2048-05-20": "National Day", "2048-07-12": "Eid al-Fitr (estimated)", - "2048-07-13": "Eid al-Fitr (estimated) (observed)", + "2048-07-13": "Eid al-Fitr (observed, estimated)", "2048-08-15": "Assumption Day", "2048-09-19": "Eid al-Adha (estimated)", "2048-12-18": "Mawlid (estimated)", @@ -1093,7 +1093,7 @@ "2050-06-20": "Eid al-Fitr (estimated)", "2050-08-15": "Assumption Day", "2050-08-28": "Eid al-Adha (estimated)", - "2050-08-29": "Eid al-Adha (estimated) (observed)", + "2050-08-29": "Eid al-Adha (observed, estimated)", "2050-11-26": "Mawlid (estimated)", "2050-12-25": "Christmas Day", "2050-12-26": "Christmas Day (observed)" diff --git a/snapshots/countries/NG_COMMON.json b/snapshots/countries/NG_COMMON.json index d5aec12cf1..8c4f6f9777 100644 --- a/snapshots/countries/NG_COMMON.json +++ b/snapshots/countries/NG_COMMON.json @@ -470,11 +470,11 @@ "2016-07-07": "Eid-el-Fitr Holiday (estimated)", "2016-09-11": "Eid-el-Kabir (estimated)", "2016-09-12": "Eid-el-Kabir Holiday (estimated)", - "2016-09-13": "Eid-el-Kabir (estimated) (observed)", + "2016-09-13": "Eid-el-Kabir (observed, estimated)", "2016-10-01": "Independence Day", "2016-10-03": "Independence Day (observed)", "2016-12-11": "Eid-el-Mawlid (estimated)", - "2016-12-12": "Eid-el-Mawlid (estimated) (observed)", + "2016-12-12": "Eid-el-Mawlid (observed, estimated)", "2016-12-25": "Christmas Day", "2016-12-26": "Boxing Day", "2016-12-27": "Christmas Day (observed)", @@ -486,10 +486,10 @@ "2017-05-29": "Democracy Day", "2017-06-25": "Eid-el-Fitr (estimated)", "2017-06-26": "Eid-el-Fitr Holiday (estimated)", - "2017-06-27": "Eid-el-Fitr (estimated) (observed)", + "2017-06-27": "Eid-el-Fitr (observed, estimated)", "2017-09-01": "Eid-el-Kabir (estimated)", "2017-09-02": "Eid-el-Kabir Holiday (estimated)", - "2017-09-04": "Eid-el-Kabir Holiday (estimated) (observed)", + "2017-09-04": "Eid-el-Kabir Holiday (observed, estimated)", "2017-10-01": "Independence Day", "2017-10-02": "Independence Day (observed)", "2017-11-30": "Eid-el-Mawlid (estimated)", @@ -502,7 +502,7 @@ "2018-05-29": "Democracy Day", "2018-06-15": "Eid-el-Fitr (estimated)", "2018-06-16": "Eid-el-Fitr Holiday (estimated)", - "2018-06-18": "Eid-el-Fitr Holiday (estimated) (observed)", + "2018-06-18": "Eid-el-Fitr Holiday (observed, estimated)", "2018-08-21": "Eid-el-Kabir (estimated)", "2018-08-22": "Eid-el-Kabir Holiday (estimated)", "2018-10-01": "Independence Day", @@ -520,10 +520,10 @@ "2019-06-12": "Democracy Day", "2019-08-11": "Eid-el-Kabir (estimated)", "2019-08-12": "Eid-el-Kabir Holiday (estimated)", - "2019-08-13": "Eid-el-Kabir (estimated) (observed)", + "2019-08-13": "Eid-el-Kabir (observed, estimated)", "2019-10-01": "Independence Day", "2019-11-09": "Eid-el-Mawlid (estimated)", - "2019-11-11": "Eid-el-Mawlid (estimated) (observed)", + "2019-11-11": "Eid-el-Mawlid (observed, estimated)", "2019-12-25": "Christmas Day", "2019-12-26": "Boxing Day", "2020-01-01": "New Year's Day", @@ -532,11 +532,11 @@ "2020-05-01": "Workers' Day", "2020-05-24": "Eid-el-Fitr (estimated)", "2020-05-25": "Eid-el-Fitr Holiday (estimated)", - "2020-05-26": "Eid-el-Fitr (estimated) (observed)", + "2020-05-26": "Eid-el-Fitr (observed, estimated)", "2020-06-12": "Democracy Day", "2020-07-31": "Eid-el-Kabir (estimated)", "2020-08-01": "Eid-el-Kabir Holiday (estimated)", - "2020-08-03": "Eid-el-Kabir Holiday (estimated) (observed)", + "2020-08-03": "Eid-el-Kabir Holiday (observed, estimated)", "2020-10-01": "Independence Day", "2020-10-29": "Eid-el-Mawlid (estimated)", "2020-12-25": "Christmas Day", @@ -571,12 +571,12 @@ "2022-06-13": "Democracy Day (observed)", "2022-07-09": "Eid-el-Kabir (estimated)", "2022-07-10": "Eid-el-Kabir Holiday (estimated)", - "2022-07-11": "Eid-el-Kabir (estimated) (observed)", - "2022-07-12": "Eid-el-Kabir Holiday (estimated) (observed)", + "2022-07-11": "Eid-el-Kabir (observed, estimated)", + "2022-07-12": "Eid-el-Kabir Holiday (observed, estimated)", "2022-10-01": "Independence Day", "2022-10-03": "Independence Day (observed)", "2022-10-08": "Eid-el-Mawlid (estimated)", - "2022-10-10": "Eid-el-Mawlid (estimated) (observed)", + "2022-10-10": "Eid-el-Mawlid (observed, estimated)", "2022-12-25": "Christmas Day", "2022-12-26": "Boxing Day", "2022-12-27": "Christmas Day (observed)", @@ -586,7 +586,7 @@ "2023-04-10": "Easter Monday", "2023-04-21": "Eid-el-Fitr (estimated)", "2023-04-22": "Eid-el-Fitr Holiday (estimated)", - "2023-04-24": "Eid-el-Fitr Holiday (estimated) (observed)", + "2023-04-24": "Eid-el-Fitr Holiday (observed, estimated)", "2023-05-01": "Workers' Day", "2023-06-12": "Democracy Day", "2023-06-28": "Eid-el-Kabir (estimated)", @@ -605,22 +605,22 @@ "2024-06-12": "Democracy Day", "2024-06-16": "Eid-el-Kabir (estimated)", "2024-06-17": "Eid-el-Kabir Holiday (estimated)", - "2024-06-18": "Eid-el-Kabir (estimated) (observed)", + "2024-06-18": "Eid-el-Kabir (observed, estimated)", "2024-09-15": "Eid-el-Mawlid (estimated)", - "2024-09-16": "Eid-el-Mawlid (estimated) (observed)", + "2024-09-16": "Eid-el-Mawlid (observed, estimated)", "2024-10-01": "Independence Day", "2024-12-25": "Christmas Day", "2024-12-26": "Boxing Day", "2025-01-01": "New Year's Day", "2025-03-30": "Eid-el-Fitr (estimated)", "2025-03-31": "Eid-el-Fitr Holiday (estimated)", - "2025-04-01": "Eid-el-Fitr (estimated) (observed)", + "2025-04-01": "Eid-el-Fitr (observed, estimated)", "2025-04-18": "Good Friday", "2025-04-21": "Easter Monday", "2025-05-01": "Workers' Day", "2025-06-06": "Eid-el-Kabir (estimated)", "2025-06-07": "Eid-el-Kabir Holiday (estimated)", - "2025-06-09": "Eid-el-Kabir Holiday (estimated) (observed)", + "2025-06-09": "Eid-el-Kabir Holiday (observed, estimated)", "2025-06-12": "Democracy Day", "2025-09-04": "Eid-el-Mawlid (estimated)", "2025-10-01": "Independence Day", @@ -629,7 +629,7 @@ "2026-01-01": "New Year's Day", "2026-03-20": "Eid-el-Fitr (estimated)", "2026-03-21": "Eid-el-Fitr Holiday (estimated)", - "2026-03-23": "Eid-el-Fitr Holiday (estimated) (observed)", + "2026-03-23": "Eid-el-Fitr Holiday (observed, estimated)", "2026-04-03": "Good Friday", "2026-04-06": "Easter Monday", "2026-05-01": "Workers' Day", @@ -650,11 +650,11 @@ "2027-05-03": "Workers' Day (observed)", "2027-05-16": "Eid-el-Kabir (estimated)", "2027-05-17": "Eid-el-Kabir Holiday (estimated)", - "2027-05-18": "Eid-el-Kabir (estimated) (observed)", + "2027-05-18": "Eid-el-Kabir (observed, estimated)", "2027-06-12": "Democracy Day", "2027-06-14": "Democracy Day (observed)", "2027-08-14": "Eid-el-Mawlid (estimated)", - "2027-08-16": "Eid-el-Mawlid (estimated) (observed)", + "2027-08-16": "Eid-el-Mawlid (observed, estimated)", "2027-10-01": "Independence Day", "2027-12-25": "Christmas Day", "2027-12-26": "Boxing Day", @@ -664,14 +664,14 @@ "2028-01-03": "New Year's Day (observed)", "2028-02-26": "Eid-el-Fitr (estimated)", "2028-02-27": "Eid-el-Fitr Holiday (estimated)", - "2028-02-28": "Eid-el-Fitr (estimated) (observed)", - "2028-02-29": "Eid-el-Fitr Holiday (estimated) (observed)", + "2028-02-28": "Eid-el-Fitr (observed, estimated)", + "2028-02-29": "Eid-el-Fitr Holiday (observed, estimated)", "2028-04-14": "Good Friday", "2028-04-17": "Easter Monday", "2028-05-01": "Workers' Day", "2028-05-05": "Eid-el-Kabir (estimated)", "2028-05-06": "Eid-el-Kabir Holiday (estimated)", - "2028-05-08": "Eid-el-Kabir Holiday (estimated) (observed)", + "2028-05-08": "Eid-el-Kabir Holiday (observed, estimated)", "2028-06-12": "Democracy Day", "2028-08-03": "Eid-el-Mawlid (estimated)", "2028-10-01": "Independence Day", @@ -696,21 +696,21 @@ "2030-02-05": "Eid-el-Fitr Holiday (estimated)", "2030-04-13": "Eid-el-Kabir (estimated)", "2030-04-14": "Eid-el-Kabir Holiday (estimated)", - "2030-04-15": "Eid-el-Kabir (estimated) (observed)", - "2030-04-16": "Eid-el-Kabir Holiday (estimated) (observed)", + "2030-04-15": "Eid-el-Kabir (observed, estimated)", + "2030-04-16": "Eid-el-Kabir Holiday (observed, estimated)", "2030-04-19": "Good Friday", "2030-04-22": "Easter Monday", "2030-05-01": "Workers' Day", "2030-06-12": "Democracy Day", "2030-07-13": "Eid-el-Mawlid (estimated)", - "2030-07-15": "Eid-el-Mawlid (estimated) (observed)", + "2030-07-15": "Eid-el-Mawlid (observed, estimated)", "2030-10-01": "Independence Day", "2030-12-25": "Christmas Day", "2030-12-26": "Boxing Day", "2031-01-01": "New Year's Day", "2031-01-24": "Eid-el-Fitr (estimated)", "2031-01-25": "Eid-el-Fitr Holiday (estimated)", - "2031-01-27": "Eid-el-Fitr Holiday (estimated) (observed)", + "2031-01-27": "Eid-el-Fitr Holiday (observed, estimated)", "2031-04-02": "Eid-el-Kabir (estimated)", "2031-04-03": "Eid-el-Kabir Holiday (estimated)", "2031-04-11": "Good Friday", @@ -733,7 +733,7 @@ "2032-06-12": "Democracy Day", "2032-06-14": "Democracy Day (observed)", "2032-06-20": "Eid-el-Mawlid (estimated)", - "2032-06-21": "Eid-el-Mawlid (estimated) (observed)", + "2032-06-21": "Eid-el-Mawlid (observed, estimated)", "2032-10-01": "Independence Day", "2032-12-25": "Christmas Day", "2032-12-26": "Boxing Day", @@ -743,10 +743,10 @@ "2033-01-02": "Eid-el-Fitr (estimated)", "2033-01-03": "Eid-el-Fitr Holiday (estimated)", "2033-01-04": "New Year's Day (observed)", - "2033-01-05": "Eid-el-Fitr (estimated) (observed)", + "2033-01-05": "Eid-el-Fitr (observed, estimated)", "2033-03-11": "Eid-el-Kabir (estimated)", "2033-03-12": "Eid-el-Kabir Holiday (estimated)", - "2033-03-14": "Eid-el-Kabir Holiday (estimated) (observed)", + "2033-03-14": "Eid-el-Kabir Holiday (observed, estimated)", "2033-04-15": "Good Friday", "2033-04-18": "Easter Monday", "2033-05-01": "Workers' Day", @@ -760,7 +760,7 @@ "2033-12-24": "Eid-el-Fitr Holiday (estimated)", "2033-12-25": "Christmas Day", "2033-12-26": "Boxing Day", - "2033-12-27": "Eid-el-Fitr Holiday (estimated) (observed)", + "2033-12-27": "Eid-el-Fitr Holiday (observed, estimated)", "2033-12-28": "Christmas Day (observed)", "2034-01-01": "New Year's Day", "2034-01-02": "New Year's Day (observed)", @@ -780,18 +780,18 @@ "2035-01-01": "New Year's Day", "2035-02-18": "Eid-el-Kabir (estimated)", "2035-02-19": "Eid-el-Kabir Holiday (estimated)", - "2035-02-20": "Eid-el-Kabir (estimated) (observed)", + "2035-02-20": "Eid-el-Kabir (observed, estimated)", "2035-03-23": "Good Friday", "2035-03-26": "Easter Monday", "2035-05-01": "Workers' Day", "2035-05-20": "Eid-el-Mawlid (estimated)", - "2035-05-21": "Eid-el-Mawlid (estimated) (observed)", + "2035-05-21": "Eid-el-Mawlid (observed, estimated)", "2035-06-12": "Democracy Day", "2035-10-01": "Independence Day", "2035-12-01": "Eid-el-Fitr (estimated)", "2035-12-02": "Eid-el-Fitr Holiday (estimated)", - "2035-12-03": "Eid-el-Fitr (estimated) (observed)", - "2035-12-04": "Eid-el-Fitr Holiday (estimated) (observed)", + "2035-12-03": "Eid-el-Fitr (observed, estimated)", + "2035-12-04": "Eid-el-Fitr Holiday (observed, estimated)", "2035-12-25": "Christmas Day", "2035-12-26": "Boxing Day", "2036-01-01": "New Year's Day", @@ -818,17 +818,17 @@ "2037-10-01": "Independence Day", "2037-11-08": "Eid-el-Fitr (estimated)", "2037-11-09": "Eid-el-Fitr Holiday (estimated)", - "2037-11-10": "Eid-el-Fitr (estimated) (observed)", + "2037-11-10": "Eid-el-Fitr (observed, estimated)", "2037-12-25": "Christmas Day", "2037-12-26": "Boxing Day", "2037-12-28": "Boxing Day (observed)", "2038-01-01": "New Year's Day", "2038-01-16": "Eid-el-Kabir (estimated)", "2038-01-17": "Eid-el-Kabir Holiday (estimated)", - "2038-01-18": "Eid-el-Kabir (estimated) (observed)", - "2038-01-19": "Eid-el-Kabir Holiday (estimated) (observed)", + "2038-01-18": "Eid-el-Kabir (observed, estimated)", + "2038-01-19": "Eid-el-Kabir Holiday (observed, estimated)", "2038-04-17": "Eid-el-Mawlid (estimated)", - "2038-04-19": "Eid-el-Mawlid (estimated) (observed)", + "2038-04-19": "Eid-el-Mawlid (observed, estimated)", "2038-04-23": "Good Friday", "2038-04-26": "Easter Monday", "2038-05-01": "Workers' Day", @@ -838,7 +838,7 @@ "2038-10-01": "Independence Day", "2038-10-29": "Eid-el-Fitr (estimated)", "2038-10-30": "Eid-el-Fitr Holiday (estimated)", - "2038-11-01": "Eid-el-Fitr Holiday (estimated) (observed)", + "2038-11-01": "Eid-el-Fitr Holiday (observed, estimated)", "2038-12-25": "Christmas Day", "2038-12-26": "Boxing Day", "2038-12-27": "Christmas Day (observed)", @@ -865,7 +865,7 @@ "2040-01-01": "New Year's Day", "2040-01-02": "New Year's Day (observed)", "2040-03-25": "Eid-el-Mawlid (estimated)", - "2040-03-26": "Eid-el-Mawlid (estimated) (observed)", + "2040-03-26": "Eid-el-Mawlid (observed, estimated)", "2040-03-30": "Good Friday", "2040-04-02": "Easter Monday", "2040-05-01": "Workers' Day", @@ -873,10 +873,10 @@ "2040-10-01": "Independence Day", "2040-10-07": "Eid-el-Fitr (estimated)", "2040-10-08": "Eid-el-Fitr Holiday (estimated)", - "2040-10-09": "Eid-el-Fitr (estimated) (observed)", + "2040-10-09": "Eid-el-Fitr (observed, estimated)", "2040-12-14": "Eid-el-Kabir (estimated)", "2040-12-15": "Eid-el-Kabir Holiday (estimated)", - "2040-12-17": "Eid-el-Kabir Holiday (estimated) (observed)", + "2040-12-17": "Eid-el-Kabir Holiday (observed, estimated)", "2040-12-25": "Christmas Day", "2040-12-26": "Boxing Day", "2041-01-01": "New Year's Day", @@ -903,19 +903,19 @@ "2042-10-01": "Independence Day", "2042-11-23": "Eid-el-Kabir (estimated)", "2042-11-24": "Eid-el-Kabir Holiday (estimated)", - "2042-11-25": "Eid-el-Kabir (estimated) (observed)", + "2042-11-25": "Eid-el-Kabir (observed, estimated)", "2042-12-25": "Christmas Day", "2042-12-26": "Boxing Day", "2043-01-01": "New Year's Day", "2043-02-22": "Eid-el-Mawlid (estimated)", - "2043-02-23": "Eid-el-Mawlid (estimated) (observed)", + "2043-02-23": "Eid-el-Mawlid (observed, estimated)", "2043-03-27": "Good Friday", "2043-03-30": "Easter Monday", "2043-05-01": "Workers' Day", "2043-06-12": "Democracy Day", "2043-09-04": "Eid-el-Fitr (estimated)", "2043-09-05": "Eid-el-Fitr Holiday (estimated)", - "2043-09-07": "Eid-el-Fitr Holiday (estimated) (observed)", + "2043-09-07": "Eid-el-Fitr Holiday (observed, estimated)", "2043-10-01": "Independence Day", "2043-11-12": "Eid-el-Kabir (estimated)", "2043-11-13": "Eid-el-Kabir Holiday (estimated)", @@ -952,8 +952,8 @@ "2045-10-02": "Independence Day (observed)", "2045-10-21": "Eid-el-Kabir (estimated)", "2045-10-22": "Eid-el-Kabir Holiday (estimated)", - "2045-10-23": "Eid-el-Kabir (estimated) (observed)", - "2045-10-24": "Eid-el-Kabir Holiday (estimated) (observed)", + "2045-10-23": "Eid-el-Kabir (observed, estimated)", + "2045-10-24": "Eid-el-Kabir Holiday (observed, estimated)", "2045-12-25": "Christmas Day", "2045-12-26": "Boxing Day", "2046-01-01": "New Year's Day", @@ -964,7 +964,7 @@ "2046-06-12": "Democracy Day", "2046-08-03": "Eid-el-Fitr (estimated)", "2046-08-04": "Eid-el-Fitr Holiday (estimated)", - "2046-08-06": "Eid-el-Fitr Holiday (estimated) (observed)", + "2046-08-06": "Eid-el-Fitr Holiday (observed, estimated)", "2046-10-01": "Independence Day", "2046-10-10": "Eid-el-Kabir (estimated)", "2046-10-11": "Eid-el-Kabir Holiday (estimated)", @@ -983,7 +983,7 @@ "2047-12-25": "Christmas Day", "2047-12-26": "Boxing Day", "2047-12-29": "Eid-el-Mawlid (estimated)", - "2047-12-30": "Eid-el-Mawlid (estimated) (observed)", + "2047-12-30": "Eid-el-Mawlid (observed, estimated)", "2048-01-01": "New Year's Day", "2048-04-03": "Good Friday", "2048-04-06": "Easter Monday", @@ -991,11 +991,11 @@ "2048-06-12": "Democracy Day", "2048-07-12": "Eid-el-Fitr (estimated)", "2048-07-13": "Eid-el-Fitr Holiday (estimated)", - "2048-07-14": "Eid-el-Fitr (estimated) (observed)", + "2048-07-14": "Eid-el-Fitr (observed, estimated)", "2048-09-19": "Eid-el-Kabir (estimated)", "2048-09-20": "Eid-el-Kabir Holiday (estimated)", - "2048-09-21": "Eid-el-Kabir (estimated) (observed)", - "2048-09-22": "Eid-el-Kabir Holiday (estimated) (observed)", + "2048-09-21": "Eid-el-Kabir (observed, estimated)", + "2048-09-22": "Eid-el-Kabir Holiday (observed, estimated)", "2048-10-01": "Independence Day", "2048-12-18": "Eid-el-Mawlid (estimated)", "2048-12-25": "Christmas Day", @@ -1030,11 +1030,11 @@ "2050-06-21": "Eid-el-Fitr Holiday (estimated)", "2050-08-28": "Eid-el-Kabir (estimated)", "2050-08-29": "Eid-el-Kabir Holiday (estimated)", - "2050-08-30": "Eid-el-Kabir (estimated) (observed)", + "2050-08-30": "Eid-el-Kabir (observed, estimated)", "2050-10-01": "Independence Day", "2050-10-03": "Independence Day (observed)", "2050-11-26": "Eid-el-Mawlid (estimated)", - "2050-11-28": "Eid-el-Mawlid (estimated) (observed)", + "2050-11-28": "Eid-el-Mawlid (observed, estimated)", "2050-12-25": "Christmas Day", "2050-12-26": "Boxing Day", "2050-12-27": "Christmas Day (observed)" diff --git a/tests/common.py b/tests/common.py index b7f4811f7b..1c5b7dbe71 100644 --- a/tests/common.py +++ b/tests/common.py @@ -20,6 +20,7 @@ from holidays import HolidayBase from holidays.calendars.gregorian import SUN +from holidays.groups import IslamicHolidays from holidays.observed_holiday_base import ObservedHolidayBase PYTHON_LATEST_SUPPORTED_VERSION = "3.13" @@ -361,6 +362,14 @@ def test_code(self): self.assertTrue(hasattr(self.holidays, "country")) self.assertFalse(hasattr(self.holidays, "market")) + def test_estimated_label(self): + if isinstance(self.holidays, IslamicHolidays): + self.assertTrue( + getattr(self.holidays, "estimated_label", None), + "The `estimated_label` attribute is required for entities inherited from " + "`IslamicHolidays`.", + ) + def test_observed_estimated_label(self): estimated_label = getattr(self.holidays, "estimated_label", None) observed_label = getattr(self.holidays, "observed_label", None) @@ -369,19 +378,16 @@ def test_observed_estimated_label(self): if estimated_label and observed_label: self.assertTrue( observed_estimated_label, - "The 'observed_estimated_label' attribute must be set for entities containing " - "both 'observed_label' and 'estimated_label'.", + "The `observed_estimated_label` attribute is required for entities containing " + "both `observed_label` and `estimated_label`.", ) self.assertIn(estimated_label.strip("%s ()"), observed_estimated_label) def test_observed_label(self): if getattr(self.holidays, "observed_label", None): self.assertTrue( - isinstance( - self.holidays, - ObservedHolidayBase, - ), - "The `observed_label` is not required as this entity doesn't handle " + isinstance(self.holidays, ObservedHolidayBase), + "The `observed_label` attribute is not required as this entity doesn't handle " "observed holidays.", ) From 82b57ed471599797b147a9c1bedb27e933658dd6 Mon Sep 17 00:00:00 2001 From: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com> Date: Fri, 29 Aug 2025 00:45:52 +0700 Subject: [PATCH 36/48] Refactor Macau holidays: holiday categories standardization (#2868) --- README.md | 2 +- holidays/constants.py | 1 - holidays/countries/macau.py | 128 +++---- holidays/locale/en_MO/LC_MESSAGES/MO.po | 58 +-- holidays/locale/en_US/LC_MESSAGES/MO.po | 58 +-- holidays/locale/pt_MO/LC_MESSAGES/MO.po | 58 +-- holidays/locale/th/LC_MESSAGES/MO.po | 58 +-- holidays/locale/zh_CN/LC_MESSAGES/MO.po | 58 +-- holidays/locale/zh_MO/LC_MESSAGES/MO.po | 58 +-- tests/countries/test_macau.py | 474 +++++++++++++++--------- 10 files changed, 538 insertions(+), 415 deletions(-) diff --git a/README.md b/README.md index 4d91afad62..ceb6c41023 100644 --- a/README.md +++ b/README.md @@ -1026,7 +1026,7 @@ any) in brackets, available languages and additional holiday categories. All cou MO Historical municipalities: I (Concelho das Ilhas, 海島市, 海岛市), M (Concelho de Macau, 澳門市, 澳门市) en_MO, en_US, pt_MO, th, zh_CN, zh_MO -GOVERNMENT, MANDATORY +GOVERNMENT, OPTIONAL Madagascar diff --git a/holidays/constants.py b/holidays/constants.py index febe52b013..18ab52d9b7 100644 --- a/holidays/constants.py +++ b/holidays/constants.py @@ -42,7 +42,6 @@ BANK = "bank" GOVERNMENT = "government" HALF_DAY = "half_day" -MANDATORY = "mandatory" OPTIONAL = "optional" PUBLIC = "public" SCHOOL = "school" diff --git a/holidays/countries/macau.py b/holidays/countries/macau.py index 1745c7d132..53108b3a0b 100644 --- a/holidays/countries/macau.py +++ b/holidays/countries/macau.py @@ -13,7 +13,7 @@ from gettext import gettext as tr from holidays.calendars.gregorian import FEB, SEP, OCT, DEC -from holidays.constants import GOVERNMENT, MANDATORY, PUBLIC +from holidays.constants import GOVERNMENT, OPTIONAL, PUBLIC from holidays.groups import ( ChineseCalendarHolidays, ChristianHolidays, @@ -77,7 +77,7 @@ class Macau( "澳門市": "M", "澳门市": "M", } - supported_categories = (GOVERNMENT, MANDATORY, PUBLIC) + supported_categories = (GOVERNMENT, OPTIONAL, PUBLIC) supported_languages = ("en_MO", "en_US", "pt_MO", "th", "zh_CN", "zh_MO") def __init__(self, *args, **kwargs): @@ -91,6 +91,63 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) def _populate_public_holidays(self): + """Macau Mandatory (Statutory) Holidays. + + Decreto-Lei n.º 101/84/M - Earliest Available Version Online. + Decreto-Lei n.º 24/89/M - Added Ching Ming Festival. + Lei n.º 8/2000 - Removed Day of Portugal + - Added Macao S.A.R. Establishment Day. + - Moved Mid-Autumn to Day following Mid-Autumn to match Public Holidays. + Lei n.º 7/2008 - Consolidated with other laws, reaffirming 2000 Amendment list. + """ + if self._year <= 1984: + return None + + # New Year's Day. + self._add_new_years_day(tr("元旦")) + + # Chinese New Year's Day. + self._add_chinese_new_years_day(tr("農曆正月初一")) + + # The second day of Chinese New Year. + self._add_chinese_new_years_day_two(tr("農曆正月初二")) + + # The third day of Chinese New Year. + self._add_chinese_new_years_day_three(tr("農曆正月初三")) + + # Labor Day. + self._add_labor_day(tr("勞動節")) + + # Double Ninth Festival. + self._add_double_ninth_festival(tr("重陽節")) + + # National Day of the People's Republic of China. + self._add_holiday_oct_1(tr("中華人民共和國國慶日")) + + # Decreto-Lei n.º 24/89/M - Adds Ching Ming as a Mandatory Holiday. + if self._year >= 1989: + # Tomb-Sweeping Day. + self._add_qingming_festival(tr("清明節")) + + # Lei n.º 8/2000 - Removed Day of Portugal as a Mandatory Holiday. + # - Changed observance from Mid-Autumn to the following day. + # - Adds Macao S.A.R. Establishment Day as a Mandatory Holiday. + if self._year <= 1999: + # Day of Portugal, Camões, and the Portuguese Communities. + self._add_holiday_jun_10(tr("葡國日、賈梅士日暨葡僑日")) + + # Mid-Autumn Festival. + self._add_mid_autumn_festival(tr("中秋節")) + + else: + # The Day following Mid-Autumn Festival. + self._add_mid_autumn_festival_day_two(tr("中秋節翌日")) + + # Macao S.A.R. Establishment Day. + self._add_holiday_dec_20(tr("澳門特別行政區成立紀念日")) + + def _populate_optional_holidays(self): + """Macau General Holidays.""" # New Year's Day. self._add_new_years_day(tr("元旦")) @@ -223,61 +280,6 @@ def _populate_public_holidays(self): # Macao S.A.R. Establishment Day. self._add_holiday_dec_20(tr("澳門特別行政區成立紀念日")) - def _populate_mandatory_holidays(self): - """ - Decreto-Lei n.º 101/84/M - Earliest Available Version Online. - Decreto-Lei n.º 24/89/M - Added Ching Ming Festival. - Lei n.º 8/2000 - Removed Day of Portugal - - Added Macao S.A.R. Establishment Day. - - Moved Mid-Autumn to Day following Mid-Autumn to match Public Holidays. - Lei n.º 7/2008 - Consolidated with other laws, reaffirming 2000 Amendment list. - """ - if self._year <= 1984: - return None - - # New Year's Day. - self._add_new_years_day(tr("元旦")) - - # Chinese New Year's Day. - self._add_chinese_new_years_day(tr("農曆正月初一")) - - # The second day of Chinese New Year. - self._add_chinese_new_years_day_two(tr("農曆正月初二")) - - # The third day of Chinese New Year. - self._add_chinese_new_years_day_three(tr("農曆正月初三")) - - # Labor Day. - self._add_labor_day(tr("勞動節")) - - # Double Ninth Festival. - self._add_double_ninth_festival(tr("重陽節")) - - # National Day of the People's Republic of China. - self._add_holiday_oct_1(tr("中華人民共和國國慶日")) - - # Decreto-Lei n.º 24/89/M - Adds Ching Ming as a Mandatory Holiday. - if self._year >= 1989: - # Tomb-Sweeping Day. - self._add_qingming_festival(tr("清明節")) - - # Lei n.º 8/2000 - Removed Day of Portugal as a Mandatory Holiday. - # - Changed observance from Mid-Autumn to the following day. - # - Adds Macao S.A.R. Establishment Day as a Mandatory Holiday. - if self._year <= 1999: - # Day of Portugal, Camões, and the Portuguese Communities. - self._add_holiday_jun_10(tr("葡國日、賈梅士日暨葡僑日")) - - # Mid-Autumn Festival. - self._add_mid_autumn_festival(tr("中秋節")) - - else: - # The Day following Mid-Autumn Festival. - self._add_mid_autumn_festival_day_two(tr("中秋節翌日")) - - # Macao S.A.R. Establishment Day. - self._add_holiday_dec_20(tr("澳門特別行政區成立紀念日")) - def _populate_government_holidays(self): # While Cross-Checking References are available for from 2005-2025, # SUN in-lieus starts in 2011; SAT-SUN in-lieus starts in 2012. @@ -378,7 +380,7 @@ def _populate_government_holidays(self): ) self._populate_observed(dts_observed, multiple=True) - def _populate_subdiv_i_public_holidays(self): + def _populate_subdiv_i_optional_holidays(self): # Decreto-Lei n.º 15/93/M - Moved Day of the Municipality of Ilhas from JUL 13 to NOV 30. # Regulamento Administrativo n.º 4/1999 - Removed as a Public Holiday. if self._year <= 1999: @@ -389,7 +391,7 @@ def _populate_subdiv_i_public_holidays(self): else: self._add_holiday_jul_13(name) - def _populate_subdiv_m_public_holidays(self): + def _populate_subdiv_m_optional_holidays(self): # Regulamento Administrativo n.º 4/1999 - Removed Macau City Day as a Public Holiday. if self._year <= 1999: # Macau City Day. @@ -407,10 +409,10 @@ class MAC(Macau): class MacauStaticHolidays: """Macau special holidays. - Special Public and Government Holidays: + Special General and Government Holidays: * - Special Mandatory Holidays: + Special Mandatory (Statutory) Holidays: * Cross-Checking: @@ -457,10 +459,10 @@ class MacauStaticHolidays: 2014: (OCT, 3, name_double_ninth_festival_national_day_2_overlap), 2020: (OCT, 5, name_mid_autumn_festival_day_2_national_day_2_overlap), } - special_mandatory_holidays = { + special_public_holidays = { 2015: (SEP, 3, name_70th_war_of_resistance), } - special_public_holidays = { + special_optional_holidays = { 1998: ( (DEC, 23, name_fullday), (DEC, 31, name_halfday), diff --git a/holidays/locale/en_MO/LC_MESSAGES/MO.po b/holidays/locale/en_MO/LC_MESSAGES/MO.po index 1a043688fa..1b4c29448b 100644 --- a/holidays/locale/en_MO/LC_MESSAGES/MO.po +++ b/holidays/locale/en_MO/LC_MESSAGES/MO.po @@ -14,7 +14,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.69\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2025-02-06 15:34+0700\n" "PO-Revision-Date: 2025-03-05 19:40+0700\n" "Last-Translator: PPsyrius \n" @@ -43,10 +43,38 @@ msgstr "The second day of Lunar New Year" msgid "農曆正月初三" msgstr "The third day of Lunar New Year" +#. Labor Day. +msgid "勞動節" +msgstr "Labour Day" + +#. Double Ninth Festival. +msgid "重陽節" +msgstr "Chung Yeung Festival (Festival of Ancestors)" + +#. National Day of the People's Republic of China. +msgid "中華人民共和國國慶日" +msgstr "National Day of the People's Republic of China" + #. Tomb-Sweeping Day. msgid "清明節" msgstr "Ching Ming Festival" +#. Day of Portugal, Camões, and the Portuguese Communities. +msgid "葡國日、賈梅士日暨葡僑日" +msgstr "Day of Portugal, Camões, and the Portuguese Communities" + +#. Mid-Autumn Festival. +msgid "中秋節" +msgstr "Chong Chao (Mid-Autumn) Festival" + +#. The Day following Mid-Autumn Festival. +msgid "中秋節翌日" +msgstr "The Day following Chong Chao (Mid-Autumn) Festival" + +#. Macao S.A.R. Establishment Day. +msgid "澳門特別行政區成立紀念日" +msgstr "Macao S.A.R. Establishment Day" + #. Good Friday. msgid "耶穌受難日" msgstr "Good Friday" @@ -63,26 +91,10 @@ msgstr "The Day before Easter" msgid "聖周星期六" msgstr "Holy Saturday" -#. Labor Day. -msgid "勞動節" -msgstr "Labour Day" - #. Dragon Boat Festival. msgid "端午節" msgstr "Tung Ng Festival (Dragon Boat Festival)" -#. Double Ninth Festival. -msgid "重陽節" -msgstr "Chung Yeung Festival (Festival of Ancestors)" - -#. The Day following Mid-Autumn Festival. -msgid "中秋節翌日" -msgstr "The Day following Chong Chao (Mid-Autumn) Festival" - -#. National Day of the People's Republic of China. -msgid "中華人民共和國國慶日" -msgstr "National Day of the People's Republic of China" - #. All Soul's Day. msgid "追思節" msgstr "All Soul's Day" @@ -131,10 +143,6 @@ msgstr "Corpus Christi" msgid "自由日" msgstr "Freedom Day" -#. Day of Portugal, Camões, and the Portuguese Communities. -msgid "葡國日、賈梅士日暨葡僑日" -msgstr "Day of Portugal, Camões, and the Portuguese Communities" - #. Republic Day. msgid "葡萄牙共和國國慶日" msgstr "Republic Day" @@ -151,14 +159,6 @@ msgstr "The Buddha's Birthday (Feast of Buddha)" msgid "中華人民共和國國慶日翌日" msgstr "The day following National Day of the People's Republic of China" -#. Macao S.A.R. Establishment Day. -msgid "澳門特別行政區成立紀念日" -msgstr "Macao S.A.R. Establishment Day" - -#. Mid-Autumn Festival. -msgid "中秋節" -msgstr "Chong Chao (Mid-Autumn) Festival" - #. %s (Afternoon). #, c-format msgid "%s(下午)" diff --git a/holidays/locale/en_US/LC_MESSAGES/MO.po b/holidays/locale/en_US/LC_MESSAGES/MO.po index 5f55d8c0f2..88890b0443 100644 --- a/holidays/locale/en_US/LC_MESSAGES/MO.po +++ b/holidays/locale/en_US/LC_MESSAGES/MO.po @@ -14,7 +14,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.69\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2025-02-06 15:34+0700\n" "PO-Revision-Date: 2025-03-05 19:40+0700\n" "Last-Translator: PPsyrius \n" @@ -43,10 +43,38 @@ msgstr "The second day of Chinese New Year" msgid "農曆正月初三" msgstr "The third day of Chinese New Year" +#. Labor Day. +msgid "勞動節" +msgstr "Labor Day" + +#. Double Ninth Festival. +msgid "重陽節" +msgstr "Double Ninth Festival" + +#. National Day of the People's Republic of China. +msgid "中華人民共和國國慶日" +msgstr "National Day of the People's Republic of China" + #. Tomb-Sweeping Day. msgid "清明節" msgstr "Tomb-Sweeping Day" +#. Day of Portugal, Camões, and the Portuguese Communities. +msgid "葡國日、賈梅士日暨葡僑日" +msgstr "Day of Portugal, Camões, and the Portuguese Communities" + +#. Mid-Autumn Festival. +msgid "中秋節" +msgstr "Mid-Autumn Festival" + +#. The Day following Mid-Autumn Festival. +msgid "中秋節翌日" +msgstr "The Day following Mid-Autumn Festival" + +#. Macao S.A.R. Establishment Day. +msgid "澳門特別行政區成立紀念日" +msgstr "Macao S.A.R. Establishment Day" + #. Good Friday. msgid "耶穌受難日" msgstr "Good Friday" @@ -63,26 +91,10 @@ msgstr "The Day before Easter" msgid "聖周星期六" msgstr "Holy Saturday" -#. Labor Day. -msgid "勞動節" -msgstr "Labor Day" - #. Dragon Boat Festival. msgid "端午節" msgstr "Dragon Boat Festival" -#. Double Ninth Festival. -msgid "重陽節" -msgstr "Double Ninth Festival" - -#. The Day following Mid-Autumn Festival. -msgid "中秋節翌日" -msgstr "The Day following Mid-Autumn Festival" - -#. National Day of the People's Republic of China. -msgid "中華人民共和國國慶日" -msgstr "National Day of the People's Republic of China" - #. All Soul's Day. msgid "追思節" msgstr "All Soul's Day" @@ -131,10 +143,6 @@ msgstr "Corpus Christi" msgid "自由日" msgstr "Freedom Day" -#. Day of Portugal, Camões, and the Portuguese Communities. -msgid "葡國日、賈梅士日暨葡僑日" -msgstr "Day of Portugal, Camões, and the Portuguese Communities" - #. Republic Day. msgid "葡萄牙共和國國慶日" msgstr "Republic Day" @@ -151,14 +159,6 @@ msgstr "The Buddha's Birthday" msgid "中華人民共和國國慶日翌日" msgstr "The day following National Day of the People's Republic of China" -#. Macao S.A.R. Establishment Day. -msgid "澳門特別行政區成立紀念日" -msgstr "Macao S.A.R. Establishment Day" - -#. Mid-Autumn Festival. -msgid "中秋節" -msgstr "Mid-Autumn Festival" - #. %s (Afternoon). #, c-format msgid "%s(下午)" diff --git a/holidays/locale/pt_MO/LC_MESSAGES/MO.po b/holidays/locale/pt_MO/LC_MESSAGES/MO.po index c981c77535..7a0e285219 100644 --- a/holidays/locale/pt_MO/LC_MESSAGES/MO.po +++ b/holidays/locale/pt_MO/LC_MESSAGES/MO.po @@ -14,7 +14,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.69\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2025-02-06 15:34+0700\n" "PO-Revision-Date: 2025-03-05 21:05+0700\n" "Last-Translator: PPsyrius \n" @@ -43,10 +43,38 @@ msgstr "2.º dia do Novo Ano Lunar" msgid "農曆正月初三" msgstr "3.º dia do Novo Ano Lunar" +#. Labor Day. +msgid "勞動節" +msgstr "Dia do Trabalhador" + +#. Double Ninth Festival. +msgid "重陽節" +msgstr "Chong Yeong (Culto dos Antepassados)" + +#. National Day of the People's Republic of China. +msgid "中華人民共和國國慶日" +msgstr "Implantação da República Popular da China" + #. Tomb-Sweeping Day. msgid "清明節" msgstr "Cheng Ming (Dia de Finados)" +#. Day of Portugal, Camões, and the Portuguese Communities. +msgid "葡國日、賈梅士日暨葡僑日" +msgstr "Dia de Portugal, de Camões e das Comunidades Portuguesas" + +#. Mid-Autumn Festival. +msgid "中秋節" +msgstr "Chong Chao (Bolo Lunar)" + +#. The Day following Mid-Autumn Festival. +msgid "中秋節翌日" +msgstr "Dia seguinte ao Chong Chao (Bolo Lunar)" + +#. Macao S.A.R. Establishment Day. +msgid "澳門特別行政區成立紀念日" +msgstr "Dia Comemorativo do Estabelecimento da Região Administrativa Especial de Macau" + #. Good Friday. msgid "耶穌受難日" msgstr "Morte de Cristo" @@ -63,26 +91,10 @@ msgstr "Véspera da Ressurreição de Cristo" msgid "聖周星期六" msgstr "Sábado Santo" -#. Labor Day. -msgid "勞動節" -msgstr "Dia do Trabalhador" - #. Dragon Boat Festival. msgid "端午節" msgstr "Tung Ng (Barco Dragão)" -#. Double Ninth Festival. -msgid "重陽節" -msgstr "Chong Yeong (Culto dos Antepassados)" - -#. The Day following Mid-Autumn Festival. -msgid "中秋節翌日" -msgstr "Dia seguinte ao Chong Chao (Bolo Lunar)" - -#. National Day of the People's Republic of China. -msgid "中華人民共和國國慶日" -msgstr "Implantação da República Popular da China" - #. All Soul's Day. msgid "追思節" msgstr "Dia de Finados" @@ -131,10 +143,6 @@ msgstr "Corpo de Deus" msgid "自由日" msgstr "Dia da Liberdade" -#. Day of Portugal, Camões, and the Portuguese Communities. -msgid "葡國日、賈梅士日暨葡僑日" -msgstr "Dia de Portugal, de Camões e das Comunidades Portuguesas" - #. Republic Day. msgid "葡萄牙共和國國慶日" msgstr "Implantação da República Portuguesa" @@ -151,14 +159,6 @@ msgstr "Dia do Buda" msgid "中華人民共和國國慶日翌日" msgstr "Dia seguinte à Implantação da República Popular da China" -#. Macao S.A.R. Establishment Day. -msgid "澳門特別行政區成立紀念日" -msgstr "Dia Comemorativo do Estabelecimento da Região Administrativa Especial de Macau" - -#. Mid-Autumn Festival. -msgid "中秋節" -msgstr "Chong Chao (Bolo Lunar)" - #. %s (Afternoon). #, c-format msgid "%s(下午)" diff --git a/holidays/locale/th/LC_MESSAGES/MO.po b/holidays/locale/th/LC_MESSAGES/MO.po index 1e178ef73d..a8617fdf4e 100644 --- a/holidays/locale/th/LC_MESSAGES/MO.po +++ b/holidays/locale/th/LC_MESSAGES/MO.po @@ -14,7 +14,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.69\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2025-02-06 15:34+0700\n" "PO-Revision-Date: 2025-03-05 19:40+0700\n" "Last-Translator: PPsyrius \n" @@ -43,10 +43,38 @@ msgstr "วันตรุษจีนวันที่สอง" msgid "農曆正月初三" msgstr "วันตรุษจีนวันที่สาม" +#. Labor Day. +msgid "勞動節" +msgstr "วันแรงงาน" + +#. Double Ninth Festival. +msgid "重陽節" +msgstr "วันไหว้บรรพบุรุษ" + +#. National Day of the People's Republic of China. +msgid "中華人民共和國國慶日" +msgstr "วันชาติจีน" + #. Tomb-Sweeping Day. msgid "清明節" msgstr "วันเช็งเม้ง" +#. Day of Portugal, Camões, and the Portuguese Communities. +msgid "葡國日、賈梅士日暨葡僑日" +msgstr "วันชาติโปรตุเกส วันกาม๊อยช์ และวันแห่งประชาคมโปรตุเกส" + +#. Mid-Autumn Festival. +msgid "中秋節" +msgstr "วันไหว้พระจันทร์" + +#. The Day following Mid-Autumn Festival. +msgid "中秋節翌日" +msgstr "วันหลังวันไหว้พระจันทร์" + +#. Macao S.A.R. Establishment Day. +msgid "澳門特別行政區成立紀念日" +msgstr "วันสถาปนาเขตบริหารพิเศษมาเก๊า" + #. Good Friday. msgid "耶穌受難日" msgstr "วันศุกร์ประเสริฐ" @@ -63,26 +91,10 @@ msgstr "วันก่อนวันอาทิตย์อีสเตอร msgid "聖周星期六" msgstr "วันเสาร์ศักดิ์สิทธิ์" -#. Labor Day. -msgid "勞動節" -msgstr "วันแรงงาน" - #. Dragon Boat Festival. msgid "端午節" msgstr "วันไหว้บ๊ะจ่าง" -#. Double Ninth Festival. -msgid "重陽節" -msgstr "วันไหว้บรรพบุรุษ" - -#. The Day following Mid-Autumn Festival. -msgid "中秋節翌日" -msgstr "วันหลังวันไหว้พระจันทร์" - -#. National Day of the People's Republic of China. -msgid "中華人民共和國國慶日" -msgstr "วันชาติจีน" - #. All Soul's Day. msgid "追思節" msgstr "วันภาวนาอุทิศแด่ผู้ล่วงลับ" @@ -131,10 +143,6 @@ msgstr "วันสมโภชพระคริสตวรกาย" msgid "自由日" msgstr "วันแห่งเสรีภาพ" -#. Day of Portugal, Camões, and the Portuguese Communities. -msgid "葡國日、賈梅士日暨葡僑日" -msgstr "วันชาติโปรตุเกส วันกาม๊อยช์ และวันแห่งประชาคมโปรตุเกส" - #. Republic Day. msgid "葡萄牙共和國國慶日" msgstr "วันสถาปนาสาธารณรัฐโปรตุเกส" @@ -151,14 +159,6 @@ msgstr "วันวิสาขบูชา" msgid "中華人民共和國國慶日翌日" msgstr "วันหลังวันชาติจีน" -#. Macao S.A.R. Establishment Day. -msgid "澳門特別行政區成立紀念日" -msgstr "วันสถาปนาเขตบริหารพิเศษมาเก๊า" - -#. Mid-Autumn Festival. -msgid "中秋節" -msgstr "วันไหว้พระจันทร์" - #. %s (Afternoon). #, c-format msgid "%s(下午)" diff --git a/holidays/locale/zh_CN/LC_MESSAGES/MO.po b/holidays/locale/zh_CN/LC_MESSAGES/MO.po index 22b304cb29..b6de5370d7 100644 --- a/holidays/locale/zh_CN/LC_MESSAGES/MO.po +++ b/holidays/locale/zh_CN/LC_MESSAGES/MO.po @@ -14,7 +14,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.69\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2025-02-06 15:34+0700\n" "PO-Revision-Date: 2025-03-05 19:40+0700\n" "Last-Translator: PPsyrius \n" @@ -43,10 +43,38 @@ msgstr "农历正月初二" msgid "農曆正月初三" msgstr "农历正月初三" +#. Labor Day. +msgid "勞動節" +msgstr "劳动节" + +#. Double Ninth Festival. +msgid "重陽節" +msgstr "重阳节" + +#. National Day of the People's Republic of China. +msgid "中華人民共和國國慶日" +msgstr "中华人民共和国国庆日" + #. Tomb-Sweeping Day. msgid "清明節" msgstr "清明节" +#. Day of Portugal, Camões, and the Portuguese Communities. +msgid "葡國日、賈梅士日暨葡僑日" +msgstr "葡国日、贾梅士日暨葡侨日" + +#. Mid-Autumn Festival. +msgid "中秋節" +msgstr "中秋节" + +#. The Day following Mid-Autumn Festival. +msgid "中秋節翌日" +msgstr "中秋节翌日" + +#. Macao S.A.R. Establishment Day. +msgid "澳門特別行政區成立紀念日" +msgstr "澳门特别行政区成立纪念日" + #. Good Friday. msgid "耶穌受難日" msgstr "耶稣受难日" @@ -63,26 +91,10 @@ msgstr "复活节前日" msgid "聖周星期六" msgstr "圣周星期六" -#. Labor Day. -msgid "勞動節" -msgstr "劳动节" - #. Dragon Boat Festival. msgid "端午節" msgstr "端午节" -#. Double Ninth Festival. -msgid "重陽節" -msgstr "重阳节" - -#. The Day following Mid-Autumn Festival. -msgid "中秋節翌日" -msgstr "中秋节翌日" - -#. National Day of the People's Republic of China. -msgid "中華人民共和國國慶日" -msgstr "中华人民共和国国庆日" - #. All Soul's Day. msgid "追思節" msgstr "追思节" @@ -131,10 +143,6 @@ msgstr "基督圣体圣血节" msgid "自由日" msgstr "自由日" -#. Day of Portugal, Camões, and the Portuguese Communities. -msgid "葡國日、賈梅士日暨葡僑日" -msgstr "葡国日、贾梅士日暨葡侨日" - #. Republic Day. msgid "葡萄牙共和國國慶日" msgstr "葡萄牙共和国成立日" @@ -151,14 +159,6 @@ msgstr "佛诞节" msgid "中華人民共和國國慶日翌日" msgstr "中华人民共和国国庆日翌日" -#. Macao S.A.R. Establishment Day. -msgid "澳門特別行政區成立紀念日" -msgstr "澳门特别行政区成立纪念日" - -#. Mid-Autumn Festival. -msgid "中秋節" -msgstr "中秋节" - #. %s (Afternoon). #, c-format msgid "%s(下午)" diff --git a/holidays/locale/zh_MO/LC_MESSAGES/MO.po b/holidays/locale/zh_MO/LC_MESSAGES/MO.po index c9dc18620b..05aadadbbb 100644 --- a/holidays/locale/zh_MO/LC_MESSAGES/MO.po +++ b/holidays/locale/zh_MO/LC_MESSAGES/MO.po @@ -14,7 +14,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.69\n" +"Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2025-02-06 15:34+0700\n" "PO-Revision-Date: 2025-03-05 19:40+0700\n" "Last-Translator: PPsyrius \n" @@ -43,10 +43,38 @@ msgstr "" msgid "農曆正月初三" msgstr "" +#. Labor Day. +msgid "勞動節" +msgstr "" + +#. Double Ninth Festival. +msgid "重陽節" +msgstr "" + +#. National Day of the People's Republic of China. +msgid "中華人民共和國國慶日" +msgstr "" + #. Tomb-Sweeping Day. msgid "清明節" msgstr "" +#. Day of Portugal, Camões, and the Portuguese Communities. +msgid "葡國日、賈梅士日暨葡僑日" +msgstr "" + +#. Mid-Autumn Festival. +msgid "中秋節" +msgstr "" + +#. The Day following Mid-Autumn Festival. +msgid "中秋節翌日" +msgstr "" + +#. Macao S.A.R. Establishment Day. +msgid "澳門特別行政區成立紀念日" +msgstr "" + #. Good Friday. msgid "耶穌受難日" msgstr "" @@ -63,26 +91,10 @@ msgstr "" msgid "聖周星期六" msgstr "" -#. Labor Day. -msgid "勞動節" -msgstr "" - #. Dragon Boat Festival. msgid "端午節" msgstr "" -#. Double Ninth Festival. -msgid "重陽節" -msgstr "" - -#. The Day following Mid-Autumn Festival. -msgid "中秋節翌日" -msgstr "" - -#. National Day of the People's Republic of China. -msgid "中華人民共和國國慶日" -msgstr "" - #. All Soul's Day. msgid "追思節" msgstr "" @@ -131,10 +143,6 @@ msgstr "" msgid "自由日" msgstr "" -#. Day of Portugal, Camões, and the Portuguese Communities. -msgid "葡國日、賈梅士日暨葡僑日" -msgstr "" - #. Republic Day. msgid "葡萄牙共和國國慶日" msgstr "" @@ -151,14 +159,6 @@ msgstr "" msgid "中華人民共和國國慶日翌日" msgstr "" -#. Macao S.A.R. Establishment Day. -msgid "澳門特別行政區成立紀念日" -msgstr "" - -#. Mid-Autumn Festival. -msgid "中秋節" -msgstr "" - #. %s (Afternoon). #, c-format msgid "%s(下午)" diff --git a/tests/countries/test_macau.py b/tests/countries/test_macau.py index 0a2f53793f..b4e12e0b0f 100644 --- a/tests/countries/test_macau.py +++ b/tests/countries/test_macau.py @@ -12,7 +12,7 @@ from unittest import TestCase -from holidays.constants import GOVERNMENT, MANDATORY, PUBLIC +from holidays.constants import GOVERNMENT, OPTIONAL from holidays.countries.macau import Macau, MO, MAC from tests.common import CommonCountryTests @@ -20,20 +20,20 @@ class TestMacau(CommonCountryTests, TestCase): @classmethod def setUpClass(cls): - super().setUpClass(Macau, years=range(1982, 2050)) - cls.gov_holidays = Macau(categories=GOVERNMENT, years=range(2005, 2050)) - cls.man_holidays = Macau(categories=MANDATORY, years=range(1985, 2050)) + super().setUpClass(Macau, years=range(1985, 2050)) + cls.government_holidays = Macau(categories=GOVERNMENT, years=range(2005, 2050)) + cls.optional_holidays = Macau(categories=OPTIONAL, years=range(1982, 2050)) def test_country_aliases(self): self.assertAliases(Macau, MO, MAC) def test_no_holidays(self): - self.assertNoHolidays(Macau(years=1981, categories=PUBLIC)) - self.assertNoHolidays(Macau(years=1984, categories=MANDATORY)) + self.assertNoHolidays(Macau(years=1984)) + self.assertNoHolidays(Macau(years=1981, categories=OPTIONAL)) self.assertNoHolidays(Macau(years=2004, categories=GOVERNMENT)) def test_special_holidays(self): - dt_full = ( + dt_optional_full = ( # https://www.io.gov.mo/pt/legis/rec/111020 "1998-12-23", "1999-02-15", @@ -41,13 +41,13 @@ def test_special_holidays(self): "1999-12-21", "2015-09-03", ) - dt_half = ( + dt_optional_half = ( # https://www.io.gov.mo/pt/legis/rec/111020 "1998-12-31", "1999-12-31", "2000-02-04", ) - dt_gov_full = ( + dt_government_full = ( # https://www.io.gov.mo/pt/legis/rec/111020 "2008-12-22", # https://web.archive.org/web/20171207162948/http://portal.gov.mo/web/guest/info_detail?infoid=1887061 @@ -61,20 +61,20 @@ def test_special_holidays(self): # https://www.dsal.gov.mo/en/text/holiday_table.html "2015-09-03" ) - self.assertHoliday(dt_full, dt_half) - self.assertHoliday(Macau(categories=GOVERNMENT), dt_gov_full) - self.assertHoliday(Macau(categories=MANDATORY), dt_mandatory) + self.assertHoliday(dt_mandatory) + self.assertHoliday(Macau(categories=GOVERNMENT), dt_government_full) + self.assertHoliday(Macau(categories=OPTIONAL), dt_optional_full, dt_optional_half) def test_new_years_day(self): name = "元旦" # Government Holidays. self.assertHolidayName( - f"{name}後首個工作日", self.gov_holidays, "2012-01-02", "2017-01-02" + f"{name}後首個工作日", self.government_holidays, "2012-01-02", "2017-01-02" ) self.assertHolidayName( f"{name}的補假", - self.gov_holidays, + self.government_holidays, "2022-01-03", "2023-01-02", "2028-01-03", @@ -85,31 +85,36 @@ def test_new_years_day(self): "2045-01-02", ) - # Mandatory Holidays. + # Optional Holidays. self.assertHolidayName( - name, self.man_holidays, (f"{year}-01-01" for year in range(1985, 2050)) + name, self.optional_holidays, (f"{year}-01-01" for year in range(1982, 2050)) ) # Public Holidays. - self.assertHolidayName(name, (f"{year}-01-01" for year in range(1982, 2050))) + self.assertHolidayName(name, (f"{year}-01-01" for year in range(1985, 2050))) def test_freedom_day(self): name = "自由日" + # Optional Holidays. + self.assertHolidayName( + name, self.optional_holidays, (f"{year}-04-25" for year in range(1982, 1999)) + ) + self.assertNoHolidayName(name, self.optional_holidays, range(2000, 2050)) + # Public Holidays. - self.assertHolidayName(name, (f"{year}-04-25" for year in range(1982, 1999))) - self.assertNoHolidayName(name, range(2000, 2050)) + self.assertNoHolidayName(name) def test_labor_day(self): name = "勞動節" # Government Holidays. self.assertHolidayName( - f"{name}後首個工作日", self.gov_holidays, "2011-05-02", "2016-05-02" + f"{name}後首個工作日", self.government_holidays, "2011-05-02", "2016-05-02" ) self.assertHolidayName( f"{name}的補假", - self.gov_holidays, + self.government_holidays, "2021-05-03", "2022-05-02", "2027-05-03", @@ -121,33 +126,38 @@ def test_labor_day(self): "2049-05-03", ) - # Mandatory Holidays + # Optional Holidays self.assertHolidayName( - name, self.man_holidays, (f"{year}-05-01" for year in range(1985, 2050)) + name, self.optional_holidays, (f"{year}-05-01" for year in range(1982, 2050)) ) # Public Holidays. - self.assertHolidayName(name, (f"{year}-05-01" for year in range(1982, 2050))) + self.assertHolidayName(name, (f"{year}-05-01" for year in range(1985, 2050))) def test_day_of_portugal_camoes_and_the_portuguese_communities(self): name = "葡國日、賈梅士日暨葡僑日" - # Mandatory Holidays. + # Optional Holidays. self.assertHolidayName( - name, self.man_holidays, (f"{year}-06-10" for year in range(1985, 2000)) + name, self.optional_holidays, (f"{year}-06-10" for year in range(1982, 2000)) ) - self.assertNoHolidayName(name, self.man_holidays, range(2000, 2050)) + self.assertNoHolidayName(name, self.optional_holidays, range(2000, 2050)) # Public Holidays. - self.assertHolidayName(name, (f"{year}-06-10" for year in range(1982, 2000))) + self.assertHolidayName(name, (f"{year}-06-10" for year in range(1985, 2000))) self.assertNoHolidayName(name, range(2000, 2050)) def test_assumption_day(self): name = "聖母升天" + # Optional Holidays. + self.assertHolidayName( + name, self.optional_holidays, (f"{year}-08-15" for year in range(1982, 1987)) + ) + self.assertNoHolidayName(name, self.optional_holidays, range(1987, 2050)) + # Public Holidays. - self.assertHolidayName(name, (f"{year}-08-15" for year in range(1982, 1987))) - self.assertNoHolidayName(name, range(1987, 2050)) + self.assertNoHolidayName(name) def test_national_day(self): name = "中華人民共和國國慶日" @@ -155,58 +165,84 @@ def test_national_day(self): # Government Holidays. self.assertHolidayName( - f"{name}後首個工作日", self.gov_holidays, "2016-10-03", "2017-10-03" + f"{name}後首個工作日", self.government_holidays, "2016-10-03", "2017-10-03" + ) + self.assertHolidayName( + f"{name}的補假", self.government_holidays, "2022-10-03", "2023-10-04" ) - self.assertHolidayName(f"{name}的補假", self.gov_holidays, "2022-10-03", "2023-10-04") self.assertHolidayName( - f"{name_following}後首個工作日", self.gov_holidays, "2011-10-03", "2016-10-04" + f"{name_following}後首個工作日", self.government_holidays, "2011-10-03", "2016-10-04" ) self.assertHolidayName( - f"{name_following}的補假", self.gov_holidays, "2021-10-04", "2022-10-05" + f"{name_following}的補假", self.government_holidays, "2021-10-04", "2022-10-05" ) - # Mandatory Holidays. + # Optional Holidays. self.assertHolidayName( - name, self.man_holidays, (f"{year}-10-01" for year in range(1985, 2050)) + name, self.optional_holidays, (f"{year}-10-01" for year in range(1982, 2050)) ) + self.assertHolidayName( + name_following, self.optional_holidays, (f"{year}-10-02" for year in range(2000, 2050)) + ) + self.assertNoHolidayName(name_following, self.optional_holidays, range(1982, 2000)) # Public Holidays. - self.assertHolidayName(name, (f"{year}-10-01" for year in range(1982, 2050))) - self.assertHolidayName(name_following, (f"{year}-10-02" for year in range(2000, 2050))) - self.assertNoHolidayName(name_following, range(1982, 2000)) + self.assertHolidayName(name, (f"{year}-10-01" for year in range(1985, 2050))) def test_republic_day(self): name = "葡萄牙共和國國慶日" + # Optional Holidays. + self.assertHolidayName( + name, self.optional_holidays, (f"{year}-10-05" for year in range(1982, 2000)) + ) + self.assertNoHolidayName(name, self.optional_holidays, range(2000, 2050)) + # Public Holidays. - self.assertHolidayName(name, (f"{year}-10-05" for year in range(1982, 2000))) - self.assertNoHolidayName(name, range(2000, 2050)) + self.assertNoHolidayName(name) def test_all_saints_day(self): name = "諸聖節" + # Optional Holidays. + self.assertHolidayName( + name, self.optional_holidays, (f"{year}-11-01" for year in range(1982, 1987)) + ) + self.assertNoHolidayName(name, self.optional_holidays, range(1987, 2050)) + # Public Holidays. - self.assertHolidayName(name, (f"{year}-11-01" for year in range(1982, 1987))) - self.assertNoHolidayName(name, range(1987, 2050)) + self.assertNoHolidayName(name) def test_all_souls_day(self): name = "追思節" # Government Holidays. self.assertHolidayName( - f"{name}後首個工作日", self.gov_holidays, "2014-11-03", "2019-11-04" + f"{name}後首個工作日", self.government_holidays, "2014-11-03", "2019-11-04" + ) + self.assertHolidayName( + f"{name}的補假", self.government_holidays, "2024-11-04", "2025-11-03" + ) + + # Optional Holidays. + self.assertHolidayName( + name, self.optional_holidays, (f"{year}-11-02" for year in range(1982, 2050)) ) - self.assertHolidayName(f"{name}的補假", self.gov_holidays, "2024-11-04", "2025-11-03") # Public Holidays. - self.assertHolidayName(name, (f"{year}-11-02" for year in range(1982, 2050))) + self.assertNoHolidayName(name) def test_restoration_of_independence_day(self): name = "恢復獨立紀念日" + # Optional Holidays. + self.assertHolidayName( + name, self.optional_holidays, (f"{year}-12-01" for year in range(1982, 2000)) + ) + self.assertNoHolidayName(name, self.optional_holidays, range(2000, 2050)) + # Public Holidays. - self.assertHolidayName(name, (f"{year}-12-01" for year in range(1982, 2000))) - self.assertNoHolidayName(name, range(2000, 2050)) + self.assertNoHolidayName(name) def test_immaculate_conception(self): name = "聖母無原罪瞻禮" @@ -214,35 +250,42 @@ def test_immaculate_conception(self): # Government Holidays. self.assertHolidayName( f"{name}後首個工作日", - self.gov_holidays, + self.government_holidays, "2012-12-10", "2013-12-09", "2018-12-10", "2019-12-09", ) - self.assertHolidayName(f"{name}的補假", self.gov_holidays, "2024-12-09") + self.assertHolidayName(f"{name}的補假", self.government_holidays, "2024-12-09") + + # Optional Holidays. + self.assertHolidayName( + name, self.optional_holidays, (f"{year}-12-08" for year in range(1982, 2050)) + ) # Public Holidays. - self.assertHolidayName(name, (f"{year}-12-08" for year in range(1982, 2050))) + self.assertNoHolidayName(name) def test_macao_sar_establishment_day(self): name = "澳門特別行政區成立紀念日" # Government Holidays. self.assertHolidayName( - f"{name}後首個工作日", self.gov_holidays, "2014-12-23", "2015-12-21" + f"{name}後首個工作日", self.government_holidays, "2014-12-23", "2015-12-21" + ) + self.assertHolidayName( + f"{name}的補假", self.government_holidays, "2020-12-22", "2025-12-22" ) - self.assertHolidayName(f"{name}的補假", self.gov_holidays, "2020-12-22", "2025-12-22") - # Mandatory Holidays + # Optional Holidays self.assertHolidayName( - name, self.man_holidays, (f"{year}-12-20" for year in range(2000, 2050)) + name, self.optional_holidays, (f"{year}-12-20" for year in range(2000, 2050)) ) - self.assertNoHolidayName(name, self.man_holidays, range(1985, 2000)) + self.assertNoHolidayName(name, self.optional_holidays, range(1982, 2000)) # Public Holidays. self.assertHolidayName(name, (f"{year}-12-20" for year in range(2000, 2050))) - self.assertNoHolidayName(name, range(1982, 2000)) + self.assertNoHolidayName(name, range(1985, 2000)) def test_winter_solstice(self): name = "冬至" @@ -250,17 +293,22 @@ def test_winter_solstice(self): # Government Holidays. self.assertHolidayName( f"{name}後首個工作日", - self.gov_holidays, + self.government_holidays, "2013-12-23", "2018-12-26", "2019-12-23", ) - self.assertHolidayName(f"{name}的補假", self.gov_holidays, "2024-12-23", "2025-12-23") + self.assertHolidayName( + f"{name}的補假", self.government_holidays, "2024-12-23", "2025-12-23" + ) - # Public Holidays. - self.assertHolidayName(name, (f"{year}-12-22" for year in range(1982, 2000))) + # Optional Holidays. + self.assertHolidayName( + name, self.optional_holidays, (f"{year}-12-22" for year in range(1982, 2000)) + ) self.assertHolidayName( name, + self.optional_holidays, # Regulamento Administrativo n.º 4/1999. "2000-12-21", # Ordem Executiva n.º 60/2000. @@ -285,7 +333,10 @@ def test_winter_solstice(self): "2024-12-21", "2025-12-21", ) - self.assertHolidayName(name, range(2000, 2050)) + self.assertHolidayName(name, self.optional_holidays, range(2000, 2050)) + + # Public Holidays. + self.assertNoHolidayName(name) def test_christmas_eve(self): name_1982 = "聖誕前夕" @@ -294,17 +345,30 @@ def test_christmas_eve(self): # Government Holidays. self.assertHolidayName( - f"{name_2000}後首個工作日", self.gov_holidays, "2016-12-26", "2017-12-26" + f"{name_2000}後首個工作日", self.government_holidays, "2016-12-26", "2017-12-26" + ) + self.assertHolidayName( + f"{name_2000}的補假", self.government_holidays, "2022-12-26", "2023-12-26" ) - self.assertHolidayName(f"{name_2000}的補假", self.gov_holidays, "2022-12-26", "2023-12-26") + + # Optional Holidays. + self.assertHolidayName( + name_1982, self.optional_holidays, (f"{year}-12-24" for year in range(1982, 1999)) + ) + self.assertHolidayName(name_1999, self.optional_holidays, "1999-12-24") + self.assertHolidayName( + name_2000, self.optional_holidays, (f"{year}-12-24" for year in range(2000, 2050)) + ) + self.assertNoHolidayName(name_1982, self.optional_holidays, range(1999, 2050)) + self.assertNoHolidayName( + name_1999, self.optional_holidays, range(1982, 1999), range(2000, 2050) + ) + self.assertNoHolidayName(name_2000, self.optional_holidays, range(1982, 2000)) # Public Holidays. - self.assertHolidayName(name_1982, (f"{year}-12-24" for year in range(1982, 1999))) - self.assertHolidayName(name_1999, "1999-12-24") - self.assertHolidayName(name_2000, (f"{year}-12-24" for year in range(2000, 2050))) - self.assertNoHolidayName(name_1982, range(1999, 2050)) - self.assertNoHolidayName(name_1999, range(1982, 1999), range(2000, 2050)) - self.assertNoHolidayName(name_2000, range(1982, 2000)) + self.assertNoHolidayName(name_1982) + self.assertNoHolidayName(name_1999) + self.assertNoHolidayName(name_2000) def test_christmas_day(self): name_1982 = "聖誕" @@ -312,15 +376,25 @@ def test_christmas_day(self): # Government Holidays. self.assertHolidayName( - f"{name_1999}後首個工作日", self.gov_holidays, "2011-12-26", "2016-12-27" + f"{name_1999}後首個工作日", self.government_holidays, "2011-12-26", "2016-12-27" + ) + self.assertHolidayName( + f"{name_1999}的補假", self.government_holidays, "2021-12-27", "2022-12-27" ) - self.assertHolidayName(f"{name_1999}的補假", self.gov_holidays, "2021-12-27", "2022-12-27") + + # Optional Holidays. + self.assertHolidayName( + name_1982, self.optional_holidays, (f"{year}-12-25" for year in range(1982, 1999)) + ) + self.assertHolidayName( + name_1999, self.optional_holidays, (f"{year}-12-25" for year in range(1999, 2050)) + ) + self.assertNoHolidayName(name_1982, self.optional_holidays, range(1999, 2050)) + self.assertNoHolidayName(name_1999, self.optional_holidays, range(1982, 1999)) # Public Holidays. - self.assertHolidayName(name_1982, (f"{year}-12-25" for year in range(1982, 1999))) - self.assertHolidayName(name_1999, (f"{year}-12-25" for year in range(1999, 2050))) - self.assertNoHolidayName(name_1982, range(1999, 2050)) - self.assertNoHolidayName(name_1999, range(1982, 1999)) + self.assertNoHolidayName(name_1982) + self.assertNoHolidayName(name_1999) def test_chinese_new_year(self): name_eve_afternoon = "農曆除夕(下午)" @@ -336,7 +410,7 @@ def test_chinese_new_year(self): # Government Holidays. self.assertHolidayName( name_eve_afternoon, - self.gov_holidays, + self.government_holidays, "2005-02-08", "2008-02-06", "2011-02-02", @@ -351,15 +425,24 @@ def test_chinese_new_year(self): "2024-02-09", "2025-01-28", ) - self.assertHolidayName(name_eve_afternoon, self.gov_holidays, range(2024, 2050)) + self.assertHolidayName(name_eve_afternoon, self.government_holidays, range(2024, 2050)) self.assertNoHolidayName( - name_eve_afternoon, self.gov_holidays, 2006, 2007, 2009, 2010, 2012, 2013, 2016, 2023 + name_eve_afternoon, + self.government_holidays, + 2006, + 2007, + 2009, + 2010, + 2012, + 2013, + 2016, + 2023, ) self.assertNoHolidayName(name_eve_afternoon) self.assertHolidayName( name_d4, - self.gov_holidays, + self.government_holidays, "2006-02-01", "2007-02-21", "2010-02-17", @@ -369,26 +452,35 @@ def test_chinese_new_year(self): "2018-02-19", ) self.assertNoHolidayName( - name_d4, self.gov_holidays, 2005, 2008, 2009, 2011, 2012, 2015, 2016, range(2019, 2050) + name_d4, + self.government_holidays, + 2005, + 2008, + 2009, + 2011, + 2012, + 2015, + 2016, + range(2019, 2050), ) self.assertNoHolidayName(name_d4) self.assertHolidayName( name_d5, - self.gov_holidays, + self.government_holidays, "2014-02-04", "2015-02-23", "2017-02-01", "2018-02-20", ) self.assertNoHolidayName( - name_d5, self.gov_holidays, range(2005, 2014), 2016, range(2019, 2050) + name_d5, self.government_holidays, range(2005, 2014), 2016, range(2019, 2050) ) self.assertNoHolidayName(name_d5) self.assertHolidayName( name_d1_obs, - self.gov_holidays, + self.government_holidays, "2020-01-28", "2023-01-25", "2024-02-13", @@ -397,7 +489,7 @@ def test_chinese_new_year(self): self.assertHolidayName( name_d2_obs, - self.gov_holidays, + self.government_holidays, "2020-01-29", "2021-02-15", "2024-02-14", @@ -406,12 +498,12 @@ def test_chinese_new_year(self): self.assertHolidayName( name_d3_obs, - self.gov_holidays, + self.government_holidays, "2021-02-16", ) self.assertNoHolidayName(name_d3_obs) - # Mandatory Holidays. + # Optional Holidays. dt = ( "2009-01-26", "2010-02-14", @@ -429,16 +521,16 @@ def test_chinese_new_year(self): "2024-02-10", "2025-01-29", ) - self.assertHolidayName(name_d1, self.man_holidays, dt) - self.assertHolidayName(name_d1, self.man_holidays, range(1985, 2050)) - self.assertHolidayName(name_d2, self.man_holidays, range(1985, 2050)) - self.assertHolidayName(name_d3, self.man_holidays, range(1985, 2050)) + self.assertHolidayName(name_d1, self.optional_holidays, dt) + self.assertHolidayName(name_d1, self.optional_holidays, range(1982, 2050)) + self.assertHolidayName(name_d2, self.optional_holidays, range(1982, 2050)) + self.assertHolidayName(name_d3, self.optional_holidays, range(1982, 2050)) # Public Holidays. self.assertHolidayName(name_d1, dt) - self.assertHolidayName(name_d1, range(1982, 2050)) - self.assertHolidayName(name_d2, range(1982, 2050)) - self.assertHolidayName(name_d3, range(1982, 2050)) + self.assertHolidayName(name_d1, range(1985, 2050)) + self.assertHolidayName(name_d2, range(1985, 2050)) + self.assertHolidayName(name_d3, range(1985, 2050)) def test_tomb_sweeping_day(self): name = "清明節" @@ -461,26 +553,29 @@ def test_tomb_sweeping_day(self): # Government Holidays. self.assertHolidayName( - f"{name}後首個工作日", self.gov_holidays, "2014-04-07", "2015-04-07" + f"{name}後首個工作日", self.government_holidays, "2014-04-07", "2015-04-07" + ) + self.assertHolidayName( + f"{name}的補假", self.government_holidays, "2020-04-06", "2021-04-06" ) - self.assertHolidayName(f"{name}的補假", self.gov_holidays, "2020-04-06", "2021-04-06") - # Mandatory Holidays. - self.assertHolidayName(name, self.man_holidays, dt) - self.assertHolidayName(name, self.man_holidays, range(1989, 2050)) - self.assertNoHolidayName(name, self.man_holidays, range(1985, 1989)) + # Optional Holidays. + self.assertHolidayName(name, self.optional_holidays, dt) + self.assertHolidayName(name, self.optional_holidays, range(1982, 2050)) # Public Holidays. self.assertHolidayName(name, dt) - self.assertHolidayName(name, range(1982, 2050)) + self.assertHolidayName(name, range(1989, 2050)) + self.assertNoHolidayName(name, range(1985, 1989)) def test_good_friday(self): name_1982 = "聖周星期五" name_2000 = "耶穌受難日" - # Public Holidays. + # Optional Holidays. self.assertHolidayName( name_2000, + self.optional_holidays, "2009-04-10", "2010-04-02", "2011-04-22", @@ -499,10 +594,14 @@ def test_good_friday(self): "2024-03-29", "2025-04-18", ) - self.assertHolidayName(name_1982, range(1982, 2000)) - self.assertHolidayName(name_2000, range(2000, 2050)) - self.assertNoHolidayName(name_1982, range(2000, 2050)) - self.assertNoHolidayName(name_2000, range(1982, 2000)) + self.assertHolidayName(name_1982, self.optional_holidays, range(1982, 2000)) + self.assertHolidayName(name_2000, self.optional_holidays, range(2000, 2050)) + self.assertNoHolidayName(name_1982, self.optional_holidays, range(2000, 2050)) + self.assertNoHolidayName(name_2000, self.optional_holidays, range(1982, 2000)) + + # Public Holidays. + self.assertNoHolidayName(name_1982) + self.assertNoHolidayName(name_2000) def test_the_day_before_easter(self): name_1982 = "聖周星期六" @@ -513,7 +612,7 @@ def test_the_day_before_easter(self): name_2000_obs_2020 = f"{name_2000}的補假" self.assertHolidayName( name_2000_obs_2005, - self.gov_holidays, + self.government_holidays, "2012-04-09", "2013-04-01", "2014-04-21", @@ -525,7 +624,7 @@ def test_the_day_before_easter(self): ) self.assertHolidayName( name_2000_obs_2020, - self.gov_holidays, + self.government_holidays, "2020-04-13", "2021-04-05", "2022-04-18", @@ -533,20 +632,21 @@ def test_the_day_before_easter(self): "2024-04-01", "2025-04-21", ) - self.assertHolidayName(name_2000_obs_2020, self.gov_holidays, range(2020, 2050)) + self.assertHolidayName(name_2000_obs_2020, self.government_holidays, range(2020, 2050)) self.assertNoHolidayName( name_2000_obs_2005, - self.gov_holidays, + self.government_holidays, range(2005, 2012), range(2020, 2050), ) - self.assertNoHolidayName(name_2000_obs_2020, self.gov_holidays, range(1982, 2020)) + self.assertNoHolidayName(name_2000_obs_2020, self.government_holidays, range(1982, 2020)) self.assertNoHolidayName(name_2000_obs_2005) self.assertNoHolidayName(name_2000_obs_2020) - # Public Holidays. + # Optional Holidays. self.assertHolidayName( name_2000, + self.optional_holidays, "2009-04-11", "2010-04-03", "2011-04-23", @@ -565,10 +665,14 @@ def test_the_day_before_easter(self): "2024-03-30", "2025-04-19", ) - self.assertHolidayName(name_1982, range(1982, 2000)) - self.assertHolidayName(name_2000, range(2000, 2050)) - self.assertNoHolidayName(name_1982, range(2000, 2050)) - self.assertNoHolidayName(name_2000, range(1982, 2000)) + self.assertHolidayName(name_1982, self.optional_holidays, range(1982, 2000)) + self.assertHolidayName(name_2000, self.optional_holidays, range(2000, 2050)) + self.assertNoHolidayName(name_1982, self.optional_holidays, range(2000, 2050)) + self.assertNoHolidayName(name_2000, self.optional_holidays, range(1982, 2000)) + + # Public Holidays. + self.assertNoHolidayName(name_1982) + self.assertNoHolidayName(name_2000) def test_the_buddhas_birthday(self): name = "佛誕節" @@ -576,16 +680,17 @@ def test_the_buddhas_birthday(self): # Government Holidays. self.assertHolidayName( f"{name}後首個工作日", - self.gov_holidays, + self.government_holidays, "2012-04-30", "2016-05-16", "2019-05-13", ) - self.assertHolidayName(f"{name}的補假", self.gov_holidays, "2022-05-09") + self.assertHolidayName(f"{name}的補假", self.government_holidays, "2022-05-09") - # Public Holidays. + # Optional Holidays. self.assertHolidayName( name, + self.optional_holidays, "2022-05-08", "2023-05-26", "2024-05-15", @@ -601,15 +706,19 @@ def test_the_buddhas_birthday(self): "2034-05-25", "2035-05-15", ) - self.assertHolidayName(name, range(2000, 2050)) - self.assertNoHolidayName(name, range(1982, 2000)) + self.assertHolidayName(name, self.optional_holidays, range(2000, 2050)) + self.assertNoHolidayName(name, self.optional_holidays, range(1982, 2000)) + + # Public Holidays. + self.assertNoHolidayName(name) def test_corpus_christi(self): name = "基督聖體聖血節" - # Public Holidays. + # Optional Holidays. self.assertHolidayName( name, + self.optional_holidays, "1982-06-10", "1983-06-02", "1984-06-21", @@ -617,20 +726,24 @@ def test_corpus_christi(self): "1986-05-29", "1987-06-18", ) - self.assertNoHolidayName(name, range(1988, 2050)) + self.assertNoHolidayName(name, self.optional_holidays, range(1988, 2050)) + + # Public Holidays. + self.assertNoHolidayName(name) def test_dragon_boat_festival(self): name = "端午節" # Government Holidays. self.assertHolidayName( - f"{name}後首個工作日", self.gov_holidays, "2012-06-25", "2015-06-22" + f"{name}後首個工作日", self.government_holidays, "2012-06-25", "2015-06-22" ) - self.assertHolidayName(f"{name}的補假", self.gov_holidays, "2025-06-02") + self.assertHolidayName(f"{name}的補假", self.government_holidays, "2025-06-02") - # Public Holidays. + # Optional Holidays. self.assertHolidayName( name, + self.optional_holidays, "2009-05-28", "2010-06-16", "2011-06-06", @@ -649,7 +762,10 @@ def test_dragon_boat_festival(self): "2024-06-10", "2025-05-31", ) - self.assertHolidayName(name, range(1982, 2050)) + self.assertHolidayName(name, self.optional_holidays, range(1982, 2050)) + + # Public Holidays. + self.assertNoHolidayName(name) def test_double_ninth_festival(self): name = "重陽節" @@ -676,28 +792,27 @@ def test_double_ninth_festival(self): # Government Holidays. self.assertHolidayName( f"{name}後首個工作日", - self.gov_holidays, + self.government_holidays, "2013-10-14", "2016-10-10", "2017-10-30", ) - self.assertHolidayName(f"{name}的補假", self.gov_holidays, "2020-10-26") + self.assertHolidayName(f"{name}的補假", self.government_holidays, "2020-10-26") - # Mandatory Holidays. - self.assertHolidayName(name, self.man_holidays, dt) - self.assertHolidayName(name, self.man_holidays, range(1985, 2050)) + # Optional Holidays. + self.assertHolidayName(name, self.optional_holidays, dt) + self.assertHolidayName(name, self.optional_holidays, range(1982, 2050)) # Public Holidays. self.assertHolidayName(name, dt) - self.assertHolidayName(name, range(1982, 2050)) + self.assertHolidayName(name, range(1985, 2050)) def test_mid_autumn_festival(self): name = "中秋節" - # Mandatory Holidays. + # Public Holidays. self.assertHolidayName( name, - self.man_holidays, "1985-09-29", "1986-09-18", "1987-10-07", @@ -714,8 +829,7 @@ def test_mid_autumn_festival(self): "1998-10-05", "1999-09-24", ) - self.assertNoHolidayName(name, self.man_holidays, range(2000, 2050)) - self.assertNoHolidayName(name) + self.assertNoHolidayName(name, range(2000, 2050)) def test_the_day_following_mid_autumn_festival(self): name = "中秋節翌日" @@ -739,29 +853,31 @@ def test_the_day_following_mid_autumn_festival(self): ) # Government Holidays. - self.assertHolidayName(f"{name}後首個工作日", self.gov_holidays, "2019-09-16") - self.assertHolidayName(f"{name}的補假", self.gov_holidays, "2022-09-12", "2023-10-03") + self.assertHolidayName(f"{name}後首個工作日", self.government_holidays, "2019-09-16") + self.assertHolidayName( + f"{name}的補假", self.government_holidays, "2022-09-12", "2023-10-03" + ) - # Mandatory Holidays. - self.assertHolidayName(name, self.man_holidays, dt) - self.assertHolidayName(name, self.man_holidays, range(2000, 2050)) - self.assertNoHolidayName(name, self.man_holidays, range(1985, 2000)) + # Optional Holidays. + self.assertHolidayName(name, self.optional_holidays, dt) + self.assertHolidayName(name, self.optional_holidays, range(1982, 2050)) # Public Holidays. self.assertHolidayName(name, dt) - self.assertHolidayName(name, range(1982, 2050)) + self.assertHolidayName(name, range(2000, 2050)) + self.assertNoHolidayName(name, range(1985, 2000)) def test_new_years_eve(self): name = "除夕" name_afternoon = f"{name}(下午)" # Government Holidays. - self.assertHolidayName(name, self.gov_holidays, "2012-12-31") + self.assertHolidayName(name, self.government_holidays, "2012-12-31") self.assertNoHolidayName(name) self.assertHolidayName( name_afternoon, - self.gov_holidays, + self.government_holidays, ( f"{year}-12-31" for year in ( @@ -773,27 +889,33 @@ def test_new_years_eve(self): ), ) self.assertNoHolidayName( - name_afternoon, self.gov_holidays, 2011, 2012, 2016, 2017, 2022, 2023 + name_afternoon, self.government_holidays, 2011, 2012, 2016, 2017, 2022, 2023 ) self.assertNoHolidayName(name_afternoon) def test_macau_city_day(self): name = "澳門市日" - # Public Holidays. - m_holidays = Macau(subdiv="M", years=range(1982, 2023)) - self.assertHolidayName(name, m_holidays, (f"{year}-06-24" for year in range(1982, 2000))) - self.assertNoHolidayName(name, m_holidays, range(2000, 2050)) + # Optional Holidays. + m_optional_holidays = Macau(categories=OPTIONAL, subdiv="M", years=range(1982, 2023)) + self.assertHolidayName( + name, m_optional_holidays, (f"{year}-06-24" for year in range(1982, 2000)) + ) + self.assertNoHolidayName(name, m_optional_holidays, range(2000, 2050)) self.assertNoHolidayName(name) def test_day_of_the_municipality_of_ilhas(self): name = "海島市日" - # Public Holidays. - i_holidays = Macau(subdiv="I", years=range(1982, 2023)) - self.assertHolidayName(name, i_holidays, (f"{year}-11-30" for year in range(1982, 1993))) - self.assertHolidayName(name, i_holidays, (f"{year}-07-13" for year in range(1993, 2000))) - self.assertNoHolidayName(name, i_holidays, range(2000, 2050)) + # Optional Holidays. + i_optional_holidays = Macau(categories=OPTIONAL, subdiv="I", years=range(1982, 2023)) + self.assertHolidayName( + name, i_optional_holidays, (f"{year}-11-30" for year in range(1982, 1993)) + ) + self.assertHolidayName( + name, i_optional_holidays, (f"{year}-07-13" for year in range(1993, 2000)) + ) + self.assertNoHolidayName(name, i_optional_holidays, range(2000, 2050)) self.assertNoHolidayName(name) def test_2024_government(self): @@ -818,10 +940,10 @@ def test_2024_government(self): Macau(categories=GOVERNMENT, years=2024, observed=False), dt_observed ) - def test_2024_mandatory(self): + def test_2024_public(self): # https://www.dsal.gov.mo/en/text/holiday_table.html self.assertHolidays( - Macau(categories=MANDATORY, years=2024), + Macau(years=2024), ("2024-01-01", "元旦"), ("2024-02-10", "農曆正月初一"), ("2024-02-11", "農曆正月初二"), @@ -834,10 +956,10 @@ def test_2024_mandatory(self): ("2024-12-20", "澳門特別行政區成立紀念日"), ) - def test_2017_public(self): + def test_2017_optional(self): # https://www.gov.mo/en/public-holidays/year-2017/ self.assertHolidays( - Macau(years=2017), + Macau(categories=OPTIONAL, years=2017), ("2017-01-01", "元旦"), ("2017-01-28", "農曆正月初一"), ("2017-01-29", "農曆正月初二"), @@ -860,10 +982,10 @@ def test_2017_public(self): ("2017-12-25", "聖誕節"), ) - def test_2018_public(self): + def test_2018_optional(self): # https://www.gov.mo/en/public-holidays/year-2018/ self.assertHolidays( - Macau(years=2018), + Macau(categories=OPTIONAL, years=2018), ("2018-01-01", "元旦"), ("2018-02-16", "農曆正月初一"), ("2018-02-17", "農曆正月初二"), @@ -886,10 +1008,10 @@ def test_2018_public(self): ("2018-12-25", "聖誕節"), ) - def test_2019_public(self): + def test_2019_optional(self): # https://www.gov.mo/en/public-holidays/year-2019/ self.assertHolidays( - Macau(years=2019), + Macau(categories=OPTIONAL, years=2019), ("2019-01-01", "元旦"), ("2019-02-05", "農曆正月初一"), ("2019-02-06", "農曆正月初二"), @@ -912,10 +1034,10 @@ def test_2019_public(self): ("2019-12-25", "聖誕節"), ) - def test_2020_public(self): + def test_2020_optional(self): # https://www.gov.mo/en/public-holidays/year-2020/ self.assertHolidays( - Macau(years=2020), + Macau(categories=OPTIONAL, years=2020), ("2020-01-01", "元旦"), ("2020-01-25", "農曆正月初一"), ("2020-01-26", "農曆正月初二"), @@ -937,10 +1059,10 @@ def test_2020_public(self): ("2020-12-25", "聖誕節"), ) - def test_2021_public(self): + def test_2021_optional(self): # https://www.gov.mo/en/public-holidays/year-2021/ self.assertHolidays( - Macau(years=2021), + Macau(categories=OPTIONAL, years=2021), ("2021-01-01", "元旦"), ("2021-02-12", "農曆正月初一"), ("2021-02-13", "農曆正月初二"), @@ -963,10 +1085,10 @@ def test_2021_public(self): ("2021-12-25", "聖誕節"), ) - def test_2022_public(self): + def test_2022_optional(self): # https://www.gov.mo/en/public-holidays/year-2022/ self.assertHolidays( - Macau(years=2022), + Macau(categories=OPTIONAL, years=2022), ("2022-01-01", "元旦"), ("2022-02-01", "農曆正月初一"), ("2022-02-02", "農曆正月初二"), @@ -989,10 +1111,10 @@ def test_2022_public(self): ("2022-12-25", "聖誕節"), ) - def test_2023_public(self): + def test_2023_optional(self): # https://www.gov.mo/en/public-holidays/year-2023/ self.assertHolidays( - Macau(years=2023), + Macau(categories=OPTIONAL, years=2023), ("2023-01-01", "元旦"), ("2023-01-22", "農曆正月初一"), ("2023-01-23", "農曆正月初二"), @@ -1015,10 +1137,10 @@ def test_2023_public(self): ("2023-12-25", "聖誕節"), ) - def test_2024_public(self): + def test_2024_optional(self): # https://www.gov.mo/en/public-holidays/year-2024/ self.assertHolidays( - Macau(years=2024), + Macau(categories=OPTIONAL, years=2024), ("2024-01-01", "元旦"), ("2024-02-10", "農曆正月初一"), ("2024-02-11", "農曆正月初二"), @@ -1041,10 +1163,10 @@ def test_2024_public(self): ("2024-12-25", "聖誕節"), ) - def test_2025_public(self): + def test_2025_optional(self): # https://www.gov.mo/en/public-holidays/year-2025/ self.assertHolidays( - Macau(years=2025), + Macau(categories=OPTIONAL, years=2025), ("2025-01-01", "元旦"), ("2025-01-29", "農曆正月初一"), ("2025-01-30", "農曆正月初二"), From b53bf5473068f5146c190d97e4f52ef5a7111c02 Mon Sep 17 00:00:00 2001 From: ~Jhellico Date: Thu, 28 Aug 2025 20:47:26 +0300 Subject: [PATCH 37/48] Update Bosnia and Herzegovina holidays (#2869) --- holidays/countries/bosnia_and_herzegovina.py | 4 +- holidays/locale/bs/LC_MESSAGES/BA.po | 6 +- holidays/locale/en_US/LC_MESSAGES/BA.po | 6 +- holidays/locale/sr/LC_MESSAGES/BA.po | 10 +- holidays/locale/uk/LC_MESSAGES/BA.po | 6 +- .../countries/test_bosnia_and_herzegovina.py | 440 +++++++++--------- 6 files changed, 236 insertions(+), 236 deletions(-) diff --git a/holidays/countries/bosnia_and_herzegovina.py b/holidays/countries/bosnia_and_herzegovina.py index defb6e2336..c35317321c 100644 --- a/holidays/countries/bosnia_and_herzegovina.py +++ b/holidays/countries/bosnia_and_herzegovina.py @@ -58,9 +58,9 @@ class BosniaAndHerzegovina( # %s (estimated). estimated_label = tr("%s (procijenjeno)") # %s (observed, estimated). - observed_estimated_label = tr("%s (preneseno, procijenjeno)") + observed_estimated_label = tr("%s (slobodan dan, procijenjeno)") # %s (observed). - observed_label = tr("%s (preneseno)") + observed_label = tr("%s (slobodan dan)") subdivisions = ( "BIH", # Federacija Bosne i Hercegovine. "BRC", # Brčko distrikt. diff --git a/holidays/locale/bs/LC_MESSAGES/BA.po b/holidays/locale/bs/LC_MESSAGES/BA.po index 22085354fd..eab67ef165 100644 --- a/holidays/locale/bs/LC_MESSAGES/BA.po +++ b/holidays/locale/bs/LC_MESSAGES/BA.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-06-26 18:31+0300\n" -"PO-Revision-Date: 2025-08-26 18:49+0300\n" +"PO-Revision-Date: 2025-08-27 18:24+0300\n" "Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: bs\n" @@ -34,12 +34,12 @@ msgstr "" #. %s (observed, estimated). #, c-format -msgid "%s (preneseno, procijenjeno)" +msgid "%s (slobodan dan, procijenjeno)" msgstr "" #. %s (observed). #, c-format -msgid "%s (preneseno)" +msgid "%s (slobodan dan)" msgstr "" #. Orthodox Good Friday. diff --git a/holidays/locale/en_US/LC_MESSAGES/BA.po b/holidays/locale/en_US/LC_MESSAGES/BA.po index b0900a0864..faecb58cdf 100644 --- a/holidays/locale/en_US/LC_MESSAGES/BA.po +++ b/holidays/locale/en_US/LC_MESSAGES/BA.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-06-26 18:31+0300\n" -"PO-Revision-Date: 2025-08-26 18:49+0300\n" +"PO-Revision-Date: 2025-08-27 18:24+0300\n" "Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: en_US\n" @@ -34,12 +34,12 @@ msgstr "%s (estimated)" #. %s (observed, estimated). #, c-format -msgid "%s (preneseno, procijenjeno)" +msgid "%s (slobodan dan, procijenjeno)" msgstr "%s (observed, estimated)" #. %s (observed). #, c-format -msgid "%s (preneseno)" +msgid "%s (slobodan dan)" msgstr "%s (observed)" #. Orthodox Good Friday. diff --git a/holidays/locale/sr/LC_MESSAGES/BA.po b/holidays/locale/sr/LC_MESSAGES/BA.po index 167a37252a..3cf1d06412 100644 --- a/holidays/locale/sr/LC_MESSAGES/BA.po +++ b/holidays/locale/sr/LC_MESSAGES/BA.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-06-26 18:31+0300\n" -"PO-Revision-Date: 2025-08-26 18:49+0300\n" +"PO-Revision-Date: 2025-08-27 18:24+0300\n" "Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: sr\n" @@ -34,13 +34,13 @@ msgstr "%s (процењено)" #. %s (observed, estimated). #, c-format -msgid "%s (preneseno, procijenjeno)" -msgstr "%s (пренешено, процењено)" +msgid "%s (slobodan dan, procijenjeno)" +msgstr "%s (слободан дан, процењено)" #. %s (observed). #, c-format -msgid "%s (preneseno)" -msgstr "%s (пренешено)" +msgid "%s (slobodan dan)" +msgstr "%s (слободан дан)" #. Orthodox Good Friday. msgid "Veliki petak (Pravoslavni)" diff --git a/holidays/locale/uk/LC_MESSAGES/BA.po b/holidays/locale/uk/LC_MESSAGES/BA.po index 6537f9800f..f89e4973f8 100644 --- a/holidays/locale/uk/LC_MESSAGES/BA.po +++ b/holidays/locale/uk/LC_MESSAGES/BA.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Holidays 0.80\n" "POT-Creation-Date: 2023-06-26 18:31+0300\n" -"PO-Revision-Date: 2025-08-26 18:50+0300\n" +"PO-Revision-Date: 2025-08-27 18:24+0300\n" "Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: uk\n" @@ -34,12 +34,12 @@ msgstr "%s (приблизна дата)" #. %s (observed, estimated). #, c-format -msgid "%s (preneseno, procijenjeno)" +msgid "%s (slobodan dan, procijenjeno)" msgstr "%s (вихідний, приблизна дата)" #. %s (observed). #, c-format -msgid "%s (preneseno)" +msgid "%s (slobodan dan)" msgstr "%s (вихідний)" #. Orthodox Good Friday. diff --git a/tests/countries/test_bosnia_and_herzegovina.py b/tests/countries/test_bosnia_and_herzegovina.py index ad2cd498d8..826b161a2e 100644 --- a/tests/countries/test_bosnia_and_herzegovina.py +++ b/tests/countries/test_bosnia_and_herzegovina.py @@ -19,359 +19,359 @@ class TestBosniaAndHerzegovina(CommonCountryTests, TestCase): @classmethod def setUpClass(cls): - years = range(2000, 2030) + years = range(2000, 2050) super().setUpClass(BosniaAndHerzegovina, years=years) - cls.bih_holidays = BosniaAndHerzegovina(subdiv="BIH", years=years) - cls.brc_holidays = BosniaAndHerzegovina(subdiv="BRC", years=years) - cls.srp_holidays = BosniaAndHerzegovina(subdiv="SRP", years=years) - cls.bih_holidays_non_obs = BosniaAndHerzegovina(subdiv="BIH", observed=False, years=years) - cls.brc_holidays_non_obs = BosniaAndHerzegovina(subdiv="BRC", observed=False, years=years) - cls.srp_holidays_non_obs = BosniaAndHerzegovina(subdiv="SRP", observed=False, years=years) + cls.subdiv_holidays = { + subdiv: BosniaAndHerzegovina(subdiv=subdiv, years=years) + for subdiv in BosniaAndHerzegovina.subdivisions + } + cls.subdiv_holidays_non_observed = { + subdiv: BosniaAndHerzegovina(subdiv=subdiv, years=years, observed=False) + for subdiv in BosniaAndHerzegovina.subdivisions + } def test_country_aliases(self): self.assertAliases(BosniaAndHerzegovina, BA, BIH) - def test_new_years(self): + def test_new_years_day(self): name = "Nova godina" - self.assertHolidayName(name, (f"{year}-01-01" for year in range(2000, 2030))) - self.assertHolidayName(name, (f"{year}-01-02" for year in range(2000, 2030))) - - dt = ( - "2006-01-03", - "2012-01-03", - "2017-01-03", - "2023-01-03", - ) - self.assertHolidayName(f"{name} (preneseno)", self.bih_holidays, dt) - self.assertNoNonObservedHoliday(self.bih_holidays_non_obs, dt) - - dt = ( - "2000-01-03", - "2005-01-03", - "2006-01-03", - "2011-01-03", - "2012-01-03", - "2017-01-03", - "2022-01-03", - "2023-01-03", + name_observed = f"{name} (slobodan dan)" + self.assertHolidayName( + name, + (f"{year}-01-01" for year in range(2000, 2050)), + (f"{year}-01-02" for year in range(2000, 2050)), ) - self.assertHolidayName(f"{name} (preneseno)", self.brc_holidays, dt) - self.assertNoNonObservedHoliday(self.brc_holidays_non_obs, dt) - dt = ( - "2000-01-03", - "2005-01-03", - "2011-01-03", - "2022-01-03", - ) - self.assertHolidayName(f"{name} (preneseno)", self.srp_holidays, dt) - self.assertNoNonObservedHoliday(self.srp_holidays_non_obs, dt) + obs_dates = { + "BIH": ( + "2006-01-03", + "2012-01-03", + "2017-01-03", + "2023-01-03", + ), + "BRC": ( + "2000-01-03", + "2005-01-03", + "2006-01-03", + "2011-01-03", + "2012-01-03", + "2017-01-03", + "2022-01-03", + "2023-01-03", + ), + "SRP": ( + "2000-01-03", + "2005-01-03", + "2011-01-03", + "2022-01-03", + ), + } + for subdiv, holidays in self.subdiv_holidays.items(): + self.assertHolidayName(name_observed, holidays, obs_dates[subdiv]) + self.assertNoNonObservedHoliday( + self.subdiv_holidays_non_observed[subdiv], obs_dates[subdiv] + ) def test_orthodox_christmas_eve(self): name = "Badnji dan (Pravoslavni)" - self.assertHolidayName( - name, self.bih_holidays, (f"{year}-01-06" for year in range(2000, 2030)) - ) - self.assertHolidayName( - name, self.srp_holidays, (f"{year}-01-06" for year in range(2000, 2030)) - ) - self.assertNoHolidayName(name, self.brc_holidays) self.assertNoHolidayName(name) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv != "BRC": + self.assertHolidayName( + name, holidays, (f"{year}-01-06" for year in range(2000, 2050)) + ) + else: + self.assertNoHolidayName(name, holidays) def test_orthodox_christmas(self): name = "Božić (Pravoslavni)" - self.assertHolidayName(name, (f"{year}-01-07" for year in range(2000, 2030))) + self.assertHolidayName(name, (f"{year}-01-07" for year in range(2000, 2050))) - dt = ( + name_observed = f"{name} (slobodan dan)" + obs_dt = ( "2001-01-08", "2007-01-08", "2018-01-08", ) - self.assertHolidayName(f"{name} (preneseno)", self.brc_holidays, dt) - self.assertNoNonObservedHoliday(self.brc_holidays_non_obs, dt) - self.assertNoHoliday(dt) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv == "BRC": + self.assertHolidayName(name_observed, holidays, obs_dt) + self.assertNoNonObservedHoliday(self.subdiv_holidays_non_observed[subdiv], obs_dt) + else: + self.assertNoHoliday(holidays, obs_dt) + self.assertNoHoliday(obs_dt) def test_orthodox_new_year(self): name = "Pravoslavna Nova godina" - self.assertHolidayName( - name, self.srp_holidays, (f"{year}-01-14" for year in range(2000, 2030)) - ) - self.assertNoHolidayName(name, self.brc_holidays) - self.assertNoHolidayName(name, self.bih_holidays) self.assertNoHolidayName(name) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv == "SRP": + self.assertHolidayName( + name, holidays, (f"{year}-01-14" for year in range(2000, 2050)) + ) + else: + self.assertNoHolidayName(name, holidays) def test_independence_day(self): name = "Dan nezavisnosti" - self.assertHolidayName( - name, self.bih_holidays, (f"{year}-03-01" for year in range(2000, 2030)) - ) - self.assertNoHolidayName(name, self.brc_holidays) - self.assertNoHolidayName(name, self.srp_holidays) self.assertNoHolidayName(name) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv == "BIH": + self.assertHolidayName( + name, holidays, (f"{year}-03-01" for year in range(2000, 2050)) + ) + else: + self.assertNoHolidayName(name, holidays) def test_establishment_bd_day(self): name = "Dan uspostavljanja Brčko distrikta" - self.assertHolidayName( - name, self.brc_holidays, (f"{year}-03-08" for year in range(2000, 2030)) - ) - self.assertNoHolidayName(name, self.bih_holidays) - self.assertNoHolidayName(name, self.srp_holidays) self.assertNoHolidayName(name) - - dt = ( + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv == "BRC": + self.assertHolidayName( + name, holidays, (f"{year}-03-08" for year in range(2000, 2050)) + ) + else: + self.assertNoHolidayName(name, holidays) + + name_observed = f"{name} (slobodan dan)" + obs_dt = ( "2009-03-09", "2015-03-09", "2020-03-09", ) - self.assertHolidayName(f"{name} (preneseno)", self.brc_holidays, dt) - self.assertNoNonObservedHoliday(self.brc_holidays_non_obs, dt) - self.assertNoHoliday(dt) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv == "BRC": + self.assertHolidayName(name_observed, holidays, obs_dt) + self.assertNoNonObservedHoliday(self.subdiv_holidays_non_observed[subdiv], obs_dt) + else: + self.assertNoHoliday(holidays, obs_dt) + self.assertNoHoliday(obs_dt) def test_catholic_easter(self): name = "Veliki petak (Katolički)" + self.assertNoHolidayName(name) dt = ( - "2012-04-06", - "2015-04-03", - "2018-03-30", - "2019-04-19", "2020-04-10", "2021-04-02", "2022-04-15", "2023-04-07", ) - self.assertHolidayName(name, self.bih_holidays, dt) - self.assertHolidayName(name, self.srp_holidays, dt) - self.assertNoHolidayName(name, self.brc_holidays) - self.assertNoHolidayName(name) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv != "BRC": + self.assertHolidayName(name, holidays, dt) + else: + self.assertNoHolidayName(name, holidays) name = "Uskrs (Katolički)" + self.assertNoHolidayName(name) dt = ( - "2012-04-08", - "2015-04-05", - "2018-04-01", - "2019-04-21", "2020-04-12", "2021-04-04", "2022-04-17", "2023-04-09", ) - self.assertHolidayName(name, self.bih_holidays, dt) - self.assertHolidayName(name, self.srp_holidays, dt) - self.assertNoHolidayName(name, self.brc_holidays) - self.assertNoHolidayName(name) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv != "BRC": + self.assertHolidayName(name, holidays, dt) + else: + self.assertNoHolidayName(name, holidays) name = "Uskrsni ponedjeljak (Katolički)" dt = ( - "2012-04-09", - "2015-04-06", - "2018-04-02", - "2019-04-22", "2020-04-13", "2021-04-05", "2022-04-18", "2023-04-10", ) - self.assertHolidayName(name, self.bih_holidays, dt) - self.assertHolidayName(name, self.srp_holidays, dt) - self.assertHolidayName(name, self.brc_holidays, dt) self.assertHolidayName(name, dt) + for subdiv, holidays in self.subdiv_holidays.items(): + self.assertHolidayName(name, holidays, dt) def test_orthodox_easter(self): name = "Veliki petak (Pravoslavni)" dt = ( - "2012-04-13", - "2015-04-10", - "2018-04-06", - "2019-04-26", "2020-04-17", "2021-04-30", "2022-04-22", "2023-04-14", ) - self.assertHolidayName(name, self.bih_holidays, dt) - self.assertHolidayName(name, self.srp_holidays, dt) - self.assertHolidayName(name, self.brc_holidays, dt) self.assertHolidayName(name, dt) + for subdiv, holidays in self.subdiv_holidays.items(): + self.assertHolidayName(name, holidays, dt) name = "Vaskrs (Pravoslavni)" + self.assertNoHolidayName(name) dt = ( - "2012-04-15", - "2015-04-12", - "2018-04-08", - "2019-04-28", "2020-04-19", + "2021-05-02", "2022-04-24", "2023-04-16", ) - self.assertHolidayName(name, self.bih_holidays, dt) - self.assertHolidayName(name, self.srp_holidays, dt) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv != "BRC": + self.assertHolidayName(name, holidays, dt) + else: + self.assertNoHolidayName(name, holidays) name = "Uskrsni ponedjeljak (Pravoslavni)" + self.assertNoHolidayName(name) dt = ( - "2012-04-16", - "2015-04-13", - "2018-04-09", - "2019-04-29", "2020-04-20", "2021-05-03", "2022-04-25", "2023-04-17", ) - self.assertHolidayName(name, self.bih_holidays, dt) - self.assertHolidayName(name, self.srp_holidays, dt) - self.assertNoHolidayName(name, self.brc_holidays) - self.assertNoHolidayName(name) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv != "BRC": + self.assertHolidayName(name, holidays, dt) + else: + self.assertNoHolidayName(name, holidays) def test_labor_day(self): name = "Međunarodni praznik rada" - self.assertHolidayName(name, (f"{year}-05-01" for year in range(2000, 2030))) - self.assertHolidayName(name, (f"{year}-05-02" for year in range(2000, 2030))) - - dt = ( - "2011-05-03", - "2022-05-03", - ) - self.assertHolidayName(f"{name} (preneseno)", self.bih_holidays, dt) - self.assertNoNonObservedHolidayName(f"{name} (preneseno)", self.bih_holidays_non_obs, dt) - - dt = ( - "2004-05-03", - "2005-05-03", - "2010-05-03", - "2011-05-03", - "2016-05-03", - "2021-05-03", - "2022-05-03", + name_observed = f"{name} (slobodan dan)" + self.assertHolidayName( + name, + (f"{year}-05-01" for year in range(2000, 2050)), + (f"{year}-05-02" for year in range(2000, 2050)), ) - self.assertHolidayName(f"{name} (preneseno)", self.brc_holidays, dt) - self.assertNoNonObservedHoliday(self.brc_holidays_non_obs, dt) - dt = ( - "2004-05-03", - "2010-05-03", - "2021-05-03", - ) - self.assertHolidayName(f"{name} (preneseno)", self.srp_holidays, dt) - self.assertNoNonObservedHolidayName(f"{name} (preneseno)", self.srp_holidays_non_obs, dt) + obs_dates = { + "BIH": ( + "2011-05-03", + "2022-05-03", + ), + "BRC": ( + "2004-05-03", + "2005-05-03", + "2010-05-03", + "2011-05-03", + "2016-05-03", + "2021-05-03", + "2022-05-03", + ), + "SRP": ( + "2004-05-03", + "2010-05-03", + "2021-05-03", + ), + } + for subdiv, holidays in self.subdiv_holidays.items(): + self.assertHolidayName(name_observed, holidays, obs_dates[subdiv]) def test_victory_day(self): name = "Dan pobjede nad fašizmom" - self.assertHolidayName( - name, self.bih_holidays, (f"{year}-05-09" for year in range(2000, 2030)) - ) - self.assertHolidayName( - name, self.srp_holidays, (f"{year}-05-09" for year in range(2000, 2030)) - ) - self.assertNoHolidayName(name, self.brc_holidays) self.assertNoHolidayName(name) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv != "BRC": + self.assertHolidayName( + name, holidays, (f"{year}-05-09" for year in range(2000, 2050)) + ) + else: + self.assertNoHolidayName(name, holidays) def test_eid_al_fitr(self): name = "Ramazanski Bajram" - dt = ( - "2010-09-10", - "2015-07-18", - "2018-06-15", - "2019-06-04", + dt_1 = ( "2020-05-24", "2021-05-13", "2022-05-02", "2023-04-21", ) - self.assertHolidayName(name, dt) - self.assertHolidayName(name, self.bih_holidays, dt) - self.assertHolidayName(name, self.brc_holidays, dt) - self.assertHolidayName(name, self.srp_holidays, dt) - - dt = ( - "2010-09-11", - "2015-07-19", - "2018-06-16", - "2019-06-05", + dt_2 = ( "2020-05-25", "2021-05-14", "2022-05-03", "2023-04-22", ) - self.assertHolidayName(name, self.bih_holidays, dt) - self.assertHolidayName(name, self.srp_holidays, dt) - self.assertNoHolidayName(name, self.brc_holidays, dt) - self.assertNoHolidayName(name, dt) + self.assertHolidayName(name, dt_1) + self.assertNoHolidayName(name, dt_2) + + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv != "BRC": + self.assertHolidayName(name, holidays, dt_1, dt_2) + else: + self.assertHolidayName(name, holidays, dt_1) + self.assertNoHolidayName(name, holidays, dt_2) def test_eid_al_adha(self): name = "Kurban Bajram" - dt = ( + dt_1 = ( "2006-01-10", "2006-12-31", - "2010-11-17", - "2015-09-24", - "2018-08-22", - "2019-08-11", "2020-07-31", "2021-07-20", "2022-07-09", "2023-06-28", ) - self.assertHolidayName(name, dt) - self.assertHolidayName(name, self.bih_holidays, dt) - self.assertHolidayName(name, self.brc_holidays, dt) - self.assertHolidayName(name, self.srp_holidays, dt) - - dt = ( + dt_2 = ( "2007-01-01", - "2010-11-18", - "2015-09-25", - "2018-08-23", - "2019-08-12", "2020-08-01", "2021-07-21", "2022-07-10", "2023-06-29", ) - self.assertHolidayName(name, self.bih_holidays, dt) - self.assertHolidayName(name, self.srp_holidays, dt) - self.assertNoHolidayName(name, self.brc_holidays, dt) - self.assertNoHolidayName(name, dt) + self.assertHolidayName(name, dt_1) + self.assertNoHolidayName(name, dt_2) + + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv != "BRC": + self.assertHolidayName(name, holidays, dt_1, dt_2) + else: + self.assertHolidayName(name, holidays, dt_1) + self.assertNoHolidayName(name, holidays, dt_2) def test_dayton_agreement_day(self): name = "Dan uspostave Opšteg okvirnog sporazuma za mir u Bosni i Hercegovini" - self.assertHolidayName( - name, self.srp_holidays, (f"{year}-11-21" for year in range(2000, 2030)) - ) - self.assertNoHolidayName(name, self.bih_holidays) - self.assertNoHolidayName(name, self.brc_holidays) self.assertNoHolidayName(name) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv == "SRP": + self.assertHolidayName( + name, holidays, (f"{year}-11-21" for year in range(2000, 2050)) + ) + else: + self.assertNoHolidayName(name, holidays) def test_statehood_day(self): name = "Dan državnosti" - self.assertHolidayName( - name, self.bih_holidays, (f"{year}-11-25" for year in range(2004, 2030)) - ) - self.assertNoHolidayName(name, self.brc_holidays) - self.assertNoHolidayName(name, self.srp_holidays) self.assertNoHolidayName(name) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv == "BIH": + self.assertHolidayName( + name, holidays, (f"{year}-11-25" for year in range(2000, 2050)) + ) + else: + self.assertNoHolidayName(name, holidays) + + def test_catholic_christmas_eve(self): + name = "Badnji dan (Katolički)" + self.assertNoHolidayName(name) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv != "BRC": + self.assertHolidayName( + name, holidays, (f"{year}-12-24" for year in range(2000, 2050)) + ) + else: + self.assertNoHolidayName(name, holidays) def test_catholic_christmas(self): name = "Božić (Katolički)" - self.assertHolidayName(name, (f"{year}-12-25" for year in range(2000, 2030))) + name_observed = f"{name} (slobodan dan)" + self.assertHolidayName(name, (f"{year}-12-25" for year in range(2000, 2050))) - dt = ( + obs_dt = ( "2005-12-26", "2011-12-26", "2016-12-26", ) - self.assertHolidayName(f"{name} (preneseno)", self.brc_holidays, dt) - self.assertNoNonObservedHoliday(self.brc_holidays_non_obs, dt) - self.assertNoHoliday(dt) - - name = "Badnji dan (Katolički)" - self.assertHolidayName( - name, self.bih_holidays, (f"{year}-12-24" for year in range(2000, 2030)) - ) - self.assertHolidayName( - name, self.srp_holidays, (f"{year}-12-24" for year in range(2000, 2030)) - ) - self.assertNoHolidayName(name, self.brc_holidays) - self.assertNoHolidayName(name) + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv == "BRC": + self.assertHolidayName(name_observed, holidays, obs_dt) + self.assertNoNonObservedHoliday(self.subdiv_holidays_non_observed[subdiv], obs_dt) + else: + self.assertNoHoliday(holidays, obs_dt) + self.assertNoHoliday(obs_dt) def test_2021(self): self.assertHolidays( @@ -422,7 +422,7 @@ def test_2021(self): ("2021-04-30", "Veliki petak (Pravoslavni)"), ("2021-05-01", "Međunarodni praznik rada"), ("2021-05-02", "Međunarodni praznik rada"), - ("2021-05-03", "Međunarodni praznik rada (preneseno)"), + ("2021-05-03", "Međunarodni praznik rada (slobodan dan)"), ("2021-05-13", "Ramazanski Bajram"), ("2021-07-20", "Kurban Bajram"), ("2021-12-25", "Božić (Katolički)"), @@ -443,7 +443,7 @@ def test_2021(self): ("2021-05-02", "Međunarodni praznik rada; Vaskrs (Pravoslavni)"), ( "2021-05-03", - "Međunarodni praznik rada (preneseno); Uskrsni ponedjeljak (Pravoslavni)", + "Međunarodni praznik rada (slobodan dan); Uskrsni ponedjeljak (Pravoslavni)", ), ("2021-05-09", "Dan pobjede nad fašizmom"), ("2021-05-13", "Ramazanski Bajram"), @@ -459,7 +459,7 @@ def test_l10n_default(self): self.assertLocalizedHolidays( ("2022-01-01", "Nova godina"), ("2022-01-02", "Nova godina"), - ("2022-01-03", "Nova godina (preneseno)"), + ("2022-01-03", "Nova godina (slobodan dan)"), ("2022-01-06", "Badnji dan (Pravoslavni)"), ("2022-01-07", "Božić (Pravoslavni)"), ("2022-01-14", "Pravoslavna Nova godina"), @@ -473,7 +473,7 @@ def test_l10n_default(self): ("2022-04-25", "Uskrsni ponedjeljak (Pravoslavni)"), ("2022-05-01", "Međunarodni praznik rada"), ("2022-05-02", "Međunarodni praznik rada; Ramazanski Bajram"), - ("2022-05-03", "Međunarodni praznik rada (preneseno); Ramazanski Bajram"), + ("2022-05-03", "Međunarodni praznik rada (slobodan dan); Ramazanski Bajram"), ("2022-05-09", "Dan pobjede nad fašizmom"), ("2022-07-09", "Kurban Bajram"), ("2022-07-10", "Kurban Bajram"), @@ -481,7 +481,7 @@ def test_l10n_default(self): ("2022-11-25", "Dan državnosti"), ("2022-12-24", "Badnji dan (Katolički)"), ("2022-12-25", "Božić (Katolički)"), - ("2022-12-26", "Božić (Katolički) (preneseno)"), + ("2022-12-26", "Božić (Katolički) (slobodan dan)"), ) def test_l10n_en_us(self): @@ -519,7 +519,7 @@ def test_l10n_sr(self): "sr", ("2022-01-01", "Нова година"), ("2022-01-02", "Нова година"), - ("2022-01-03", "Нова година (пренешено)"), + ("2022-01-03", "Нова година (слободан дан)"), ("2022-01-06", "Бадњи дан (Православни)"), ("2022-01-07", "Божић (Православни)"), ("2022-01-14", "Православна Нова година"), @@ -533,7 +533,7 @@ def test_l10n_sr(self): ("2022-04-25", "Ускршњи понедељак (Православни)"), ("2022-05-01", "Међународни празник рада"), ("2022-05-02", "Међународни празник рада; Рамазански Бајрам"), - ("2022-05-03", "Међународни празник рада (пренешено); Рамазански Бајрам"), + ("2022-05-03", "Међународни празник рада (слободан дан); Рамазански Бајрам"), ("2022-05-09", "Дан побједе над фашизмом"), ("2022-07-09", "Курбан Бајрам"), ("2022-07-10", "Курбан Бајрам"), @@ -541,7 +541,7 @@ def test_l10n_sr(self): ("2022-11-25", "Дан државности"), ("2022-12-24", "Бадњи дан (Католички)"), ("2022-12-25", "Божић (Католички)"), - ("2022-12-26", "Божић (Католички) (пренешено)"), + ("2022-12-26", "Божић (Католички) (слободан дан)"), ) def test_l10n_uk(self): From 01ce5e2b957e76a43824d1881cb3fb3c4a604454 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:59:05 -0700 Subject: [PATCH 38/48] Add .zenodo.json (#2870) --- .zenodo.json | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 .zenodo.json diff --git a/.zenodo.json b/.zenodo.json new file mode 100644 index 0000000000..d75f090186 --- /dev/null +++ b/.zenodo.json @@ -0,0 +1,63 @@ +{ + "copyright": "(c) Vacanza Team and individual contributors (see CONTRIBUTORS file)", + "creators": [ + { + "affiliation": "Open World Holidays Framework", + "name": "Murza, Serhii" + }, + { + "affiliation": "Open World Holidays Framework", + "name": "Siripanich, Panpakorn" + }, + { + "affiliation": "Open World Holidays Framework", + "name": "Yakovets, Arkadii" + } + ], + "custom": { + "code:codeRepository": "https://github.com/vacanza/holidays/", + "code:developmentStatus": [ + { + "id": "active", + "title": { "en": "Active" } + } + ], + "code:programmingLanguage": [ + { + "id": "python", + "title": { "en": "Python" } + } + ] + }, + "keywords": [ + "balinese saka", + "buddhist", + "calendar", + "chinese", + "christian", + "eastern", + "hebrew", + "hindu", + "holidays", + "international", + "islamic", + "ISO 3166-1", + "ISO 3166-2", + "mandean", + "mongolian", + "open source", + "open world holidays framework", + "persian", + "public holidays", + "python", + "sinhala", + "thai", + "tibetan", + "vacanza", + "weekend", + "workday" + ], + "language": "eng", + "notes": "Open World Holidays Framework (OWHF)", + "upload_type": "software" +} From 74debeb29d99e8549260610b89ad5131f62d7065 Mon Sep 17 00:00:00 2001 From: ~Jhellico Date: Fri, 29 Aug 2025 00:03:51 +0300 Subject: [PATCH 39/48] Fix Hindu Lunisolar calendar (#2871) --- holidays/calendars/hindu.py | 1 + snapshots/countries/IN_AN.json | 1 + snapshots/countries/IN_AP.json | 1 + snapshots/countries/IN_AR.json | 1 + snapshots/countries/IN_AS.json | 1 + snapshots/countries/IN_BR.json | 1 + snapshots/countries/IN_CG.json | 1 + snapshots/countries/IN_CH.json | 1 + snapshots/countries/IN_COMMON.json | 1 + snapshots/countries/IN_DH.json | 1 + snapshots/countries/IN_DL.json | 1 + snapshots/countries/IN_GA.json | 1 + snapshots/countries/IN_GJ.json | 1 + snapshots/countries/IN_HP.json | 1 + snapshots/countries/IN_HR.json | 1 + snapshots/countries/IN_JH.json | 1 + snapshots/countries/IN_JK.json | 1 + snapshots/countries/IN_KA.json | 1 + snapshots/countries/IN_KL.json | 1 + snapshots/countries/IN_LA.json | 1 + snapshots/countries/IN_LD.json | 1 + snapshots/countries/IN_MH.json | 1 + snapshots/countries/IN_ML.json | 1 + snapshots/countries/IN_MN.json | 1 + snapshots/countries/IN_MP.json | 1 + snapshots/countries/IN_MZ.json | 1 + snapshots/countries/IN_NL.json | 1 + snapshots/countries/IN_OD.json | 1 + snapshots/countries/IN_PB.json | 1 + snapshots/countries/IN_PY.json | 1 + snapshots/countries/IN_RJ.json | 1 + snapshots/countries/IN_SK.json | 1 + snapshots/countries/IN_TN.json | 1 + snapshots/countries/IN_TR.json | 1 + snapshots/countries/IN_TS.json | 1 + snapshots/countries/IN_UK.json | 1 + snapshots/countries/IN_UP.json | 1 + snapshots/countries/IN_WB.json | 1 + 38 files changed, 38 insertions(+) diff --git a/holidays/calendars/hindu.py b/holidays/calendars/hindu.py index 58b2cb398e..b347ad5277 100644 --- a/holidays/calendars/hindu.py +++ b/holidays/calendars/hindu.py @@ -586,6 +586,7 @@ class _HinduLunisolar: 2023: (NOV, 27), 2024: (NOV, 15), 2025: (NOV, 5), + 2026: (NOV, 24), 2027: (NOV, 14), 2028: (NOV, 2), 2029: (NOV, 21), diff --git a/snapshots/countries/IN_AN.json b/snapshots/countries/IN_AN.json index 02ccb925df..c15861d89b 100644 --- a/snapshots/countries/IN_AN.json +++ b/snapshots/countries/IN_AN.json @@ -1433,6 +1433,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_AP.json b/snapshots/countries/IN_AP.json index b6ce2ad9a7..17d3a159e7 100644 --- a/snapshots/countries/IN_AP.json +++ b/snapshots/countries/IN_AP.json @@ -1509,6 +1509,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_AR.json b/snapshots/countries/IN_AR.json index 80a9ff9a31..33b18a558e 100644 --- a/snapshots/countries/IN_AR.json +++ b/snapshots/countries/IN_AR.json @@ -1365,6 +1365,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_AS.json b/snapshots/countries/IN_AS.json index 0f8c36d0ca..51d4ec1980 100644 --- a/snapshots/countries/IN_AS.json +++ b/snapshots/countries/IN_AS.json @@ -1440,6 +1440,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-02": "Assam Day", "2026-12-25": "Christmas", "2027-01-15": "Magh Bihu; Makar Sankranti", diff --git a/snapshots/countries/IN_BR.json b/snapshots/countries/IN_BR.json index 960f29c4ed..dc6909e126 100644 --- a/snapshots/countries/IN_BR.json +++ b/snapshots/countries/IN_BR.json @@ -1532,6 +1532,7 @@ "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", "2026-11-15": "Chhath Puja", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_CG.json b/snapshots/countries/IN_CG.json index ebf0a917ac..4576b63693 100644 --- a/snapshots/countries/IN_CG.json +++ b/snapshots/countries/IN_CG.json @@ -1509,6 +1509,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_CH.json b/snapshots/countries/IN_CH.json index 02ccb925df..c15861d89b 100644 --- a/snapshots/countries/IN_CH.json +++ b/snapshots/countries/IN_CH.json @@ -1433,6 +1433,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_COMMON.json b/snapshots/countries/IN_COMMON.json index 80a9ff9a31..33b18a558e 100644 --- a/snapshots/countries/IN_COMMON.json +++ b/snapshots/countries/IN_COMMON.json @@ -1365,6 +1365,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_DH.json b/snapshots/countries/IN_DH.json index 80a9ff9a31..33b18a558e 100644 --- a/snapshots/countries/IN_DH.json +++ b/snapshots/countries/IN_DH.json @@ -1365,6 +1365,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_DL.json b/snapshots/countries/IN_DL.json index 95a5bcd72e..62e0caaa29 100644 --- a/snapshots/countries/IN_DL.json +++ b/snapshots/countries/IN_DL.json @@ -1391,6 +1391,7 @@ "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", "2026-11-15": "Chhath Puja", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_GA.json b/snapshots/countries/IN_GA.json index 3621c5f625..842538140b 100644 --- a/snapshots/countries/IN_GA.json +++ b/snapshots/countries/IN_GA.json @@ -1509,6 +1509,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-19": "Goa Liberation Day", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", diff --git a/snapshots/countries/IN_GJ.json b/snapshots/countries/IN_GJ.json index d9bee331b6..19c443d6c0 100644 --- a/snapshots/countries/IN_GJ.json +++ b/snapshots/countries/IN_GJ.json @@ -1507,6 +1507,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti; Uttarayan", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_HP.json b/snapshots/countries/IN_HP.json index f1a905f487..374c883c5b 100644 --- a/snapshots/countries/IN_HP.json +++ b/snapshots/countries/IN_HP.json @@ -1498,6 +1498,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_HR.json b/snapshots/countries/IN_HR.json index 5a83f7287b..4de206fe3a 100644 --- a/snapshots/countries/IN_HR.json +++ b/snapshots/countries/IN_HR.json @@ -1509,6 +1509,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_JH.json b/snapshots/countries/IN_JH.json index 502d5f2af2..b96fe4802e 100644 --- a/snapshots/countries/IN_JH.json +++ b/snapshots/countries/IN_JH.json @@ -1531,6 +1531,7 @@ "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", "2026-11-15": "Chhath Puja; Jharkhand Formation Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_JK.json b/snapshots/countries/IN_JK.json index 02ccb925df..c15861d89b 100644 --- a/snapshots/countries/IN_JK.json +++ b/snapshots/countries/IN_JK.json @@ -1433,6 +1433,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_KA.json b/snapshots/countries/IN_KA.json index 044f2a68e2..7ac9789440 100644 --- a/snapshots/countries/IN_KA.json +++ b/snapshots/countries/IN_KA.json @@ -1509,6 +1509,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_KL.json b/snapshots/countries/IN_KL.json index 1265f4463f..03d5d2a91e 100644 --- a/snapshots/countries/IN_KL.json +++ b/snapshots/countries/IN_KL.json @@ -1532,6 +1532,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_LA.json b/snapshots/countries/IN_LA.json index 02ccb925df..c15861d89b 100644 --- a/snapshots/countries/IN_LA.json +++ b/snapshots/countries/IN_LA.json @@ -1433,6 +1433,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_LD.json b/snapshots/countries/IN_LD.json index 80a9ff9a31..33b18a558e 100644 --- a/snapshots/countries/IN_LD.json +++ b/snapshots/countries/IN_LD.json @@ -1365,6 +1365,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_MH.json b/snapshots/countries/IN_MH.json index afff29682f..bbde3709be 100644 --- a/snapshots/countries/IN_MH.json +++ b/snapshots/countries/IN_MH.json @@ -1533,6 +1533,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_ML.json b/snapshots/countries/IN_ML.json index 80a9ff9a31..33b18a558e 100644 --- a/snapshots/countries/IN_ML.json +++ b/snapshots/countries/IN_ML.json @@ -1365,6 +1365,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_MN.json b/snapshots/countries/IN_MN.json index 80a9ff9a31..33b18a558e 100644 --- a/snapshots/countries/IN_MN.json +++ b/snapshots/countries/IN_MN.json @@ -1365,6 +1365,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_MP.json b/snapshots/countries/IN_MP.json index 545ae4b30b..4f10d15f1b 100644 --- a/snapshots/countries/IN_MP.json +++ b/snapshots/countries/IN_MP.json @@ -1509,6 +1509,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_MZ.json b/snapshots/countries/IN_MZ.json index 2e4df6bbfe..47c769f11d 100644 --- a/snapshots/countries/IN_MZ.json +++ b/snapshots/countries/IN_MZ.json @@ -1441,6 +1441,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_NL.json b/snapshots/countries/IN_NL.json index 8eb628e479..1e907ad50d 100644 --- a/snapshots/countries/IN_NL.json +++ b/snapshots/countries/IN_NL.json @@ -1440,6 +1440,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-01": "Nagaland State Inauguration Day", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", diff --git a/snapshots/countries/IN_OD.json b/snapshots/countries/IN_OD.json index 2585ce549c..0812f6bfa2 100644 --- a/snapshots/countries/IN_OD.json +++ b/snapshots/countries/IN_OD.json @@ -1567,6 +1567,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_PB.json b/snapshots/countries/IN_PB.json index 4a21176504..d0981a8a05 100644 --- a/snapshots/countries/IN_PB.json +++ b/snapshots/countries/IN_PB.json @@ -1616,6 +1616,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-13": "Lohri", "2027-01-15": "Guru Gobind Singh Jayanti; Makar Sankranti", diff --git a/snapshots/countries/IN_PY.json b/snapshots/countries/IN_PY.json index add08874b3..a1b278b0de 100644 --- a/snapshots/countries/IN_PY.json +++ b/snapshots/countries/IN_PY.json @@ -1583,6 +1583,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_RJ.json b/snapshots/countries/IN_RJ.json index d2aec05ae5..e5cdb31201 100644 --- a/snapshots/countries/IN_RJ.json +++ b/snapshots/countries/IN_RJ.json @@ -1577,6 +1577,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_SK.json b/snapshots/countries/IN_SK.json index cea7d53b73..6a73a089f1 100644 --- a/snapshots/countries/IN_SK.json +++ b/snapshots/countries/IN_SK.json @@ -1507,6 +1507,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_TN.json b/snapshots/countries/IN_TN.json index e6b2566eb6..85bdbf6b32 100644 --- a/snapshots/countries/IN_TN.json +++ b/snapshots/countries/IN_TN.json @@ -1488,6 +1488,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti; Pongal", "2027-01-16": "Thiruvalluvar Day / Mattu Pongal", diff --git a/snapshots/countries/IN_TR.json b/snapshots/countries/IN_TR.json index 80a9ff9a31..33b18a558e 100644 --- a/snapshots/countries/IN_TR.json +++ b/snapshots/countries/IN_TR.json @@ -1365,6 +1365,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_TS.json b/snapshots/countries/IN_TS.json index c28cbd0a11..b85cf139b9 100644 --- a/snapshots/countries/IN_TS.json +++ b/snapshots/countries/IN_TS.json @@ -1580,6 +1580,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_UK.json b/snapshots/countries/IN_UK.json index 02ccb925df..c15861d89b 100644 --- a/snapshots/countries/IN_UK.json +++ b/snapshots/countries/IN_UK.json @@ -1433,6 +1433,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", diff --git a/snapshots/countries/IN_UP.json b/snapshots/countries/IN_UP.json index e3645dcfa1..94a9b38313 100644 --- a/snapshots/countries/IN_UP.json +++ b/snapshots/countries/IN_UP.json @@ -1536,6 +1536,7 @@ "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", "2026-11-15": "Chhath Puja", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-24": "UP Formation Day", diff --git a/snapshots/countries/IN_WB.json b/snapshots/countries/IN_WB.json index d46aff8e06..622286abfb 100644 --- a/snapshots/countries/IN_WB.json +++ b/snapshots/countries/IN_WB.json @@ -1574,6 +1574,7 @@ "2026-11-08": "Diwali", "2026-11-10": "Govardhan Puja", "2026-11-14": "Children's Day", + "2026-11-24": "Guru Nanak Jayanti", "2026-12-25": "Christmas", "2027-01-15": "Makar Sankranti", "2027-01-26": "Republic Day", From 7ac1b37e422cac49a4ef0149baeaa3a2c0a04c18 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 28 Aug 2025 18:36:45 -0700 Subject: [PATCH 40/48] Update pre-commit hooks (#2872) Co-authored-by: arkid15r <2201626+arkid15r@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d602b91a8a..37ddecf3ae 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -25,7 +25,7 @@ repos: - --py39-plus - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.12.10 + rev: v0.12.11 hooks: - id: ruff-check - id: ruff-format From 8b6e88cd9d99f1a4699c7fd12ba7bf9b61cb8389 Mon Sep 17 00:00:00 2001 From: Prateekshit Jaiswal <67361301+Prateekshit73@users.noreply.github.com> Date: Fri, 29 Aug 2025 07:49:53 +0530 Subject: [PATCH 41/48] Add South Sudan holidays (#2831) Signed-off-by: Prateekshit Jaiswal <67361301+Prateekshit73@users.noreply.github.com> Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com> Co-authored-by: Prateekshit Co-authored-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com> Co-authored-by: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com> --- README.md | 9 +- holidays/countries/__init__.py | 1 + holidays/countries/south_sudan.py | 133 ++++++ holidays/registry.py | 1 + snapshots/countries/SS_COMMON.json | 665 ++++++++++++++++++++++++++++ tests/countries/test_south_sudan.py | 197 ++++++++ 6 files changed, 1005 insertions(+), 1 deletion(-) create mode 100644 holidays/countries/south_sudan.py create mode 100644 snapshots/countries/SS_COMMON.json create mode 100644 tests/countries/test_south_sudan.py diff --git a/README.md b/README.md index ceb6c41023..3ee18c53a5 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ and detailed information. ## Available Countries -We currently support 239 country codes. The standard way to refer to a country is by using its [ISO +We currently support 240 country codes. The standard way to refer to a country is by using its [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes), the same used for domain names, and for a subdivision its [ISO 3166-2 code](https://en.wikipedia.org/wiki/ISO_3166-2). Some countries have common or foreign names or @@ -1554,6 +1554,13 @@ any) in brackets, available languages and additional holiday categories. All cou BANK +South Sudan +SS + + +ISLAMIC + + Spain ES Autonomous communities: AN (Andalucía), AR (Aragón), AS (Asturias), CB (Cantabria), CE (Ceuta), CL (Castilla y León), CM (Castilla-La Mancha), CN (Canarias), CT (Cataluña, Catalunya), EX (Extremadura), GA (Galicia), IB (Islas Baleares, Illes Balears), MC (Murcia), MD (Madrid), ML (Melilla), NC (Navarra), PV (País Vasco), RI (La Rioja), VC (Valenciana) diff --git a/holidays/countries/__init__.py b/holidays/countries/__init__.py index 19f92efc14..0e9e57d48f 100644 --- a/holidays/countries/__init__.py +++ b/holidays/countries/__init__.py @@ -231,6 +231,7 @@ SGS, ) from holidays.countries.south_korea import SouthKorea, KR, KOR, Korea +from holidays.countries.south_sudan import SouthSudan, SS, SSD from holidays.countries.spain import Spain, ES, ESP from holidays.countries.sri_lanka import SriLanka, LK, LKA from holidays.countries.suriname import Suriname, SR, SUR diff --git a/holidays/countries/south_sudan.py b/holidays/countries/south_sudan.py new file mode 100644 index 0000000000..65a9fdae86 --- /dev/null +++ b/holidays/countries/south_sudan.py @@ -0,0 +1,133 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from holidays.calendars import _CustomIslamicHolidays +from holidays.calendars.gregorian import MAR, MAY, JUN, JUL, AUG +from holidays.constants import ISLAMIC, PUBLIC +from holidays.groups import ChristianHolidays, InternationalHolidays, IslamicHolidays +from holidays.holiday_base import HolidayBase + + +class SouthSudan(HolidayBase, ChristianHolidays, InternationalHolidays, IslamicHolidays): + """South Sudan holidays. + + References: + * + * [Guidelines for Opening Schools in South Sudan for the Academic Year, 2024](https://web.archive.org/web/20250716011243/https://mogei.gov.ss/super/assets/documents/calendar/2024_MoGEI_Academic%20calendar%20and%20implemention%20guidelines_%20South%20Sudan_A5_final_Approved%20and%20signed%20-%203.pdf) + * + * [2016](https://web.archive.org/web/20250825141310/https://docs.southsudanngoforum.org/sites/default/files/2016-11/2016%20ANNUAL%20HOLIDAYS%20CALENDAR%20.pdf) + * [2018](https://web.archive.org/web/20250825141312/https://docs.southsudanngoforum.org/sites/default/files/2018-01/Annual%20Holidays%20for%202018.pdf) + * [2020](https://web.archive.org/web/20250825141316/https://docs.southsudanngoforum.org/sites/default/files/2020-01/South_Sudan_Annual_Holidays_for_2020.pdf) + * [2021](https://web.archive.org/web/20250514045013/https://docs.southsudanngoforum.org/sites/default/files/2021-02/Public%20Holidays%20Calendar%202021.pdf) + * [2022](https://web.archive.org/web/20250430165748/https://docs.southsudanngoforum.org/sites/default/files/2022-03/HRPublic%20Holidays%202022HR.pdf) + * [2025](https://web.archive.org/web/20250426232710/https://www.netherlandsandyou.nl/web/south-sudan/about-us/closing-days) + """ + + country = "SS" + # %s (estimated). + estimated_label = "%s (estimated)" + # South Sudan became independent on 9 July 2011. + start_year = 2012 + supported_categories = (ISLAMIC, PUBLIC) + + def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): + """ + Args: + islamic_show_estimated: + Whether to add "estimated" label to Islamic holidays name + if holiday date is estimated. + """ + ChristianHolidays.__init__(self) + InternationalHolidays.__init__(self) + IslamicHolidays.__init__( + self, cls=SouthSudanIslamicHolidays, show_estimated=islamic_show_estimated + ) + super().__init__(*args, **kwargs) + + def _populate_public_holidays(self): + # New Year's Day. + self._add_new_years_day("New Year's Day") + + # Peace Agreement Day. + self._add_holiday_jan_9("Peace Agreement Day") + + # Good Friday. + self._add_good_friday("Good Friday") + + # Holy Saturday. + self._add_holy_saturday("Holy Saturday") + + # Easter Sunday. + self._add_easter_sunday("Easter Sunday") + + # Easter Monday. + self._add_easter_monday("Easter Monday") + + # International Labour Day. + self._add_labor_day("International Labour Day") + + # SPLA Day. + self._add_holiday_may_16("SPLA Day") + + # Independence Day. + self._add_holiday_jul_9("Independence Day") + + # Martyrs' Day. + self._add_holiday_jul_30("Martyrs' Day") + + # Christmas Eve. + self._add_christmas_eve("Christmas Eve") + + # Christmas Day. + self._add_christmas_day("Christmas Day") + + # Second Day of Christmas. + self._add_christmas_day_two("Second Day of Christmas") + + # Eid al-Fitr. + self._add_eid_al_fitr_day("Eid al-Fitr") + + # Eid al-Adha. + self._add_eid_al_adha_day("Eid al-Adha") + + def _populate_islamic_holidays(self): + # Eid al-Fitr Holiday. + self._add_eid_al_fitr_day_two("Eid al-Fitr Holiday") + + # Eid al-Adha Holiday. + self._add_eid_al_adha_day_two("Eid al-Adha Holiday") + + +class SS(SouthSudan): + pass + + +class SSD(SouthSudan): + pass + + +class SouthSudanIslamicHolidays(_CustomIslamicHolidays): + EID_AL_ADHA_DATES = { + 2018: (AUG, 21), + 2020: (JUL, 31), + 2021: (JUL, 18), + 2022: (JUL, 9), + 2025: (JUN, 6), + } + + EID_AL_FITR_DATES = { + 2018: (JUN, 14), + 2020: (MAY, 22), + 2021: (MAY, 13), + 2022: (MAY, 3), + 2025: (MAR, 31), + } diff --git a/holidays/registry.py b/holidays/registry.py index cdb66cf695..0d28e65f48 100644 --- a/holidays/registry.py +++ b/holidays/registry.py @@ -225,6 +225,7 @@ "SGS", ), "south_korea": ("SouthKorea", "KR", "KOR", "Korea"), + "south_sudan": ("SouthSudan", "SS", "SSD"), "spain": ("Spain", "ES", "ESP"), "sri_lanka": ("SriLanka", "LK", "LKA"), "suriname": ("Suriname", "SR", "SUR"), diff --git a/snapshots/countries/SS_COMMON.json b/snapshots/countries/SS_COMMON.json new file mode 100644 index 0000000000..a84483ed4b --- /dev/null +++ b/snapshots/countries/SS_COMMON.json @@ -0,0 +1,665 @@ +{ + "2012-01-01": "New Year's Day", + "2012-01-09": "Peace Agreement Day", + "2012-04-06": "Good Friday", + "2012-04-07": "Holy Saturday", + "2012-04-08": "Easter Sunday", + "2012-04-09": "Easter Monday", + "2012-05-01": "International Labour Day", + "2012-05-16": "SPLA Day", + "2012-07-09": "Independence Day", + "2012-07-30": "Martyrs' Day", + "2012-08-19": "Eid al-Fitr (estimated)", + "2012-08-20": "Eid al-Fitr Holiday (estimated)", + "2012-10-26": "Eid al-Adha (estimated)", + "2012-10-27": "Eid al-Adha Holiday (estimated)", + "2012-12-24": "Christmas Eve", + "2012-12-25": "Christmas Day", + "2012-12-26": "Second Day of Christmas", + "2013-01-01": "New Year's Day", + "2013-01-09": "Peace Agreement Day", + "2013-03-29": "Good Friday", + "2013-03-30": "Holy Saturday", + "2013-03-31": "Easter Sunday", + "2013-04-01": "Easter Monday", + "2013-05-01": "International Labour Day", + "2013-05-16": "SPLA Day", + "2013-07-09": "Independence Day", + "2013-07-30": "Martyrs' Day", + "2013-08-08": "Eid al-Fitr (estimated)", + "2013-08-09": "Eid al-Fitr Holiday (estimated)", + "2013-10-15": "Eid al-Adha (estimated)", + "2013-10-16": "Eid al-Adha Holiday (estimated)", + "2013-12-24": "Christmas Eve", + "2013-12-25": "Christmas Day", + "2013-12-26": "Second Day of Christmas", + "2014-01-01": "New Year's Day", + "2014-01-09": "Peace Agreement Day", + "2014-04-18": "Good Friday", + "2014-04-19": "Holy Saturday", + "2014-04-20": "Easter Sunday", + "2014-04-21": "Easter Monday", + "2014-05-01": "International Labour Day", + "2014-05-16": "SPLA Day", + "2014-07-09": "Independence Day", + "2014-07-28": "Eid al-Fitr (estimated)", + "2014-07-29": "Eid al-Fitr Holiday (estimated)", + "2014-07-30": "Martyrs' Day", + "2014-10-04": "Eid al-Adha (estimated)", + "2014-10-05": "Eid al-Adha Holiday (estimated)", + "2014-12-24": "Christmas Eve", + "2014-12-25": "Christmas Day", + "2014-12-26": "Second Day of Christmas", + "2015-01-01": "New Year's Day", + "2015-01-09": "Peace Agreement Day", + "2015-04-03": "Good Friday", + "2015-04-04": "Holy Saturday", + "2015-04-05": "Easter Sunday", + "2015-04-06": "Easter Monday", + "2015-05-01": "International Labour Day", + "2015-05-16": "SPLA Day", + "2015-07-09": "Independence Day", + "2015-07-17": "Eid al-Fitr (estimated)", + "2015-07-18": "Eid al-Fitr Holiday (estimated)", + "2015-07-30": "Martyrs' Day", + "2015-09-23": "Eid al-Adha (estimated)", + "2015-09-24": "Eid al-Adha Holiday (estimated)", + "2015-12-24": "Christmas Eve", + "2015-12-25": "Christmas Day", + "2015-12-26": "Second Day of Christmas", + "2016-01-01": "New Year's Day", + "2016-01-09": "Peace Agreement Day", + "2016-03-25": "Good Friday", + "2016-03-26": "Holy Saturday", + "2016-03-27": "Easter Sunday", + "2016-03-28": "Easter Monday", + "2016-05-01": "International Labour Day", + "2016-05-16": "SPLA Day", + "2016-07-06": "Eid al-Fitr (estimated)", + "2016-07-07": "Eid al-Fitr Holiday (estimated)", + "2016-07-09": "Independence Day", + "2016-07-30": "Martyrs' Day", + "2016-09-11": "Eid al-Adha (estimated)", + "2016-09-12": "Eid al-Adha Holiday (estimated)", + "2016-12-24": "Christmas Eve", + "2016-12-25": "Christmas Day", + "2016-12-26": "Second Day of Christmas", + "2017-01-01": "New Year's Day", + "2017-01-09": "Peace Agreement Day", + "2017-04-14": "Good Friday", + "2017-04-15": "Holy Saturday", + "2017-04-16": "Easter Sunday", + "2017-04-17": "Easter Monday", + "2017-05-01": "International Labour Day", + "2017-05-16": "SPLA Day", + "2017-06-25": "Eid al-Fitr (estimated)", + "2017-06-26": "Eid al-Fitr Holiday (estimated)", + "2017-07-09": "Independence Day", + "2017-07-30": "Martyrs' Day", + "2017-09-01": "Eid al-Adha (estimated)", + "2017-09-02": "Eid al-Adha Holiday (estimated)", + "2017-12-24": "Christmas Eve", + "2017-12-25": "Christmas Day", + "2017-12-26": "Second Day of Christmas", + "2018-01-01": "New Year's Day", + "2018-01-09": "Peace Agreement Day", + "2018-03-30": "Good Friday", + "2018-03-31": "Holy Saturday", + "2018-04-01": "Easter Sunday", + "2018-04-02": "Easter Monday", + "2018-05-01": "International Labour Day", + "2018-05-16": "SPLA Day", + "2018-06-14": "Eid al-Fitr", + "2018-06-15": "Eid al-Fitr Holiday", + "2018-07-09": "Independence Day", + "2018-07-30": "Martyrs' Day", + "2018-08-21": "Eid al-Adha", + "2018-08-22": "Eid al-Adha Holiday", + "2018-12-24": "Christmas Eve", + "2018-12-25": "Christmas Day", + "2018-12-26": "Second Day of Christmas", + "2019-01-01": "New Year's Day", + "2019-01-09": "Peace Agreement Day", + "2019-04-19": "Good Friday", + "2019-04-20": "Holy Saturday", + "2019-04-21": "Easter Sunday", + "2019-04-22": "Easter Monday", + "2019-05-01": "International Labour Day", + "2019-05-16": "SPLA Day", + "2019-06-04": "Eid al-Fitr (estimated)", + "2019-06-05": "Eid al-Fitr Holiday (estimated)", + "2019-07-09": "Independence Day", + "2019-07-30": "Martyrs' Day", + "2019-08-11": "Eid al-Adha (estimated)", + "2019-08-12": "Eid al-Adha Holiday (estimated)", + "2019-12-24": "Christmas Eve", + "2019-12-25": "Christmas Day", + "2019-12-26": "Second Day of Christmas", + "2020-01-01": "New Year's Day", + "2020-01-09": "Peace Agreement Day", + "2020-04-10": "Good Friday", + "2020-04-11": "Holy Saturday", + "2020-04-12": "Easter Sunday", + "2020-04-13": "Easter Monday", + "2020-05-01": "International Labour Day", + "2020-05-16": "SPLA Day", + "2020-05-22": "Eid al-Fitr", + "2020-05-23": "Eid al-Fitr Holiday", + "2020-07-09": "Independence Day", + "2020-07-30": "Martyrs' Day", + "2020-07-31": "Eid al-Adha", + "2020-08-01": "Eid al-Adha Holiday", + "2020-12-24": "Christmas Eve", + "2020-12-25": "Christmas Day", + "2020-12-26": "Second Day of Christmas", + "2021-01-01": "New Year's Day", + "2021-01-09": "Peace Agreement Day", + "2021-04-02": "Good Friday", + "2021-04-03": "Holy Saturday", + "2021-04-04": "Easter Sunday", + "2021-04-05": "Easter Monday", + "2021-05-01": "International Labour Day", + "2021-05-13": "Eid al-Fitr", + "2021-05-14": "Eid al-Fitr Holiday", + "2021-05-16": "SPLA Day", + "2021-07-09": "Independence Day", + "2021-07-18": "Eid al-Adha", + "2021-07-19": "Eid al-Adha Holiday", + "2021-07-30": "Martyrs' Day", + "2021-12-24": "Christmas Eve", + "2021-12-25": "Christmas Day", + "2021-12-26": "Second Day of Christmas", + "2022-01-01": "New Year's Day", + "2022-01-09": "Peace Agreement Day", + "2022-04-15": "Good Friday", + "2022-04-16": "Holy Saturday", + "2022-04-17": "Easter Sunday", + "2022-04-18": "Easter Monday", + "2022-05-01": "International Labour Day", + "2022-05-03": "Eid al-Fitr", + "2022-05-04": "Eid al-Fitr Holiday", + "2022-05-16": "SPLA Day", + "2022-07-09": "Eid al-Adha; Independence Day", + "2022-07-10": "Eid al-Adha Holiday", + "2022-07-30": "Martyrs' Day", + "2022-12-24": "Christmas Eve", + "2022-12-25": "Christmas Day", + "2022-12-26": "Second Day of Christmas", + "2023-01-01": "New Year's Day", + "2023-01-09": "Peace Agreement Day", + "2023-04-07": "Good Friday", + "2023-04-08": "Holy Saturday", + "2023-04-09": "Easter Sunday", + "2023-04-10": "Easter Monday", + "2023-04-21": "Eid al-Fitr (estimated)", + "2023-04-22": "Eid al-Fitr Holiday (estimated)", + "2023-05-01": "International Labour Day", + "2023-05-16": "SPLA Day", + "2023-06-28": "Eid al-Adha (estimated)", + "2023-06-29": "Eid al-Adha Holiday (estimated)", + "2023-07-09": "Independence Day", + "2023-07-30": "Martyrs' Day", + "2023-12-24": "Christmas Eve", + "2023-12-25": "Christmas Day", + "2023-12-26": "Second Day of Christmas", + "2024-01-01": "New Year's Day", + "2024-01-09": "Peace Agreement Day", + "2024-03-29": "Good Friday", + "2024-03-30": "Holy Saturday", + "2024-03-31": "Easter Sunday", + "2024-04-01": "Easter Monday", + "2024-04-10": "Eid al-Fitr (estimated)", + "2024-04-11": "Eid al-Fitr Holiday (estimated)", + "2024-05-01": "International Labour Day", + "2024-05-16": "SPLA Day", + "2024-06-16": "Eid al-Adha (estimated)", + "2024-06-17": "Eid al-Adha Holiday (estimated)", + "2024-07-09": "Independence Day", + "2024-07-30": "Martyrs' Day", + "2024-12-24": "Christmas Eve", + "2024-12-25": "Christmas Day", + "2024-12-26": "Second Day of Christmas", + "2025-01-01": "New Year's Day", + "2025-01-09": "Peace Agreement Day", + "2025-03-31": "Eid al-Fitr", + "2025-04-01": "Eid al-Fitr Holiday", + "2025-04-18": "Good Friday", + "2025-04-19": "Holy Saturday", + "2025-04-20": "Easter Sunday", + "2025-04-21": "Easter Monday", + "2025-05-01": "International Labour Day", + "2025-05-16": "SPLA Day", + "2025-06-06": "Eid al-Adha", + "2025-06-07": "Eid al-Adha Holiday", + "2025-07-09": "Independence Day", + "2025-07-30": "Martyrs' Day", + "2025-12-24": "Christmas Eve", + "2025-12-25": "Christmas Day", + "2025-12-26": "Second Day of Christmas", + "2026-01-01": "New Year's Day", + "2026-01-09": "Peace Agreement Day", + "2026-03-20": "Eid al-Fitr (estimated)", + "2026-03-21": "Eid al-Fitr Holiday (estimated)", + "2026-04-03": "Good Friday", + "2026-04-04": "Holy Saturday", + "2026-04-05": "Easter Sunday", + "2026-04-06": "Easter Monday", + "2026-05-01": "International Labour Day", + "2026-05-16": "SPLA Day", + "2026-05-27": "Eid al-Adha (estimated)", + "2026-05-28": "Eid al-Adha Holiday (estimated)", + "2026-07-09": "Independence Day", + "2026-07-30": "Martyrs' Day", + "2026-12-24": "Christmas Eve", + "2026-12-25": "Christmas Day", + "2026-12-26": "Second Day of Christmas", + "2027-01-01": "New Year's Day", + "2027-01-09": "Peace Agreement Day", + "2027-03-09": "Eid al-Fitr (estimated)", + "2027-03-10": "Eid al-Fitr Holiday (estimated)", + "2027-03-26": "Good Friday", + "2027-03-27": "Holy Saturday", + "2027-03-28": "Easter Sunday", + "2027-03-29": "Easter Monday", + "2027-05-01": "International Labour Day", + "2027-05-16": "Eid al-Adha (estimated); SPLA Day", + "2027-05-17": "Eid al-Adha Holiday (estimated)", + "2027-07-09": "Independence Day", + "2027-07-30": "Martyrs' Day", + "2027-12-24": "Christmas Eve", + "2027-12-25": "Christmas Day", + "2027-12-26": "Second Day of Christmas", + "2028-01-01": "New Year's Day", + "2028-01-09": "Peace Agreement Day", + "2028-02-26": "Eid al-Fitr (estimated)", + "2028-02-27": "Eid al-Fitr Holiday (estimated)", + "2028-04-14": "Good Friday", + "2028-04-15": "Holy Saturday", + "2028-04-16": "Easter Sunday", + "2028-04-17": "Easter Monday", + "2028-05-01": "International Labour Day", + "2028-05-05": "Eid al-Adha (estimated)", + "2028-05-06": "Eid al-Adha Holiday (estimated)", + "2028-05-16": "SPLA Day", + "2028-07-09": "Independence Day", + "2028-07-30": "Martyrs' Day", + "2028-12-24": "Christmas Eve", + "2028-12-25": "Christmas Day", + "2028-12-26": "Second Day of Christmas", + "2029-01-01": "New Year's Day", + "2029-01-09": "Peace Agreement Day", + "2029-02-14": "Eid al-Fitr (estimated)", + "2029-02-15": "Eid al-Fitr Holiday (estimated)", + "2029-03-30": "Good Friday", + "2029-03-31": "Holy Saturday", + "2029-04-01": "Easter Sunday", + "2029-04-02": "Easter Monday", + "2029-04-24": "Eid al-Adha (estimated)", + "2029-04-25": "Eid al-Adha Holiday (estimated)", + "2029-05-01": "International Labour Day", + "2029-05-16": "SPLA Day", + "2029-07-09": "Independence Day", + "2029-07-30": "Martyrs' Day", + "2029-12-24": "Christmas Eve", + "2029-12-25": "Christmas Day", + "2029-12-26": "Second Day of Christmas", + "2030-01-01": "New Year's Day", + "2030-01-09": "Peace Agreement Day", + "2030-02-04": "Eid al-Fitr (estimated)", + "2030-02-05": "Eid al-Fitr Holiday (estimated)", + "2030-04-13": "Eid al-Adha (estimated)", + "2030-04-14": "Eid al-Adha Holiday (estimated)", + "2030-04-19": "Good Friday", + "2030-04-20": "Holy Saturday", + "2030-04-21": "Easter Sunday", + "2030-04-22": "Easter Monday", + "2030-05-01": "International Labour Day", + "2030-05-16": "SPLA Day", + "2030-07-09": "Independence Day", + "2030-07-30": "Martyrs' Day", + "2030-12-24": "Christmas Eve", + "2030-12-25": "Christmas Day", + "2030-12-26": "Second Day of Christmas", + "2031-01-01": "New Year's Day", + "2031-01-09": "Peace Agreement Day", + "2031-01-24": "Eid al-Fitr (estimated)", + "2031-01-25": "Eid al-Fitr Holiday (estimated)", + "2031-04-02": "Eid al-Adha (estimated)", + "2031-04-03": "Eid al-Adha Holiday (estimated)", + "2031-04-11": "Good Friday", + "2031-04-12": "Holy Saturday", + "2031-04-13": "Easter Sunday", + "2031-04-14": "Easter Monday", + "2031-05-01": "International Labour Day", + "2031-05-16": "SPLA Day", + "2031-07-09": "Independence Day", + "2031-07-30": "Martyrs' Day", + "2031-12-24": "Christmas Eve", + "2031-12-25": "Christmas Day", + "2031-12-26": "Second Day of Christmas", + "2032-01-01": "New Year's Day", + "2032-01-09": "Peace Agreement Day", + "2032-01-14": "Eid al-Fitr (estimated)", + "2032-01-15": "Eid al-Fitr Holiday (estimated)", + "2032-03-22": "Eid al-Adha (estimated)", + "2032-03-23": "Eid al-Adha Holiday (estimated)", + "2032-03-26": "Good Friday", + "2032-03-27": "Holy Saturday", + "2032-03-28": "Easter Sunday", + "2032-03-29": "Easter Monday", + "2032-05-01": "International Labour Day", + "2032-05-16": "SPLA Day", + "2032-07-09": "Independence Day", + "2032-07-30": "Martyrs' Day", + "2032-12-24": "Christmas Eve", + "2032-12-25": "Christmas Day", + "2032-12-26": "Second Day of Christmas", + "2033-01-01": "New Year's Day", + "2033-01-02": "Eid al-Fitr (estimated)", + "2033-01-03": "Eid al-Fitr Holiday (estimated)", + "2033-01-09": "Peace Agreement Day", + "2033-03-11": "Eid al-Adha (estimated)", + "2033-03-12": "Eid al-Adha Holiday (estimated)", + "2033-04-15": "Good Friday", + "2033-04-16": "Holy Saturday", + "2033-04-17": "Easter Sunday", + "2033-04-18": "Easter Monday", + "2033-05-01": "International Labour Day", + "2033-05-16": "SPLA Day", + "2033-07-09": "Independence Day", + "2033-07-30": "Martyrs' Day", + "2033-12-23": "Eid al-Fitr (estimated)", + "2033-12-24": "Christmas Eve; Eid al-Fitr Holiday (estimated)", + "2033-12-25": "Christmas Day", + "2033-12-26": "Second Day of Christmas", + "2034-01-01": "New Year's Day", + "2034-01-09": "Peace Agreement Day", + "2034-03-01": "Eid al-Adha (estimated)", + "2034-03-02": "Eid al-Adha Holiday (estimated)", + "2034-04-07": "Good Friday", + "2034-04-08": "Holy Saturday", + "2034-04-09": "Easter Sunday", + "2034-04-10": "Easter Monday", + "2034-05-01": "International Labour Day", + "2034-05-16": "SPLA Day", + "2034-07-09": "Independence Day", + "2034-07-30": "Martyrs' Day", + "2034-12-12": "Eid al-Fitr (estimated)", + "2034-12-13": "Eid al-Fitr Holiday (estimated)", + "2034-12-24": "Christmas Eve", + "2034-12-25": "Christmas Day", + "2034-12-26": "Second Day of Christmas", + "2035-01-01": "New Year's Day", + "2035-01-09": "Peace Agreement Day", + "2035-02-18": "Eid al-Adha (estimated)", + "2035-02-19": "Eid al-Adha Holiday (estimated)", + "2035-03-23": "Good Friday", + "2035-03-24": "Holy Saturday", + "2035-03-25": "Easter Sunday", + "2035-03-26": "Easter Monday", + "2035-05-01": "International Labour Day", + "2035-05-16": "SPLA Day", + "2035-07-09": "Independence Day", + "2035-07-30": "Martyrs' Day", + "2035-12-01": "Eid al-Fitr (estimated)", + "2035-12-02": "Eid al-Fitr Holiday (estimated)", + "2035-12-24": "Christmas Eve", + "2035-12-25": "Christmas Day", + "2035-12-26": "Second Day of Christmas", + "2036-01-01": "New Year's Day", + "2036-01-09": "Peace Agreement Day", + "2036-02-07": "Eid al-Adha (estimated)", + "2036-02-08": "Eid al-Adha Holiday (estimated)", + "2036-04-11": "Good Friday", + "2036-04-12": "Holy Saturday", + "2036-04-13": "Easter Sunday", + "2036-04-14": "Easter Monday", + "2036-05-01": "International Labour Day", + "2036-05-16": "SPLA Day", + "2036-07-09": "Independence Day", + "2036-07-30": "Martyrs' Day", + "2036-11-19": "Eid al-Fitr (estimated)", + "2036-11-20": "Eid al-Fitr Holiday (estimated)", + "2036-12-24": "Christmas Eve", + "2036-12-25": "Christmas Day", + "2036-12-26": "Second Day of Christmas", + "2037-01-01": "New Year's Day", + "2037-01-09": "Peace Agreement Day", + "2037-01-26": "Eid al-Adha (estimated)", + "2037-01-27": "Eid al-Adha Holiday (estimated)", + "2037-04-03": "Good Friday", + "2037-04-04": "Holy Saturday", + "2037-04-05": "Easter Sunday", + "2037-04-06": "Easter Monday", + "2037-05-01": "International Labour Day", + "2037-05-16": "SPLA Day", + "2037-07-09": "Independence Day", + "2037-07-30": "Martyrs' Day", + "2037-11-08": "Eid al-Fitr (estimated)", + "2037-11-09": "Eid al-Fitr Holiday (estimated)", + "2037-12-24": "Christmas Eve", + "2037-12-25": "Christmas Day", + "2037-12-26": "Second Day of Christmas", + "2038-01-01": "New Year's Day", + "2038-01-09": "Peace Agreement Day", + "2038-01-16": "Eid al-Adha (estimated)", + "2038-01-17": "Eid al-Adha Holiday (estimated)", + "2038-04-23": "Good Friday", + "2038-04-24": "Holy Saturday", + "2038-04-25": "Easter Sunday", + "2038-04-26": "Easter Monday", + "2038-05-01": "International Labour Day", + "2038-05-16": "SPLA Day", + "2038-07-09": "Independence Day", + "2038-07-30": "Martyrs' Day", + "2038-10-29": "Eid al-Fitr (estimated)", + "2038-10-30": "Eid al-Fitr Holiday (estimated)", + "2038-12-24": "Christmas Eve", + "2038-12-25": "Christmas Day", + "2038-12-26": "Second Day of Christmas", + "2039-01-01": "New Year's Day", + "2039-01-05": "Eid al-Adha (estimated)", + "2039-01-06": "Eid al-Adha Holiday (estimated)", + "2039-01-09": "Peace Agreement Day", + "2039-04-08": "Good Friday", + "2039-04-09": "Holy Saturday", + "2039-04-10": "Easter Sunday", + "2039-04-11": "Easter Monday", + "2039-05-01": "International Labour Day", + "2039-05-16": "SPLA Day", + "2039-07-09": "Independence Day", + "2039-07-30": "Martyrs' Day", + "2039-10-19": "Eid al-Fitr (estimated)", + "2039-10-20": "Eid al-Fitr Holiday (estimated)", + "2039-12-24": "Christmas Eve", + "2039-12-25": "Christmas Day", + "2039-12-26": "Eid al-Adha (estimated); Second Day of Christmas", + "2039-12-27": "Eid al-Adha Holiday (estimated)", + "2040-01-01": "New Year's Day", + "2040-01-09": "Peace Agreement Day", + "2040-03-30": "Good Friday", + "2040-03-31": "Holy Saturday", + "2040-04-01": "Easter Sunday", + "2040-04-02": "Easter Monday", + "2040-05-01": "International Labour Day", + "2040-05-16": "SPLA Day", + "2040-07-09": "Independence Day", + "2040-07-30": "Martyrs' Day", + "2040-10-07": "Eid al-Fitr (estimated)", + "2040-10-08": "Eid al-Fitr Holiday (estimated)", + "2040-12-14": "Eid al-Adha (estimated)", + "2040-12-15": "Eid al-Adha Holiday (estimated)", + "2040-12-24": "Christmas Eve", + "2040-12-25": "Christmas Day", + "2040-12-26": "Second Day of Christmas", + "2041-01-01": "New Year's Day", + "2041-01-09": "Peace Agreement Day", + "2041-04-19": "Good Friday", + "2041-04-20": "Holy Saturday", + "2041-04-21": "Easter Sunday", + "2041-04-22": "Easter Monday", + "2041-05-01": "International Labour Day", + "2041-05-16": "SPLA Day", + "2041-07-09": "Independence Day", + "2041-07-30": "Martyrs' Day", + "2041-09-26": "Eid al-Fitr (estimated)", + "2041-09-27": "Eid al-Fitr Holiday (estimated)", + "2041-12-04": "Eid al-Adha (estimated)", + "2041-12-05": "Eid al-Adha Holiday (estimated)", + "2041-12-24": "Christmas Eve", + "2041-12-25": "Christmas Day", + "2041-12-26": "Second Day of Christmas", + "2042-01-01": "New Year's Day", + "2042-01-09": "Peace Agreement Day", + "2042-04-04": "Good Friday", + "2042-04-05": "Holy Saturday", + "2042-04-06": "Easter Sunday", + "2042-04-07": "Easter Monday", + "2042-05-01": "International Labour Day", + "2042-05-16": "SPLA Day", + "2042-07-09": "Independence Day", + "2042-07-30": "Martyrs' Day", + "2042-09-15": "Eid al-Fitr (estimated)", + "2042-09-16": "Eid al-Fitr Holiday (estimated)", + "2042-11-23": "Eid al-Adha (estimated)", + "2042-11-24": "Eid al-Adha Holiday (estimated)", + "2042-12-24": "Christmas Eve", + "2042-12-25": "Christmas Day", + "2042-12-26": "Second Day of Christmas", + "2043-01-01": "New Year's Day", + "2043-01-09": "Peace Agreement Day", + "2043-03-27": "Good Friday", + "2043-03-28": "Holy Saturday", + "2043-03-29": "Easter Sunday", + "2043-03-30": "Easter Monday", + "2043-05-01": "International Labour Day", + "2043-05-16": "SPLA Day", + "2043-07-09": "Independence Day", + "2043-07-30": "Martyrs' Day", + "2043-09-04": "Eid al-Fitr (estimated)", + "2043-09-05": "Eid al-Fitr Holiday (estimated)", + "2043-11-12": "Eid al-Adha (estimated)", + "2043-11-13": "Eid al-Adha Holiday (estimated)", + "2043-12-24": "Christmas Eve", + "2043-12-25": "Christmas Day", + "2043-12-26": "Second Day of Christmas", + "2044-01-01": "New Year's Day", + "2044-01-09": "Peace Agreement Day", + "2044-04-15": "Good Friday", + "2044-04-16": "Holy Saturday", + "2044-04-17": "Easter Sunday", + "2044-04-18": "Easter Monday", + "2044-05-01": "International Labour Day", + "2044-05-16": "SPLA Day", + "2044-07-09": "Independence Day", + "2044-07-30": "Martyrs' Day", + "2044-08-24": "Eid al-Fitr (estimated)", + "2044-08-25": "Eid al-Fitr Holiday (estimated)", + "2044-10-31": "Eid al-Adha (estimated)", + "2044-11-01": "Eid al-Adha Holiday (estimated)", + "2044-12-24": "Christmas Eve", + "2044-12-25": "Christmas Day", + "2044-12-26": "Second Day of Christmas", + "2045-01-01": "New Year's Day", + "2045-01-09": "Peace Agreement Day", + "2045-04-07": "Good Friday", + "2045-04-08": "Holy Saturday", + "2045-04-09": "Easter Sunday", + "2045-04-10": "Easter Monday", + "2045-05-01": "International Labour Day", + "2045-05-16": "SPLA Day", + "2045-07-09": "Independence Day", + "2045-07-30": "Martyrs' Day", + "2045-08-14": "Eid al-Fitr (estimated)", + "2045-08-15": "Eid al-Fitr Holiday (estimated)", + "2045-10-21": "Eid al-Adha (estimated)", + "2045-10-22": "Eid al-Adha Holiday (estimated)", + "2045-12-24": "Christmas Eve", + "2045-12-25": "Christmas Day", + "2045-12-26": "Second Day of Christmas", + "2046-01-01": "New Year's Day", + "2046-01-09": "Peace Agreement Day", + "2046-03-23": "Good Friday", + "2046-03-24": "Holy Saturday", + "2046-03-25": "Easter Sunday", + "2046-03-26": "Easter Monday", + "2046-05-01": "International Labour Day", + "2046-05-16": "SPLA Day", + "2046-07-09": "Independence Day", + "2046-07-30": "Martyrs' Day", + "2046-08-03": "Eid al-Fitr (estimated)", + "2046-08-04": "Eid al-Fitr Holiday (estimated)", + "2046-10-10": "Eid al-Adha (estimated)", + "2046-10-11": "Eid al-Adha Holiday (estimated)", + "2046-12-24": "Christmas Eve", + "2046-12-25": "Christmas Day", + "2046-12-26": "Second Day of Christmas", + "2047-01-01": "New Year's Day", + "2047-01-09": "Peace Agreement Day", + "2047-04-12": "Good Friday", + "2047-04-13": "Holy Saturday", + "2047-04-14": "Easter Sunday", + "2047-04-15": "Easter Monday", + "2047-05-01": "International Labour Day", + "2047-05-16": "SPLA Day", + "2047-07-09": "Independence Day", + "2047-07-24": "Eid al-Fitr (estimated)", + "2047-07-25": "Eid al-Fitr Holiday (estimated)", + "2047-07-30": "Martyrs' Day", + "2047-09-30": "Eid al-Adha (estimated)", + "2047-10-01": "Eid al-Adha Holiday (estimated)", + "2047-12-24": "Christmas Eve", + "2047-12-25": "Christmas Day", + "2047-12-26": "Second Day of Christmas", + "2048-01-01": "New Year's Day", + "2048-01-09": "Peace Agreement Day", + "2048-04-03": "Good Friday", + "2048-04-04": "Holy Saturday", + "2048-04-05": "Easter Sunday", + "2048-04-06": "Easter Monday", + "2048-05-01": "International Labour Day", + "2048-05-16": "SPLA Day", + "2048-07-09": "Independence Day", + "2048-07-12": "Eid al-Fitr (estimated)", + "2048-07-13": "Eid al-Fitr Holiday (estimated)", + "2048-07-30": "Martyrs' Day", + "2048-09-19": "Eid al-Adha (estimated)", + "2048-09-20": "Eid al-Adha Holiday (estimated)", + "2048-12-24": "Christmas Eve", + "2048-12-25": "Christmas Day", + "2048-12-26": "Second Day of Christmas", + "2049-01-01": "New Year's Day", + "2049-01-09": "Peace Agreement Day", + "2049-04-16": "Good Friday", + "2049-04-17": "Holy Saturday", + "2049-04-18": "Easter Sunday", + "2049-04-19": "Easter Monday", + "2049-05-01": "International Labour Day", + "2049-05-16": "SPLA Day", + "2049-07-01": "Eid al-Fitr (estimated)", + "2049-07-02": "Eid al-Fitr Holiday (estimated)", + "2049-07-09": "Independence Day", + "2049-07-30": "Martyrs' Day", + "2049-09-08": "Eid al-Adha (estimated)", + "2049-09-09": "Eid al-Adha Holiday (estimated)", + "2049-12-24": "Christmas Eve", + "2049-12-25": "Christmas Day", + "2049-12-26": "Second Day of Christmas", + "2050-01-01": "New Year's Day", + "2050-01-09": "Peace Agreement Day", + "2050-04-08": "Good Friday", + "2050-04-09": "Holy Saturday", + "2050-04-10": "Easter Sunday", + "2050-04-11": "Easter Monday", + "2050-05-01": "International Labour Day", + "2050-05-16": "SPLA Day", + "2050-06-20": "Eid al-Fitr (estimated)", + "2050-06-21": "Eid al-Fitr Holiday (estimated)", + "2050-07-09": "Independence Day", + "2050-07-30": "Martyrs' Day", + "2050-08-28": "Eid al-Adha (estimated)", + "2050-08-29": "Eid al-Adha Holiday (estimated)", + "2050-12-24": "Christmas Eve", + "2050-12-25": "Christmas Day", + "2050-12-26": "Second Day of Christmas" +} diff --git a/tests/countries/test_south_sudan.py b/tests/countries/test_south_sudan.py new file mode 100644 index 0000000000..e6bcb51d2a --- /dev/null +++ b/tests/countries/test_south_sudan.py @@ -0,0 +1,197 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from unittest import TestCase + +from holidays.constants import ISLAMIC +from holidays.countries.south_sudan import SouthSudan, SS, SSD +from tests.common import CommonCountryTests + + +class TestSouthSudan(CommonCountryTests, TestCase): + @classmethod + def setUpClass(cls): + years = range(2012, 2050) + super().setUpClass(SouthSudan, years=years) + cls.no_estimated_holidays = SouthSudan(years=years, islamic_show_estimated=False) + cls.islamic_holidays = SouthSudan( + categories=ISLAMIC, years=years, islamic_show_estimated=False + ) + + def test_country_aliases(self): + self.assertAliases(SouthSudan, SS, SSD) + + def test_no_holidays(self): + self.assertNoHolidays(SouthSudan(categories=SouthSudan.supported_categories, years=2011)) + + def test_new_years_day(self): + self.assertHolidayName("New Year's Day", (f"{year}-01-01" for year in range(2012, 2050))) + + def test_peace_agreement_day(self): + self.assertHolidayName( + "Peace Agreement Day", (f"{year}-01-09" for year in range(2012, 2050)) + ) + + def test_good_friday(self): + name = "Good Friday" + self.assertHolidayName( + name, + "2020-04-10", + "2021-04-02", + "2022-04-15", + "2023-04-07", + "2024-03-29", + "2025-04-18", + ) + self.assertHolidayName(name, range(2012, 2050)) + + def test_holy_saturday(self): + name = "Holy Saturday" + self.assertHolidayName( + name, + "2020-04-11", + "2021-04-03", + "2022-04-16", + "2023-04-08", + "2024-03-30", + "2025-04-19", + ) + self.assertHolidayName(name, range(2012, 2050)) + + def test_easter_sunday(self): + name = "Easter Sunday" + self.assertHolidayName( + name, + "2020-04-12", + "2021-04-04", + "2022-04-17", + "2023-04-09", + "2024-03-31", + "2025-04-20", + ) + self.assertHolidayName(name, range(2012, 2050)) + + def test_easter_monday(self): + name = "Easter Monday" + self.assertHolidayName( + name, + "2020-04-13", + "2021-04-05", + "2022-04-18", + "2023-04-10", + "2024-04-01", + "2025-04-21", + ) + self.assertHolidayName(name, range(2012, 2050)) + + def test_international_labor_day(self): + self.assertHolidayName( + "International Labour Day", (f"{year}-05-01" for year in range(2012, 2050)) + ) + + def test_spla_day(self): + self.assertHolidayName("SPLA Day", (f"{year}-05-16" for year in range(2012, 2050))) + + def test_independence_day(self): + self.assertHolidayName("Independence Day", (f"{year}-07-09" for year in range(2012, 2050))) + + def test_martyrs_day(self): + self.assertHolidayName("Martyrs' Day", (f"{year}-07-30" for year in range(2012, 2050))) + + def test_christmas_eve(self): + self.assertHolidayName("Christmas Eve", (f"{year}-12-24" for year in range(2012, 2050))) + + def test_christmas_day(self): + self.assertHolidayName("Christmas Day", (f"{year}-12-25" for year in range(2012, 2050))) + + def test_second_day_of_christmas(self): + self.assertHolidayName( + "Second Day of Christmas", (f"{year}-12-26" for year in range(2012, 2050)) + ) + + def test_eid_al_fitr(self): + name = "Eid al-Fitr" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-05-22", + "2021-05-13", + "2022-05-03", + "2023-04-21", + "2024-04-10", + "2025-03-31", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(2012, 2050)) + + def test_eid_al_adha(self): + name = "Eid al-Adha" + self.assertHolidayName( + name, + self.no_estimated_holidays, + "2020-07-31", + "2021-07-18", + "2022-07-09", + "2023-06-28", + "2024-06-16", + "2025-06-06", + ) + self.assertHolidayName(name, self.no_estimated_holidays, range(2012, 2050)) + + def test_eid_al_fitr_holiday(self): + name = "Eid al-Fitr Holiday" + self.assertNoHolidayName(name) + self.assertHolidayName( + name, + self.islamic_holidays, + "2020-05-23", + "2021-05-14", + "2022-05-04", + "2023-04-22", + "2024-04-11", + "2025-04-01", + ) + self.assertHolidayName(name, self.islamic_holidays, range(2012, 2050)) + + def test_eid_al_adha_holiday(self): + name = "Eid al-Adha Holiday" + self.assertNoHolidayName(name) + self.assertHolidayName( + name, + self.islamic_holidays, + "2020-08-01", + "2021-07-19", + "2022-07-10", + "2023-06-29", + "2024-06-17", + "2025-06-07", + ) + self.assertHolidayName(name, self.islamic_holidays, range(2012, 2050)) + + def test_2020(self): + self.assertHolidays( + SouthSudan(years=2020), + ("2020-01-01", "New Year's Day"), + ("2020-01-09", "Peace Agreement Day"), + ("2020-04-10", "Good Friday"), + ("2020-04-11", "Holy Saturday"), + ("2020-04-12", "Easter Sunday"), + ("2020-04-13", "Easter Monday"), + ("2020-05-01", "International Labour Day"), + ("2020-05-16", "SPLA Day"), + ("2020-05-22", "Eid al-Fitr"), + ("2020-07-09", "Independence Day"), + ("2020-07-30", "Martyrs' Day"), + ("2020-07-31", "Eid al-Adha"), + ("2020-12-24", "Christmas Eve"), + ("2020-12-25", "Christmas Day"), + ("2020-12-26", "Second Day of Christmas"), + ) From 53770abf9c5662e234bcd433a5b446d43939ea90 Mon Sep 17 00:00:00 2001 From: savvysaheel <59962703+saheelsapovadia@users.noreply.github.com> Date: Sun, 31 Aug 2025 01:06:42 +0530 Subject: [PATCH 42/48] Add National Stock Exchange of India (NSE) holidays (#2834) Co-authored-by: Arkadii Yakovets --- README.md | 6 + holidays/financial/__init__.py | 5 + .../national_stock_exchange_of_india.py | 169 +++++ holidays/locale/en_IN/LC_MESSAGES/XNSE.po | 108 ++++ holidays/locale/en_US/LC_MESSAGES/XNSE.po | 108 ++++ holidays/locale/hi/LC_MESSAGES/XNSE.po | 108 ++++ holidays/registry.py | 3 +- snapshots/financial/XNSE.json | 580 ++++++++++++++++++ .../test_national_stock_exchange_of_india.py | 386 ++++++++++++ 9 files changed, 1472 insertions(+), 1 deletion(-) create mode 100644 holidays/financial/national_stock_exchange_of_india.py create mode 100644 holidays/locale/en_IN/LC_MESSAGES/XNSE.po create mode 100644 holidays/locale/en_US/LC_MESSAGES/XNSE.po create mode 100644 holidays/locale/hi/LC_MESSAGES/XNSE.po create mode 100644 snapshots/financial/XNSE.json create mode 100644 tests/financial/test_national_stock_exchange_of_india.py diff --git a/README.md b/README.md index 3ee18c53a5..975248c506 100644 --- a/README.md +++ b/README.md @@ -1877,6 +1877,12 @@ code when available. The following financial markets are available: +National Stock Exchange of India +XNSE +National Stock Exchange of India market holidays +en_IN, en_US, hi + + New York Stock Exchange XNYS NYSE market holidays (used by all other US-exchanges, including NASDAQ, etc.) diff --git a/holidays/financial/__init__.py b/holidays/financial/__init__.py index e918721df5..85dd066e9e 100644 --- a/holidays/financial/__init__.py +++ b/holidays/financial/__init__.py @@ -15,4 +15,9 @@ from holidays.financial.brasil_bolsa_balcao import BrasilBolsaBalcao, BVMF, B3 from holidays.financial.european_central_bank import EuropeanCentralBank, XECB, ECB, TAR from holidays.financial.ice_futures_europe import ICEFuturesEurope, IFEU +from holidays.financial.national_stock_exchange_of_india import ( + NationalStockExchangeOfIndia, + XNSE, + NSE, +) from holidays.financial.ny_stock_exchange import NewYorkStockExchange, XNYS, NYSE diff --git a/holidays/financial/national_stock_exchange_of_india.py b/holidays/financial/national_stock_exchange_of_india.py new file mode 100644 index 0000000000..8eec43f38b --- /dev/null +++ b/holidays/financial/national_stock_exchange_of_india.py @@ -0,0 +1,169 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from gettext import gettext as tr + +from holidays.calendars import _CustomHinduHolidays, _CustomIslamicHolidays +from holidays.calendars.gregorian import MAR, APR, MAY, JUN, JUL, AUG +from holidays.groups import ChristianHolidays, HinduCalendarHolidays, IslamicHolidays +from holidays.observed_holiday_base import ObservedHolidayBase, SAT_TO_NONE, SUN_TO_NONE + + +class NationalStockExchangeOfIndia( + ObservedHolidayBase, HinduCalendarHolidays, ChristianHolidays, IslamicHolidays +): + """National Stock Exchange of India (NSE) holidays. + + References: + * + + Historical data: + * [2022](https://web.archive.org/web/20250821071611/https://nsearchives.nseindia.com/content/circulars/CMTR50560.pdf) + * [2023](https://web.archive.org/web/20250821071635/https://nsearchives.nseindia.com/content/circulars/CMTR54757.pdf) + * [2024](https://web.archive.org/web/20250821071650/https://nsearchives.nseindia.com/content/circulars/CMTR59722.pdf) + * [2025](https://web.archive.org/web/20250624132016/https://nsearchives.nseindia.com/content/circulars/CMTR65587.pdf) + """ + + market = "XNSE" + default_language = "en_IN" + # %s (estimated). + estimated_label = tr("%s (estimated)") + supported_languages = ("en_IN", "en_US", "hi") + start_year = 2001 + + def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): + """ + Args: + islamic_show_estimated: + Whether to add "estimated" label to Islamic holidays name + if holiday date is estimated. + """ + ChristianHolidays.__init__(self) + HinduCalendarHolidays.__init__(self, cls=NationalStockExchangeOfIndiaHinduHolidays) + IslamicHolidays.__init__( + self, + cls=NationalStockExchangeOfIndiaIslamicHolidays, + show_estimated=islamic_show_estimated, + ) + kwargs.setdefault("observed_rule", SAT_TO_NONE + SUN_TO_NONE) + super().__init__(*args, **kwargs) + + def _populate_public_holidays(self): + # Republic Day. + self._move_holiday(self._add_holiday_jan_26(tr("Republic Day"))) + + # Good Friday. + self._add_good_friday(tr("Good Friday")) + + # Dr. Baba Saheb Ambedkar Jayanti. + self._move_holiday(self._add_holiday_apr_14(tr("Dr. Baba Saheb Ambedkar Jayanti"))) + + # Maharashtra Day. + self._move_holiday(self._add_holiday_may_1(tr("Maharashtra Day"))) + + # Independence Day. + self._move_holiday(self._add_holiday_aug_15(tr("Independence Day"))) + + # Mahatma Gandhi Jayanti. + self._move_holiday(self._add_holiday_oct_2(tr("Mahatma Gandhi Jayanti"))) + + # Christmas Day. + self._move_holiday(self._add_christmas_day(tr("Christmas Day"))) + + # Hindu Calendar Holidays. + + # Maha Shivaratri. + self._move_holiday(self._add_maha_shivaratri(tr("Maha Shivaratri"))) + + # Holi. + self._move_holiday(self._add_holi(tr("Holi"))) + + # Ram Navami. + self._move_holiday(self._add_ram_navami(tr("Ram Navami"))) + + # Mahavir Jayanti. + self._move_holiday(self._add_mahavir_jayanti(tr("Mahavir Jayanti"))) + + # Ganesh Chaturthi. + self._move_holiday(self._add_ganesh_chaturthi(tr("Ganesh Chaturthi"))) + + # Dussehra. + self._move_holiday(self._add_dussehra(tr("Dussehra"))) + + # Diwali Laxmi Pujan. + self._move_holiday(self._add_gau_krida(tr("Diwali Laxmi Pujan"))) + + # Diwali Balipratipada. + name = tr("Diwali Balipratipada") + # NSE's calendar adds an extra-day gap in 2022–2023 + # between Diwali Laxmi Pujan and Diwali Balipratipada. + self._move_holiday( + self._add_bhai_dooj(name) + if self._year in {2022, 2023} + else self._add_govardhan_puja(name) + ) + + # Guru Nanak Jayanti. + self._move_holiday(self._add_guru_nanak_jayanti(tr("Guru Nanak Jayanti"))) + + # Islamic Calendar Holidays. + + # Ashura. + for dt in self._add_ashura_day(tr("Muharram")): + self._move_holiday(dt) + + # Eid al-Fitr. + for dt in self._add_eid_al_fitr_day(tr("Id-Ul-Fitr (Ramadan Eid)")): + self._move_holiday(dt) + + # Eid al-Adha. + for dt in self._add_eid_al_adha_day(tr("Bakri Id")): + self._move_holiday(dt) + + +class XNSE(NationalStockExchangeOfIndia): + pass + + +class NSE(NationalStockExchangeOfIndia): + pass + + +class NationalStockExchangeOfIndiaHinduHolidays(_CustomHinduHolidays): + HOLI_DATES = { + 2023: (MAR, 7), + } + + +class NationalStockExchangeOfIndiaIslamicHolidays(_CustomIslamicHolidays): + ASHURA_DATES_CONFIRMED_YEARS = (2022, 2025) + ASHURA_DATES = { + 2022: (AUG, 9), + 2023: (JUL, 29), + 2024: (JUL, 17), + 2025: (JUL, 6), + } + + EID_AL_ADHA_DATES_CONFIRMED_YEARS = (2022, 2025) + EID_AL_ADHA_DATES = { + 2022: (JUL, 10), + 2024: (JUN, 17), + 2025: (JUN, 7), + } + + EID_AL_FITR_DATES_CONFIRMED_YEARS = (2022, 2025) + EID_AL_FITR_DATES = { + 2022: (MAY, 3), + 2023: (APR, 22), + 2024: (APR, 11), + 2025: (MAR, 31), + } diff --git a/holidays/locale/en_IN/LC_MESSAGES/XNSE.po b/holidays/locale/en_IN/LC_MESSAGES/XNSE.po new file mode 100644 index 0000000000..f4daf5fe91 --- /dev/null +++ b/holidays/locale/en_IN/LC_MESSAGES/XNSE.po @@ -0,0 +1,108 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# National Stock Exchange of India holidays. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.80\n" +"POT-Creation-Date: 2025-08-21 16:22+0000\n" +"PO-Revision-Date: 2025-08-21 16:22+0000\n" +"Last-Translator: Saheel Sapovadia saheelsapovadia23@gmail.com\n" +"Language-Team: Holidays Localization Team\n" +"Language: en_IN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Source-Language: en_IN\n" + +#. %s (estimated). +#, c-format +msgid "%s (estimated)" +msgstr "" + +#. Republic Day. +msgid "Republic Day" +msgstr "" + +#. Good Friday. +msgid "Good Friday" +msgstr "" + +#. Dr. Baba Saheb Ambedkar Jayanti. +msgid "Dr. Baba Saheb Ambedkar Jayanti" +msgstr "" + +#. Maharashtra Day. +msgid "Maharashtra Day" +msgstr "" + +#. Independence Day. +msgid "Independence Day" +msgstr "" + +#. Mahatma Gandhi Jayanti. +msgid "Mahatma Gandhi Jayanti" +msgstr "" + +#. Christmas Day. +msgid "Christmas Day" +msgstr "" + +#. Maha Shivaratri. +msgid "Maha Shivaratri" +msgstr "" + +#. Holi. +msgid "Holi" +msgstr "" + +#. Ram Navami. +msgid "Ram Navami" +msgstr "" + +#. Mahavir Jayanti. +msgid "Mahavir Jayanti" +msgstr "" + +#. Ganesh Chaturthi. +msgid "Ganesh Chaturthi" +msgstr "" + +#. Dussehra. +msgid "Dussehra" +msgstr "" + +#. Diwali Laxmi Pujan. +msgid "Diwali Laxmi Pujan" +msgstr "" + +#. Diwali Balipratipada. +msgid "Diwali Balipratipada" +msgstr "" + +#. Guru Nanak Jayanti. +msgid "Guru Nanak Jayanti" +msgstr "" + +#. Ashura. +msgid "Muharram" +msgstr "" + +#. Eid al-Fitr. +msgid "Id-Ul-Fitr (Ramadan Eid)" +msgstr "" + +#. Eid al-Adha. +msgid "Bakri Id" +msgstr "" diff --git a/holidays/locale/en_US/LC_MESSAGES/XNSE.po b/holidays/locale/en_US/LC_MESSAGES/XNSE.po new file mode 100644 index 0000000000..f5ce350c20 --- /dev/null +++ b/holidays/locale/en_US/LC_MESSAGES/XNSE.po @@ -0,0 +1,108 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# National Stock Exchange of India holidays en_US localization. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.80\n" +"POT-Creation-Date: 2025-08-21 16:22+0000\n" +"PO-Revision-Date: 2025-08-21 16:22+0000\n" +"Last-Translator: Saheel Sapovadia saheelsapovadia23@gmail.com\n" +"Language-Team: Holidays Localization Team\n" +"Language: en_US\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Source-Language: en_IN\n" + +#. %s (estimated). +#, c-format +msgid "%s (estimated)" +msgstr "%s (estimated)" + +#. Republic Day. +msgid "Republic Day" +msgstr "Republic Day" + +#. Good Friday. +msgid "Good Friday" +msgstr "Good Friday" + +#. Dr. Baba Saheb Ambedkar Jayanti. +msgid "Dr. Baba Saheb Ambedkar Jayanti" +msgstr "Dr. Baba Saheb Ambedkar Jayanti" + +#. Maharashtra Day. +msgid "Maharashtra Day" +msgstr "Maharashtra Day" + +#. Independence Day. +msgid "Independence Day" +msgstr "Independence Day" + +#. Mahatma Gandhi Jayanti. +msgid "Mahatma Gandhi Jayanti" +msgstr "Mahatma Gandhi Jayanti" + +#. Christmas Day. +msgid "Christmas Day" +msgstr "Christmas Day" + +#. Maha Shivaratri. +msgid "Maha Shivaratri" +msgstr "Maha Shivaratri" + +#. Holi. +msgid "Holi" +msgstr "Holi" + +#. Ram Navami. +msgid "Ram Navami" +msgstr "Ram Navami" + +#. Mahavir Jayanti. +msgid "Mahavir Jayanti" +msgstr "Mahavir Jayanti" + +#. Ganesh Chaturthi. +msgid "Ganesh Chaturthi" +msgstr "Ganesh Chaturthi" + +#. Dussehra. +msgid "Dussehra" +msgstr "Dussehra" + +#. Diwali Laxmi Pujan. +msgid "Diwali Laxmi Pujan" +msgstr "Diwali Lakshmi Puja" + +#. Diwali Balipratipada. +msgid "Diwali Balipratipada" +msgstr "Diwali Balipratipada" + +#. Guru Nanak Jayanti. +msgid "Guru Nanak Jayanti" +msgstr "Guru Nanak Jayanti" + +#. Ashura. +msgid "Muharram" +msgstr "Ashura" + +#. Eid al-Fitr. +msgid "Id-Ul-Fitr (Ramadan Eid)" +msgstr "Eid al-Fitr" + +#. Eid al-Adha. +msgid "Bakri Id" +msgstr "Eid al-Adha" diff --git a/holidays/locale/hi/LC_MESSAGES/XNSE.po b/holidays/locale/hi/LC_MESSAGES/XNSE.po new file mode 100644 index 0000000000..d418bd20e0 --- /dev/null +++ b/holidays/locale/hi/LC_MESSAGES/XNSE.po @@ -0,0 +1,108 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# National Stock Exchange of India holidays hi localization. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.80\n" +"POT-Creation-Date: 2025-08-21 16:22+0000\n" +"PO-Revision-Date: 2025-08-21 16:22+0000\n" +"Last-Translator: Saheel Sapovadia saheelsapovadia23@gmail.com\n" +"Language-Team: Holidays Localization Team\n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Source-Language: en_IN\n" + +#. %s (estimated). +#, c-format +msgid "%s (estimated)" +msgstr "%s (अनुमानित)" + +#. Republic Day. +msgid "Republic Day" +msgstr "गणतंत्र दिवस" + +#. Good Friday. +msgid "Good Friday" +msgstr "गुड फ्राइडे" + +#. Dr. Baba Saheb Ambedkar Jayanti. +msgid "Dr. Baba Saheb Ambedkar Jayanti" +msgstr "डॉ. बाबा साहेब अम्बेडकर जयंती" + +#. Maharashtra Day. +msgid "Maharashtra Day" +msgstr "महाराष्ट्र दिवस" + +#. Independence Day. +msgid "Independence Day" +msgstr "स्वतंत्रता दिवस" + +#. Mahatma Gandhi Jayanti. +msgid "Mahatma Gandhi Jayanti" +msgstr "महात्मा गांधी जयंती" + +#. Christmas Day. +msgid "Christmas Day" +msgstr "क्रिसमस डे" + +#. Maha Shivaratri. +msgid "Maha Shivaratri" +msgstr "महाशिवरात्रि" + +#. Holi. +msgid "Holi" +msgstr "होली" + +#. Ram Navami. +msgid "Ram Navami" +msgstr "राम नवमी" + +#. Mahavir Jayanti. +msgid "Mahavir Jayanti" +msgstr "महावीर जयंती" + +#. Ganesh Chaturthi. +msgid "Ganesh Chaturthi" +msgstr "गणेश चतुर्थी" + +#. Dussehra. +msgid "Dussehra" +msgstr "दशहरा" + +#. Diwali Laxmi Pujan. +msgid "Diwali Laxmi Pujan" +msgstr "दिवाली लक्ष्मी पूजन" + +#. Diwali Balipratipada. +msgid "Diwali Balipratipada" +msgstr "दिवाली बलिप्रतिपदा" + +#. Guru Nanak Jayanti. +msgid "Guru Nanak Jayanti" +msgstr "गुरु नानक जयंती" + +#. Ashura. +msgid "Muharram" +msgstr "मुहर्रम" + +#. Eid al-Fitr. +msgid "Id-Ul-Fitr (Ramadan Eid)" +msgstr "ईद-उल-फितर (रमजान ईद)" + +#. Eid al-Adha. +msgid "Bakri Id" +msgstr "बकरी ईद" diff --git a/holidays/registry.py b/holidays/registry.py index 0d28e65f48..82553f7a17 100644 --- a/holidays/registry.py +++ b/holidays/registry.py @@ -272,10 +272,11 @@ } FINANCIAL: RegistryDict = { + "brasil_bolsa_balcao": ("BrasilBolsaBalcao", "BVMF", "B3"), "european_central_bank": ("EuropeanCentralBank", "XECB", "ECB", "TAR"), "ice_futures_europe": ("ICEFuturesEurope", "IFEU"), + "national_stock_exchange_of_india": ("NationalStockExchangeOfIndia", "XNSE", "NSE"), "ny_stock_exchange": ("NewYorkStockExchange", "XNYS", "NYSE"), - "brasil_bolsa_balcao": ("BrasilBolsaBalcao", "BVMF", "B3"), } # A re-entrant lock. Once a thread has acquired a re-entrant lock, diff --git a/snapshots/financial/XNSE.json b/snapshots/financial/XNSE.json new file mode 100644 index 0000000000..6690a6bdd6 --- /dev/null +++ b/snapshots/financial/XNSE.json @@ -0,0 +1,580 @@ +{ + "2001-01-26": "Republic Day", + "2001-02-21": "Maha Shivaratri", + "2001-03-05": "Eid al-Adha (estimated)", + "2001-04-02": "Ram Navami", + "2001-04-04": "Ashura (estimated)", + "2001-04-06": "Mahavir Jayanti", + "2001-04-13": "Good Friday", + "2001-05-01": "Maharashtra Day", + "2001-08-15": "Independence Day", + "2001-08-22": "Ganesh Chaturthi", + "2001-10-02": "Mahatma Gandhi Jayanti", + "2001-10-26": "Dussehra", + "2001-11-14": "Diwali Lakshmi Puja", + "2001-11-15": "Diwali Balipratipada", + "2001-11-30": "Guru Nanak Jayanti", + "2001-12-25": "Christmas Day", + "2002-02-22": "Eid al-Adha (estimated)", + "2002-03-12": "Maha Shivaratri", + "2002-03-29": "Good Friday; Holi", + "2002-04-25": "Mahavir Jayanti", + "2002-05-01": "Maharashtra Day", + "2002-08-15": "Independence Day", + "2002-09-10": "Ganesh Chaturthi", + "2002-10-02": "Mahatma Gandhi Jayanti", + "2002-10-15": "Dussehra", + "2002-11-04": "Diwali Lakshmi Puja", + "2002-11-05": "Diwali Balipratipada", + "2002-11-19": "Guru Nanak Jayanti", + "2002-12-05": "Eid al-Fitr (estimated)", + "2002-12-25": "Christmas Day", + "2003-02-11": "Eid al-Adha (estimated)", + "2003-03-13": "Ashura (estimated)", + "2003-03-18": "Holi", + "2003-04-11": "Ram Navami", + "2003-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2003-04-15": "Mahavir Jayanti", + "2003-04-18": "Good Friday", + "2003-05-01": "Maharashtra Day", + "2003-08-15": "Independence Day", + "2003-10-02": "Mahatma Gandhi Jayanti", + "2003-11-25": "Eid al-Fitr (estimated)", + "2003-12-25": "Christmas Day", + "2004-01-26": "Republic Day", + "2004-02-18": "Maha Shivaratri", + "2004-03-01": "Ashura (estimated)", + "2004-03-30": "Ram Navami", + "2004-04-09": "Good Friday", + "2004-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2004-10-22": "Dussehra", + "2004-11-12": "Diwali Lakshmi Puja", + "2004-11-26": "Guru Nanak Jayanti", + "2005-01-21": "Eid al-Adha (estimated)", + "2005-01-26": "Republic Day", + "2005-03-08": "Maha Shivaratri", + "2005-03-25": "Good Friday", + "2005-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2005-04-18": "Ram Navami", + "2005-04-22": "Mahavir Jayanti", + "2005-08-15": "Independence Day", + "2005-09-07": "Ganesh Chaturthi", + "2005-10-12": "Dussehra", + "2005-11-01": "Diwali Lakshmi Puja", + "2005-11-02": "Diwali Balipratipada", + "2005-11-03": "Eid al-Fitr (estimated)", + "2005-11-15": "Guru Nanak Jayanti", + "2006-01-10": "Eid al-Adha (estimated)", + "2006-01-26": "Republic Day", + "2006-02-09": "Ashura (estimated)", + "2006-03-15": "Holi", + "2006-04-06": "Ram Navami", + "2006-04-11": "Mahavir Jayanti", + "2006-04-14": "Dr. Baba Saheb Ambedkar Jayanti; Good Friday", + "2006-05-01": "Maharashtra Day", + "2006-08-15": "Independence Day", + "2006-10-02": "Dussehra; Mahatma Gandhi Jayanti", + "2006-10-23": "Eid al-Fitr (estimated)", + "2006-12-25": "Christmas Day", + "2007-01-26": "Republic Day", + "2007-01-29": "Ashura (estimated)", + "2007-02-16": "Maha Shivaratri", + "2007-03-26": "Ram Navami", + "2007-04-06": "Good Friday", + "2007-05-01": "Maharashtra Day", + "2007-08-15": "Independence Day", + "2007-10-02": "Mahatma Gandhi Jayanti", + "2007-11-09": "Diwali Lakshmi Puja", + "2007-12-20": "Eid al-Adha (estimated)", + "2007-12-25": "Christmas Day", + "2008-03-06": "Maha Shivaratri", + "2008-03-21": "Good Friday", + "2008-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2008-04-18": "Mahavir Jayanti", + "2008-05-01": "Maharashtra Day", + "2008-08-15": "Independence Day", + "2008-09-03": "Ganesh Chaturthi", + "2008-10-01": "Eid al-Fitr (estimated)", + "2008-10-02": "Mahatma Gandhi Jayanti", + "2008-10-09": "Dussehra", + "2008-10-28": "Diwali Lakshmi Puja", + "2008-10-29": "Diwali Balipratipada", + "2008-11-13": "Guru Nanak Jayanti", + "2008-12-08": "Eid al-Adha (estimated)", + "2008-12-25": "Christmas Day", + "2009-01-07": "Ashura (estimated)", + "2009-01-26": "Republic Day", + "2009-02-23": "Maha Shivaratri", + "2009-03-11": "Holi", + "2009-04-03": "Ram Navami", + "2009-04-07": "Mahavir Jayanti", + "2009-04-10": "Good Friday", + "2009-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2009-05-01": "Maharashtra Day", + "2009-09-28": "Dussehra", + "2009-10-02": "Mahatma Gandhi Jayanti", + "2009-11-02": "Guru Nanak Jayanti", + "2009-11-27": "Eid al-Adha (estimated)", + "2009-12-25": "Christmas Day", + "2010-01-26": "Republic Day", + "2010-02-12": "Maha Shivaratri", + "2010-03-01": "Holi", + "2010-03-24": "Ram Navami", + "2010-04-02": "Good Friday", + "2010-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2010-04-28": "Mahavir Jayanti", + "2010-09-10": "Eid al-Fitr (estimated)", + "2010-11-05": "Diwali Lakshmi Puja", + "2010-11-16": "Eid al-Adha (estimated)", + "2010-12-16": "Ashura (estimated)", + "2011-01-26": "Republic Day", + "2011-03-02": "Maha Shivaratri", + "2011-04-12": "Ram Navami", + "2011-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2011-04-22": "Good Friday", + "2011-08-15": "Independence Day", + "2011-08-30": "Eid al-Fitr (estimated)", + "2011-09-01": "Ganesh Chaturthi", + "2011-10-06": "Dussehra", + "2011-10-26": "Diwali Lakshmi Puja", + "2011-10-27": "Diwali Balipratipada", + "2011-11-10": "Guru Nanak Jayanti", + "2011-12-05": "Ashura (estimated)", + "2012-01-26": "Republic Day", + "2012-02-20": "Maha Shivaratri", + "2012-03-08": "Holi", + "2012-04-05": "Mahavir Jayanti", + "2012-04-06": "Good Friday", + "2012-05-01": "Maharashtra Day", + "2012-08-15": "Independence Day", + "2012-09-19": "Ganesh Chaturthi", + "2012-10-02": "Mahatma Gandhi Jayanti", + "2012-10-24": "Dussehra", + "2012-10-26": "Eid al-Adha (estimated)", + "2012-11-13": "Diwali Lakshmi Puja", + "2012-11-14": "Diwali Balipratipada", + "2012-11-28": "Guru Nanak Jayanti", + "2012-12-25": "Christmas Day", + "2013-03-27": "Holi", + "2013-03-29": "Good Friday", + "2013-04-19": "Ram Navami", + "2013-04-24": "Mahavir Jayanti", + "2013-05-01": "Maharashtra Day", + "2013-08-08": "Eid al-Fitr (estimated)", + "2013-08-15": "Independence Day", + "2013-09-09": "Ganesh Chaturthi", + "2013-10-02": "Mahatma Gandhi Jayanti", + "2013-10-15": "Eid al-Adha (estimated)", + "2013-11-04": "Diwali Balipratipada", + "2013-11-13": "Ashura (estimated)", + "2013-12-25": "Christmas Day", + "2014-02-27": "Maha Shivaratri", + "2014-03-17": "Holi", + "2014-04-08": "Ram Navami", + "2014-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2014-04-18": "Good Friday", + "2014-05-01": "Maharashtra Day", + "2014-07-28": "Eid al-Fitr (estimated)", + "2014-08-15": "Independence Day", + "2014-08-29": "Ganesh Chaturthi", + "2014-10-02": "Mahatma Gandhi Jayanti", + "2014-10-03": "Dussehra", + "2014-10-23": "Diwali Lakshmi Puja", + "2014-10-24": "Diwali Balipratipada", + "2014-11-03": "Ashura (estimated)", + "2014-11-06": "Guru Nanak Jayanti", + "2014-12-25": "Christmas Day", + "2015-01-26": "Republic Day", + "2015-02-17": "Maha Shivaratri", + "2015-03-06": "Holi", + "2015-04-02": "Mahavir Jayanti", + "2015-04-03": "Good Friday", + "2015-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2015-05-01": "Maharashtra Day", + "2015-07-17": "Eid al-Fitr (estimated)", + "2015-09-17": "Ganesh Chaturthi", + "2015-09-23": "Eid al-Adha (estimated)", + "2015-10-02": "Mahatma Gandhi Jayanti", + "2015-10-22": "Dussehra", + "2015-10-23": "Ashura (estimated)", + "2015-11-11": "Diwali Lakshmi Puja", + "2015-11-12": "Diwali Balipratipada", + "2015-11-25": "Guru Nanak Jayanti", + "2015-12-25": "Christmas Day", + "2016-01-26": "Republic Day", + "2016-03-07": "Maha Shivaratri", + "2016-03-24": "Holi", + "2016-03-25": "Good Friday", + "2016-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2016-04-15": "Ram Navami", + "2016-04-20": "Mahavir Jayanti", + "2016-07-06": "Eid al-Fitr (estimated)", + "2016-08-15": "Independence Day", + "2016-09-05": "Ganesh Chaturthi", + "2016-10-11": "Ashura (estimated); Dussehra", + "2016-10-31": "Diwali Balipratipada", + "2016-11-14": "Guru Nanak Jayanti", + "2017-01-26": "Republic Day", + "2017-02-24": "Maha Shivaratri", + "2017-03-13": "Holi", + "2017-04-04": "Ram Navami", + "2017-04-14": "Dr. Baba Saheb Ambedkar Jayanti; Good Friday", + "2017-05-01": "Maharashtra Day", + "2017-08-15": "Independence Day", + "2017-08-25": "Ganesh Chaturthi", + "2017-09-01": "Eid al-Adha (estimated)", + "2017-10-02": "Mahatma Gandhi Jayanti", + "2017-10-19": "Diwali Lakshmi Puja", + "2017-10-20": "Diwali Balipratipada", + "2017-12-25": "Christmas Day", + "2018-01-26": "Republic Day", + "2018-02-13": "Maha Shivaratri", + "2018-03-02": "Holi", + "2018-03-29": "Mahavir Jayanti", + "2018-03-30": "Good Friday", + "2018-05-01": "Maharashtra Day", + "2018-06-15": "Eid al-Fitr (estimated)", + "2018-08-15": "Independence Day", + "2018-08-21": "Eid al-Adha (estimated)", + "2018-09-13": "Ganesh Chaturthi", + "2018-09-20": "Ashura (estimated)", + "2018-10-02": "Mahatma Gandhi Jayanti", + "2018-10-19": "Dussehra", + "2018-11-07": "Diwali Lakshmi Puja", + "2018-11-08": "Diwali Balipratipada", + "2018-11-23": "Guru Nanak Jayanti", + "2018-12-25": "Christmas Day", + "2019-03-04": "Maha Shivaratri", + "2019-03-21": "Holi", + "2019-04-17": "Mahavir Jayanti", + "2019-04-19": "Good Friday", + "2019-05-01": "Maharashtra Day", + "2019-06-04": "Eid al-Fitr (estimated)", + "2019-08-15": "Independence Day", + "2019-09-02": "Ganesh Chaturthi", + "2019-09-09": "Ashura (estimated)", + "2019-10-02": "Mahatma Gandhi Jayanti", + "2019-10-08": "Dussehra", + "2019-10-28": "Diwali Balipratipada", + "2019-11-12": "Guru Nanak Jayanti", + "2019-12-25": "Christmas Day", + "2020-02-21": "Maha Shivaratri", + "2020-03-10": "Holi", + "2020-04-02": "Ram Navami", + "2020-04-06": "Mahavir Jayanti", + "2020-04-10": "Good Friday", + "2020-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2020-05-01": "Maharashtra Day", + "2020-07-31": "Eid al-Adha (estimated)", + "2020-10-02": "Mahatma Gandhi Jayanti", + "2020-11-30": "Guru Nanak Jayanti", + "2020-12-25": "Christmas Day", + "2021-01-26": "Republic Day", + "2021-03-11": "Maha Shivaratri", + "2021-03-29": "Holi", + "2021-04-02": "Good Friday", + "2021-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2021-04-21": "Ram Navami", + "2021-05-13": "Eid al-Fitr (estimated)", + "2021-07-20": "Eid al-Adha (estimated)", + "2021-08-18": "Ashura (estimated)", + "2021-09-10": "Ganesh Chaturthi", + "2021-10-15": "Dussehra", + "2021-11-04": "Diwali Lakshmi Puja", + "2021-11-05": "Diwali Balipratipada", + "2021-11-19": "Guru Nanak Jayanti", + "2022-01-26": "Republic Day", + "2022-03-01": "Maha Shivaratri", + "2022-03-18": "Holi", + "2022-04-14": "Dr. Baba Saheb Ambedkar Jayanti; Mahavir Jayanti", + "2022-04-15": "Good Friday", + "2022-05-03": "Eid al-Fitr", + "2022-08-09": "Ashura", + "2022-08-15": "Independence Day", + "2022-08-31": "Ganesh Chaturthi", + "2022-10-05": "Dussehra", + "2022-10-24": "Diwali Lakshmi Puja", + "2022-10-26": "Diwali Balipratipada", + "2022-11-08": "Guru Nanak Jayanti", + "2023-01-26": "Republic Day", + "2023-03-07": "Holi", + "2023-03-30": "Ram Navami", + "2023-04-04": "Mahavir Jayanti", + "2023-04-07": "Good Friday", + "2023-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2023-05-01": "Maharashtra Day", + "2023-06-28": "Eid al-Adha", + "2023-08-15": "Independence Day", + "2023-09-19": "Ganesh Chaturthi", + "2023-10-02": "Mahatma Gandhi Jayanti", + "2023-10-24": "Dussehra", + "2023-11-14": "Diwali Balipratipada", + "2023-11-27": "Guru Nanak Jayanti", + "2023-12-25": "Christmas Day", + "2024-01-26": "Republic Day", + "2024-03-08": "Maha Shivaratri", + "2024-03-25": "Holi", + "2024-03-29": "Good Friday", + "2024-04-11": "Eid al-Fitr", + "2024-04-17": "Ram Navami", + "2024-05-01": "Maharashtra Day", + "2024-06-17": "Eid al-Adha", + "2024-07-17": "Ashura", + "2024-08-15": "Independence Day", + "2024-10-02": "Mahatma Gandhi Jayanti", + "2024-11-01": "Diwali Lakshmi Puja", + "2024-11-15": "Guru Nanak Jayanti", + "2024-12-25": "Christmas Day", + "2025-02-26": "Maha Shivaratri", + "2025-03-14": "Holi", + "2025-03-31": "Eid al-Fitr", + "2025-04-10": "Mahavir Jayanti", + "2025-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2025-04-18": "Good Friday", + "2025-05-01": "Maharashtra Day", + "2025-08-15": "Independence Day", + "2025-08-27": "Ganesh Chaturthi", + "2025-10-02": "Dussehra; Mahatma Gandhi Jayanti", + "2025-10-21": "Diwali Lakshmi Puja", + "2025-10-22": "Diwali Balipratipada", + "2025-11-05": "Guru Nanak Jayanti", + "2025-12-25": "Christmas Day", + "2026-01-26": "Republic Day", + "2026-03-04": "Holi", + "2026-03-20": "Eid al-Fitr (estimated)", + "2026-03-26": "Ram Navami", + "2026-03-31": "Mahavir Jayanti", + "2026-04-03": "Good Friday", + "2026-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2026-05-01": "Maharashtra Day", + "2026-05-27": "Eid al-Adha (estimated)", + "2026-06-25": "Ashura (estimated)", + "2026-09-14": "Ganesh Chaturthi", + "2026-10-02": "Mahatma Gandhi Jayanti", + "2026-10-20": "Dussehra", + "2026-11-09": "Diwali Lakshmi Puja", + "2026-11-10": "Diwali Balipratipada", + "2026-11-24": "Guru Nanak Jayanti", + "2026-12-25": "Christmas Day", + "2027-01-26": "Republic Day", + "2027-03-09": "Eid al-Fitr (estimated)", + "2027-03-22": "Holi", + "2027-03-26": "Good Friday", + "2027-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2027-04-15": "Ram Navami", + "2027-06-15": "Ashura (estimated)", + "2027-10-29": "Diwali Lakshmi Puja", + "2028-01-26": "Republic Day", + "2028-02-23": "Maha Shivaratri", + "2028-04-03": "Ram Navami", + "2028-04-07": "Mahavir Jayanti", + "2028-04-14": "Dr. Baba Saheb Ambedkar Jayanti; Good Friday", + "2028-05-01": "Maharashtra Day", + "2028-05-05": "Eid al-Adha (estimated)", + "2028-08-15": "Independence Day", + "2028-08-23": "Ganesh Chaturthi", + "2028-09-27": "Dussehra", + "2028-10-02": "Mahatma Gandhi Jayanti", + "2028-10-17": "Diwali Lakshmi Puja", + "2028-10-18": "Diwali Balipratipada", + "2028-11-02": "Guru Nanak Jayanti", + "2028-12-25": "Christmas Day", + "2029-01-26": "Republic Day", + "2029-02-14": "Eid al-Fitr (estimated)", + "2029-03-01": "Holi", + "2029-03-30": "Good Friday", + "2029-04-24": "Eid al-Adha (estimated)", + "2029-04-26": "Mahavir Jayanti", + "2029-05-01": "Maharashtra Day", + "2029-05-23": "Ashura (estimated)", + "2029-08-15": "Independence Day", + "2029-09-11": "Ganesh Chaturthi", + "2029-10-02": "Mahatma Gandhi Jayanti", + "2029-10-16": "Dussehra", + "2029-11-05": "Diwali Lakshmi Puja", + "2029-11-06": "Diwali Balipratipada", + "2029-11-21": "Guru Nanak Jayanti", + "2029-12-25": "Christmas Day", + "2030-02-04": "Eid al-Fitr (estimated)", + "2030-03-20": "Holi", + "2030-04-12": "Ram Navami", + "2030-04-16": "Mahavir Jayanti", + "2030-04-19": "Good Friday", + "2030-05-01": "Maharashtra Day", + "2030-08-15": "Independence Day", + "2030-10-02": "Mahatma Gandhi Jayanti", + "2030-12-25": "Christmas Day", + "2031-01-24": "Eid al-Fitr (estimated)", + "2031-02-20": "Maha Shivaratri", + "2031-04-01": "Ram Navami", + "2031-04-02": "Eid al-Adha (estimated)", + "2031-04-11": "Good Friday", + "2031-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2031-05-01": "Maharashtra Day", + "2031-05-02": "Ashura (estimated)", + "2031-08-15": "Independence Day", + "2031-10-02": "Mahatma Gandhi Jayanti", + "2031-11-14": "Diwali Lakshmi Puja", + "2031-11-28": "Guru Nanak Jayanti", + "2031-12-25": "Christmas Day", + "2032-01-14": "Eid al-Fitr (estimated)", + "2032-01-26": "Republic Day", + "2032-03-10": "Maha Shivaratri", + "2032-03-22": "Eid al-Adha (estimated)", + "2032-03-26": "Good Friday", + "2032-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2032-04-19": "Ram Navami", + "2032-04-20": "Ashura (estimated)", + "2032-04-23": "Mahavir Jayanti", + "2032-09-08": "Ganesh Chaturthi", + "2032-10-14": "Dussehra", + "2032-11-02": "Diwali Lakshmi Puja", + "2032-11-03": "Diwali Balipratipada", + "2032-11-17": "Guru Nanak Jayanti", + "2033-01-26": "Republic Day", + "2033-03-11": "Eid al-Adha (estimated)", + "2033-03-16": "Holi", + "2033-04-07": "Ram Navami", + "2033-04-12": "Mahavir Jayanti", + "2033-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2033-04-15": "Good Friday", + "2033-08-15": "Independence Day", + "2033-10-03": "Dussehra", + "2033-12-23": "Eid al-Fitr (estimated)", + "2034-01-26": "Republic Day", + "2034-02-17": "Maha Shivaratri", + "2034-03-01": "Eid al-Adha (estimated)", + "2034-03-28": "Ram Navami", + "2034-03-30": "Ashura (estimated)", + "2034-04-07": "Good Friday", + "2034-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2034-05-01": "Maharashtra Day", + "2034-08-15": "Independence Day", + "2034-10-02": "Mahatma Gandhi Jayanti", + "2034-11-10": "Diwali Lakshmi Puja", + "2034-12-12": "Eid al-Fitr (estimated)", + "2034-12-25": "Christmas Day", + "2035-01-26": "Republic Day", + "2035-03-08": "Maha Shivaratri", + "2035-03-20": "Ashura (estimated)", + "2035-03-23": "Good Friday", + "2035-04-16": "Ram Navami", + "2035-04-20": "Mahavir Jayanti", + "2035-05-01": "Maharashtra Day", + "2035-08-15": "Independence Day", + "2035-09-05": "Ganesh Chaturthi", + "2035-10-02": "Mahatma Gandhi Jayanti", + "2035-10-11": "Dussehra", + "2035-10-30": "Diwali Lakshmi Puja", + "2035-10-31": "Diwali Balipratipada", + "2035-11-15": "Guru Nanak Jayanti", + "2035-12-25": "Christmas Day", + "2036-02-07": "Eid al-Adha (estimated)", + "2036-04-11": "Good Friday", + "2036-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2036-05-01": "Maharashtra Day", + "2036-08-15": "Independence Day", + "2036-10-02": "Mahatma Gandhi Jayanti", + "2036-11-19": "Eid al-Fitr (estimated)", + "2036-12-25": "Christmas Day", + "2037-01-26": "Eid al-Adha (estimated); Republic Day", + "2037-02-25": "Ashura (estimated)", + "2037-04-03": "Good Friday", + "2037-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2037-05-01": "Maharashtra Day", + "2037-10-02": "Mahatma Gandhi Jayanti", + "2037-12-25": "Christmas Day", + "2038-01-26": "Republic Day", + "2038-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2038-04-23": "Good Friday", + "2038-10-29": "Eid al-Fitr (estimated)", + "2039-01-05": "Eid al-Adha (estimated)", + "2039-01-26": "Republic Day", + "2039-02-04": "Ashura (estimated)", + "2039-04-08": "Good Friday", + "2039-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2039-08-15": "Independence Day", + "2039-10-19": "Eid al-Fitr (estimated)", + "2039-12-26": "Eid al-Adha (estimated)", + "2040-01-24": "Ashura (estimated)", + "2040-01-26": "Republic Day", + "2040-03-30": "Good Friday", + "2040-05-01": "Maharashtra Day", + "2040-08-15": "Independence Day", + "2040-10-02": "Mahatma Gandhi Jayanti", + "2040-12-14": "Eid al-Adha (estimated)", + "2040-12-25": "Christmas Day", + "2041-04-19": "Good Friday", + "2041-05-01": "Maharashtra Day", + "2041-08-15": "Independence Day", + "2041-09-26": "Eid al-Fitr (estimated)", + "2041-10-02": "Mahatma Gandhi Jayanti", + "2041-12-04": "Eid al-Adha (estimated)", + "2041-12-25": "Christmas Day", + "2042-01-02": "Ashura (estimated)", + "2042-04-04": "Good Friday", + "2042-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2042-05-01": "Maharashtra Day", + "2042-08-15": "Independence Day", + "2042-09-15": "Eid al-Fitr (estimated)", + "2042-10-02": "Mahatma Gandhi Jayanti", + "2042-12-23": "Ashura (estimated)", + "2042-12-25": "Christmas Day", + "2043-01-26": "Republic Day", + "2043-03-27": "Good Friday", + "2043-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2043-05-01": "Maharashtra Day", + "2043-09-04": "Eid al-Fitr (estimated)", + "2043-10-02": "Mahatma Gandhi Jayanti", + "2043-11-12": "Eid al-Adha (estimated)", + "2043-12-25": "Christmas Day", + "2044-01-26": "Republic Day", + "2044-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2044-04-15": "Good Friday", + "2044-08-15": "Independence Day", + "2044-08-24": "Eid al-Fitr (estimated)", + "2044-10-31": "Eid al-Adha (estimated)", + "2044-11-30": "Ashura (estimated)", + "2045-01-26": "Republic Day", + "2045-04-07": "Good Friday", + "2045-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2045-05-01": "Maharashtra Day", + "2045-08-14": "Eid al-Fitr (estimated)", + "2045-08-15": "Independence Day", + "2045-10-02": "Mahatma Gandhi Jayanti", + "2045-12-25": "Christmas Day", + "2046-01-26": "Republic Day", + "2046-03-23": "Good Friday", + "2046-05-01": "Maharashtra Day", + "2046-08-03": "Eid al-Fitr (estimated)", + "2046-08-15": "Independence Day", + "2046-10-02": "Mahatma Gandhi Jayanti", + "2046-10-10": "Eid al-Adha (estimated)", + "2046-11-09": "Ashura (estimated)", + "2046-12-25": "Christmas Day", + "2047-04-12": "Good Friday", + "2047-05-01": "Maharashtra Day", + "2047-07-24": "Eid al-Fitr (estimated)", + "2047-08-15": "Independence Day", + "2047-09-30": "Eid al-Adha (estimated)", + "2047-10-02": "Mahatma Gandhi Jayanti", + "2047-10-29": "Ashura (estimated)", + "2047-12-25": "Christmas Day", + "2048-04-03": "Good Friday", + "2048-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2048-05-01": "Maharashtra Day", + "2048-10-02": "Mahatma Gandhi Jayanti", + "2048-12-25": "Christmas Day", + "2049-01-26": "Republic Day", + "2049-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2049-04-16": "Good Friday", + "2049-07-01": "Eid al-Fitr (estimated)", + "2049-09-08": "Eid al-Adha (estimated)", + "2049-10-07": "Ashura (estimated)", + "2050-01-26": "Republic Day", + "2050-04-08": "Good Friday", + "2050-04-14": "Dr. Baba Saheb Ambedkar Jayanti", + "2050-06-20": "Eid al-Fitr (estimated)", + "2050-08-15": "Independence Day", + "2050-09-26": "Ashura (estimated)" +} diff --git a/tests/financial/test_national_stock_exchange_of_india.py b/tests/financial/test_national_stock_exchange_of_india.py new file mode 100644 index 0000000000..48495e7a98 --- /dev/null +++ b/tests/financial/test_national_stock_exchange_of_india.py @@ -0,0 +1,386 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) + +from unittest import TestCase + +from holidays.financial.national_stock_exchange_of_india import ( + NationalStockExchangeOfIndia, + XNSE, + NSE, +) +from tests.common import CommonFinancialTests + + +class TestNationalStockExchangeOfIndia(CommonFinancialTests, TestCase): + @classmethod + def setUpClass(cls): + years = range(2001, 2050) + super().setUpClass(NationalStockExchangeOfIndia, years=years, years_non_observed=years) + cls.nonobs_no_estimated_holidays = NationalStockExchangeOfIndia( + observed=False, years=years, islamic_show_estimated=False + ) + + def test_market_aliases(self): + self.assertAliases(NationalStockExchangeOfIndia, XNSE, NSE) + + def test_no_holidays(self): + self.assertNoHolidays(NationalStockExchangeOfIndia(years=2000)) + + def test_republic_day(self): + self.assertNonObservedHolidayName( + "Republic Day", (f"{year}-01-26" for year in range(2001, 2050)) + ) + self.assertNoHoliday( + "2025-01-26", + ) + + def test_good_friday(self): + name = "Good Friday" + self.assertHolidayName( + name, + "2022-04-15", + "2023-04-07", + "2024-03-29", + "2025-04-18", + ) + self.assertHolidayName(name, range(2001, 2050)) + + def test_dr_baba_saheb_ambedkar_jayanti(self): + self.assertNonObservedHolidayName( + "Dr. Baba Saheb Ambedkar Jayanti", (f"{year}-04-14" for year in range(2001, 2050)) + ) + self.assertNoHoliday( + "2024-04-14", + ) + + def test_maharashtra_day(self): + self.assertNonObservedHolidayName( + "Maharashtra Day", (f"{year}-05-01" for year in range(2001, 2050)) + ) + self.assertNoHoliday( + "2022-05-01", + ) + + def test_independence_day(self): + self.assertNonObservedHolidayName( + "Independence Day", (f"{year}-08-15" for year in range(2001, 2050)) + ) + self.assertNoHoliday( + "2021-08-15", + ) + + def test_mahatma_gandhi_jayanti(self): + self.assertNonObservedHolidayName( + "Mahatma Gandhi Jayanti", (f"{year}-10-02" for year in range(2001, 2050)) + ) + self.assertNoHoliday( + "2022-10-02", + ) + + def test_christmas_day(self): + self.assertNonObservedHolidayName( + "Christmas Day", (f"{year}-12-25" for year in range(2001, 2050)) + ) + self.assertNoHoliday( + "2022-12-25", + ) + + def test_maha_shivratri(self): + name = "Maha Shivaratri" + self.assertNonObservedHolidayName( + name, + "2022-03-01", + "2023-02-18", + "2024-03-08", + "2025-02-26", + ) + self.assertNonObservedHolidayName(name, range(2001, 2036)) + self.assertNoHoliday( + "2023-02-18", + ) + + def test_holi(self): + name = "Holi" + self.assertNonObservedHolidayName( + name, + "2022-03-18", + "2023-03-07", + "2024-03-25", + "2025-03-14", + ) + self.assertNonObservedHolidayName(name, range(2001, 2036)) + + def test_mahavir_jayanti(self): + name = "Mahavir Jayanti" + self.assertNonObservedHolidayName( + name, + "2022-04-14", + "2023-04-04", + "2024-04-21", + "2025-04-10", + ) + self.assertNonObservedHolidayName(name, range(2001, 2036)) + self.assertNoHoliday( + "2024-04-21", + ) + + def test_ram_navami(self): + name = "Ram Navami" + self.assertNonObservedHolidayName( + name, + "2022-04-10", + "2023-03-30", + "2024-04-17", + "2025-04-06", + ) + self.assertNonObservedHolidayName(name, range(2001, 2036)) + self.assertNoHoliday( + "2022-04-10", + "2025-04-06", + ) + + def test_diwali_balipratipada(self): + name = "Diwali Balipratipada" + self.assertNonObservedHolidayName( + name, + "2022-10-26", + "2023-11-14", + "2024-11-02", + "2025-10-22", + ) + self.assertNonObservedHolidayName(name, range(2001, 2036)) + self.assertNoHoliday( + "2024-11-02", + ) + + def test_diwali_laxmi_pujan(self): + name = "Diwali Laxmi Pujan" + self.assertNonObservedHolidayName( + name, + "2022-10-24", + "2023-11-12", + "2024-11-01", + "2025-10-21", + ) + self.assertNonObservedHolidayName(name, range(2001, 2036)) + self.assertNoHoliday( + "2023-11-12", + ) + + def test_dussehra(self): + name = "Dussehra" + self.assertNonObservedHolidayName( + name, + "2022-10-05", + "2023-10-24", + "2024-10-12", + "2025-10-02", + ) + self.assertNonObservedHolidayName(name, range(2001, 2036)) + self.assertNoHoliday( + "2024-10-12", + ) + + def test_ganesh_chaturthi(self): + name = "Ganesh Chaturthi" + self.assertNonObservedHolidayName( + name, + "2022-08-31", + "2023-09-19", + "2024-09-07", + "2025-08-27", + ) + self.assertNonObservedHolidayName(name, range(2001, 2036)) + self.assertNoHoliday( + "2024-09-07", + ) + + def test_guru_nanak_jayanti(self): + name = "Guru Nanak Jayanti" + self.assertNonObservedHolidayName( + name, + "2022-11-08", + "2023-11-27", + "2024-11-15", + "2025-11-05", + ) + self.assertNonObservedHolidayName(name, range(2001, 2036)) + self.assertNoHoliday( + "2017-11-04", + ) + + def test_muharram(self): + name = "Muharram" + self.assertNonObservedHolidayName( + name, + "2022-08-09", + "2023-07-29", + "2024-07-17", + "2025-07-06", + ) + self.assertNonObservedHolidayName( + name, self.nonobs_no_estimated_holidays, range(2001, 2050) + ) + self.assertNoHoliday( + "2023-07-29", + "2025-07-06", + ) + + def test_id_ul_fitr(self): + name = "Id-Ul-Fitr (Ramadan Eid)" + self.assertNonObservedHolidayName( + name, + "2022-05-03", + "2023-04-22", + "2024-04-11", + "2025-03-31", + ) + self.assertNonObservedHolidayName( + name, self.nonobs_no_estimated_holidays, range(2001, 2050) + ) + self.assertNoHoliday( + "2023-04-22", + ) + + def test_bakri_id(self): + name = "Bakri Id" + self.assertNonObservedHolidayName( + name, + "2022-07-10", + "2023-06-28", + "2024-06-17", + "2025-06-07", + ) + self.assertNonObservedHolidayName( + name, self.nonobs_no_estimated_holidays, range(2001, 2050) + ) + self.assertNoHoliday( + "2022-07-10", + "2025-06-07", + ) + + def test_2023(self): + self.assertHolidays( + NationalStockExchangeOfIndia(years=2023), + ("2023-01-26", "Republic Day"), + ("2023-03-07", "Holi"), + ("2023-03-30", "Ram Navami"), + ("2023-04-04", "Mahavir Jayanti"), + ("2023-04-07", "Good Friday"), + ("2023-04-14", "Dr. Baba Saheb Ambedkar Jayanti"), + ("2023-05-01", "Maharashtra Day"), + ("2023-06-28", "Bakri Id"), + ("2023-08-15", "Independence Day"), + ("2023-09-19", "Ganesh Chaturthi"), + ("2023-10-02", "Mahatma Gandhi Jayanti"), + ("2023-10-24", "Dussehra"), + ("2023-11-14", "Diwali Balipratipada"), + ("2023-11-27", "Guru Nanak Jayanti"), + ("2023-12-25", "Christmas Day"), + ) + + def test_2024(self): + self.assertHolidays( + NationalStockExchangeOfIndia(years=2024), + ("2024-01-26", "Republic Day"), + ("2024-03-08", "Maha Shivaratri"), + ("2024-03-25", "Holi"), + ("2024-03-29", "Good Friday"), + ("2024-04-11", "Id-Ul-Fitr (Ramadan Eid)"), + ("2024-04-17", "Ram Navami"), + ("2024-05-01", "Maharashtra Day"), + ("2024-06-17", "Bakri Id"), + ("2024-07-17", "Muharram"), + ("2024-08-15", "Independence Day"), + ("2024-10-02", "Mahatma Gandhi Jayanti"), + ("2024-11-01", "Diwali Laxmi Pujan"), + ("2024-11-15", "Guru Nanak Jayanti"), + ("2024-12-25", "Christmas Day"), + ) + + def test_2025(self): + self.assertHolidays( + NationalStockExchangeOfIndia(years=2025), + ("2025-02-26", "Maha Shivaratri"), + ("2025-03-14", "Holi"), + ("2025-03-31", "Id-Ul-Fitr (Ramadan Eid)"), + ("2025-04-10", "Mahavir Jayanti"), + ("2025-04-14", "Dr. Baba Saheb Ambedkar Jayanti"), + ("2025-04-18", "Good Friday"), + ("2025-05-01", "Maharashtra Day"), + ("2025-08-15", "Independence Day"), + ("2025-08-27", "Ganesh Chaturthi"), + ("2025-10-02", "Dussehra; Mahatma Gandhi Jayanti"), + ("2025-10-21", "Diwali Laxmi Pujan"), + ("2025-10-22", "Diwali Balipratipada"), + ("2025-11-05", "Guru Nanak Jayanti"), + ("2025-12-25", "Christmas Day"), + ) + + def test_l10n_default(self): + self.assertLocalizedHolidays( + ("2023-01-26", "Republic Day"), + ("2023-03-07", "Holi"), + ("2023-03-30", "Ram Navami"), + ("2023-04-04", "Mahavir Jayanti"), + ("2023-04-07", "Good Friday"), + ("2023-04-14", "Dr. Baba Saheb Ambedkar Jayanti"), + ("2023-05-01", "Maharashtra Day"), + ("2023-06-28", "Bakri Id"), + ("2023-08-15", "Independence Day"), + ("2023-09-19", "Ganesh Chaturthi"), + ("2023-10-02", "Mahatma Gandhi Jayanti"), + ("2023-10-24", "Dussehra"), + ("2023-11-14", "Diwali Balipratipada"), + ("2023-11-27", "Guru Nanak Jayanti"), + ("2023-12-25", "Christmas Day"), + ) + + def test_l10n_en_us(self): + self.assertLocalizedHolidays( + "en_US", + ("2023-01-26", "Republic Day"), + ("2023-03-07", "Holi"), + ("2023-03-30", "Ram Navami"), + ("2023-04-04", "Mahavir Jayanti"), + ("2023-04-07", "Good Friday"), + ("2023-04-14", "Dr. Baba Saheb Ambedkar Jayanti"), + ("2023-05-01", "Maharashtra Day"), + ("2023-06-28", "Eid al-Adha"), + ("2023-08-15", "Independence Day"), + ("2023-09-19", "Ganesh Chaturthi"), + ("2023-10-02", "Mahatma Gandhi Jayanti"), + ("2023-10-24", "Dussehra"), + ("2023-11-14", "Diwali Balipratipada"), + ("2023-11-27", "Guru Nanak Jayanti"), + ("2023-12-25", "Christmas Day"), + ) + + def test_l10n_hi(self): + self.assertLocalizedHolidays( + "hi", + ("2023-01-26", "गणतंत्र दिवस"), + ("2023-03-07", "होली"), + ("2023-03-30", "राम नवमी"), + ("2023-04-04", "महावीर जयंती"), + ("2023-04-07", "गुड फ्राइडे"), + ("2023-04-14", "डॉ. बाबा साहेब अम्बेडकर जयंती"), + ("2023-05-01", "महाराष्ट्र दिवस"), + ("2023-06-28", "बकरी ईद"), + ("2023-08-15", "स्वतंत्रता दिवस"), + ("2023-09-19", "गणेश चतुर्थी"), + ("2023-10-02", "महात्मा गांधी जयंती"), + ("2023-10-24", "दशहरा"), + ("2023-11-14", "दिवाली बलिप्रतिपदा"), + ("2023-11-27", "गुरु नानक जयंती"), + ("2023-12-25", "क्रिसमस डे"), + ) From a459edc7c19dd7adbdf3e41b8e7cd316f9a0db94 Mon Sep 17 00:00:00 2001 From: ~Jhellico Date: Sun, 31 Aug 2025 01:28:23 +0300 Subject: [PATCH 43/48] Fix `TestAllInSameYear` methods (#2877) --- tests/test_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index b01adda0a8..2b20cc098b 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -114,7 +114,7 @@ def test_all_countries(self, unused_rglob_mock): for dt in country_holidays(country, years=year): self.assertEqual(dt.year, year) self.assertEqual(type(dt), date) - self.assertEqual(self.years, country_holidays(country, years=self.years).years) + self.assertEqual(self.years, country_holidays(country, years=self.years).years) @pytest.mark.skipif( PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION, @@ -137,7 +137,7 @@ def test_all_financial(self, unused_rglob_mock): for dt in financial_holidays(market, years=year): self.assertEqual(dt.year, year) self.assertEqual(type(dt), date) - self.assertEqual(self.years, financial_holidays(market, years=self.years).years) + self.assertEqual(self.years, financial_holidays(market, years=self.years).years) class TestListLocalizedEntities(unittest.TestCase): From 47d8050b08e1f9821e8b5f1794cf9e5200c21d6e Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com> Date: Sun, 31 Aug 2025 08:15:25 -0700 Subject: [PATCH 44/48] Update `common::CommonTests`: expand label tests to financial entities (#2876) --- tests/common.py | 49 +++++++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/tests/common.py b/tests/common.py index 1c5b7dbe71..8b2544f625 100644 --- a/tests/common.py +++ b/tests/common.py @@ -343,25 +343,6 @@ def assertLocalizedHolidays(self, *args): # noqa: N802 class CommonTests(TestCase): """Common test cases for all entities.""" - def test_subdivisions_aliases(self): - """Validate entity subdivisions aliases.""" - if self.holidays.subdivisions_aliases: - subdivisions = set(self.holidays.subdivisions) - for alias, subdiv in self.holidays.subdivisions_aliases.items(): - self.assertIn( - subdiv, - subdivisions, - f"Invalid subdivision alias {alias}: subdivision {subdiv} does not exist.", - ) - - -class CommonCountryTests(CommonTests): - """Common test cases for country entities.""" - - def test_code(self): - self.assertTrue(hasattr(self.holidays, "country")) - self.assertFalse(hasattr(self.holidays, "market")) - def test_estimated_label(self): if isinstance(self.holidays, IslamicHolidays): self.assertTrue( @@ -375,7 +356,16 @@ def test_observed_estimated_label(self): observed_label = getattr(self.holidays, "observed_label", None) observed_estimated_label = getattr(self.holidays, "observed_estimated_label", None) - if estimated_label and observed_label: + if ( + estimated_label + and observed_label + # In certain entities, the observed rule applies only to holiday suppression, + # e.g., XNSE with `SAT_TO_NONE`` or `SUN_TO_NONE``. In these cases, the + # `observed_estimated_label` is not required. + and any( + rule is not None for rule in getattr(self.holidays, "observed_rule", {}).values() + ) + ): self.assertTrue( observed_estimated_label, "The `observed_estimated_label` attribute is required for entities containing " @@ -391,6 +381,25 @@ def test_observed_label(self): "observed holidays.", ) + def test_subdivisions_aliases(self): + """Validate entity subdivisions aliases.""" + if self.holidays.subdivisions_aliases: + subdivisions = set(self.holidays.subdivisions) + for alias, subdiv in self.holidays.subdivisions_aliases.items(): + self.assertIn( + subdiv, + subdivisions, + f"Invalid subdivision alias {alias}: subdivision {subdiv} does not exist.", + ) + + +class CommonCountryTests(CommonTests): + """Common test cases for country entities.""" + + def test_code(self): + self.assertTrue(hasattr(self.holidays, "country")) + self.assertFalse(hasattr(self.holidays, "market")) + class CommonFinancialTests(CommonTests): """Common test cases for financial entities.""" From 13a6d8db2c6405a64333e40efc6938122936b2d5 Mon Sep 17 00:00:00 2001 From: ~Jhellico Date: Sun, 31 Aug 2025 21:19:26 +0300 Subject: [PATCH 45/48] Add `common::TestCase::assertHolidayNameCount` method (#2873) --- tests/common.py | 32 +++++++++++++++++++++++++++++- tests/countries/test_azerbaijan.py | 14 +++++++++++-- tests/countries/test_china.py | 2 ++ tests/countries/test_lebanon.py | 13 ++++++++++++ tests/countries/test_taiwan.py | 2 ++ 5 files changed, 60 insertions(+), 3 deletions(-) diff --git a/tests/common.py b/tests/common.py index 8b2544f625..6104e07505 100644 --- a/tests/common.py +++ b/tests/common.py @@ -13,6 +13,7 @@ import os import sys import warnings +from collections import defaultdict from collections.abc import Generator from datetime import date @@ -235,6 +236,35 @@ def assertNonObservedHolidays(self, *args): # noqa: N802 """Assert non-observed holidays exactly match expected holidays.""" self._assertHolidays("holidays_non_observed", *args) + def _assertHolidayNameCount(self, name, count, instance_name, *args): # noqa: N802 + """Helper: assert number of holidays with a specific name in every year matches + expected. + """ + holidays, items = self._parse_arguments(args, instance_name=instance_name) + self._verify_type(holidays) + + holiday_counts = defaultdict(int) + for dt in holidays.get_named(name, lookup="exact"): + holiday_counts[dt.year] += 1 + + for year in items: + holiday_count = holiday_counts.get(year, 0) + self.assertEqual( + count, + holiday_count, + f"`{name}` occurs {holiday_count} times in year {year}, should be {count}", + ) + + def assertHolidayNameCount(self, name, count, *args): # noqa: N802 + """Assert number of holidays with a specific name in every year matches expected.""" + self._assertHolidayNameCount(name, count, "holidays", *args) + + def assertNonObservedHolidayNameCount(self, name, count, *args): # noqa: N802 + """Assert number of non-observed holidays with a specific name in every year + matches expected. + """ + self._assertHolidayNameCount(name, count, "holidays_non_observed", *args) + # No holiday. def _assertNoHoliday(self, instance_name, *args): # noqa: N802 """Helper: assert each date is not a holiday.""" @@ -327,7 +357,7 @@ def _assertLocalizedHolidays(self, localized_holidays, language=None): # noqa: ) def assertLocalizedHolidays(self, *args): # noqa: N802 - """Helper: assert localized holidays match expected names.""" + """Assert localized holidays match expected names.""" arg = args[0] is_string = isinstance(arg, str) diff --git a/tests/countries/test_azerbaijan.py b/tests/countries/test_azerbaijan.py index 0879955ab1..6c3dbd2f9c 100644 --- a/tests/countries/test_azerbaijan.py +++ b/tests/countries/test_azerbaijan.py @@ -247,8 +247,14 @@ def test_eid_al_fitr(self): "2023-04-21", "2023-04-22", ) - self.assertNoHolidayName(name, "2004-11-15", "2005-11-04") + self.assertHolidayName(name, self.no_estimated_holidays, range(1993, 2050)) self.assertNoHolidayName(name, self.no_estimated_holidays, range(1990, 1993)) + self.assertHolidayNameCount( + name, 1, self.no_estimated_holidays, set(range(1993, 2006)) - {2000} + ) + self.assertHolidayNameCount( + name, 2, self.no_estimated_holidays, set(range(2006, 2050)) - {2033} + ) def test_eid_al_adha(self): name = "Qurban bayrami" @@ -265,8 +271,12 @@ def test_eid_al_adha(self): "2023-06-28", "2023-06-29", ) - self.assertNoHolidayName(name, "2004-02-02", "2005-01-23", "2006-01-11") + self.assertHolidayName(name, self.no_estimated_holidays, range(1993, 2050)) self.assertNoHolidayName(name, self.no_estimated_holidays, range(1990, 1993)) + self.assertHolidayNameCount(name, 1, self.no_estimated_holidays, range(1993, 2006)) + self.assertHolidayNameCount( + name, 2, self.no_estimated_holidays, set(range(2006, 2050)) - {2007, 2039} + ) def test_observed_days(self): observed_holidays = ( diff --git a/tests/countries/test_china.py b/tests/countries/test_china.py index 545c651241..0443ffac1d 100644 --- a/tests/countries/test_china.py +++ b/tests/countries/test_china.py @@ -478,6 +478,8 @@ def test_chinese_new_year(self): "2024-02-13", "2024-02-14", ) + self.assertHolidayNameCount(name, 3, range(1950, 2008), range(2014, 2050)) + self.assertHolidayNameCount(name, 2, range(2008, 2014)) def test_labor_day(self): name = "劳动节" diff --git a/tests/countries/test_lebanon.py b/tests/countries/test_lebanon.py index d058ee1016..e5b722ada9 100644 --- a/tests/countries/test_lebanon.py +++ b/tests/countries/test_lebanon.py @@ -270,6 +270,11 @@ def test_eid_al_fitr(self): "2025-03-31", ) self.assertHolidayName(name, self.no_estimated_holidays, range(1978, 2050)) + self.assertHolidayNameCount(name, 1, self.no_estimated_holidays, range(1978, 1986)) + self.assertHolidayNameCount(name, 3, self.no_estimated_holidays, range(1986, 1995)) + self.assertHolidayNameCount( + name, 2, self.no_estimated_holidays, set(range(1995, 2050)) - {2000, 2033} + ) def test_eid_al_adha(self): name = "عيد الأضحى" @@ -296,6 +301,14 @@ def test_eid_al_adha(self): "2025-06-07", ) self.assertHolidayName(name, self.no_estimated_holidays, range(1978, 2050)) + self.assertHolidayNameCount( + name, + 2, + self.no_estimated_holidays, + range(1978, 1986), + set(range(1994, 2050)) - {2006, 2007, 2039}, + ) + self.assertHolidayNameCount(name, 3, self.no_estimated_holidays, range(1986, 1994)) def test_2024(self): self.assertHolidays( diff --git a/tests/countries/test_taiwan.py b/tests/countries/test_taiwan.py index 606f8e2dcb..12f61078ca 100644 --- a/tests/countries/test_taiwan.py +++ b/tests/countries/test_taiwan.py @@ -231,6 +231,8 @@ def test_chinese_new_year(self): "2024-02-12", ) self.assertHolidayName(name, range(1998, 2050)) + self.assertHolidayNameCount(name, 3, range(1998, 2050)) + obs_eve_dt = ( "2006-02-01", "2007-02-21", From 515ba78aa38de5ebb598fe3cf3dfeaea429b6591 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com> Date: Sun, 31 Aug 2025 18:53:43 -0700 Subject: [PATCH 46/48] Expose entity additional codes (#2879) --- holidays/registry.py | 37 ++++++++++++++++++++++++------------- tests/test_registry.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 13 deletions(-) diff --git a/holidays/registry.py b/holidays/registry.py index 82553f7a17..30f4cec770 100644 --- a/holidays/registry.py +++ b/holidays/registry.py @@ -13,7 +13,7 @@ import importlib from collections.abc import Iterable from threading import RLock -from typing import Any, Optional, Union +from typing import Any, Optional from holidays.holiday_base import HolidayBase @@ -339,35 +339,46 @@ def get_entity(self) -> Optional[HolidayBase]: @staticmethod def _get_entity_codes( container: RegistryDict, - entity_length: Union[int, Iterable[int]], include_aliases: bool = True, + max_code_length: int = 3, + min_code_length: int = 2, ) -> Iterable[str]: - entity_length = {entity_length} if isinstance(entity_length, int) else set(entity_length) for entities in container.values(): - for entity in entities: - if len(entity) in entity_length: - yield entity - # Assuming that the alpha-2 code goes first. - if not include_aliases: - break + for code in entities[1:]: + if min_code_length <= len(code) <= max_code_length: + yield code + + # Stop after the first matching code if aliases are not requested. + # Assuming that the alpha-2 code goes first. + if not include_aliases: + break @staticmethod def get_country_codes(include_aliases: bool = True) -> Iterable[str]: """Get supported country codes. :param include_aliases: - Whether to include entity aliases (e.g. UK for GB). + Whether to include entity aliases (e.g. GBR and UK for GB, + UKR for UA, USA for US, etc). """ - return EntityLoader._get_entity_codes(COUNTRIES, 2, include_aliases) + return EntityLoader._get_entity_codes( + COUNTRIES, + include_aliases=include_aliases, + ) @staticmethod def get_financial_codes(include_aliases: bool = True) -> Iterable[str]: """Get supported financial codes. :param include_aliases: - Whether to include entity aliases(e.g. TAR for ECB, XNYS for NYSE). + Whether to include entity aliases (e.g. B3 for BVMF, + TAR for ECB, NYSE for XNYS, etc). """ - return EntityLoader._get_entity_codes(FINANCIAL, (3, 4), include_aliases) + return EntityLoader._get_entity_codes( + FINANCIAL, + include_aliases=include_aliases, + max_code_length=4, + ) @staticmethod def load(prefix: str, scope: dict) -> None: diff --git a/tests/test_registry.py b/tests/test_registry.py index 6ee8853736..4e6e55ddeb 100644 --- a/tests/test_registry.py +++ b/tests/test_registry.py @@ -108,6 +108,42 @@ def test_financial_str(self): "'holidays.financial.ny_stock_exchange.NYSE' class directly.", ) + def test_get_country_codes(self): + country_codes = set(registry.EntityLoader.get_country_codes(include_aliases=False)) + for entity_classes in registry.COUNTRIES.values(): + self.assertNotIn(entity_classes[0], country_codes) + self.assertIn(entity_classes[1], country_codes) + for code in entity_classes[2:]: + self.assertNotIn(code, country_codes) + + def test_get_country_codes_aliases(self): + country_codes = set(registry.EntityLoader.get_country_codes(include_aliases=True)) + for entity_classes in registry.COUNTRIES.values(): + self.assertNotIn(entity_classes[0], country_codes) + for code in entity_classes[1:]: + if code.isupper(): + self.assertIn(code, country_codes) + else: + self.assertNotIn(code, country_codes) + + def test_get_financial_codes(self): + financial_codes = set(registry.EntityLoader.get_financial_codes(include_aliases=False)) + for entity_classes in registry.FINANCIAL.values(): + self.assertNotIn(entity_classes[0], financial_codes) + self.assertIn(entity_classes[1], financial_codes) + for code in entity_classes[2:]: + self.assertNotIn(code, financial_codes) + + def test_get_financial_codes_aliases(self): + financial_codes = set(registry.EntityLoader.get_financial_codes(include_aliases=True)) + for entity_classes in registry.FINANCIAL.values(): + self.assertNotIn(entity_classes[0], financial_codes) + for code in entity_classes[1:]: + if code.isupper(): + self.assertIn(code, financial_codes) + else: + self.assertNotIn(code, financial_codes) + def test_inheritance(self): def create_instance(parent): class SubClass(parent): From 4e4b7b18e2427d4fa52f7c531827193281d9396e Mon Sep 17 00:00:00 2001 From: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com> Date: Tue, 2 Sep 2025 00:00:43 +0700 Subject: [PATCH 47/48] Update Nigeria holidays, add l10n support (#2874) --- README.md | 2 +- holidays/countries/nigeria.py | 224 ++++- holidays/locale/en_NG/LC_MESSAGES/NG.po | 111 +++ holidays/locale/en_US/LC_MESSAGES/NG.po | 111 +++ snapshots/countries/NG_COMMON.json | 1048 ++++++++++++----------- tests/countries/test_nigeria.py | 302 ++++--- 6 files changed, 1148 insertions(+), 650 deletions(-) create mode 100644 holidays/locale/en_NG/LC_MESSAGES/NG.po create mode 100644 holidays/locale/en_US/LC_MESSAGES/NG.po diff --git a/README.md b/README.md index 975248c506..7b1b4231b0 100644 --- a/README.md +++ b/README.md @@ -1228,7 +1228,7 @@ any) in brackets, available languages and additional holiday categories. All cou Nigeria NG - +en_NG, en_US diff --git a/holidays/countries/nigeria.py b/holidays/countries/nigeria.py index f514f1e356..8e886c6feb 100644 --- a/holidays/countries/nigeria.py +++ b/holidays/countries/nigeria.py @@ -10,7 +10,10 @@ # Website: https://github.com/vacanza/holidays # License: MIT (see LICENSE file) -from holidays.calendars.gregorian import FEB, MAY +from gettext import gettext as tr + +from holidays.calendars import _CustomIslamicHolidays +from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC from holidays.groups import ( ChristianHolidays, InternationalHolidays, @@ -27,16 +30,33 @@ class Nigeria( References: * + * [Public Holidays Decree 1979](https://web.archive.org/web/20240616072641/https://archive.gazettes.africa/archive/ng/1979/ng-government-gazette-supplement-dated-1979-02-01-no-5.pdf) + * [Public Holidays (Amendment) Decree 1984](https://web.archive.org/web/20240615185836/https://archive.gazettes.africa/archive/ng/1984/ng-government-gazette-supplement-dated-1984-08-30-no-52-part-a.pdf) + * [Public Holidays Act (2004 Consolidated Version)](https://web.archive.org/web/20250822094939/https://placng.org/lawsofnigeria/view2.php?sn=467) + * + * + * + * + * + * + * + * + + In-lieu holidays have been in effect since at least 2010: + * """ country = "NG" + default_language = "en_NG" # %s (estimated). - estimated_label = "%s (estimated)" + estimated_label = tr("%s (estimated)") # %s (observed, estimated). - observed_estimated_label = "%s (observed, estimated)" + observed_estimated_label = tr("%s (observed, estimated)") # %s (observed). - observed_label = "%s (observed)" + observed_label = tr("%s (observed)") + # Public Holidays Decree 1979, in effect from January 1st, 1979. start_year = 1979 + supported_languages = ("en_NG", "en_US") def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): """ @@ -47,53 +67,69 @@ def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): """ ChristianHolidays.__init__(self) InternationalHolidays.__init__(self) - IslamicHolidays.__init__(self, show_estimated=islamic_show_estimated) + IslamicHolidays.__init__( + self, cls=NigeriaIslamicHolidays, show_estimated=islamic_show_estimated + ) StaticHolidays.__init__(self, NigeriaStaticHolidays) kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_WORKDAY) - kwargs.setdefault("observed_since", 2016) + kwargs.setdefault("observed_since", 2010) super().__init__(*args, **kwargs) def _populate_public_holidays(self): dts_observed = set() # New Year's Day. - dts_observed.add(self._add_new_years_day("New Year's Day")) + dts_observed.add(self._add_new_years_day(tr("New Year's Day"))) + + # Good Friday. + self._add_good_friday(tr("Good Friday")) - self._add_good_friday("Good Friday") - self._add_easter_monday("Easter Monday") + # Easter Monday. + self._add_easter_monday(tr("Easter Monday")) - # Worker's day. - if self._year >= 1981: - dts_observed.add(self._add_labor_day("Workers' Day")) + # Added via Public Holidays (Amendment) Decree 1984 on August 28th, 1984. + if self._year >= 1985: + # Workers' Day. + dts_observed.add(self._add_labor_day(tr("Workers' Day"))) - # Democracy Day. + # Added via Public Holidays (Amendment) Decree 2000. + # Changed to June 12th for 2019 onwards on July 6th, 2018. if self._year >= 2000: - name = "Democracy Day" + # Democracy Day. + name = tr("Democracy Day") dts_observed.add( self._add_holiday_jun_12(name) if self._year >= 2019 else self._add_holiday_may_29(name) ) - # Independence Day. - dts_observed.add(self._add_holiday_oct_1("Independence Day")) + if self._year >= 1999 and self._year % 4 == 3: + # Presidential Inauguration Day. + self._add_holiday_may_29(tr("Presidential Inauguration Day")) + + # National Day. + dts_observed.add(self._add_holiday_oct_1(tr("National Day"))) + + # Christmas Day. + dts_observed.add(self._add_christmas_day(tr("Christmas Day"))) - # Christmas day. - dts_observed.add(self._add_christmas_day("Christmas Day")) + # Boxing Day. + dts_observed.add(self._add_christmas_day_two(tr("Boxing Day"))) - # Boxing day. - dts_observed.add(self._add_christmas_day_two("Boxing Day")) + # Prophet's Birthday. + dts_observed.update(self._add_mawlid_day(tr("Id el Maulud"))) # Eid al-Fitr. - dts_observed.update(self._add_eid_al_fitr_day("Eid-el-Fitr")) - dts_observed.update(self._add_eid_al_fitr_day_two("Eid-el-Fitr Holiday")) + dts_observed.update(self._add_eid_al_fitr_day(tr("Id el Fitr"))) + + # Eid al-Fitr Holiday. + dts_observed.update(self._add_eid_al_fitr_day_two(tr("Id el Fitr Holiday"))) # Eid al-Adha. - dts_observed.update(self._add_eid_al_adha_day("Eid-el-Kabir")) - dts_observed.update(self._add_eid_al_adha_day_two("Eid-el-Kabir Holiday")) + dts_observed.update(self._add_eid_al_adha_day(tr("Id el Kabir"))) - # Birthday of Prophet Muhammad. - dts_observed.update(self._add_mawlid_day("Eid-el-Mawlid")) + # Eid al-Adha Holiday. + dts_observed.update(self._add_eid_al_adha_day_two(tr("Id el Kabir Holiday"))) if self.observed: self._populate_observed(dts_observed) @@ -107,10 +143,140 @@ class NGA(Nigeria): pass +class NigeriaIslamicHolidays(_CustomIslamicHolidays): + # https://web.archive.org/web/20250829051803/https://www.timeanddate.com/holidays/nigeria/id-el-kabir + EID_AL_ADHA_DATES_CONFIRMED_YEARS = (1979, 2025) + EID_AL_ADHA_DATES = { + 1979: (NOV, 1), + 1980: (OCT, 20), + 1981: (OCT, 9), + 1982: (SEP, 29), + 1983: (SEP, 18), + 1984: (SEP, 6), + 1985: (AUG, 27), + 1986: (AUG, 16), + 1987: (AUG, 6), + 1988: (JUL, 25), + 1989: (JUL, 14), + 1990: (JUL, 4), + 1991: (JUN, 23), + 1993: (JUN, 1), + 1994: (MAY, 21), + 1995: (MAY, 10), + 1996: (APR, 29), + 1997: (APR, 18), + 1998: (APR, 8), + 1999: (MAR, 28), + 2001: (MAR, 6), + 2002: (FEB, 23), + 2003: (FEB, 12), + 2004: (FEB, 2), + 2007: (DEC, 19), + 2008: (DEC, 9), + 2009: (NOV, 28), + 2010: (NOV, 17), + 2011: (NOV, 7), + 2014: (OCT, 6), + 2015: (SEP, 24), + 2016: (SEP, 12), + 2017: (SEP, 2), + 2018: (AUG, 22), + 2019: (AUG, 12), + } + + # https://web.archive.org/web/20250829052410/https://www.timeanddate.com/holidays/nigeria/id-el-fitr + EID_AL_FITR_DATES_CONFIRMED_YEARS = (1979, 2025) + EID_AL_FITR_DATES = { + 1979: (AUG, 25), + 1980: (AUG, 13), + 1981: (AUG, 2), + 1982: (JUL, 23), + 1983: (JUL, 12), + 1985: (JUN, 20), + 1986: (JUN, 9), + 1987: (MAY, 30), + 1988: (MAY, 18), + 1989: (MAY, 7), + 1990: (APR, 27), + 1991: (APR, 16), + 1993: (MAR, 25), + 1994: (MAR, 14), + 1995: (MAR, 3), + 1996: (FEB, 21), + 1997: (FEB, 9), + 1998: (JAN, 30), + 1999: (JAN, 19), + 2000: ((JAN, 8), (DEC, 28)), + 2001: (DEC, 17), + 2002: (DEC, 6), + 2003: (NOV, 26), + 2005: (NOV, 4), + 2006: (OCT, 24), + 2007: (OCT, 12), + 2008: (SEP, 29), + 2009: (SEP, 21), + 2010: (SEP, 9), + 2012: (AUG, 20), + 2017: (JUN, 26), + } + + # https://web.archive.org/web/20250829053435/https://www.timeanddate.com/holidays/nigeria/id-el-maulud + # https://web.archive.org/web/20250829054319/https://pmnewsnigeria.com/2012/02/03/fg-declares-6-feb-public-holiday/ + MAWLID_DATES_CONFIRMED_YEARS = (1979, 2025) + MAWLID_DATES = { + 1979: (FEB, 10), + 1982: ((JAN, 8), (DEC, 28)), + 1983: (DEC, 17), + 1984: (DEC, 6), + 1985: (NOV, 25), + 1986: (NOV, 15), + 1987: (NOV, 4), + 1988: (OCT, 23), + 1989: (OCT, 13), + 1990: (OCT, 2), + 1991: (SEP, 21), + 1992: (SEP, 10), + 1993: (AUG, 30), + 1995: (AUG, 9), + 1996: (JUL, 28), + 1997: (JUL, 18), + 1998: (JUL, 7), + 2000: (JUN, 15), + 2003: (MAY, 14), + 2004: (MAY, 2), + 2006: (APR, 11), + 2011: (FEB, 16), + 2012: (FEB, 6), + 2015: ((JAN, 2), (DEC, 24)), + 2016: (DEC, 12), + 2017: (DEC, 1), + 2021: (OCT, 19), + 2024: (SEP, 16), + 2025: (SEP, 5), + } + + class NigeriaStaticHolidays: + """Nigeria special holidays. + + References: + * + * + * + * + """ + + # Public Holiday for Elections. + name_elections = tr("Public Holiday for Elections") + special_public_holidays = { - 2019: ( - (FEB, 22, "Public Holiday for Elections"), - (MAY, 29, "Presidential Inauguration Day"), + 2007: ( + (APR, 12, name_elections), + (APR, 13, name_elections), ), + # Day of Mourning for President Umaru Yar'Adua. + 2010: (MAY, 6, tr("Day of Mourning for President Umaru Yar'Adua")), + 2019: (FEB, 22, name_elections), + # Day of Mourning for President Muhammadu Buhari. + 2025: (JUL, 15, tr("Day of Mourning for President Muhammadu Buhari")), } diff --git a/holidays/locale/en_NG/LC_MESSAGES/NG.po b/holidays/locale/en_NG/LC_MESSAGES/NG.po new file mode 100644 index 0000000000..762058b5cb --- /dev/null +++ b/holidays/locale/en_NG/LC_MESSAGES/NG.po @@ -0,0 +1,111 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# Nigeria holidays. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.80\n" +"POT-Creation-Date: 2025-08-29 16:49+0700\n" +"PO-Revision-Date: 2025-08-30 22:51+0700\n" +"Last-Translator: PPsyrius \n" +"Language-Team: Holidays Localization Team\n" +"Language: en_NG\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Generator: Poedit 3.7\n" +"X-Source-Language: en_NG\n" + +#. %s (estimated). +#, c-format +msgid "%s (estimated)" +msgstr "" + +#. %s (observed, estimated). +#, c-format +msgid "%s (observed, estimated)" +msgstr "" + +#. %s (observed). +#, c-format +msgid "%s (observed)" +msgstr "" + +#. New Year's Day. +msgid "New Year's Day" +msgstr "" + +#. Good Friday. +msgid "Good Friday" +msgstr "" + +#. Easter Monday. +msgid "Easter Monday" +msgstr "" + +#. Workers' Day. +msgid "Workers' Day" +msgstr "" + +#. Democracy Day. +msgid "Democracy Day" +msgstr "" + +#. Presidential Inauguration Day. +msgid "Presidential Inauguration Day" +msgstr "" + +#. National Day. +msgid "National Day" +msgstr "" + +#. Christmas Day. +msgid "Christmas Day" +msgstr "" + +#. Boxing Day. +msgid "Boxing Day" +msgstr "" + +#. Prophet's Birthday. +msgid "Id el Maulud" +msgstr "" + +#. Eid al-Fitr. +msgid "Id el Fitr" +msgstr "" + +#. Eid al-Fitr Holiday. +msgid "Id el Fitr Holiday" +msgstr "" + +#. Eid al-Adha. +msgid "Id el Kabir" +msgstr "" + +#. Eid al-Adha Holiday. +msgid "Id el Kabir Holiday" +msgstr "" + +#. Public Holiday for Elections. +msgid "Public Holiday for Elections" +msgstr "" + +#. Day of Mourning for President Umaru Yar'Adua. +msgid "Day of Mourning for President Umaru Yar'Adua" +msgstr "" + +#. Day of Mourning for President Muhammadu Buhari. +msgid "Day of Mourning for President Muhammadu Buhari" +msgstr "" diff --git a/holidays/locale/en_US/LC_MESSAGES/NG.po b/holidays/locale/en_US/LC_MESSAGES/NG.po new file mode 100644 index 0000000000..23fe2b34f3 --- /dev/null +++ b/holidays/locale/en_US/LC_MESSAGES/NG.po @@ -0,0 +1,111 @@ +# holidays +# -------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file) +# dr-prodigy (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# Nigeria holidays en_US localization. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.80\n" +"POT-Creation-Date: 2025-08-29 16:49+0700\n" +"PO-Revision-Date: 2025-08-30 22:51+0700\n" +"Last-Translator: PPsyrius \n" +"Language-Team: Holidays Localization Team\n" +"Language: en_US\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Generator: Poedit 3.7\n" +"X-Source-Language: en_NG\n" + +#. %s (estimated). +#, c-format +msgid "%s (estimated)" +msgstr "%s (estimated)" + +#. %s (observed, estimated). +#, c-format +msgid "%s (observed, estimated)" +msgstr "%s (observed, estimated)" + +#. %s (observed). +#, c-format +msgid "%s (observed)" +msgstr "%s (observed)" + +#. New Year's Day. +msgid "New Year's Day" +msgstr "New Year's Day" + +#. Good Friday. +msgid "Good Friday" +msgstr "Good Friday" + +#. Easter Monday. +msgid "Easter Monday" +msgstr "Easter Monday" + +#. Workers' Day. +msgid "Workers' Day" +msgstr "Workers' Day" + +#. Democracy Day. +msgid "Democracy Day" +msgstr "Democracy Day" + +#. Presidential Inauguration Day. +msgid "Presidential Inauguration Day" +msgstr "Presidential Inauguration Day" + +#. National Day. +msgid "National Day" +msgstr "National Day" + +#. Christmas Day. +msgid "Christmas Day" +msgstr "Christmas Day" + +#. Boxing Day. +msgid "Boxing Day" +msgstr "Boxing Day" + +#. Prophet's Birthday. +msgid "Id el Maulud" +msgstr "Prophet's Birthday" + +#. Eid al-Fitr. +msgid "Id el Fitr" +msgstr "Eid al-Fitr" + +#. Eid al-Fitr Holiday. +msgid "Id el Fitr Holiday" +msgstr "Eid al-Fitr Holiday" + +#. Eid al-Adha. +msgid "Id el Kabir" +msgstr "Eid al-Adha" + +#. Eid al-Adha Holiday. +msgid "Id el Kabir Holiday" +msgstr "Eid al-Adha Holiday" + +#. Public Holiday for Elections. +msgid "Public Holiday for Elections" +msgstr "Public Holiday for Elections" + +#. Day of Mourning for President Umaru Yar'Adua. +msgid "Day of Mourning for President Umaru Yar'Adua" +msgstr "Day of Mourning for President Umaru Yar'Adua" + +#. Day of Mourning for President Muhammadu Buhari. +msgid "Day of Mourning for President Muhammadu Buhari" +msgstr "Day of Mourning for President Muhammadu Buhari" diff --git a/snapshots/countries/NG_COMMON.json b/snapshots/countries/NG_COMMON.json index 8c4f6f9777..3f3abd7377 100644 --- a/snapshots/countries/NG_COMMON.json +++ b/snapshots/countries/NG_COMMON.json @@ -1,464 +1,480 @@ { "1979-01-01": "New Year's Day", - "1979-02-09": "Eid-el-Mawlid (estimated)", + "1979-02-10": "Prophet's Birthday", "1979-04-13": "Good Friday", "1979-04-16": "Easter Monday", - "1979-08-23": "Eid-el-Fitr (estimated)", - "1979-08-24": "Eid-el-Fitr Holiday (estimated)", - "1979-10-01": "Independence Day", - "1979-10-31": "Eid-el-Kabir (estimated)", - "1979-11-01": "Eid-el-Kabir Holiday (estimated)", + "1979-08-25": "Eid al-Fitr", + "1979-08-26": "Eid al-Fitr Holiday", + "1979-10-01": "National Day", + "1979-11-01": "Eid al-Adha", + "1979-11-02": "Eid al-Adha Holiday", "1979-12-25": "Christmas Day", "1979-12-26": "Boxing Day", "1980-01-01": "New Year's Day", - "1980-01-30": "Eid-el-Mawlid (estimated)", + "1980-01-30": "Prophet's Birthday", "1980-04-04": "Good Friday", "1980-04-07": "Easter Monday", - "1980-08-12": "Eid-el-Fitr (estimated)", - "1980-08-13": "Eid-el-Fitr Holiday (estimated)", - "1980-10-01": "Independence Day", - "1980-10-19": "Eid-el-Kabir (estimated)", - "1980-10-20": "Eid-el-Kabir Holiday (estimated)", + "1980-08-13": "Eid al-Fitr", + "1980-08-14": "Eid al-Fitr Holiday", + "1980-10-01": "National Day", + "1980-10-20": "Eid al-Adha", + "1980-10-21": "Eid al-Adha Holiday", "1980-12-25": "Christmas Day", "1980-12-26": "Boxing Day", "1981-01-01": "New Year's Day", - "1981-01-18": "Eid-el-Mawlid (estimated)", + "1981-01-18": "Prophet's Birthday", "1981-04-17": "Good Friday", "1981-04-20": "Easter Monday", - "1981-05-01": "Workers' Day", - "1981-08-01": "Eid-el-Fitr (estimated)", - "1981-08-02": "Eid-el-Fitr Holiday (estimated)", - "1981-10-01": "Independence Day", - "1981-10-08": "Eid-el-Kabir (estimated)", - "1981-10-09": "Eid-el-Kabir Holiday (estimated)", + "1981-08-02": "Eid al-Fitr", + "1981-08-03": "Eid al-Fitr Holiday", + "1981-10-01": "National Day", + "1981-10-09": "Eid al-Adha", + "1981-10-10": "Eid al-Adha Holiday", "1981-12-25": "Christmas Day", "1981-12-26": "Boxing Day", "1982-01-01": "New Year's Day", - "1982-01-07": "Eid-el-Mawlid (estimated)", + "1982-01-08": "Prophet's Birthday", "1982-04-09": "Good Friday", "1982-04-12": "Easter Monday", - "1982-05-01": "Workers' Day", - "1982-07-21": "Eid-el-Fitr (estimated)", - "1982-07-22": "Eid-el-Fitr Holiday (estimated)", - "1982-09-27": "Eid-el-Kabir (estimated)", - "1982-09-28": "Eid-el-Kabir Holiday (estimated)", - "1982-10-01": "Independence Day", + "1982-07-23": "Eid al-Fitr", + "1982-07-24": "Eid al-Fitr Holiday", + "1982-09-29": "Eid al-Adha", + "1982-09-30": "Eid al-Adha Holiday", + "1982-10-01": "National Day", "1982-12-25": "Christmas Day", "1982-12-26": "Boxing Day", - "1982-12-27": "Eid-el-Mawlid (estimated)", + "1982-12-28": "Prophet's Birthday", "1983-01-01": "New Year's Day", "1983-04-01": "Good Friday", "1983-04-04": "Easter Monday", - "1983-05-01": "Workers' Day", - "1983-07-11": "Eid-el-Fitr (estimated)", - "1983-07-12": "Eid-el-Fitr Holiday (estimated)", - "1983-09-17": "Eid-el-Kabir (estimated)", - "1983-09-18": "Eid-el-Kabir Holiday (estimated)", - "1983-10-01": "Independence Day", - "1983-12-16": "Eid-el-Mawlid (estimated)", + "1983-07-12": "Eid al-Fitr", + "1983-07-13": "Eid al-Fitr Holiday", + "1983-09-18": "Eid al-Adha", + "1983-09-19": "Eid al-Adha Holiday", + "1983-10-01": "National Day", + "1983-12-17": "Prophet's Birthday", "1983-12-25": "Christmas Day", "1983-12-26": "Boxing Day", "1984-01-01": "New Year's Day", "1984-04-20": "Good Friday", "1984-04-23": "Easter Monday", - "1984-05-01": "Workers' Day", - "1984-06-30": "Eid-el-Fitr (estimated)", - "1984-07-01": "Eid-el-Fitr Holiday (estimated)", - "1984-09-05": "Eid-el-Kabir (estimated)", - "1984-09-06": "Eid-el-Kabir Holiday (estimated)", - "1984-10-01": "Independence Day", - "1984-12-04": "Eid-el-Mawlid (estimated)", + "1984-06-30": "Eid al-Fitr", + "1984-07-01": "Eid al-Fitr Holiday", + "1984-09-06": "Eid al-Adha", + "1984-09-07": "Eid al-Adha Holiday", + "1984-10-01": "National Day", + "1984-12-06": "Prophet's Birthday", "1984-12-25": "Christmas Day", "1984-12-26": "Boxing Day", "1985-01-01": "New Year's Day", "1985-04-05": "Good Friday", "1985-04-08": "Easter Monday", "1985-05-01": "Workers' Day", - "1985-06-19": "Eid-el-Fitr (estimated)", - "1985-06-20": "Eid-el-Fitr Holiday (estimated)", - "1985-08-26": "Eid-el-Kabir (estimated)", - "1985-08-27": "Eid-el-Kabir Holiday (estimated)", - "1985-10-01": "Independence Day", - "1985-11-24": "Eid-el-Mawlid (estimated)", + "1985-06-20": "Eid al-Fitr", + "1985-06-21": "Eid al-Fitr Holiday", + "1985-08-27": "Eid al-Adha", + "1985-08-28": "Eid al-Adha Holiday", + "1985-10-01": "National Day", + "1985-11-25": "Prophet's Birthday", "1985-12-25": "Christmas Day", "1985-12-26": "Boxing Day", "1986-01-01": "New Year's Day", "1986-03-28": "Good Friday", "1986-03-31": "Easter Monday", "1986-05-01": "Workers' Day", - "1986-06-08": "Eid-el-Fitr (estimated)", - "1986-06-09": "Eid-el-Fitr Holiday (estimated)", - "1986-08-15": "Eid-el-Kabir (estimated)", - "1986-08-16": "Eid-el-Kabir Holiday (estimated)", - "1986-10-01": "Independence Day", - "1986-11-14": "Eid-el-Mawlid (estimated)", + "1986-06-09": "Eid al-Fitr", + "1986-06-10": "Eid al-Fitr Holiday", + "1986-08-16": "Eid al-Adha", + "1986-08-17": "Eid al-Adha Holiday", + "1986-10-01": "National Day", + "1986-11-15": "Prophet's Birthday", "1986-12-25": "Christmas Day", "1986-12-26": "Boxing Day", "1987-01-01": "New Year's Day", "1987-04-17": "Good Friday", "1987-04-20": "Easter Monday", "1987-05-01": "Workers' Day", - "1987-05-28": "Eid-el-Fitr (estimated)", - "1987-05-29": "Eid-el-Fitr Holiday (estimated)", - "1987-08-04": "Eid-el-Kabir (estimated)", - "1987-08-05": "Eid-el-Kabir Holiday (estimated)", - "1987-10-01": "Independence Day", - "1987-11-03": "Eid-el-Mawlid (estimated)", + "1987-05-30": "Eid al-Fitr", + "1987-05-31": "Eid al-Fitr Holiday", + "1987-08-06": "Eid al-Adha", + "1987-08-07": "Eid al-Adha Holiday", + "1987-10-01": "National Day", + "1987-11-04": "Prophet's Birthday", "1987-12-25": "Christmas Day", "1987-12-26": "Boxing Day", "1988-01-01": "New Year's Day", "1988-04-01": "Good Friday", "1988-04-04": "Easter Monday", "1988-05-01": "Workers' Day", - "1988-05-16": "Eid-el-Fitr (estimated)", - "1988-05-17": "Eid-el-Fitr Holiday (estimated)", - "1988-07-23": "Eid-el-Kabir (estimated)", - "1988-07-24": "Eid-el-Kabir Holiday (estimated)", - "1988-10-01": "Independence Day", - "1988-10-22": "Eid-el-Mawlid (estimated)", + "1988-05-18": "Eid al-Fitr", + "1988-05-19": "Eid al-Fitr Holiday", + "1988-07-25": "Eid al-Adha", + "1988-07-26": "Eid al-Adha Holiday", + "1988-10-01": "National Day", + "1988-10-23": "Prophet's Birthday", "1988-12-25": "Christmas Day", "1988-12-26": "Boxing Day", "1989-01-01": "New Year's Day", "1989-03-24": "Good Friday", "1989-03-27": "Easter Monday", "1989-05-01": "Workers' Day", - "1989-05-06": "Eid-el-Fitr (estimated)", - "1989-05-07": "Eid-el-Fitr Holiday (estimated)", - "1989-07-13": "Eid-el-Kabir (estimated)", - "1989-07-14": "Eid-el-Kabir Holiday (estimated)", - "1989-10-01": "Independence Day", - "1989-10-11": "Eid-el-Mawlid (estimated)", + "1989-05-07": "Eid al-Fitr", + "1989-05-08": "Eid al-Fitr Holiday", + "1989-07-14": "Eid al-Adha", + "1989-07-15": "Eid al-Adha Holiday", + "1989-10-01": "National Day", + "1989-10-13": "Prophet's Birthday", "1989-12-25": "Christmas Day", "1989-12-26": "Boxing Day", "1990-01-01": "New Year's Day", "1990-04-13": "Good Friday", "1990-04-16": "Easter Monday", - "1990-04-26": "Eid-el-Fitr (estimated)", - "1990-04-27": "Eid-el-Fitr Holiday (estimated)", + "1990-04-27": "Eid al-Fitr", + "1990-04-28": "Eid al-Fitr Holiday", "1990-05-01": "Workers' Day", - "1990-07-02": "Eid-el-Kabir (estimated)", - "1990-07-03": "Eid-el-Kabir Holiday (estimated)", - "1990-10-01": "Eid-el-Mawlid (estimated); Independence Day", + "1990-07-04": "Eid al-Adha", + "1990-07-05": "Eid al-Adha Holiday", + "1990-10-01": "National Day", + "1990-10-02": "Prophet's Birthday", "1990-12-25": "Christmas Day", "1990-12-26": "Boxing Day", "1991-01-01": "New Year's Day", "1991-03-29": "Good Friday", "1991-04-01": "Easter Monday", - "1991-04-15": "Eid-el-Fitr (estimated)", - "1991-04-16": "Eid-el-Fitr Holiday (estimated)", + "1991-04-16": "Eid al-Fitr", + "1991-04-17": "Eid al-Fitr Holiday", "1991-05-01": "Workers' Day", - "1991-06-22": "Eid-el-Kabir (estimated)", - "1991-06-23": "Eid-el-Kabir Holiday (estimated)", - "1991-09-20": "Eid-el-Mawlid (estimated)", - "1991-10-01": "Independence Day", + "1991-06-23": "Eid al-Adha", + "1991-06-24": "Eid al-Adha Holiday", + "1991-09-21": "Prophet's Birthday", + "1991-10-01": "National Day", "1991-12-25": "Christmas Day", "1991-12-26": "Boxing Day", "1992-01-01": "New Year's Day", - "1992-04-04": "Eid-el-Fitr (estimated)", - "1992-04-05": "Eid-el-Fitr Holiday (estimated)", + "1992-04-04": "Eid al-Fitr", + "1992-04-05": "Eid al-Fitr Holiday", "1992-04-17": "Good Friday", "1992-04-20": "Easter Monday", "1992-05-01": "Workers' Day", - "1992-06-11": "Eid-el-Kabir (estimated)", - "1992-06-12": "Eid-el-Kabir Holiday (estimated)", - "1992-09-09": "Eid-el-Mawlid (estimated)", - "1992-10-01": "Independence Day", + "1992-06-11": "Eid al-Adha", + "1992-06-12": "Eid al-Adha Holiday", + "1992-09-10": "Prophet's Birthday", + "1992-10-01": "National Day", "1992-12-25": "Christmas Day", "1992-12-26": "Boxing Day", "1993-01-01": "New Year's Day", - "1993-03-24": "Eid-el-Fitr (estimated)", - "1993-03-25": "Eid-el-Fitr Holiday (estimated)", + "1993-03-25": "Eid al-Fitr", + "1993-03-26": "Eid al-Fitr Holiday", "1993-04-09": "Good Friday", "1993-04-12": "Easter Monday", "1993-05-01": "Workers' Day", - "1993-05-31": "Eid-el-Kabir (estimated)", - "1993-06-01": "Eid-el-Kabir Holiday (estimated)", - "1993-08-29": "Eid-el-Mawlid (estimated)", - "1993-10-01": "Independence Day", + "1993-06-01": "Eid al-Adha", + "1993-06-02": "Eid al-Adha Holiday", + "1993-08-30": "Prophet's Birthday", + "1993-10-01": "National Day", "1993-12-25": "Christmas Day", "1993-12-26": "Boxing Day", "1994-01-01": "New Year's Day", - "1994-03-13": "Eid-el-Fitr (estimated)", - "1994-03-14": "Eid-el-Fitr Holiday (estimated)", + "1994-03-14": "Eid al-Fitr", + "1994-03-15": "Eid al-Fitr Holiday", "1994-04-01": "Good Friday", "1994-04-04": "Easter Monday", "1994-05-01": "Workers' Day", - "1994-05-20": "Eid-el-Kabir (estimated)", - "1994-05-21": "Eid-el-Kabir Holiday (estimated)", - "1994-08-19": "Eid-el-Mawlid (estimated)", - "1994-10-01": "Independence Day", + "1994-05-21": "Eid al-Adha", + "1994-05-22": "Eid al-Adha Holiday", + "1994-08-19": "Prophet's Birthday", + "1994-10-01": "National Day", "1994-12-25": "Christmas Day", "1994-12-26": "Boxing Day", "1995-01-01": "New Year's Day", - "1995-03-02": "Eid-el-Fitr (estimated)", - "1995-03-03": "Eid-el-Fitr Holiday (estimated)", + "1995-03-03": "Eid al-Fitr", + "1995-03-04": "Eid al-Fitr Holiday", "1995-04-14": "Good Friday", "1995-04-17": "Easter Monday", "1995-05-01": "Workers' Day", - "1995-05-09": "Eid-el-Kabir (estimated)", - "1995-05-10": "Eid-el-Kabir Holiday (estimated)", - "1995-08-08": "Eid-el-Mawlid (estimated)", - "1995-10-01": "Independence Day", + "1995-05-10": "Eid al-Adha", + "1995-05-11": "Eid al-Adha Holiday", + "1995-08-09": "Prophet's Birthday", + "1995-10-01": "National Day", "1995-12-25": "Christmas Day", "1995-12-26": "Boxing Day", "1996-01-01": "New Year's Day", - "1996-02-19": "Eid-el-Fitr (estimated)", - "1996-02-20": "Eid-el-Fitr Holiday (estimated)", + "1996-02-21": "Eid al-Fitr", + "1996-02-22": "Eid al-Fitr Holiday", "1996-04-05": "Good Friday", "1996-04-08": "Easter Monday", - "1996-04-27": "Eid-el-Kabir (estimated)", - "1996-04-28": "Eid-el-Kabir Holiday (estimated)", + "1996-04-29": "Eid al-Adha", + "1996-04-30": "Eid al-Adha Holiday", "1996-05-01": "Workers' Day", - "1996-07-27": "Eid-el-Mawlid (estimated)", - "1996-10-01": "Independence Day", + "1996-07-28": "Prophet's Birthday", + "1996-10-01": "National Day", "1996-12-25": "Christmas Day", "1996-12-26": "Boxing Day", "1997-01-01": "New Year's Day", - "1997-02-08": "Eid-el-Fitr (estimated)", - "1997-02-09": "Eid-el-Fitr Holiday (estimated)", + "1997-02-09": "Eid al-Fitr", + "1997-02-10": "Eid al-Fitr Holiday", "1997-03-28": "Good Friday", "1997-03-31": "Easter Monday", - "1997-04-17": "Eid-el-Kabir (estimated)", - "1997-04-18": "Eid-el-Kabir Holiday (estimated)", + "1997-04-18": "Eid al-Adha", + "1997-04-19": "Eid al-Adha Holiday", "1997-05-01": "Workers' Day", - "1997-07-16": "Eid-el-Mawlid (estimated)", - "1997-10-01": "Independence Day", + "1997-07-18": "Prophet's Birthday", + "1997-10-01": "National Day", "1997-12-25": "Christmas Day", "1997-12-26": "Boxing Day", "1998-01-01": "New Year's Day", - "1998-01-29": "Eid-el-Fitr (estimated)", - "1998-01-30": "Eid-el-Fitr Holiday (estimated)", - "1998-04-07": "Eid-el-Kabir (estimated)", - "1998-04-08": "Eid-el-Kabir Holiday (estimated)", + "1998-01-30": "Eid al-Fitr", + "1998-01-31": "Eid al-Fitr Holiday", + "1998-04-08": "Eid al-Adha", + "1998-04-09": "Eid al-Adha Holiday", "1998-04-10": "Good Friday", "1998-04-13": "Easter Monday", "1998-05-01": "Workers' Day", - "1998-07-06": "Eid-el-Mawlid (estimated)", - "1998-10-01": "Independence Day", + "1998-07-07": "Prophet's Birthday", + "1998-10-01": "National Day", "1998-12-25": "Christmas Day", "1998-12-26": "Boxing Day", "1999-01-01": "New Year's Day", - "1999-01-18": "Eid-el-Fitr (estimated)", - "1999-01-19": "Eid-el-Fitr Holiday (estimated)", - "1999-03-27": "Eid-el-Kabir (estimated)", - "1999-03-28": "Eid-el-Kabir Holiday (estimated)", + "1999-01-19": "Eid al-Fitr", + "1999-01-20": "Eid al-Fitr Holiday", + "1999-03-28": "Eid al-Adha", + "1999-03-29": "Eid al-Adha Holiday", "1999-04-02": "Good Friday", "1999-04-05": "Easter Monday", "1999-05-01": "Workers' Day", - "1999-06-26": "Eid-el-Mawlid (estimated)", - "1999-10-01": "Independence Day", + "1999-05-29": "Presidential Inauguration Day", + "1999-06-26": "Prophet's Birthday", + "1999-10-01": "National Day", "1999-12-25": "Christmas Day", "1999-12-26": "Boxing Day", "2000-01-01": "New Year's Day", - "2000-01-08": "Eid-el-Fitr (estimated)", - "2000-01-09": "Eid-el-Fitr Holiday (estimated)", - "2000-03-16": "Eid-el-Kabir (estimated)", - "2000-03-17": "Eid-el-Kabir Holiday (estimated)", + "2000-01-08": "Eid al-Fitr", + "2000-01-09": "Eid al-Fitr Holiday", + "2000-03-16": "Eid al-Adha", + "2000-03-17": "Eid al-Adha Holiday", "2000-04-21": "Good Friday", "2000-04-24": "Easter Monday", "2000-05-01": "Workers' Day", "2000-05-29": "Democracy Day", - "2000-06-14": "Eid-el-Mawlid (estimated)", - "2000-10-01": "Independence Day", + "2000-06-15": "Prophet's Birthday", + "2000-10-01": "National Day", "2000-12-25": "Christmas Day", "2000-12-26": "Boxing Day", - "2000-12-27": "Eid-el-Fitr (estimated)", - "2000-12-28": "Eid-el-Fitr Holiday (estimated)", + "2000-12-28": "Eid al-Fitr", + "2000-12-29": "Eid al-Fitr Holiday", "2001-01-01": "New Year's Day", - "2001-03-05": "Eid-el-Kabir (estimated)", - "2001-03-06": "Eid-el-Kabir Holiday (estimated)", + "2001-03-06": "Eid al-Adha", + "2001-03-07": "Eid al-Adha Holiday", "2001-04-13": "Good Friday", "2001-04-16": "Easter Monday", "2001-05-01": "Workers' Day", "2001-05-29": "Democracy Day", - "2001-06-04": "Eid-el-Mawlid (estimated)", - "2001-10-01": "Independence Day", - "2001-12-16": "Eid-el-Fitr (estimated)", - "2001-12-17": "Eid-el-Fitr Holiday (estimated)", + "2001-06-04": "Prophet's Birthday", + "2001-10-01": "National Day", + "2001-12-17": "Eid al-Fitr", + "2001-12-18": "Eid al-Fitr Holiday", "2001-12-25": "Christmas Day", "2001-12-26": "Boxing Day", "2002-01-01": "New Year's Day", - "2002-02-22": "Eid-el-Kabir (estimated)", - "2002-02-23": "Eid-el-Kabir Holiday (estimated)", + "2002-02-23": "Eid al-Adha", + "2002-02-24": "Eid al-Adha Holiday", "2002-03-29": "Good Friday", "2002-04-01": "Easter Monday", "2002-05-01": "Workers' Day", - "2002-05-24": "Eid-el-Mawlid (estimated)", + "2002-05-24": "Prophet's Birthday", "2002-05-29": "Democracy Day", - "2002-10-01": "Independence Day", - "2002-12-05": "Eid-el-Fitr (estimated)", - "2002-12-06": "Eid-el-Fitr Holiday (estimated)", + "2002-10-01": "National Day", + "2002-12-06": "Eid al-Fitr", + "2002-12-07": "Eid al-Fitr Holiday", "2002-12-25": "Christmas Day", "2002-12-26": "Boxing Day", "2003-01-01": "New Year's Day", - "2003-02-11": "Eid-el-Kabir (estimated)", - "2003-02-12": "Eid-el-Kabir Holiday (estimated)", + "2003-02-12": "Eid al-Adha", + "2003-02-13": "Eid al-Adha Holiday", "2003-04-18": "Good Friday", "2003-04-21": "Easter Monday", "2003-05-01": "Workers' Day", - "2003-05-13": "Eid-el-Mawlid (estimated)", - "2003-05-29": "Democracy Day", - "2003-10-01": "Independence Day", - "2003-11-25": "Eid-el-Fitr (estimated)", - "2003-11-26": "Eid-el-Fitr Holiday (estimated)", + "2003-05-14": "Prophet's Birthday", + "2003-05-29": "Democracy Day; Presidential Inauguration Day", + "2003-10-01": "National Day", + "2003-11-26": "Eid al-Fitr", + "2003-11-27": "Eid al-Fitr Holiday", "2003-12-25": "Christmas Day", "2003-12-26": "Boxing Day", "2004-01-01": "New Year's Day", - "2004-02-01": "Eid-el-Kabir (estimated)", - "2004-02-02": "Eid-el-Kabir Holiday (estimated)", + "2004-02-02": "Eid al-Adha", + "2004-02-03": "Eid al-Adha Holiday", "2004-04-09": "Good Friday", "2004-04-12": "Easter Monday", - "2004-05-01": "Eid-el-Mawlid (estimated); Workers' Day", + "2004-05-01": "Workers' Day", + "2004-05-02": "Prophet's Birthday", "2004-05-29": "Democracy Day", - "2004-10-01": "Independence Day", - "2004-11-14": "Eid-el-Fitr (estimated)", - "2004-11-15": "Eid-el-Fitr Holiday (estimated)", + "2004-10-01": "National Day", + "2004-11-14": "Eid al-Fitr", + "2004-11-15": "Eid al-Fitr Holiday", "2004-12-25": "Christmas Day", "2004-12-26": "Boxing Day", "2005-01-01": "New Year's Day", - "2005-01-21": "Eid-el-Kabir (estimated)", - "2005-01-22": "Eid-el-Kabir Holiday (estimated)", + "2005-01-21": "Eid al-Adha", + "2005-01-22": "Eid al-Adha Holiday", "2005-03-25": "Good Friday", "2005-03-28": "Easter Monday", - "2005-04-21": "Eid-el-Mawlid (estimated)", + "2005-04-21": "Prophet's Birthday", "2005-05-01": "Workers' Day", "2005-05-29": "Democracy Day", - "2005-10-01": "Independence Day", - "2005-11-03": "Eid-el-Fitr (estimated)", - "2005-11-04": "Eid-el-Fitr Holiday (estimated)", + "2005-10-01": "National Day", + "2005-11-04": "Eid al-Fitr", + "2005-11-05": "Eid al-Fitr Holiday", "2005-12-25": "Christmas Day", "2005-12-26": "Boxing Day", "2006-01-01": "New Year's Day", - "2006-01-10": "Eid-el-Kabir (estimated)", - "2006-01-11": "Eid-el-Kabir Holiday (estimated)", - "2006-04-10": "Eid-el-Mawlid (estimated)", + "2006-01-10": "Eid al-Adha", + "2006-01-11": "Eid al-Adha Holiday", + "2006-04-11": "Prophet's Birthday", "2006-04-14": "Good Friday", "2006-04-17": "Easter Monday", "2006-05-01": "Workers' Day", "2006-05-29": "Democracy Day", - "2006-10-01": "Independence Day", - "2006-10-23": "Eid-el-Fitr (estimated)", - "2006-10-24": "Eid-el-Fitr Holiday (estimated)", + "2006-10-01": "National Day", + "2006-10-24": "Eid al-Fitr", + "2006-10-25": "Eid al-Fitr Holiday", "2006-12-25": "Christmas Day", "2006-12-26": "Boxing Day", - "2006-12-31": "Eid-el-Kabir (estimated)", - "2007-01-01": "Eid-el-Kabir Holiday (estimated); New Year's Day", - "2007-03-31": "Eid-el-Mawlid (estimated)", + "2006-12-31": "Eid al-Adha", + "2007-01-01": "Eid al-Adha Holiday; New Year's Day", + "2007-03-31": "Prophet's Birthday", "2007-04-06": "Good Friday", "2007-04-09": "Easter Monday", + "2007-04-12": "Public Holiday for Elections", + "2007-04-13": "Public Holiday for Elections", "2007-05-01": "Workers' Day", - "2007-05-29": "Democracy Day", - "2007-10-01": "Independence Day", - "2007-10-13": "Eid-el-Fitr (estimated)", - "2007-10-14": "Eid-el-Fitr Holiday (estimated)", - "2007-12-20": "Eid-el-Kabir (estimated)", - "2007-12-21": "Eid-el-Kabir Holiday (estimated)", + "2007-05-29": "Democracy Day; Presidential Inauguration Day", + "2007-10-01": "National Day", + "2007-10-12": "Eid al-Fitr", + "2007-10-13": "Eid al-Fitr Holiday", + "2007-12-19": "Eid al-Adha", + "2007-12-20": "Eid al-Adha Holiday", "2007-12-25": "Christmas Day", "2007-12-26": "Boxing Day", "2008-01-01": "New Year's Day", - "2008-03-20": "Eid-el-Mawlid (estimated)", + "2008-03-20": "Prophet's Birthday", "2008-03-21": "Good Friday", "2008-03-24": "Easter Monday", "2008-05-01": "Workers' Day", "2008-05-29": "Democracy Day", - "2008-10-01": "Eid-el-Fitr (estimated); Independence Day", - "2008-10-02": "Eid-el-Fitr Holiday (estimated)", - "2008-12-08": "Eid-el-Kabir (estimated)", - "2008-12-09": "Eid-el-Kabir Holiday (estimated)", + "2008-09-29": "Eid al-Fitr", + "2008-09-30": "Eid al-Fitr Holiday", + "2008-10-01": "National Day", + "2008-12-09": "Eid al-Adha", + "2008-12-10": "Eid al-Adha Holiday", "2008-12-25": "Christmas Day", "2008-12-26": "Boxing Day", "2009-01-01": "New Year's Day", - "2009-03-09": "Eid-el-Mawlid (estimated)", + "2009-03-09": "Prophet's Birthday", "2009-04-10": "Good Friday", "2009-04-13": "Easter Monday", "2009-05-01": "Workers' Day", "2009-05-29": "Democracy Day", - "2009-09-20": "Eid-el-Fitr (estimated)", - "2009-09-21": "Eid-el-Fitr Holiday (estimated)", - "2009-10-01": "Independence Day", - "2009-11-27": "Eid-el-Kabir (estimated)", - "2009-11-28": "Eid-el-Kabir Holiday (estimated)", + "2009-09-21": "Eid al-Fitr", + "2009-09-22": "Eid al-Fitr Holiday", + "2009-10-01": "National Day", + "2009-11-28": "Eid al-Adha", + "2009-11-29": "Eid al-Adha Holiday", "2009-12-25": "Christmas Day", "2009-12-26": "Boxing Day", "2010-01-01": "New Year's Day", - "2010-02-26": "Eid-el-Mawlid (estimated)", + "2010-02-26": "Prophet's Birthday", "2010-04-02": "Good Friday", "2010-04-05": "Easter Monday", "2010-05-01": "Workers' Day", + "2010-05-03": "Workers' Day (observed)", + "2010-05-06": "Day of Mourning for President Umaru Yar'Adua", "2010-05-29": "Democracy Day", - "2010-09-10": "Eid-el-Fitr (estimated)", - "2010-09-11": "Eid-el-Fitr Holiday (estimated)", - "2010-10-01": "Independence Day", - "2010-11-16": "Eid-el-Kabir (estimated)", - "2010-11-17": "Eid-el-Kabir Holiday (estimated)", + "2010-05-31": "Democracy Day (observed)", + "2010-09-09": "Eid al-Fitr", + "2010-09-10": "Eid al-Fitr Holiday", + "2010-10-01": "National Day", + "2010-11-17": "Eid al-Adha", + "2010-11-18": "Eid al-Adha Holiday", "2010-12-25": "Christmas Day", "2010-12-26": "Boxing Day", + "2010-12-27": "Christmas Day (observed)", + "2010-12-28": "Boxing Day (observed)", "2011-01-01": "New Year's Day", - "2011-02-15": "Eid-el-Mawlid (estimated)", + "2011-01-03": "New Year's Day (observed)", + "2011-02-16": "Prophet's Birthday", "2011-04-22": "Good Friday", "2011-04-25": "Easter Monday", "2011-05-01": "Workers' Day", - "2011-05-29": "Democracy Day", - "2011-08-30": "Eid-el-Fitr (estimated)", - "2011-08-31": "Eid-el-Fitr Holiday (estimated)", - "2011-10-01": "Independence Day", - "2011-11-06": "Eid-el-Kabir (estimated)", - "2011-11-07": "Eid-el-Kabir Holiday (estimated)", + "2011-05-02": "Workers' Day (observed)", + "2011-05-29": "Democracy Day; Presidential Inauguration Day", + "2011-05-30": "Democracy Day (observed); Presidential Inauguration Day (observed)", + "2011-08-30": "Eid al-Fitr", + "2011-08-31": "Eid al-Fitr Holiday", + "2011-10-01": "National Day", + "2011-10-03": "National Day (observed)", + "2011-11-07": "Eid al-Adha", + "2011-11-08": "Eid al-Adha Holiday", "2011-12-25": "Christmas Day", "2011-12-26": "Boxing Day", + "2011-12-27": "Christmas Day (observed)", "2012-01-01": "New Year's Day", - "2012-02-04": "Eid-el-Mawlid (estimated)", + "2012-01-02": "New Year's Day (observed)", + "2012-02-06": "Prophet's Birthday", "2012-04-06": "Good Friday", "2012-04-09": "Easter Monday", "2012-05-01": "Workers' Day", "2012-05-29": "Democracy Day", - "2012-08-19": "Eid-el-Fitr (estimated)", - "2012-08-20": "Eid-el-Fitr Holiday (estimated)", - "2012-10-01": "Independence Day", - "2012-10-26": "Eid-el-Kabir (estimated)", - "2012-10-27": "Eid-el-Kabir Holiday (estimated)", + "2012-08-20": "Eid al-Fitr", + "2012-08-21": "Eid al-Fitr Holiday", + "2012-10-01": "National Day", + "2012-10-26": "Eid al-Adha", + "2012-10-27": "Eid al-Adha Holiday", + "2012-10-29": "Eid al-Adha Holiday (observed)", "2012-12-25": "Christmas Day", "2012-12-26": "Boxing Day", "2013-01-01": "New Year's Day", - "2013-01-24": "Eid-el-Mawlid (estimated)", + "2013-01-24": "Prophet's Birthday", "2013-03-29": "Good Friday", "2013-04-01": "Easter Monday", "2013-05-01": "Workers' Day", "2013-05-29": "Democracy Day", - "2013-08-08": "Eid-el-Fitr (estimated)", - "2013-08-09": "Eid-el-Fitr Holiday (estimated)", - "2013-10-01": "Independence Day", - "2013-10-15": "Eid-el-Kabir (estimated)", - "2013-10-16": "Eid-el-Kabir Holiday (estimated)", + "2013-08-08": "Eid al-Fitr", + "2013-08-09": "Eid al-Fitr Holiday", + "2013-10-01": "National Day", + "2013-10-15": "Eid al-Adha", + "2013-10-16": "Eid al-Adha Holiday", "2013-12-25": "Christmas Day", "2013-12-26": "Boxing Day", "2014-01-01": "New Year's Day", - "2014-01-13": "Eid-el-Mawlid (estimated)", + "2014-01-13": "Prophet's Birthday", "2014-04-18": "Good Friday", "2014-04-21": "Easter Monday", "2014-05-01": "Workers' Day", "2014-05-29": "Democracy Day", - "2014-07-28": "Eid-el-Fitr (estimated)", - "2014-07-29": "Eid-el-Fitr Holiday (estimated)", - "2014-10-01": "Independence Day", - "2014-10-04": "Eid-el-Kabir (estimated)", - "2014-10-05": "Eid-el-Kabir Holiday (estimated)", + "2014-07-28": "Eid al-Fitr", + "2014-07-29": "Eid al-Fitr Holiday", + "2014-10-01": "National Day", + "2014-10-06": "Eid al-Adha", + "2014-10-07": "Eid al-Adha Holiday", "2014-12-25": "Christmas Day", "2014-12-26": "Boxing Day", "2015-01-01": "New Year's Day", - "2015-01-03": "Eid-el-Mawlid (estimated)", + "2015-01-02": "Prophet's Birthday", "2015-04-03": "Good Friday", "2015-04-06": "Easter Monday", "2015-05-01": "Workers' Day", - "2015-05-29": "Democracy Day", - "2015-07-17": "Eid-el-Fitr (estimated)", - "2015-07-18": "Eid-el-Fitr Holiday (estimated)", - "2015-09-23": "Eid-el-Kabir (estimated)", - "2015-09-24": "Eid-el-Kabir Holiday (estimated)", - "2015-10-01": "Independence Day", - "2015-12-23": "Eid-el-Mawlid (estimated)", + "2015-05-29": "Democracy Day; Presidential Inauguration Day", + "2015-07-17": "Eid al-Fitr", + "2015-07-18": "Eid al-Fitr Holiday", + "2015-07-20": "Eid al-Fitr Holiday (observed)", + "2015-09-24": "Eid al-Adha", + "2015-09-25": "Eid al-Adha Holiday", + "2015-10-01": "National Day", + "2015-12-24": "Prophet's Birthday", "2015-12-25": "Christmas Day", "2015-12-26": "Boxing Day", + "2015-12-28": "Boxing Day (observed)", "2016-01-01": "New Year's Day", "2016-03-25": "Good Friday", "2016-03-28": "Easter Monday", @@ -466,15 +482,13 @@ "2016-05-02": "Workers' Day (observed)", "2016-05-29": "Democracy Day", "2016-05-30": "Democracy Day (observed)", - "2016-07-06": "Eid-el-Fitr (estimated)", - "2016-07-07": "Eid-el-Fitr Holiday (estimated)", - "2016-09-11": "Eid-el-Kabir (estimated)", - "2016-09-12": "Eid-el-Kabir Holiday (estimated)", - "2016-09-13": "Eid-el-Kabir (observed, estimated)", - "2016-10-01": "Independence Day", - "2016-10-03": "Independence Day (observed)", - "2016-12-11": "Eid-el-Mawlid (estimated)", - "2016-12-12": "Eid-el-Mawlid (observed, estimated)", + "2016-07-06": "Eid al-Fitr", + "2016-07-07": "Eid al-Fitr Holiday", + "2016-09-12": "Eid al-Adha", + "2016-09-13": "Eid al-Adha Holiday", + "2016-10-01": "National Day", + "2016-10-03": "National Day (observed)", + "2016-12-12": "Prophet's Birthday", "2016-12-25": "Christmas Day", "2016-12-26": "Boxing Day", "2016-12-27": "Christmas Day (observed)", @@ -484,15 +498,15 @@ "2017-04-17": "Easter Monday", "2017-05-01": "Workers' Day", "2017-05-29": "Democracy Day", - "2017-06-25": "Eid-el-Fitr (estimated)", - "2017-06-26": "Eid-el-Fitr Holiday (estimated)", - "2017-06-27": "Eid-el-Fitr (observed, estimated)", - "2017-09-01": "Eid-el-Kabir (estimated)", - "2017-09-02": "Eid-el-Kabir Holiday (estimated)", - "2017-09-04": "Eid-el-Kabir Holiday (observed, estimated)", - "2017-10-01": "Independence Day", - "2017-10-02": "Independence Day (observed)", - "2017-11-30": "Eid-el-Mawlid (estimated)", + "2017-06-26": "Eid al-Fitr", + "2017-06-27": "Eid al-Fitr Holiday", + "2017-09-02": "Eid al-Adha", + "2017-09-03": "Eid al-Adha Holiday", + "2017-09-04": "Eid al-Adha (observed)", + "2017-09-05": "Eid al-Adha Holiday (observed)", + "2017-10-01": "National Day", + "2017-10-02": "National Day (observed)", + "2017-12-01": "Prophet's Birthday", "2017-12-25": "Christmas Day", "2017-12-26": "Boxing Day", "2018-01-01": "New Year's Day", @@ -500,13 +514,13 @@ "2018-04-02": "Easter Monday", "2018-05-01": "Workers' Day", "2018-05-29": "Democracy Day", - "2018-06-15": "Eid-el-Fitr (estimated)", - "2018-06-16": "Eid-el-Fitr Holiday (estimated)", - "2018-06-18": "Eid-el-Fitr Holiday (observed, estimated)", - "2018-08-21": "Eid-el-Kabir (estimated)", - "2018-08-22": "Eid-el-Kabir Holiday (estimated)", - "2018-10-01": "Independence Day", - "2018-11-20": "Eid-el-Mawlid (estimated)", + "2018-06-15": "Eid al-Fitr", + "2018-06-16": "Eid al-Fitr Holiday", + "2018-06-18": "Eid al-Fitr Holiday (observed)", + "2018-08-22": "Eid al-Adha", + "2018-08-23": "Eid al-Adha Holiday", + "2018-10-01": "National Day", + "2018-11-20": "Prophet's Birthday", "2018-12-25": "Christmas Day", "2018-12-26": "Boxing Day", "2019-01-01": "New Year's Day", @@ -515,30 +529,29 @@ "2019-04-22": "Easter Monday", "2019-05-01": "Workers' Day", "2019-05-29": "Presidential Inauguration Day", - "2019-06-04": "Eid-el-Fitr (estimated)", - "2019-06-05": "Eid-el-Fitr Holiday (estimated)", + "2019-06-04": "Eid al-Fitr", + "2019-06-05": "Eid al-Fitr Holiday", "2019-06-12": "Democracy Day", - "2019-08-11": "Eid-el-Kabir (estimated)", - "2019-08-12": "Eid-el-Kabir Holiday (estimated)", - "2019-08-13": "Eid-el-Kabir (observed, estimated)", - "2019-10-01": "Independence Day", - "2019-11-09": "Eid-el-Mawlid (estimated)", - "2019-11-11": "Eid-el-Mawlid (observed, estimated)", + "2019-08-12": "Eid al-Adha", + "2019-08-13": "Eid al-Adha Holiday", + "2019-10-01": "National Day", + "2019-11-09": "Prophet's Birthday", + "2019-11-11": "Prophet's Birthday (observed)", "2019-12-25": "Christmas Day", "2019-12-26": "Boxing Day", "2020-01-01": "New Year's Day", "2020-04-10": "Good Friday", "2020-04-13": "Easter Monday", "2020-05-01": "Workers' Day", - "2020-05-24": "Eid-el-Fitr (estimated)", - "2020-05-25": "Eid-el-Fitr Holiday (estimated)", - "2020-05-26": "Eid-el-Fitr (observed, estimated)", + "2020-05-24": "Eid al-Fitr", + "2020-05-25": "Eid al-Fitr Holiday", + "2020-05-26": "Eid al-Fitr (observed)", "2020-06-12": "Democracy Day", - "2020-07-31": "Eid-el-Kabir (estimated)", - "2020-08-01": "Eid-el-Kabir Holiday (estimated)", - "2020-08-03": "Eid-el-Kabir Holiday (observed, estimated)", - "2020-10-01": "Independence Day", - "2020-10-29": "Eid-el-Mawlid (estimated)", + "2020-07-31": "Eid al-Adha", + "2020-08-01": "Eid al-Adha Holiday", + "2020-08-03": "Eid al-Adha Holiday (observed)", + "2020-10-01": "National Day", + "2020-10-29": "Prophet's Birthday", "2020-12-25": "Christmas Day", "2020-12-26": "Boxing Day", "2020-12-28": "Boxing Day (observed)", @@ -547,14 +560,14 @@ "2021-04-05": "Easter Monday", "2021-05-01": "Workers' Day", "2021-05-03": "Workers' Day (observed)", - "2021-05-13": "Eid-el-Fitr (estimated)", - "2021-05-14": "Eid-el-Fitr Holiday (estimated)", + "2021-05-13": "Eid al-Fitr", + "2021-05-14": "Eid al-Fitr Holiday", "2021-06-12": "Democracy Day", "2021-06-14": "Democracy Day (observed)", - "2021-07-20": "Eid-el-Kabir (estimated)", - "2021-07-21": "Eid-el-Kabir Holiday (estimated)", - "2021-10-01": "Independence Day", - "2021-10-18": "Eid-el-Mawlid (estimated)", + "2021-07-20": "Eid al-Adha", + "2021-07-21": "Eid al-Adha Holiday", + "2021-10-01": "National Day", + "2021-10-19": "Prophet's Birthday", "2021-12-25": "Christmas Day", "2021-12-26": "Boxing Day", "2021-12-27": "Christmas Day (observed)", @@ -564,19 +577,19 @@ "2022-04-15": "Good Friday", "2022-04-18": "Easter Monday", "2022-05-01": "Workers' Day", - "2022-05-02": "Eid-el-Fitr (estimated)", - "2022-05-03": "Eid-el-Fitr Holiday (estimated)", + "2022-05-02": "Eid al-Fitr", + "2022-05-03": "Eid al-Fitr Holiday", "2022-05-04": "Workers' Day (observed)", "2022-06-12": "Democracy Day", "2022-06-13": "Democracy Day (observed)", - "2022-07-09": "Eid-el-Kabir (estimated)", - "2022-07-10": "Eid-el-Kabir Holiday (estimated)", - "2022-07-11": "Eid-el-Kabir (observed, estimated)", - "2022-07-12": "Eid-el-Kabir Holiday (observed, estimated)", - "2022-10-01": "Independence Day", - "2022-10-03": "Independence Day (observed)", - "2022-10-08": "Eid-el-Mawlid (estimated)", - "2022-10-10": "Eid-el-Mawlid (observed, estimated)", + "2022-07-09": "Eid al-Adha", + "2022-07-10": "Eid al-Adha Holiday", + "2022-07-11": "Eid al-Adha (observed)", + "2022-07-12": "Eid al-Adha Holiday (observed)", + "2022-10-01": "National Day", + "2022-10-03": "National Day (observed)", + "2022-10-08": "Prophet's Birthday", + "2022-10-10": "Prophet's Birthday (observed)", "2022-12-25": "Christmas Day", "2022-12-26": "Boxing Day", "2022-12-27": "Christmas Day (observed)", @@ -584,420 +597,427 @@ "2023-01-02": "New Year's Day (observed)", "2023-04-07": "Good Friday", "2023-04-10": "Easter Monday", - "2023-04-21": "Eid-el-Fitr (estimated)", - "2023-04-22": "Eid-el-Fitr Holiday (estimated)", - "2023-04-24": "Eid-el-Fitr Holiday (observed, estimated)", + "2023-04-21": "Eid al-Fitr", + "2023-04-22": "Eid al-Fitr Holiday", + "2023-04-24": "Eid al-Fitr Holiday (observed)", "2023-05-01": "Workers' Day", + "2023-05-29": "Presidential Inauguration Day", "2023-06-12": "Democracy Day", - "2023-06-28": "Eid-el-Kabir (estimated)", - "2023-06-29": "Eid-el-Kabir Holiday (estimated)", - "2023-09-27": "Eid-el-Mawlid (estimated)", - "2023-10-01": "Independence Day", - "2023-10-02": "Independence Day (observed)", + "2023-06-28": "Eid al-Adha", + "2023-06-29": "Eid al-Adha Holiday", + "2023-09-27": "Prophet's Birthday", + "2023-10-01": "National Day", + "2023-10-02": "National Day (observed)", "2023-12-25": "Christmas Day", "2023-12-26": "Boxing Day", "2024-01-01": "New Year's Day", "2024-03-29": "Good Friday", "2024-04-01": "Easter Monday", - "2024-04-10": "Eid-el-Fitr (estimated)", - "2024-04-11": "Eid-el-Fitr Holiday (estimated)", + "2024-04-10": "Eid al-Fitr", + "2024-04-11": "Eid al-Fitr Holiday", "2024-05-01": "Workers' Day", "2024-06-12": "Democracy Day", - "2024-06-16": "Eid-el-Kabir (estimated)", - "2024-06-17": "Eid-el-Kabir Holiday (estimated)", - "2024-06-18": "Eid-el-Kabir (observed, estimated)", - "2024-09-15": "Eid-el-Mawlid (estimated)", - "2024-09-16": "Eid-el-Mawlid (observed, estimated)", - "2024-10-01": "Independence Day", + "2024-06-16": "Eid al-Adha", + "2024-06-17": "Eid al-Adha Holiday", + "2024-06-18": "Eid al-Adha (observed)", + "2024-09-16": "Prophet's Birthday", + "2024-10-01": "National Day", "2024-12-25": "Christmas Day", "2024-12-26": "Boxing Day", "2025-01-01": "New Year's Day", - "2025-03-30": "Eid-el-Fitr (estimated)", - "2025-03-31": "Eid-el-Fitr Holiday (estimated)", - "2025-04-01": "Eid-el-Fitr (observed, estimated)", + "2025-03-30": "Eid al-Fitr", + "2025-03-31": "Eid al-Fitr Holiday", + "2025-04-01": "Eid al-Fitr (observed)", "2025-04-18": "Good Friday", "2025-04-21": "Easter Monday", "2025-05-01": "Workers' Day", - "2025-06-06": "Eid-el-Kabir (estimated)", - "2025-06-07": "Eid-el-Kabir Holiday (estimated)", - "2025-06-09": "Eid-el-Kabir Holiday (observed, estimated)", + "2025-06-06": "Eid al-Adha", + "2025-06-07": "Eid al-Adha Holiday", + "2025-06-09": "Eid al-Adha Holiday (observed)", "2025-06-12": "Democracy Day", - "2025-09-04": "Eid-el-Mawlid (estimated)", - "2025-10-01": "Independence Day", + "2025-07-15": "Day of Mourning for President Muhammadu Buhari", + "2025-09-05": "Prophet's Birthday", + "2025-10-01": "National Day", "2025-12-25": "Christmas Day", "2025-12-26": "Boxing Day", "2026-01-01": "New Year's Day", - "2026-03-20": "Eid-el-Fitr (estimated)", - "2026-03-21": "Eid-el-Fitr Holiday (estimated)", - "2026-03-23": "Eid-el-Fitr Holiday (observed, estimated)", + "2026-03-20": "Eid al-Fitr (estimated)", + "2026-03-21": "Eid al-Fitr Holiday (estimated)", + "2026-03-23": "Eid al-Fitr Holiday (observed, estimated)", "2026-04-03": "Good Friday", "2026-04-06": "Easter Monday", "2026-05-01": "Workers' Day", - "2026-05-27": "Eid-el-Kabir (estimated)", - "2026-05-28": "Eid-el-Kabir Holiday (estimated)", + "2026-05-27": "Eid al-Adha (estimated)", + "2026-05-28": "Eid al-Adha Holiday (estimated)", "2026-06-12": "Democracy Day", - "2026-08-25": "Eid-el-Mawlid (estimated)", - "2026-10-01": "Independence Day", + "2026-08-25": "Prophet's Birthday (estimated)", + "2026-10-01": "National Day", "2026-12-25": "Christmas Day", "2026-12-26": "Boxing Day", "2026-12-28": "Boxing Day (observed)", "2027-01-01": "New Year's Day", - "2027-03-09": "Eid-el-Fitr (estimated)", - "2027-03-10": "Eid-el-Fitr Holiday (estimated)", + "2027-03-09": "Eid al-Fitr (estimated)", + "2027-03-10": "Eid al-Fitr Holiday (estimated)", "2027-03-26": "Good Friday", "2027-03-29": "Easter Monday", "2027-05-01": "Workers' Day", "2027-05-03": "Workers' Day (observed)", - "2027-05-16": "Eid-el-Kabir (estimated)", - "2027-05-17": "Eid-el-Kabir Holiday (estimated)", - "2027-05-18": "Eid-el-Kabir (observed, estimated)", + "2027-05-16": "Eid al-Adha (estimated)", + "2027-05-17": "Eid al-Adha Holiday (estimated)", + "2027-05-18": "Eid al-Adha (observed, estimated)", + "2027-05-29": "Presidential Inauguration Day", "2027-06-12": "Democracy Day", "2027-06-14": "Democracy Day (observed)", - "2027-08-14": "Eid-el-Mawlid (estimated)", - "2027-08-16": "Eid-el-Mawlid (observed, estimated)", - "2027-10-01": "Independence Day", + "2027-08-14": "Prophet's Birthday (estimated)", + "2027-08-16": "Prophet's Birthday (observed, estimated)", + "2027-10-01": "National Day", "2027-12-25": "Christmas Day", "2027-12-26": "Boxing Day", "2027-12-27": "Christmas Day (observed)", "2027-12-28": "Boxing Day (observed)", "2028-01-01": "New Year's Day", "2028-01-03": "New Year's Day (observed)", - "2028-02-26": "Eid-el-Fitr (estimated)", - "2028-02-27": "Eid-el-Fitr Holiday (estimated)", - "2028-02-28": "Eid-el-Fitr (observed, estimated)", - "2028-02-29": "Eid-el-Fitr Holiday (observed, estimated)", + "2028-02-26": "Eid al-Fitr (estimated)", + "2028-02-27": "Eid al-Fitr Holiday (estimated)", + "2028-02-28": "Eid al-Fitr (observed, estimated)", + "2028-02-29": "Eid al-Fitr Holiday (observed, estimated)", "2028-04-14": "Good Friday", "2028-04-17": "Easter Monday", "2028-05-01": "Workers' Day", - "2028-05-05": "Eid-el-Kabir (estimated)", - "2028-05-06": "Eid-el-Kabir Holiday (estimated)", - "2028-05-08": "Eid-el-Kabir Holiday (observed, estimated)", + "2028-05-05": "Eid al-Adha (estimated)", + "2028-05-06": "Eid al-Adha Holiday (estimated)", + "2028-05-08": "Eid al-Adha Holiday (observed, estimated)", "2028-06-12": "Democracy Day", - "2028-08-03": "Eid-el-Mawlid (estimated)", - "2028-10-01": "Independence Day", - "2028-10-02": "Independence Day (observed)", + "2028-08-03": "Prophet's Birthday (estimated)", + "2028-10-01": "National Day", + "2028-10-02": "National Day (observed)", "2028-12-25": "Christmas Day", "2028-12-26": "Boxing Day", "2029-01-01": "New Year's Day", - "2029-02-14": "Eid-el-Fitr (estimated)", - "2029-02-15": "Eid-el-Fitr Holiday (estimated)", + "2029-02-14": "Eid al-Fitr (estimated)", + "2029-02-15": "Eid al-Fitr Holiday (estimated)", "2029-03-30": "Good Friday", "2029-04-02": "Easter Monday", - "2029-04-24": "Eid-el-Kabir (estimated)", - "2029-04-25": "Eid-el-Kabir Holiday (estimated)", + "2029-04-24": "Eid al-Adha (estimated)", + "2029-04-25": "Eid al-Adha Holiday (estimated)", "2029-05-01": "Workers' Day", "2029-06-12": "Democracy Day", - "2029-07-24": "Eid-el-Mawlid (estimated)", - "2029-10-01": "Independence Day", + "2029-07-24": "Prophet's Birthday (estimated)", + "2029-10-01": "National Day", "2029-12-25": "Christmas Day", "2029-12-26": "Boxing Day", "2030-01-01": "New Year's Day", - "2030-02-04": "Eid-el-Fitr (estimated)", - "2030-02-05": "Eid-el-Fitr Holiday (estimated)", - "2030-04-13": "Eid-el-Kabir (estimated)", - "2030-04-14": "Eid-el-Kabir Holiday (estimated)", - "2030-04-15": "Eid-el-Kabir (observed, estimated)", - "2030-04-16": "Eid-el-Kabir Holiday (observed, estimated)", + "2030-02-04": "Eid al-Fitr (estimated)", + "2030-02-05": "Eid al-Fitr Holiday (estimated)", + "2030-04-13": "Eid al-Adha (estimated)", + "2030-04-14": "Eid al-Adha Holiday (estimated)", + "2030-04-15": "Eid al-Adha (observed, estimated)", + "2030-04-16": "Eid al-Adha Holiday (observed, estimated)", "2030-04-19": "Good Friday", "2030-04-22": "Easter Monday", "2030-05-01": "Workers' Day", "2030-06-12": "Democracy Day", - "2030-07-13": "Eid-el-Mawlid (estimated)", - "2030-07-15": "Eid-el-Mawlid (observed, estimated)", - "2030-10-01": "Independence Day", + "2030-07-13": "Prophet's Birthday (estimated)", + "2030-07-15": "Prophet's Birthday (observed, estimated)", + "2030-10-01": "National Day", "2030-12-25": "Christmas Day", "2030-12-26": "Boxing Day", "2031-01-01": "New Year's Day", - "2031-01-24": "Eid-el-Fitr (estimated)", - "2031-01-25": "Eid-el-Fitr Holiday (estimated)", - "2031-01-27": "Eid-el-Fitr Holiday (observed, estimated)", - "2031-04-02": "Eid-el-Kabir (estimated)", - "2031-04-03": "Eid-el-Kabir Holiday (estimated)", + "2031-01-24": "Eid al-Fitr (estimated)", + "2031-01-25": "Eid al-Fitr Holiday (estimated)", + "2031-01-27": "Eid al-Fitr Holiday (observed, estimated)", + "2031-04-02": "Eid al-Adha (estimated)", + "2031-04-03": "Eid al-Adha Holiday (estimated)", "2031-04-11": "Good Friday", "2031-04-14": "Easter Monday", "2031-05-01": "Workers' Day", + "2031-05-29": "Presidential Inauguration Day", "2031-06-12": "Democracy Day", - "2031-07-02": "Eid-el-Mawlid (estimated)", - "2031-10-01": "Independence Day", + "2031-07-02": "Prophet's Birthday (estimated)", + "2031-10-01": "National Day", "2031-12-25": "Christmas Day", "2031-12-26": "Boxing Day", "2032-01-01": "New Year's Day", - "2032-01-14": "Eid-el-Fitr (estimated)", - "2032-01-15": "Eid-el-Fitr Holiday (estimated)", - "2032-03-22": "Eid-el-Kabir (estimated)", - "2032-03-23": "Eid-el-Kabir Holiday (estimated)", + "2032-01-14": "Eid al-Fitr (estimated)", + "2032-01-15": "Eid al-Fitr Holiday (estimated)", + "2032-03-22": "Eid al-Adha (estimated)", + "2032-03-23": "Eid al-Adha Holiday (estimated)", "2032-03-26": "Good Friday", "2032-03-29": "Easter Monday", "2032-05-01": "Workers' Day", "2032-05-03": "Workers' Day (observed)", "2032-06-12": "Democracy Day", "2032-06-14": "Democracy Day (observed)", - "2032-06-20": "Eid-el-Mawlid (estimated)", - "2032-06-21": "Eid-el-Mawlid (observed, estimated)", - "2032-10-01": "Independence Day", + "2032-06-20": "Prophet's Birthday (estimated)", + "2032-06-21": "Prophet's Birthday (observed, estimated)", + "2032-10-01": "National Day", "2032-12-25": "Christmas Day", "2032-12-26": "Boxing Day", "2032-12-27": "Christmas Day (observed)", "2032-12-28": "Boxing Day (observed)", "2033-01-01": "New Year's Day", - "2033-01-02": "Eid-el-Fitr (estimated)", - "2033-01-03": "Eid-el-Fitr Holiday (estimated)", + "2033-01-02": "Eid al-Fitr (estimated)", + "2033-01-03": "Eid al-Fitr Holiday (estimated)", "2033-01-04": "New Year's Day (observed)", - "2033-01-05": "Eid-el-Fitr (observed, estimated)", - "2033-03-11": "Eid-el-Kabir (estimated)", - "2033-03-12": "Eid-el-Kabir Holiday (estimated)", - "2033-03-14": "Eid-el-Kabir Holiday (observed, estimated)", + "2033-01-05": "Eid al-Fitr (observed, estimated)", + "2033-03-11": "Eid al-Adha (estimated)", + "2033-03-12": "Eid al-Adha Holiday (estimated)", + "2033-03-14": "Eid al-Adha Holiday (observed, estimated)", "2033-04-15": "Good Friday", "2033-04-18": "Easter Monday", "2033-05-01": "Workers' Day", "2033-05-02": "Workers' Day (observed)", - "2033-06-09": "Eid-el-Mawlid (estimated)", + "2033-06-09": "Prophet's Birthday (estimated)", "2033-06-12": "Democracy Day", "2033-06-13": "Democracy Day (observed)", - "2033-10-01": "Independence Day", - "2033-10-03": "Independence Day (observed)", - "2033-12-23": "Eid-el-Fitr (estimated)", - "2033-12-24": "Eid-el-Fitr Holiday (estimated)", + "2033-10-01": "National Day", + "2033-10-03": "National Day (observed)", + "2033-12-23": "Eid al-Fitr (estimated)", + "2033-12-24": "Eid al-Fitr Holiday (estimated)", "2033-12-25": "Christmas Day", "2033-12-26": "Boxing Day", - "2033-12-27": "Eid-el-Fitr Holiday (observed, estimated)", + "2033-12-27": "Eid al-Fitr Holiday (observed, estimated)", "2033-12-28": "Christmas Day (observed)", "2034-01-01": "New Year's Day", "2034-01-02": "New Year's Day (observed)", - "2034-03-01": "Eid-el-Kabir (estimated)", - "2034-03-02": "Eid-el-Kabir Holiday (estimated)", + "2034-03-01": "Eid al-Adha (estimated)", + "2034-03-02": "Eid al-Adha Holiday (estimated)", "2034-04-07": "Good Friday", "2034-04-10": "Easter Monday", "2034-05-01": "Workers' Day", - "2034-05-30": "Eid-el-Mawlid (estimated)", + "2034-05-30": "Prophet's Birthday (estimated)", "2034-06-12": "Democracy Day", - "2034-10-01": "Independence Day", - "2034-10-02": "Independence Day (observed)", - "2034-12-12": "Eid-el-Fitr (estimated)", - "2034-12-13": "Eid-el-Fitr Holiday (estimated)", + "2034-10-01": "National Day", + "2034-10-02": "National Day (observed)", + "2034-12-12": "Eid al-Fitr (estimated)", + "2034-12-13": "Eid al-Fitr Holiday (estimated)", "2034-12-25": "Christmas Day", "2034-12-26": "Boxing Day", "2035-01-01": "New Year's Day", - "2035-02-18": "Eid-el-Kabir (estimated)", - "2035-02-19": "Eid-el-Kabir Holiday (estimated)", - "2035-02-20": "Eid-el-Kabir (observed, estimated)", + "2035-02-18": "Eid al-Adha (estimated)", + "2035-02-19": "Eid al-Adha Holiday (estimated)", + "2035-02-20": "Eid al-Adha (observed, estimated)", "2035-03-23": "Good Friday", "2035-03-26": "Easter Monday", "2035-05-01": "Workers' Day", - "2035-05-20": "Eid-el-Mawlid (estimated)", - "2035-05-21": "Eid-el-Mawlid (observed, estimated)", + "2035-05-20": "Prophet's Birthday (estimated)", + "2035-05-21": "Prophet's Birthday (observed, estimated)", + "2035-05-29": "Presidential Inauguration Day", "2035-06-12": "Democracy Day", - "2035-10-01": "Independence Day", - "2035-12-01": "Eid-el-Fitr (estimated)", - "2035-12-02": "Eid-el-Fitr Holiday (estimated)", - "2035-12-03": "Eid-el-Fitr (observed, estimated)", - "2035-12-04": "Eid-el-Fitr Holiday (observed, estimated)", + "2035-10-01": "National Day", + "2035-12-01": "Eid al-Fitr (estimated)", + "2035-12-02": "Eid al-Fitr Holiday (estimated)", + "2035-12-03": "Eid al-Fitr (observed, estimated)", + "2035-12-04": "Eid al-Fitr Holiday (observed, estimated)", "2035-12-25": "Christmas Day", "2035-12-26": "Boxing Day", "2036-01-01": "New Year's Day", - "2036-02-07": "Eid-el-Kabir (estimated)", - "2036-02-08": "Eid-el-Kabir Holiday (estimated)", + "2036-02-07": "Eid al-Adha (estimated)", + "2036-02-08": "Eid al-Adha Holiday (estimated)", "2036-04-11": "Good Friday", "2036-04-14": "Easter Monday", "2036-05-01": "Workers' Day", - "2036-05-08": "Eid-el-Mawlid (estimated)", + "2036-05-08": "Prophet's Birthday (estimated)", "2036-06-12": "Democracy Day", - "2036-10-01": "Independence Day", - "2036-11-19": "Eid-el-Fitr (estimated)", - "2036-11-20": "Eid-el-Fitr Holiday (estimated)", + "2036-10-01": "National Day", + "2036-11-19": "Eid al-Fitr (estimated)", + "2036-11-20": "Eid al-Fitr Holiday (estimated)", "2036-12-25": "Christmas Day", "2036-12-26": "Boxing Day", "2037-01-01": "New Year's Day", - "2037-01-26": "Eid-el-Kabir (estimated)", - "2037-01-27": "Eid-el-Kabir Holiday (estimated)", + "2037-01-26": "Eid al-Adha (estimated)", + "2037-01-27": "Eid al-Adha Holiday (estimated)", "2037-04-03": "Good Friday", "2037-04-06": "Easter Monday", - "2037-04-28": "Eid-el-Mawlid (estimated)", + "2037-04-28": "Prophet's Birthday (estimated)", "2037-05-01": "Workers' Day", "2037-06-12": "Democracy Day", - "2037-10-01": "Independence Day", - "2037-11-08": "Eid-el-Fitr (estimated)", - "2037-11-09": "Eid-el-Fitr Holiday (estimated)", - "2037-11-10": "Eid-el-Fitr (observed, estimated)", + "2037-10-01": "National Day", + "2037-11-08": "Eid al-Fitr (estimated)", + "2037-11-09": "Eid al-Fitr Holiday (estimated)", + "2037-11-10": "Eid al-Fitr (observed, estimated)", "2037-12-25": "Christmas Day", "2037-12-26": "Boxing Day", "2037-12-28": "Boxing Day (observed)", "2038-01-01": "New Year's Day", - "2038-01-16": "Eid-el-Kabir (estimated)", - "2038-01-17": "Eid-el-Kabir Holiday (estimated)", - "2038-01-18": "Eid-el-Kabir (observed, estimated)", - "2038-01-19": "Eid-el-Kabir Holiday (observed, estimated)", - "2038-04-17": "Eid-el-Mawlid (estimated)", - "2038-04-19": "Eid-el-Mawlid (observed, estimated)", + "2038-01-16": "Eid al-Adha (estimated)", + "2038-01-17": "Eid al-Adha Holiday (estimated)", + "2038-01-18": "Eid al-Adha (observed, estimated)", + "2038-01-19": "Eid al-Adha Holiday (observed, estimated)", + "2038-04-17": "Prophet's Birthday (estimated)", + "2038-04-19": "Prophet's Birthday (observed, estimated)", "2038-04-23": "Good Friday", "2038-04-26": "Easter Monday", "2038-05-01": "Workers' Day", "2038-05-03": "Workers' Day (observed)", "2038-06-12": "Democracy Day", "2038-06-14": "Democracy Day (observed)", - "2038-10-01": "Independence Day", - "2038-10-29": "Eid-el-Fitr (estimated)", - "2038-10-30": "Eid-el-Fitr Holiday (estimated)", - "2038-11-01": "Eid-el-Fitr Holiday (observed, estimated)", + "2038-10-01": "National Day", + "2038-10-29": "Eid al-Fitr (estimated)", + "2038-10-30": "Eid al-Fitr Holiday (estimated)", + "2038-11-01": "Eid al-Fitr Holiday (observed, estimated)", "2038-12-25": "Christmas Day", "2038-12-26": "Boxing Day", "2038-12-27": "Christmas Day (observed)", "2038-12-28": "Boxing Day (observed)", "2039-01-01": "New Year's Day", "2039-01-03": "New Year's Day (observed)", - "2039-01-05": "Eid-el-Kabir (estimated)", - "2039-01-06": "Eid-el-Kabir Holiday (estimated)", - "2039-04-06": "Eid-el-Mawlid (estimated)", + "2039-01-05": "Eid al-Adha (estimated)", + "2039-01-06": "Eid al-Adha Holiday (estimated)", + "2039-04-06": "Prophet's Birthday (estimated)", "2039-04-08": "Good Friday", "2039-04-11": "Easter Monday", "2039-05-01": "Workers' Day", "2039-05-02": "Workers' Day (observed)", + "2039-05-29": "Presidential Inauguration Day", "2039-06-12": "Democracy Day", "2039-06-13": "Democracy Day (observed)", - "2039-10-01": "Independence Day", - "2039-10-03": "Independence Day (observed)", - "2039-10-19": "Eid-el-Fitr (estimated)", - "2039-10-20": "Eid-el-Fitr Holiday (estimated)", + "2039-10-01": "National Day", + "2039-10-03": "National Day (observed)", + "2039-10-19": "Eid al-Fitr (estimated)", + "2039-10-20": "Eid al-Fitr Holiday (estimated)", "2039-12-25": "Christmas Day", - "2039-12-26": "Boxing Day; Eid-el-Kabir (estimated)", - "2039-12-27": "Eid-el-Kabir Holiday (estimated)", + "2039-12-26": "Boxing Day; Eid al-Adha (estimated)", + "2039-12-27": "Eid al-Adha Holiday (estimated)", "2039-12-28": "Christmas Day (observed)", "2040-01-01": "New Year's Day", "2040-01-02": "New Year's Day (observed)", - "2040-03-25": "Eid-el-Mawlid (estimated)", - "2040-03-26": "Eid-el-Mawlid (observed, estimated)", + "2040-03-25": "Prophet's Birthday (estimated)", + "2040-03-26": "Prophet's Birthday (observed, estimated)", "2040-03-30": "Good Friday", "2040-04-02": "Easter Monday", "2040-05-01": "Workers' Day", "2040-06-12": "Democracy Day", - "2040-10-01": "Independence Day", - "2040-10-07": "Eid-el-Fitr (estimated)", - "2040-10-08": "Eid-el-Fitr Holiday (estimated)", - "2040-10-09": "Eid-el-Fitr (observed, estimated)", - "2040-12-14": "Eid-el-Kabir (estimated)", - "2040-12-15": "Eid-el-Kabir Holiday (estimated)", - "2040-12-17": "Eid-el-Kabir Holiday (observed, estimated)", + "2040-10-01": "National Day", + "2040-10-07": "Eid al-Fitr (estimated)", + "2040-10-08": "Eid al-Fitr Holiday (estimated)", + "2040-10-09": "Eid al-Fitr (observed, estimated)", + "2040-12-14": "Eid al-Adha (estimated)", + "2040-12-15": "Eid al-Adha Holiday (estimated)", + "2040-12-17": "Eid al-Adha Holiday (observed, estimated)", "2040-12-25": "Christmas Day", "2040-12-26": "Boxing Day", "2041-01-01": "New Year's Day", - "2041-03-15": "Eid-el-Mawlid (estimated)", + "2041-03-15": "Prophet's Birthday (estimated)", "2041-04-19": "Good Friday", "2041-04-22": "Easter Monday", "2041-05-01": "Workers' Day", "2041-06-12": "Democracy Day", - "2041-09-26": "Eid-el-Fitr (estimated)", - "2041-09-27": "Eid-el-Fitr Holiday (estimated)", - "2041-10-01": "Independence Day", - "2041-12-04": "Eid-el-Kabir (estimated)", - "2041-12-05": "Eid-el-Kabir Holiday (estimated)", + "2041-09-26": "Eid al-Fitr (estimated)", + "2041-09-27": "Eid al-Fitr Holiday (estimated)", + "2041-10-01": "National Day", + "2041-12-04": "Eid al-Adha (estimated)", + "2041-12-05": "Eid al-Adha Holiday (estimated)", "2041-12-25": "Christmas Day", "2041-12-26": "Boxing Day", "2042-01-01": "New Year's Day", - "2042-03-04": "Eid-el-Mawlid (estimated)", + "2042-03-04": "Prophet's Birthday (estimated)", "2042-04-04": "Good Friday", "2042-04-07": "Easter Monday", "2042-05-01": "Workers' Day", "2042-06-12": "Democracy Day", - "2042-09-15": "Eid-el-Fitr (estimated)", - "2042-09-16": "Eid-el-Fitr Holiday (estimated)", - "2042-10-01": "Independence Day", - "2042-11-23": "Eid-el-Kabir (estimated)", - "2042-11-24": "Eid-el-Kabir Holiday (estimated)", - "2042-11-25": "Eid-el-Kabir (observed, estimated)", + "2042-09-15": "Eid al-Fitr (estimated)", + "2042-09-16": "Eid al-Fitr Holiday (estimated)", + "2042-10-01": "National Day", + "2042-11-23": "Eid al-Adha (estimated)", + "2042-11-24": "Eid al-Adha Holiday (estimated)", + "2042-11-25": "Eid al-Adha (observed, estimated)", "2042-12-25": "Christmas Day", "2042-12-26": "Boxing Day", "2043-01-01": "New Year's Day", - "2043-02-22": "Eid-el-Mawlid (estimated)", - "2043-02-23": "Eid-el-Mawlid (observed, estimated)", + "2043-02-22": "Prophet's Birthday (estimated)", + "2043-02-23": "Prophet's Birthday (observed, estimated)", "2043-03-27": "Good Friday", "2043-03-30": "Easter Monday", "2043-05-01": "Workers' Day", + "2043-05-29": "Presidential Inauguration Day", "2043-06-12": "Democracy Day", - "2043-09-04": "Eid-el-Fitr (estimated)", - "2043-09-05": "Eid-el-Fitr Holiday (estimated)", - "2043-09-07": "Eid-el-Fitr Holiday (observed, estimated)", - "2043-10-01": "Independence Day", - "2043-11-12": "Eid-el-Kabir (estimated)", - "2043-11-13": "Eid-el-Kabir Holiday (estimated)", + "2043-09-04": "Eid al-Fitr (estimated)", + "2043-09-05": "Eid al-Fitr Holiday (estimated)", + "2043-09-07": "Eid al-Fitr Holiday (observed, estimated)", + "2043-10-01": "National Day", + "2043-11-12": "Eid al-Adha (estimated)", + "2043-11-13": "Eid al-Adha Holiday (estimated)", "2043-12-25": "Christmas Day", "2043-12-26": "Boxing Day", "2043-12-28": "Boxing Day (observed)", "2044-01-01": "New Year's Day", - "2044-02-11": "Eid-el-Mawlid (estimated)", + "2044-02-11": "Prophet's Birthday (estimated)", "2044-04-15": "Good Friday", "2044-04-18": "Easter Monday", "2044-05-01": "Workers' Day", "2044-05-02": "Workers' Day (observed)", "2044-06-12": "Democracy Day", "2044-06-13": "Democracy Day (observed)", - "2044-08-24": "Eid-el-Fitr (estimated)", - "2044-08-25": "Eid-el-Fitr Holiday (estimated)", - "2044-10-01": "Independence Day", - "2044-10-03": "Independence Day (observed)", - "2044-10-31": "Eid-el-Kabir (estimated)", - "2044-11-01": "Eid-el-Kabir Holiday (estimated)", + "2044-08-24": "Eid al-Fitr (estimated)", + "2044-08-25": "Eid al-Fitr Holiday (estimated)", + "2044-10-01": "National Day", + "2044-10-03": "National Day (observed)", + "2044-10-31": "Eid al-Adha (estimated)", + "2044-11-01": "Eid al-Adha Holiday (estimated)", "2044-12-25": "Christmas Day", "2044-12-26": "Boxing Day", "2044-12-27": "Christmas Day (observed)", "2045-01-01": "New Year's Day", "2045-01-02": "New Year's Day (observed)", - "2045-01-30": "Eid-el-Mawlid (estimated)", + "2045-01-30": "Prophet's Birthday (estimated)", "2045-04-07": "Good Friday", "2045-04-10": "Easter Monday", "2045-05-01": "Workers' Day", "2045-06-12": "Democracy Day", - "2045-08-14": "Eid-el-Fitr (estimated)", - "2045-08-15": "Eid-el-Fitr Holiday (estimated)", - "2045-10-01": "Independence Day", - "2045-10-02": "Independence Day (observed)", - "2045-10-21": "Eid-el-Kabir (estimated)", - "2045-10-22": "Eid-el-Kabir Holiday (estimated)", - "2045-10-23": "Eid-el-Kabir (observed, estimated)", - "2045-10-24": "Eid-el-Kabir Holiday (observed, estimated)", + "2045-08-14": "Eid al-Fitr (estimated)", + "2045-08-15": "Eid al-Fitr Holiday (estimated)", + "2045-10-01": "National Day", + "2045-10-02": "National Day (observed)", + "2045-10-21": "Eid al-Adha (estimated)", + "2045-10-22": "Eid al-Adha Holiday (estimated)", + "2045-10-23": "Eid al-Adha (observed, estimated)", + "2045-10-24": "Eid al-Adha Holiday (observed, estimated)", "2045-12-25": "Christmas Day", "2045-12-26": "Boxing Day", "2046-01-01": "New Year's Day", - "2046-01-19": "Eid-el-Mawlid (estimated)", + "2046-01-19": "Prophet's Birthday (estimated)", "2046-03-23": "Good Friday", "2046-03-26": "Easter Monday", "2046-05-01": "Workers' Day", "2046-06-12": "Democracy Day", - "2046-08-03": "Eid-el-Fitr (estimated)", - "2046-08-04": "Eid-el-Fitr Holiday (estimated)", - "2046-08-06": "Eid-el-Fitr Holiday (observed, estimated)", - "2046-10-01": "Independence Day", - "2046-10-10": "Eid-el-Kabir (estimated)", - "2046-10-11": "Eid-el-Kabir Holiday (estimated)", + "2046-08-03": "Eid al-Fitr (estimated)", + "2046-08-04": "Eid al-Fitr Holiday (estimated)", + "2046-08-06": "Eid al-Fitr Holiday (observed, estimated)", + "2046-10-01": "National Day", + "2046-10-10": "Eid al-Adha (estimated)", + "2046-10-11": "Eid al-Adha Holiday (estimated)", "2046-12-25": "Christmas Day", "2046-12-26": "Boxing Day", "2047-01-01": "New Year's Day", - "2047-01-08": "Eid-el-Mawlid (estimated)", + "2047-01-08": "Prophet's Birthday (estimated)", "2047-04-12": "Good Friday", "2047-04-15": "Easter Monday", "2047-05-01": "Workers' Day", + "2047-05-29": "Presidential Inauguration Day", "2047-06-12": "Democracy Day", - "2047-07-24": "Eid-el-Fitr (estimated)", - "2047-07-25": "Eid-el-Fitr Holiday (estimated)", - "2047-09-30": "Eid-el-Kabir (estimated)", - "2047-10-01": "Eid-el-Kabir Holiday (estimated); Independence Day", + "2047-07-24": "Eid al-Fitr (estimated)", + "2047-07-25": "Eid al-Fitr Holiday (estimated)", + "2047-09-30": "Eid al-Adha (estimated)", + "2047-10-01": "Eid al-Adha Holiday (estimated); National Day", "2047-12-25": "Christmas Day", "2047-12-26": "Boxing Day", - "2047-12-29": "Eid-el-Mawlid (estimated)", - "2047-12-30": "Eid-el-Mawlid (observed, estimated)", + "2047-12-29": "Prophet's Birthday (estimated)", + "2047-12-30": "Prophet's Birthday (observed, estimated)", "2048-01-01": "New Year's Day", "2048-04-03": "Good Friday", "2048-04-06": "Easter Monday", "2048-05-01": "Workers' Day", "2048-06-12": "Democracy Day", - "2048-07-12": "Eid-el-Fitr (estimated)", - "2048-07-13": "Eid-el-Fitr Holiday (estimated)", - "2048-07-14": "Eid-el-Fitr (observed, estimated)", - "2048-09-19": "Eid-el-Kabir (estimated)", - "2048-09-20": "Eid-el-Kabir Holiday (estimated)", - "2048-09-21": "Eid-el-Kabir (observed, estimated)", - "2048-09-22": "Eid-el-Kabir Holiday (observed, estimated)", - "2048-10-01": "Independence Day", - "2048-12-18": "Eid-el-Mawlid (estimated)", + "2048-07-12": "Eid al-Fitr (estimated)", + "2048-07-13": "Eid al-Fitr Holiday (estimated)", + "2048-07-14": "Eid al-Fitr (observed, estimated)", + "2048-09-19": "Eid al-Adha (estimated)", + "2048-09-20": "Eid al-Adha Holiday (estimated)", + "2048-09-21": "Eid al-Adha (observed, estimated)", + "2048-09-22": "Eid al-Adha Holiday (observed, estimated)", + "2048-10-01": "National Day", + "2048-12-18": "Prophet's Birthday (estimated)", "2048-12-25": "Christmas Day", "2048-12-26": "Boxing Day", "2048-12-28": "Boxing Day (observed)", @@ -1008,12 +1028,12 @@ "2049-05-03": "Workers' Day (observed)", "2049-06-12": "Democracy Day", "2049-06-14": "Democracy Day (observed)", - "2049-07-01": "Eid-el-Fitr (estimated)", - "2049-07-02": "Eid-el-Fitr Holiday (estimated)", - "2049-09-08": "Eid-el-Kabir (estimated)", - "2049-09-09": "Eid-el-Kabir Holiday (estimated)", - "2049-10-01": "Independence Day", - "2049-12-07": "Eid-el-Mawlid (estimated)", + "2049-07-01": "Eid al-Fitr (estimated)", + "2049-07-02": "Eid al-Fitr Holiday (estimated)", + "2049-09-08": "Eid al-Adha (estimated)", + "2049-09-09": "Eid al-Adha Holiday (estimated)", + "2049-10-01": "National Day", + "2049-12-07": "Prophet's Birthday (estimated)", "2049-12-25": "Christmas Day", "2049-12-26": "Boxing Day", "2049-12-27": "Christmas Day (observed)", @@ -1026,15 +1046,15 @@ "2050-05-02": "Workers' Day (observed)", "2050-06-12": "Democracy Day", "2050-06-13": "Democracy Day (observed)", - "2050-06-20": "Eid-el-Fitr (estimated)", - "2050-06-21": "Eid-el-Fitr Holiday (estimated)", - "2050-08-28": "Eid-el-Kabir (estimated)", - "2050-08-29": "Eid-el-Kabir Holiday (estimated)", - "2050-08-30": "Eid-el-Kabir (observed, estimated)", - "2050-10-01": "Independence Day", - "2050-10-03": "Independence Day (observed)", - "2050-11-26": "Eid-el-Mawlid (estimated)", - "2050-11-28": "Eid-el-Mawlid (observed, estimated)", + "2050-06-20": "Eid al-Fitr (estimated)", + "2050-06-21": "Eid al-Fitr Holiday (estimated)", + "2050-08-28": "Eid al-Adha (estimated)", + "2050-08-29": "Eid al-Adha Holiday (estimated)", + "2050-08-30": "Eid al-Adha (observed, estimated)", + "2050-10-01": "National Day", + "2050-10-03": "National Day (observed)", + "2050-11-26": "Prophet's Birthday (estimated)", + "2050-11-28": "Prophet's Birthday (observed, estimated)", "2050-12-25": "Christmas Day", "2050-12-26": "Boxing Day", "2050-12-27": "Christmas Day (observed)" diff --git a/tests/countries/test_nigeria.py b/tests/countries/test_nigeria.py index d10f9c51bb..7326e9ad38 100644 --- a/tests/countries/test_nigeria.py +++ b/tests/countries/test_nigeria.py @@ -19,7 +19,9 @@ class TestNigeria(CommonCountryTests, TestCase): @classmethod def setUpClass(cls): - super().setUpClass(Nigeria, years=range(1979, 2050)) + cls.full_range = range(1979, 2050) + super().setUpClass(Nigeria, years=cls.full_range, years_non_observed=cls.full_range) + cls.no_estimated_holidays = Nigeria(years=cls.full_range, islamic_show_estimated=False) def test_country_aliases(self): self.assertAliases(Nigeria, NG, NGA) @@ -29,142 +31,230 @@ def test_no_holidays(self): def test_special_holidays(self): self.assertHoliday( + "2007-04-12", + "2007-04-13", + "2010-05-06", "2019-02-22", - "2019-05-29", + "2025-07-15", ) - def test_new_year_day(self): - self.assertHoliday(f"{year}-01-01" for year in range(1979, 2050)) - - def test_workers_day(self): - self.assertHoliday(f"{year}-05-01" for year in range(1981, 2050)) - self.assertNoHoliday(f"{year}-05-01" for year in range(1979, 1981)) - self.assertNoHolidayName("Workers' Day", range(1979, 1981)) - - def test_democracy_day(self): - self.assertHoliday(f"{year}-05-29" for year in range(2000, 2019)) - self.assertHoliday(f"{year}-06-12" for year in range(2019, 2050)) - # in 2019 May 29 is special holiday, so check from 2020 - self.assertNoHoliday(f"{year}-05-29" for year in range(2020, 2050)) - self.assertNoHoliday(f"{year}-06-12" for year in range(2000, 2019)) - self.assertNoHolidayName("Democracy Day", range(1979, 2000)) - - def test_independence_day(self): - self.assertHoliday(f"{year}-10-01" for year in range(1979, 2050)) - - def test_christmas_day(self): - self.assertHoliday(f"{year}-12-25" for year in range(1979, 2050)) - - def test_boxing_day(self): - self.assertHoliday(f"{year}-12-26" for year in range(1979, 2050)) + def test_new_years_day(self): + name = "New Year's Day" + self.assertHolidayName(name, (f"{year}-01-01" for year in self.full_range)) + obs_dt = ( + "2017-01-02", + "2022-01-03", + "2023-01-02", + ) + self.assertHolidayName(f"{name} (observed)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) - def test_easter_based(self): - self.assertHoliday( - # Good Friday - "2018-03-30", - "2019-04-19", + def test_good_friday(self): + name = "Good Friday" + self.assertHolidayName( + name, "2020-04-10", "2021-04-02", "2022-04-15", "2023-04-07", - # Easter Monday - "2018-04-02", - "2019-04-22", + "2024-03-29", + "2025-04-18", + ) + self.assertHolidayName(name, self.full_range) + + def test_easter_monday(self): + name = "Easter Monday" + self.assertHolidayName( + name, "2020-04-13", "2021-04-05", "2022-04-18", "2023-04-10", + "2024-04-01", + "2025-04-21", ) + self.assertHolidayName(name, self.full_range) - def test_hijri_based(self): - self.assertHolidayName( - "Eid-el-Fitr (estimated)", - "2018-06-15", - "2019-06-04", - "2020-05-24", - "2021-05-13", - "2022-05-02", - "2023-04-21", - ) - self.assertHolidayName( - "Eid-el-Fitr Holiday (estimated)", - "2018-06-16", - "2019-06-05", - "2020-05-25", - "2021-05-14", - "2022-05-03", - "2023-04-22", + def test_workers_day(self): + name = "Workers' Day" + self.assertHolidayName(name, (f"{year}-05-01" for year in range(1985, 2050))) + self.assertNoHolidayName(name, range(1979, 1985)) + obs_dt = ( + "2016-05-02", + "2021-05-03", + "2022-05-04", ) + self.assertHolidayName(f"{name} (observed)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_democracy_day(self): + name = "Democracy Day" self.assertHolidayName( - "Eid-el-Kabir (estimated)", - "2006-01-10", - "2006-12-31", - "2018-08-21", - "2019-08-11", - "2020-07-31", - "2021-07-20", - "2022-07-09", - "2023-06-28", + name, + (f"{year}-05-29" for year in range(2000, 2019)), + (f"{year}-06-12" for year in range(2019, 2050)), ) - self.assertHolidayName( - "Eid-el-Kabir Holiday (estimated)", - "2006-01-11", - "2007-01-01", - "2018-08-22", - "2019-08-12", - "2020-08-01", - "2021-07-21", - "2022-07-10", - "2023-06-29", + self.assertNoHolidayName(name, range(1979, 2000)) + obs_dt = ( + "2016-05-30", + "2021-06-14", + "2022-06-13", ) + self.assertHolidayName(f"{name} (observed)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_presidential_inauguration_day(self): + name = "Presidential Inauguration Day" self.assertHolidayName( - "Eid-el-Mawlid (estimated)", - "2018-11-20", - "2019-11-09", - "2020-10-29", - "2021-10-18", - "2022-10-08", - "2023-09-27", + name, + "1999-05-29", + "2003-05-29", + "2007-05-29", + "2011-05-29", + "2015-05-29", + "2019-05-29", + "2023-05-29", ) + self.assertNoHolidayName(name, range(1979, 1999)) - def test_observed(self): - dt = ( - # New Year's Day - "2017-01-02", - "2022-01-03", - "2023-01-02", - # Workers' Day - "2016-05-02", - "2021-05-03", - "2022-05-04", - # Democracy Day - "2016-05-30", - "2021-06-14", - "2022-06-13", - # Independence Day - "2016-10-03", + def test_national_day(self): + name = "National Day" + self.assertHolidayName(name, (f"{year}-10-01" for year in self.full_range)) + obs_dt = ( "2017-10-02", "2022-10-03", "2023-10-02", - # Christmas Day + ) + self.assertHolidayName(f"{name} (observed)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_christmas_day(self): + name = "Christmas Day" + self.assertHolidayName(name, (f"{year}-12-25" for year in self.full_range)) + obs_dt = ( "2016-12-27", "2021-12-27", "2022-12-27", - # Boxing Day + ) + self.assertHolidayName(f"{name} (observed)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_boxing_day(self): + name = "Boxing Day" + self.assertHolidayName(name, (f"{year}-12-26" for year in self.full_range)) + obs_dt = ( "2020-12-28", "2021-12-28", - # Id el Fitr - "2018-06-18", + ) + self.assertHolidayName(f"{name} (observed)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_prophets_birthday(self): + name = "Id el Maulud" + self.assertHolidayName( + name, + "2020-10-29", + "2021-10-19", + "2022-10-08", + "2023-09-27", + "2024-09-16", + "2025-09-05", + ) + self.assertHolidayName(name, self.no_estimated_holidays, self.full_range) + obs_dt = ( + "2019-11-11", + "2022-10-10", + ) + self.assertHolidayName(f"{name} (observed)", obs_dt) + self.assertNoNonObservedHoliday(obs_dt) + + def test_eid_al_fitr(self): + name = "Id el Fitr" + name_holiday = f"{name} Holiday" + self.assertHolidayName( + name, + "2020-05-24", + "2021-05-13", + "2022-05-02", + "2023-04-21", + "2024-04-10", + "2025-03-30", + ) + self.assertHolidayName(name, self.no_estimated_holidays, self.full_range) + self.assertHolidayName(name_holiday, self.no_estimated_holidays, self.full_range) + obs_dt = ( "2020-05-26", + "2025-04-01", + ) + obs_holiday_dt = ( + "2018-06-18", "2023-04-24", - # Id el Kabir - "2019-08-13", - "2020-08-03", + ) + self.assertHolidayName(f"{name} (observed)", obs_dt) + self.assertHolidayName(f"{name_holiday} (observed)", obs_holiday_dt) + self.assertNoNonObservedHoliday(obs_dt, obs_holiday_dt) + + def test_eid_al_adha(self): + name = "Id el Kabir" + name_holiday = f"{name} Holiday" + self.assertHolidayName( + name, + "2020-07-31", + "2021-07-20", + "2022-07-09", + "2023-06-28", + "2024-06-16", + "2025-06-06", + ) + self.assertHolidayName(name, self.no_estimated_holidays, self.full_range) + self.assertHolidayName(name_holiday, self.no_estimated_holidays, self.full_range) + obs_dt = ( + "2017-09-04", "2022-07-11", + "2024-06-18", + ) + obs_holiday_dt = ( + "2020-08-03", "2022-07-12", - # Id el Maulud - "2019-11-11", - "2022-10-10", + "2025-06-09", + ) + self.assertHolidayName(f"{name} (observed)", obs_dt) + self.assertHolidayName(f"{name_holiday} (observed)", obs_holiday_dt) + self.assertNoNonObservedHoliday(obs_dt, obs_holiday_dt) + + def test_l10n_default(self): + self.assertLocalizedHolidays( + ("2024-01-01", "New Year's Day"), + ("2024-03-29", "Good Friday"), + ("2024-04-01", "Easter Monday"), + ("2024-04-10", "Id el Fitr"), + ("2024-04-11", "Id el Fitr Holiday"), + ("2024-05-01", "Workers' Day"), + ("2024-06-12", "Democracy Day"), + ("2024-06-16", "Id el Kabir"), + ("2024-06-17", "Id el Kabir Holiday"), + ("2024-06-18", "Id el Kabir (observed)"), + ("2024-09-16", "Id el Maulud"), + ("2024-10-01", "National Day"), + ("2024-12-25", "Christmas Day"), + ("2024-12-26", "Boxing Day"), + ) + + def test_l10n_en_us(self): + self.assertLocalizedHolidays( + "en_US", + ("2024-01-01", "New Year's Day"), + ("2024-03-29", "Good Friday"), + ("2024-04-01", "Easter Monday"), + ("2024-04-10", "Eid al-Fitr"), + ("2024-04-11", "Eid al-Fitr Holiday"), + ("2024-05-01", "Workers' Day"), + ("2024-06-12", "Democracy Day"), + ("2024-06-16", "Eid al-Adha"), + ("2024-06-17", "Eid al-Adha Holiday"), + ("2024-06-18", "Eid al-Adha (observed)"), + ("2024-09-16", "Prophet's Birthday"), + ("2024-10-01", "National Day"), + ("2024-12-25", "Christmas Day"), + ("2024-12-26", "Boxing Day"), ) - self.assertHoliday(dt) - self.assertNoNonObservedHoliday(dt) From b9a110b1f8b425c196fae81984734a7ebb9029b9 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Mon, 1 Sep 2025 11:10:54 -0700 Subject: [PATCH 48/48] Finalize v0.80 --- CHANGES.md | 36 ++++++++++++++++++++++++++++++++++++ SECURITY.md | 4 ++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index ac235bb4fc..5c1bde9875 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,39 @@ +# Version 0.80 + +Released September 1, 2025 + +- Refactor Australia holidays (#2828 by @KJhellico) +- Refactor Macau holidays: holiday categories standardization (#2868 by @PPsyrius) +- Add Comoros holidays (#2827 by @Prateekshit73, @arkid15r, @prateekshit-v) +- Add Eritrea holidays (#2783 by @Prateekshit73, @prateekshit-v) +- Add National Stock Exchange of India (NSE) holidays (#2834 by @saheelsapovadia, @arkid15r) +- Add Rwanda holidays (#2792 by @Prateekshit73, @prateekshit-v) +- Add Somalia holidays (#2848 by @Prateekshit73, @arkid15r, @prateekshit-v) +- Add South Sudan holidays (#2831 by @Prateekshit73, @arkid15r, @prateekshit-v) +- Add Tajikistan holidays (#2852 by @Wasif-Shahzad) +- Add Uganda holidays (#2833 by @Prateekshit73, @arkid15r, @prateekshit-v) +- Add `estimated_label` to all countries with Islamic holidays (#2860 by @KJhellico, @arkid15r) +- Fix Hindu Lunisolar calendar (#2871 by @KJhellico) +- Fix Islamic holidays tests (#2849 by @KJhellico) +- Fix `TestAllInSameYear` methods (#2877 by @KJhellico) +- Update Bosnia and Herzegovina holidays (#2869 by @KJhellico) +- Update Burundi holidays, add l10n support (#2843 by @PPsyrius) +- Update Canada holidays: add National Day for Truth and Reconciliation in MB (#2829 by @KJhellico) +- Update Georgia holidays: add August 29, 2025 special holiday (#2863 by @KJhellico) +- Update Guinea-Bissau holidays (#2859 by @KJhellico, @arkid15r) +- Update Nigeria holidays, add l10n support (#2874 by @PPsyrius) +- Update Singapore holidays: remove duplicate holidays label assignment (#2844 by @PPsyrius) +- Update Tanzania holidays: extend holidays support to 1965 (#2821 by @PPsyrius) +- Update `common::CommonTests`: expand label tests to financial entities (#2876 by @arkid15r) +- Add .zenodo.json (#2870 by @arkid15r) +- Add `common::TestCase::assertHolidayNameCount` method (#2873 by @KJhellico) +- Add metadata package version mismatch hint (#2846 by @arkid15r) +- Add missing docstring for `__init__` method (#2850 by @KJhellico) +- Expose entity additional codes (#2879 by @arkid15r) +- Test Case Name Standardization (#2853 by @PPsyrius) +- Unify imports (#2845 by @KJhellico) +- Use aux repository data for downloads badge (#2832 by @arkid15r) + # Version 0.79 Released August 18, 2025 diff --git a/SECURITY.md b/SECURITY.md index cc6d994da1..7593dd04a4 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,8 +4,8 @@ | Version | Supported | |---------| ------------------ | -| 0.79 | :white_check_mark: | -| < 0.79 | :x: | +| 0.80 | :white_check_mark: | +| < 0.80 | :x: | ## Reporting a Vulnerability