From f010d0cfdaadedee27f9a4680b14a4bf6862ef56 Mon Sep 17 00:00:00 2001 From: ~Jhellico Date: Sat, 11 Jan 2025 06:02:20 +0200 Subject: [PATCH 1/2] Update Afghanistan holidays (#2221) --- holidays/countries/afghanistan.py | 108 ++++++-- holidays/groups/persian.py | 11 + holidays/locale/en_US/LC_MESSAGES/AF.po | 20 +- holidays/locale/fa_AF/LC_MESSAGES/AF.po | 20 +- holidays/locale/ps_AF/LC_MESSAGES/AF.po | 20 +- snapshots/countries/AF_COMMON.json | 328 +++++++++++------------- tests/countries/test_afghanistan.py | 303 +++++++++++++++++----- 7 files changed, 508 insertions(+), 302 deletions(-) diff --git a/holidays/countries/afghanistan.py b/holidays/countries/afghanistan.py index d1b9ee5d5..a8e662bfd 100644 --- a/holidays/countries/afghanistan.py +++ b/holidays/countries/afghanistan.py @@ -12,11 +12,13 @@ from gettext import gettext as tr -from holidays.groups import InternationalHolidays, IslamicHolidays +from holidays.calendars import _CustomIslamicHolidays +from holidays.calendars.gregorian import JAN, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC +from holidays.groups import InternationalHolidays, IslamicHolidays, PersianCalendarHolidays from holidays.holiday_base import HolidayBase -class Afghanistan(HolidayBase, InternationalHolidays, IslamicHolidays): +class Afghanistan(HolidayBase, InternationalHolidays, IslamicHolidays, PersianCalendarHolidays): """ https://en.wikipedia.org/wiki/Public_holidays_in_Afghanistan https://www.timeanddate.com/holidays/afghanistan/ @@ -26,17 +28,14 @@ class Afghanistan(HolidayBase, InternationalHolidays, IslamicHolidays): default_language = "fa_AF" # %s (estimated). estimated_label = tr("%s (برآورد شده)") - # %s (observed). - observed_label = tr("%s (مشاهده شده)") - # %s (observed, estimated). - observed_estimated_label = tr("%s (مشاهده شده، برآورد شده)") supported_languages = ("en_US", "fa_AF", "ps_AF") # Afghanistan's regaining of full independence from British influence. start_year = 1919 def __init__(self, *args, **kwargs): InternationalHolidays.__init__(self) - IslamicHolidays.__init__(self) + IslamicHolidays.__init__(self, AfghanistanIslamicHolidays) + PersianCalendarHolidays.__init__(self) super().__init__(*args, **kwargs) def _populate_public_holidays(self): @@ -49,7 +48,7 @@ def _populate_public_holidays(self): if self._year <= 1996 or 2001 <= self._year <= 2020: # Nowruz. - self._add_holiday_mar_21(tr("نوروز")) + self._add_nowruz_day(tr("نوروز")) if self._year >= 1992: # Mojahedin's Victory Day. @@ -64,13 +63,26 @@ def _populate_public_holidays(self): self._add_holiday_may_9(tr("روز پیروزی شوروی")) if self._year >= 2022: + # Islamic Emirate Victory Day. + self._add_islamic_emirat_victory_day(tr("روز پیروزی امارت اسلامی")) + # American Withdrawal Day. self._add_holiday_aug_31(tr("روز خروج آمریکایی ها")) - if self._year >= 2012: + if 2012 <= self._year <= 2020: # Martyrs' Day. self._add_holiday_sep_9(tr("روز شهیدان")) + if self._year <= 2021: + # Ashura. + self._add_ashura_day(tr("عاشورا")) + + # Prophet's Birthday. + self._add_mawlid_day(tr("میلاد پیامبر")) + + # First Day of Ramadan. + self._add_ramadan_beginning_day(tr("اول رمضان")) + # Eid al-Fitr. name = tr("عید فطر") self._add_eid_al_fitr_day(name) @@ -86,15 +98,6 @@ def _populate_public_holidays(self): self._add_eid_al_adha_day_two(name) self._add_eid_al_adha_day_three(name) - # Ashura. - self._add_ashura_day(tr("عاشورا")) - - # First Day of Ramadan. - self._add_ramadan_beginning_day(tr("اول رمضان")) - - # Prophet's Birthday. - self._add_mawlid_day(tr("میلاد پیامبر")) - class AF(Afghanistan): pass @@ -102,3 +105,72 @@ class AF(Afghanistan): class AFG(Afghanistan): pass + + +class AfghanistanIslamicHolidays(_CustomIslamicHolidays): + ASHURA_DATES = { + 2014: (NOV, 3), + 2015: (OCT, 24), + 2016: (OCT, 12), + 2017: (OCT, 1), + 2018: (SEP, 21), + 2019: (SEP, 10), + 2020: (AUG, 30), + 2021: (AUG, 19), + } + + EID_AL_ADHA_DATES = { + 2014: (OCT, 5), + 2015: (SEP, 23), + 2016: (SEP, 13), + 2017: (SEP, 2), + 2018: (AUG, 22), + 2019: (AUG, 11), + 2020: (JUL, 31), + 2021: (JUL, 20), + 2022: (JUL, 9), + 2023: (JUN, 28), + 2024: (JUN, 17), + } + + EID_AL_FITR_DATES = { + 2014: (JUL, 29), + 2015: (JUL, 18), + 2016: (JUL, 7), + 2017: (JUN, 26), + 2018: (JUN, 15), + 2019: (JUN, 4), + 2020: (MAY, 24), + 2021: (MAY, 13), + 2022: (MAY, 1), + 2023: (APR, 22), + 2024: (APR, 10), + } + + MAWLID_DATES = { + 2014: (JAN, 14), + 2015: ((JAN, 3), (DEC, 24)), + 2016: (DEC, 12), + 2017: (DEC, 1), + 2018: (NOV, 21), + 2019: (NOV, 10), + 2020: (OCT, 29), + 2021: (OCT, 19), + 2022: (OCT, 8), + 2023: (SEP, 27), + 2024: (SEP, 16), + } + + RAMADAN_BEGINNING_DATES = { + 2014: (JUN, 29), + 2015: (JUN, 18), + 2016: (JUN, 7), + 2017: (MAY, 27), + 2018: (MAY, 16), + 2019: (MAY, 6), + 2020: (APR, 24), + 2021: (APR, 13), + 2022: (APR, 2), + 2023: (MAR, 23), + 2024: (MAR, 11), + } diff --git a/holidays/groups/persian.py b/holidays/groups/persian.py index dccc07c1a..c4a2cba25 100644 --- a/holidays/groups/persian.py +++ b/holidays/groups/persian.py @@ -36,6 +36,17 @@ def _add_death_of_khomeini_day(self, name: str) -> Optional[date]: name, self._persian_calendar.persian_to_gregorian(self._year, 3, 14) ) + def _add_islamic_emirat_victory_day(self, name: str) -> Optional[date]: + """ + Add Islamic Emirate Victory Day (24th day of the 5th month). + + Anniversary of the Taliban forces arrival in Kabul. + https://en.wikipedia.org/wiki/Fall_of_Kabul_(2021) + """ + return self._add_persian_calendar_holiday( + name, self._persian_calendar.persian_to_gregorian(self._year, 5, 24) + ) + def _add_islamic_republic_day(self, name: str) -> Optional[date]: """ Add Islamic Republic Day (12th day of the 1st month). diff --git a/holidays/locale/en_US/LC_MESSAGES/AF.po b/holidays/locale/en_US/LC_MESSAGES/AF.po index 71d0c01cb..b51f4ea0e 100644 --- a/holidays/locale/en_US/LC_MESSAGES/AF.po +++ b/holidays/locale/en_US/LC_MESSAGES/AF.po @@ -14,10 +14,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.64\n" +"Project-Id-Version: Holidays 0.65\n" "POT-Creation-Date: 2024-12-24 13:40+0530\n" -"PO-Revision-Date: 2024-12-31 15:52+0700\n" -"Last-Translator: Prateekshit Jaiswal \n" +"PO-Revision-Date: 2025-01-10 18:59+0200\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: en_US\n" "MIME-Version: 1.0\n" @@ -63,16 +63,6 @@ msgstr "First Day of Ramadan" msgid "%s (برآورد شده)" msgstr "%s (estimated)" -#. %s (observed). -#, c-format -msgid "%s (مشاهده شده)" -msgstr "%s (observed)" - -#. %s (observed, estimated). -#, c-format -msgid "%s (مشاهده شده، برآورد شده)" -msgstr "%s (observed, estimated)" - #. Soviet Victory Day. msgid "روز پیروزی شوروی" msgstr "Soviet Victory Day" @@ -93,6 +83,10 @@ msgstr "Eid al-Fitr" msgid "عید قربانی" msgstr "Eid al-Adha" +#. Islamic Emirate Victory Day. +msgid "روز پیروزی امارت اسلامی" +msgstr "Islamic Emirate Victory Day" + #. American Withdrawal Day. msgid "روز خروج آمریکایی ها" msgstr "American Withdrawal Day" diff --git a/holidays/locale/fa_AF/LC_MESSAGES/AF.po b/holidays/locale/fa_AF/LC_MESSAGES/AF.po index 05ac627da..8cfe28866 100644 --- a/holidays/locale/fa_AF/LC_MESSAGES/AF.po +++ b/holidays/locale/fa_AF/LC_MESSAGES/AF.po @@ -14,10 +14,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.64\n" +"Project-Id-Version: Holidays 0.65\n" "POT-Creation-Date: 2024-12-24 13:40+0530\n" -"PO-Revision-Date: 2024-12-31 15:53+0700\n" -"Last-Translator: Prateekshit Jaiswal \n" +"PO-Revision-Date: 2025-01-10 18:59+0200\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: fa\n" "MIME-Version: 1.0\n" @@ -63,16 +63,6 @@ msgstr "" msgid "%s (برآورد شده)" msgstr "" -#. %s (observed). -#, c-format -msgid "%s (مشاهده شده)" -msgstr "" - -#. %s (observed, estimated). -#, c-format -msgid "%s (مشاهده شده، برآورد شده)" -msgstr "" - #. Soviet Victory Day. msgid "روز پیروزی شوروی" msgstr "" @@ -93,6 +83,10 @@ msgstr "" msgid "عید قربانی" msgstr "" +#. Islamic Emirate Victory Day. +msgid "روز پیروزی امارت اسلامی" +msgstr "" + #. American Withdrawal Day. msgid "روز خروج آمریکایی ها" msgstr "" diff --git a/holidays/locale/ps_AF/LC_MESSAGES/AF.po b/holidays/locale/ps_AF/LC_MESSAGES/AF.po index 66327dfe2..cd4413603 100644 --- a/holidays/locale/ps_AF/LC_MESSAGES/AF.po +++ b/holidays/locale/ps_AF/LC_MESSAGES/AF.po @@ -14,10 +14,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.64\n" +"Project-Id-Version: Holidays 0.65\n" "POT-Creation-Date: 2024-12-25 20:00+0530\n" -"PO-Revision-Date: 2024-12-31 15:53+0700\n" -"Last-Translator: Prateekshit Jaiswal \n" +"PO-Revision-Date: 2025-01-10 18:59+0200\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Holidays Localization Team\n" "Language: ps_AF\n" "MIME-Version: 1.0\n" @@ -63,16 +63,6 @@ msgstr "د روژې لومړۍ نیټه" msgid "%s (برآورد شده)" msgstr "%s (اټکل)" -#. %s (observed). -#, c-format -msgid "%s (مشاهده شده)" -msgstr "%s (په دې وروستیو کې د افغانستان د کرکټ ملی)" - -#. %s (observed, estimated). -#, c-format -msgid "%s (مشاهده شده، برآورد شده)" -msgstr "%s (مشاهده شده، تخمین زده شده است)" - #. Soviet Victory Day. msgid "روز پیروزی شوروی" msgstr "د شوروی د بریالیتوب ورځ" @@ -93,6 +83,10 @@ msgstr "عید فطر" msgid "عید قربانی" msgstr "عید قربانی" +#. Islamic Emirate Victory Day. +msgid "روز پیروزی امارت اسلامی" +msgstr "د اسلامي امارت د بریا ورځ" + #. American Withdrawal Day. msgid "روز خروج آمریکایی ها" msgstr "د امریکا د وتلو ورځ" diff --git a/snapshots/countries/AF_COMMON.json b/snapshots/countries/AF_COMMON.json index b36f61273..4b6536832 100644 --- a/snapshots/countries/AF_COMMON.json +++ b/snapshots/countries/AF_COMMON.json @@ -12,7 +12,7 @@ "1950-09-25": "Eid al-Adha (estimated)", "1950-10-22": "Ashura (estimated)", "1950-12-22": "Prophet's Birthday (estimated)", - "1951-03-21": "Nowruz", + "1951-03-22": "Nowruz", "1951-06-06": "First Day of Ramadan (estimated)", "1951-07-06": "Eid al-Fitr (estimated)", "1951-07-07": "Eid al-Fitr (estimated)", @@ -59,7 +59,7 @@ "1954-08-19": "Afghanistan Independence Day", "1954-09-08": "Ashura (estimated)", "1954-11-08": "Prophet's Birthday (estimated)", - "1955-03-21": "Nowruz", + "1955-03-22": "Nowruz", "1955-04-24": "First Day of Ramadan (estimated)", "1955-05-23": "Eid al-Fitr (estimated)", "1955-05-24": "Eid al-Fitr (estimated)", @@ -107,7 +107,7 @@ "1958-08-19": "Afghanistan Independence Day", "1958-09-26": "Prophet's Birthday (estimated)", "1959-03-11": "First Day of Ramadan (estimated)", - "1959-03-21": "Nowruz", + "1959-03-22": "Nowruz", "1959-04-10": "Eid al-Fitr (estimated)", "1959-04-11": "Eid al-Fitr (estimated)", "1959-04-12": "Eid al-Fitr (estimated)", @@ -606,7 +606,7 @@ "1996-02-19": "Eid al-Fitr (estimated)", "1996-02-20": "Eid al-Fitr (estimated)", "1996-02-21": "Eid al-Fitr (estimated)", - "1996-03-21": "Nowruz", + "1996-03-20": "Nowruz", "1996-04-26": "Day of Arafah (estimated)", "1996-04-27": "Eid al-Adha (estimated)", "1996-04-28": "Eid al-Adha (estimated); Mojahedin's Victory Day", @@ -721,7 +721,7 @@ "2004-02-03": "Eid al-Adha (estimated)", "2004-02-15": "Liberation Day", "2004-03-01": "Ashura (estimated)", - "2004-03-21": "Nowruz", + "2004-03-20": "Nowruz", "2004-04-28": "Mojahedin's Victory Day", "2004-05-01": "International Workers' Day; Prophet's Birthday (estimated)", "2004-08-19": "Afghanistan Independence Day", @@ -780,8 +780,7 @@ "2007-12-22": "Eid al-Adha (estimated)", "2008-01-19": "Ashura (estimated)", "2008-02-15": "Liberation Day", - "2008-03-20": "Prophet's Birthday (estimated)", - "2008-03-21": "Nowruz", + "2008-03-20": "Nowruz; Prophet's Birthday (estimated)", "2008-04-28": "Mojahedin's Victory Day", "2008-05-01": "International Workers' Day", "2008-08-19": "Afghanistan Independence Day", @@ -840,7 +839,7 @@ "2011-12-05": "Ashura (estimated)", "2012-02-04": "Prophet's Birthday (estimated)", "2012-02-15": "Liberation Day", - "2012-03-21": "Nowruz", + "2012-03-20": "Nowruz", "2012-04-28": "Mojahedin's Victory Day", "2012-05-01": "International Workers' Day", "2012-07-20": "First Day of Ramadan (estimated)", @@ -869,178 +868,174 @@ "2013-10-16": "Eid al-Adha (estimated)", "2013-10-17": "Eid al-Adha (estimated)", "2013-11-13": "Ashura (estimated)", - "2014-01-13": "Prophet's Birthday (estimated)", + "2014-01-14": "Prophet's Birthday", "2014-02-15": "Liberation Day", "2014-03-21": "Nowruz", "2014-04-28": "Mojahedin's Victory Day", "2014-05-01": "International Workers' Day", - "2014-06-28": "First Day of Ramadan (estimated)", - "2014-07-28": "Eid al-Fitr (estimated)", - "2014-07-29": "Eid al-Fitr (estimated)", - "2014-07-30": "Eid al-Fitr (estimated)", + "2014-06-29": "First Day of Ramadan", + "2014-07-29": "Eid al-Fitr", + "2014-07-30": "Eid al-Fitr", + "2014-07-31": "Eid al-Fitr", "2014-08-19": "Afghanistan Independence Day", "2014-09-09": "Martyrs' Day", - "2014-10-03": "Day of Arafah (estimated)", - "2014-10-04": "Eid al-Adha (estimated)", - "2014-10-05": "Eid al-Adha (estimated)", - "2014-10-06": "Eid al-Adha (estimated)", - "2014-11-03": "Ashura (estimated)", - "2015-01-03": "Prophet's Birthday (estimated)", + "2014-10-04": "Day of Arafah", + "2014-10-05": "Eid al-Adha", + "2014-10-06": "Eid al-Adha", + "2014-10-07": "Eid al-Adha", + "2014-11-03": "Ashura", + "2015-01-03": "Prophet's Birthday", "2015-02-15": "Liberation Day", "2015-03-21": "Nowruz", "2015-04-28": "Mojahedin's Victory Day", "2015-05-01": "International Workers' Day", - "2015-06-18": "First Day of Ramadan (estimated)", - "2015-07-17": "Eid al-Fitr (estimated)", - "2015-07-18": "Eid al-Fitr (estimated)", - "2015-07-19": "Eid al-Fitr (estimated)", + "2015-06-18": "First Day of Ramadan", + "2015-07-18": "Eid al-Fitr", + "2015-07-19": "Eid al-Fitr", + "2015-07-20": "Eid al-Fitr", "2015-08-19": "Afghanistan Independence Day", "2015-09-09": "Martyrs' Day", - "2015-09-22": "Day of Arafah (estimated)", - "2015-09-23": "Eid al-Adha (estimated)", - "2015-09-24": "Eid al-Adha (estimated)", - "2015-09-25": "Eid al-Adha (estimated)", - "2015-10-23": "Ashura (estimated)", - "2015-12-23": "Prophet's Birthday (estimated)", + "2015-09-22": "Day of Arafah", + "2015-09-23": "Eid al-Adha", + "2015-09-24": "Eid al-Adha", + "2015-09-25": "Eid al-Adha", + "2015-10-24": "Ashura", + "2015-12-24": "Prophet's Birthday", "2016-02-15": "Liberation Day", - "2016-03-21": "Nowruz", + "2016-03-20": "Nowruz", "2016-04-28": "Mojahedin's Victory Day", "2016-05-01": "International Workers' Day", - "2016-06-06": "First Day of Ramadan (estimated)", - "2016-07-06": "Eid al-Fitr (estimated)", - "2016-07-07": "Eid al-Fitr (estimated)", - "2016-07-08": "Eid al-Fitr (estimated)", + "2016-06-07": "First Day of Ramadan", + "2016-07-07": "Eid al-Fitr", + "2016-07-08": "Eid al-Fitr", + "2016-07-09": "Eid al-Fitr", "2016-08-19": "Afghanistan Independence Day", "2016-09-09": "Martyrs' Day", - "2016-09-10": "Day of Arafah (estimated)", - "2016-09-11": "Eid al-Adha (estimated)", - "2016-09-12": "Eid al-Adha (estimated)", - "2016-09-13": "Eid al-Adha (estimated)", - "2016-10-11": "Ashura (estimated)", - "2016-12-11": "Prophet's Birthday (estimated)", + "2016-09-12": "Day of Arafah", + "2016-09-13": "Eid al-Adha", + "2016-09-14": "Eid al-Adha", + "2016-09-15": "Eid al-Adha", + "2016-10-12": "Ashura", + "2016-12-12": "Prophet's Birthday", "2017-02-15": "Liberation Day", "2017-03-21": "Nowruz", "2017-04-28": "Mojahedin's Victory Day", "2017-05-01": "International Workers' Day", - "2017-05-27": "First Day of Ramadan (estimated)", - "2017-06-25": "Eid al-Fitr (estimated)", - "2017-06-26": "Eid al-Fitr (estimated)", - "2017-06-27": "Eid al-Fitr (estimated)", + "2017-05-27": "First Day of Ramadan", + "2017-06-26": "Eid al-Fitr", + "2017-06-27": "Eid al-Fitr", + "2017-06-28": "Eid al-Fitr", "2017-08-19": "Afghanistan Independence Day", - "2017-08-31": "Day of Arafah (estimated)", - "2017-09-01": "Eid al-Adha (estimated)", - "2017-09-02": "Eid al-Adha (estimated)", - "2017-09-03": "Eid al-Adha (estimated)", + "2017-09-01": "Day of Arafah", + "2017-09-02": "Eid al-Adha", + "2017-09-03": "Eid al-Adha", + "2017-09-04": "Eid al-Adha", "2017-09-09": "Martyrs' Day", - "2017-09-30": "Ashura (estimated)", - "2017-11-30": "Prophet's Birthday (estimated)", + "2017-10-01": "Ashura", + "2017-12-01": "Prophet's Birthday", "2018-02-15": "Liberation Day", "2018-03-21": "Nowruz", "2018-04-28": "Mojahedin's Victory Day", "2018-05-01": "International Workers' Day", - "2018-05-16": "First Day of Ramadan (estimated)", - "2018-06-15": "Eid al-Fitr (estimated)", - "2018-06-16": "Eid al-Fitr (estimated)", - "2018-06-17": "Eid al-Fitr (estimated)", + "2018-05-16": "First Day of Ramadan", + "2018-06-15": "Eid al-Fitr", + "2018-06-16": "Eid al-Fitr", + "2018-06-17": "Eid al-Fitr", "2018-08-19": "Afghanistan Independence Day", - "2018-08-20": "Day of Arafah (estimated)", - "2018-08-21": "Eid al-Adha (estimated)", - "2018-08-22": "Eid al-Adha (estimated)", - "2018-08-23": "Eid al-Adha (estimated)", + "2018-08-21": "Day of Arafah", + "2018-08-22": "Eid al-Adha", + "2018-08-23": "Eid al-Adha", + "2018-08-24": "Eid al-Adha", "2018-09-09": "Martyrs' Day", - "2018-09-20": "Ashura (estimated)", - "2018-11-20": "Prophet's Birthday (estimated)", + "2018-09-21": "Ashura", + "2018-11-21": "Prophet's Birthday", "2019-02-15": "Liberation Day", "2019-03-21": "Nowruz", "2019-04-28": "Mojahedin's Victory Day", "2019-05-01": "International Workers' Day", - "2019-05-06": "First Day of Ramadan (estimated)", - "2019-06-04": "Eid al-Fitr (estimated)", - "2019-06-05": "Eid al-Fitr (estimated)", - "2019-06-06": "Eid al-Fitr (estimated)", - "2019-08-10": "Day of Arafah (estimated)", - "2019-08-11": "Eid al-Adha (estimated)", - "2019-08-12": "Eid al-Adha (estimated)", - "2019-08-13": "Eid al-Adha (estimated)", + "2019-05-06": "First Day of Ramadan", + "2019-06-04": "Eid al-Fitr", + "2019-06-05": "Eid al-Fitr", + "2019-06-06": "Eid al-Fitr", + "2019-08-10": "Day of Arafah", + "2019-08-11": "Eid al-Adha", + "2019-08-12": "Eid al-Adha", + "2019-08-13": "Eid al-Adha", "2019-08-19": "Afghanistan Independence Day", - "2019-09-09": "Ashura (estimated); Martyrs' Day", - "2019-11-09": "Prophet's Birthday (estimated)", + "2019-09-09": "Martyrs' Day", + "2019-09-10": "Ashura", + "2019-11-10": "Prophet's Birthday", "2020-02-15": "Liberation Day", - "2020-03-21": "Nowruz", - "2020-04-24": "First Day of Ramadan (estimated)", + "2020-03-20": "Nowruz", + "2020-04-24": "First Day of Ramadan", "2020-04-28": "Mojahedin's Victory Day", "2020-05-01": "International Workers' Day", - "2020-05-24": "Eid al-Fitr (estimated)", - "2020-05-25": "Eid al-Fitr (estimated)", - "2020-05-26": "Eid al-Fitr (estimated)", - "2020-07-30": "Day of Arafah (estimated)", - "2020-07-31": "Eid al-Adha (estimated)", - "2020-08-01": "Eid al-Adha (estimated)", - "2020-08-02": "Eid al-Adha (estimated)", + "2020-05-24": "Eid al-Fitr", + "2020-05-25": "Eid al-Fitr", + "2020-05-26": "Eid al-Fitr", + "2020-07-30": "Day of Arafah", + "2020-07-31": "Eid al-Adha", + "2020-08-01": "Eid al-Adha", + "2020-08-02": "Eid al-Adha", "2020-08-19": "Afghanistan Independence Day", - "2020-08-29": "Ashura (estimated)", + "2020-08-30": "Ashura", "2020-09-09": "Martyrs' Day", - "2020-10-29": "Prophet's Birthday (estimated)", + "2020-10-29": "Prophet's Birthday", "2021-02-15": "Liberation Day", - "2021-04-13": "First Day of Ramadan (estimated)", + "2021-04-13": "First Day of Ramadan", "2021-04-28": "Mojahedin's Victory Day", "2021-05-01": "International Workers' Day", - "2021-05-13": "Eid al-Fitr (estimated)", - "2021-05-14": "Eid al-Fitr (estimated)", - "2021-05-15": "Eid al-Fitr (estimated)", - "2021-07-19": "Day of Arafah (estimated)", - "2021-07-20": "Eid al-Adha (estimated)", - "2021-07-21": "Eid al-Adha (estimated)", - "2021-07-22": "Eid al-Adha (estimated)", - "2021-08-18": "Ashura (estimated)", - "2021-08-19": "Afghanistan Independence Day", - "2021-09-09": "Martyrs' Day", - "2021-10-18": "Prophet's Birthday (estimated)", + "2021-05-13": "Eid al-Fitr", + "2021-05-14": "Eid al-Fitr", + "2021-05-15": "Eid al-Fitr", + "2021-07-19": "Day of Arafah", + "2021-07-20": "Eid al-Adha", + "2021-07-21": "Eid al-Adha", + "2021-07-22": "Eid al-Adha", + "2021-08-19": "Afghanistan Independence Day; Ashura", + "2021-10-19": "Prophet's Birthday", "2022-02-15": "Liberation Day", - "2022-04-02": "First Day of Ramadan (estimated)", + "2022-04-02": "First Day of Ramadan", "2022-04-28": "Mojahedin's Victory Day", - "2022-05-02": "Eid al-Fitr (estimated)", - "2022-05-03": "Eid al-Fitr (estimated)", - "2022-05-04": "Eid al-Fitr (estimated)", - "2022-07-08": "Day of Arafah (estimated)", - "2022-07-09": "Eid al-Adha (estimated)", - "2022-07-10": "Eid al-Adha (estimated)", - "2022-07-11": "Eid al-Adha (estimated)", - "2022-08-08": "Ashura (estimated)", + "2022-05-01": "Eid al-Fitr", + "2022-05-02": "Eid al-Fitr", + "2022-05-03": "Eid al-Fitr", + "2022-07-08": "Day of Arafah", + "2022-07-09": "Eid al-Adha", + "2022-07-10": "Eid al-Adha", + "2022-07-11": "Eid al-Adha", + "2022-08-15": "Islamic Emirate Victory Day", "2022-08-19": "Afghanistan Independence Day", "2022-08-31": "American Withdrawal Day", - "2022-09-09": "Martyrs' Day", - "2022-10-08": "Prophet's Birthday (estimated)", + "2022-10-08": "Prophet's Birthday", "2023-02-15": "Liberation Day", - "2023-03-23": "First Day of Ramadan (estimated)", - "2023-04-21": "Eid al-Fitr (estimated)", - "2023-04-22": "Eid al-Fitr (estimated)", - "2023-04-23": "Eid al-Fitr (estimated)", + "2023-03-23": "First Day of Ramadan", + "2023-04-22": "Eid al-Fitr", + "2023-04-23": "Eid al-Fitr", + "2023-04-24": "Eid al-Fitr", "2023-04-28": "Mojahedin's Victory Day", - "2023-06-27": "Day of Arafah (estimated)", - "2023-06-28": "Eid al-Adha (estimated)", - "2023-06-29": "Eid al-Adha (estimated)", - "2023-06-30": "Eid al-Adha (estimated)", - "2023-07-28": "Ashura (estimated)", + "2023-06-27": "Day of Arafah", + "2023-06-28": "Eid al-Adha", + "2023-06-29": "Eid al-Adha", + "2023-06-30": "Eid al-Adha", + "2023-08-15": "Islamic Emirate Victory Day", "2023-08-19": "Afghanistan Independence Day", "2023-08-31": "American Withdrawal Day", - "2023-09-09": "Martyrs' Day", - "2023-09-27": "Prophet's Birthday (estimated)", + "2023-09-27": "Prophet's Birthday", "2024-02-15": "Liberation Day", - "2024-03-11": "First Day of Ramadan (estimated)", - "2024-04-10": "Eid al-Fitr (estimated)", - "2024-04-11": "Eid al-Fitr (estimated)", - "2024-04-12": "Eid al-Fitr (estimated)", + "2024-03-11": "First Day of Ramadan", + "2024-04-10": "Eid al-Fitr", + "2024-04-11": "Eid al-Fitr", + "2024-04-12": "Eid al-Fitr", "2024-04-28": "Mojahedin's Victory Day", - "2024-06-15": "Day of Arafah (estimated)", - "2024-06-16": "Eid al-Adha (estimated)", - "2024-06-17": "Eid al-Adha (estimated)", - "2024-06-18": "Eid al-Adha (estimated)", - "2024-07-16": "Ashura (estimated)", + "2024-06-16": "Day of Arafah", + "2024-06-17": "Eid al-Adha", + "2024-06-18": "Eid al-Adha", + "2024-06-19": "Eid al-Adha", + "2024-08-14": "Islamic Emirate Victory Day", "2024-08-19": "Afghanistan Independence Day", "2024-08-31": "American Withdrawal Day", - "2024-09-09": "Martyrs' Day", - "2024-09-15": "Prophet's Birthday (estimated)", + "2024-09-16": "Prophet's Birthday", "2025-02-15": "Liberation Day", "2025-03-01": "First Day of Ramadan (estimated)", "2025-03-30": "Eid al-Fitr (estimated)", @@ -1051,11 +1046,10 @@ "2025-06-06": "Eid al-Adha (estimated)", "2025-06-07": "Eid al-Adha (estimated)", "2025-06-08": "Eid al-Adha (estimated)", - "2025-07-05": "Ashura (estimated)", + "2025-08-15": "Islamic Emirate Victory Day", "2025-08-19": "Afghanistan Independence Day", "2025-08-31": "American Withdrawal Day", "2025-09-04": "Prophet's Birthday (estimated)", - "2025-09-09": "Martyrs' Day", "2026-02-15": "Liberation Day", "2026-02-18": "First Day of Ramadan (estimated)", "2026-03-20": "Eid al-Fitr (estimated)", @@ -1066,11 +1060,10 @@ "2026-05-27": "Eid al-Adha (estimated)", "2026-05-28": "Eid al-Adha (estimated)", "2026-05-29": "Eid al-Adha (estimated)", - "2026-06-25": "Ashura (estimated)", + "2026-08-15": "Islamic Emirate Victory Day", "2026-08-19": "Afghanistan Independence Day", "2026-08-25": "Prophet's Birthday (estimated)", "2026-08-31": "American Withdrawal Day", - "2026-09-09": "Martyrs' Day", "2027-02-08": "First Day of Ramadan (estimated)", "2027-02-15": "Liberation Day", "2027-03-09": "Eid al-Fitr (estimated)", @@ -1081,11 +1074,10 @@ "2027-05-16": "Eid al-Adha (estimated)", "2027-05-17": "Eid al-Adha (estimated)", "2027-05-18": "Eid al-Adha (estimated)", - "2027-06-15": "Ashura (estimated)", "2027-08-14": "Prophet's Birthday (estimated)", + "2027-08-15": "Islamic Emirate Victory Day", "2027-08-19": "Afghanistan Independence Day", "2027-08-31": "American Withdrawal Day", - "2027-09-09": "Martyrs' Day", "2028-01-28": "First Day of Ramadan (estimated)", "2028-02-15": "Liberation Day", "2028-02-26": "Eid al-Fitr (estimated)", @@ -1096,11 +1088,10 @@ "2028-05-05": "Eid al-Adha (estimated)", "2028-05-06": "Eid al-Adha (estimated)", "2028-05-07": "Eid al-Adha (estimated)", - "2028-06-03": "Ashura (estimated)", "2028-08-03": "Prophet's Birthday (estimated)", + "2028-08-14": "Islamic Emirate Victory Day", "2028-08-19": "Afghanistan Independence Day", "2028-08-31": "American Withdrawal Day", - "2028-09-09": "Martyrs' Day", "2029-01-16": "First Day of Ramadan (estimated)", "2029-02-14": "Eid al-Fitr (estimated)", "2029-02-15": "Eid al-Fitr (estimated); Liberation Day", @@ -1110,11 +1101,10 @@ "2029-04-25": "Eid al-Adha (estimated)", "2029-04-26": "Eid al-Adha (estimated)", "2029-04-28": "Mojahedin's Victory Day", - "2029-05-23": "Ashura (estimated)", "2029-07-24": "Prophet's Birthday (estimated)", + "2029-08-14": "Islamic Emirate Victory Day", "2029-08-19": "Afghanistan Independence Day", "2029-08-31": "American Withdrawal Day", - "2029-09-09": "Martyrs' Day", "2030-01-05": "First Day of Ramadan (estimated)", "2030-02-04": "Eid al-Fitr (estimated)", "2030-02-05": "Eid al-Fitr (estimated)", @@ -1125,11 +1115,10 @@ "2030-04-14": "Eid al-Adha (estimated)", "2030-04-15": "Eid al-Adha (estimated)", "2030-04-28": "Mojahedin's Victory Day", - "2030-05-12": "Ashura (estimated)", "2030-07-13": "Prophet's Birthday (estimated)", + "2030-08-15": "Islamic Emirate Victory Day", "2030-08-19": "Afghanistan Independence Day", "2030-08-31": "American Withdrawal Day", - "2030-09-09": "Martyrs' Day", "2030-12-26": "First Day of Ramadan (estimated)", "2031-01-24": "Eid al-Fitr (estimated)", "2031-01-25": "Eid al-Fitr (estimated)", @@ -1140,11 +1129,10 @@ "2031-04-03": "Eid al-Adha (estimated)", "2031-04-04": "Eid al-Adha (estimated)", "2031-04-28": "Mojahedin's Victory Day", - "2031-05-02": "Ashura (estimated)", "2031-07-02": "Prophet's Birthday (estimated)", + "2031-08-15": "Islamic Emirate Victory Day", "2031-08-19": "Afghanistan Independence Day", "2031-08-31": "American Withdrawal Day", - "2031-09-09": "Martyrs' Day", "2031-12-15": "First Day of Ramadan (estimated)", "2032-01-14": "Eid al-Fitr (estimated)", "2032-01-15": "Eid al-Fitr (estimated)", @@ -1154,12 +1142,11 @@ "2032-03-22": "Eid al-Adha (estimated)", "2032-03-23": "Eid al-Adha (estimated)", "2032-03-24": "Eid al-Adha (estimated)", - "2032-04-20": "Ashura (estimated)", "2032-04-28": "Mojahedin's Victory Day", "2032-06-20": "Prophet's Birthday (estimated)", + "2032-08-14": "Islamic Emirate Victory Day", "2032-08-19": "Afghanistan Independence Day", "2032-08-31": "American Withdrawal Day", - "2032-09-09": "Martyrs' Day", "2032-12-04": "First Day of Ramadan (estimated)", "2033-01-02": "Eid al-Fitr (estimated)", "2033-01-03": "Eid al-Fitr (estimated)", @@ -1169,12 +1156,11 @@ "2033-03-11": "Eid al-Adha (estimated)", "2033-03-12": "Eid al-Adha (estimated)", "2033-03-13": "Eid al-Adha (estimated)", - "2033-04-10": "Ashura (estimated)", "2033-04-28": "Mojahedin's Victory Day", "2033-06-09": "Prophet's Birthday (estimated)", + "2033-08-14": "Islamic Emirate Victory Day", "2033-08-19": "Afghanistan Independence Day", "2033-08-31": "American Withdrawal Day", - "2033-09-09": "Martyrs' Day", "2033-11-23": "First Day of Ramadan (estimated)", "2033-12-23": "Eid al-Fitr (estimated)", "2033-12-24": "Eid al-Fitr (estimated)", @@ -1184,12 +1170,11 @@ "2034-03-01": "Eid al-Adha (estimated)", "2034-03-02": "Eid al-Adha (estimated)", "2034-03-03": "Eid al-Adha (estimated)", - "2034-03-30": "Ashura (estimated)", "2034-04-28": "Mojahedin's Victory Day", "2034-05-30": "Prophet's Birthday (estimated)", + "2034-08-15": "Islamic Emirate Victory Day", "2034-08-19": "Afghanistan Independence Day", "2034-08-31": "American Withdrawal Day", - "2034-09-09": "Martyrs' Day", "2034-11-12": "First Day of Ramadan (estimated)", "2034-12-12": "Eid al-Fitr (estimated)", "2034-12-13": "Eid al-Fitr (estimated)", @@ -1199,12 +1184,11 @@ "2035-02-18": "Eid al-Adha (estimated)", "2035-02-19": "Eid al-Adha (estimated)", "2035-02-20": "Eid al-Adha (estimated)", - "2035-03-20": "Ashura (estimated)", "2035-04-28": "Mojahedin's Victory Day", "2035-05-20": "Prophet's Birthday (estimated)", + "2035-08-15": "Islamic Emirate Victory Day", "2035-08-19": "Afghanistan Independence Day", "2035-08-31": "American Withdrawal Day", - "2035-09-09": "Martyrs' Day", "2035-11-01": "First Day of Ramadan (estimated)", "2035-12-01": "Eid al-Fitr (estimated)", "2035-12-02": "Eid al-Fitr (estimated)", @@ -1214,12 +1198,11 @@ "2036-02-08": "Eid al-Adha (estimated)", "2036-02-09": "Eid al-Adha (estimated)", "2036-02-15": "Liberation Day", - "2036-03-08": "Ashura (estimated)", "2036-04-28": "Mojahedin's Victory Day", "2036-05-08": "Prophet's Birthday (estimated)", + "2036-08-14": "Islamic Emirate Victory Day", "2036-08-19": "Afghanistan Independence Day", "2036-08-31": "American Withdrawal Day", - "2036-09-09": "Martyrs' Day", "2036-10-20": "First Day of Ramadan (estimated)", "2036-11-19": "Eid al-Fitr (estimated)", "2036-11-20": "Eid al-Fitr (estimated)", @@ -1229,11 +1212,10 @@ "2037-01-27": "Eid al-Adha (estimated)", "2037-01-28": "Eid al-Adha (estimated)", "2037-02-15": "Liberation Day", - "2037-02-25": "Ashura (estimated)", "2037-04-28": "Mojahedin's Victory Day; Prophet's Birthday (estimated)", + "2037-08-14": "Islamic Emirate Victory Day", "2037-08-19": "Afghanistan Independence Day", "2037-08-31": "American Withdrawal Day", - "2037-09-09": "Martyrs' Day", "2037-10-10": "First Day of Ramadan (estimated)", "2037-11-08": "Eid al-Fitr (estimated)", "2037-11-09": "Eid al-Fitr (estimated)", @@ -1242,13 +1224,12 @@ "2038-01-16": "Eid al-Adha (estimated)", "2038-01-17": "Eid al-Adha (estimated)", "2038-01-18": "Eid al-Adha (estimated)", - "2038-02-14": "Ashura (estimated)", "2038-02-15": "Liberation Day", "2038-04-17": "Prophet's Birthday (estimated)", "2038-04-28": "Mojahedin's Victory Day", + "2038-08-15": "Islamic Emirate Victory Day", "2038-08-19": "Afghanistan Independence Day", "2038-08-31": "American Withdrawal Day", - "2038-09-09": "Martyrs' Day", "2038-09-30": "First Day of Ramadan (estimated)", "2038-10-29": "Eid al-Fitr (estimated)", "2038-10-30": "Eid al-Fitr (estimated)", @@ -1257,13 +1238,12 @@ "2039-01-05": "Eid al-Adha (estimated)", "2039-01-06": "Eid al-Adha (estimated)", "2039-01-07": "Eid al-Adha (estimated)", - "2039-02-04": "Ashura (estimated)", "2039-02-15": "Liberation Day", "2039-04-06": "Prophet's Birthday (estimated)", "2039-04-28": "Mojahedin's Victory Day", + "2039-08-15": "Islamic Emirate Victory Day", "2039-08-19": "Afghanistan Independence Day", "2039-08-31": "American Withdrawal Day", - "2039-09-09": "Martyrs' Day", "2039-09-19": "First Day of Ramadan (estimated)", "2039-10-19": "Eid al-Fitr (estimated)", "2039-10-20": "Eid al-Fitr (estimated)", @@ -1272,14 +1252,13 @@ "2039-12-26": "Eid al-Adha (estimated)", "2039-12-27": "Eid al-Adha (estimated)", "2039-12-28": "Eid al-Adha (estimated)", - "2040-01-24": "Ashura (estimated)", "2040-02-15": "Liberation Day", "2040-03-25": "Prophet's Birthday (estimated)", "2040-04-28": "Mojahedin's Victory Day", + "2040-08-14": "Islamic Emirate Victory Day", "2040-08-19": "Afghanistan Independence Day", "2040-08-31": "American Withdrawal Day", "2040-09-07": "First Day of Ramadan (estimated)", - "2040-09-09": "Martyrs' Day", "2040-10-07": "Eid al-Fitr (estimated)", "2040-10-08": "Eid al-Fitr (estimated)", "2040-10-09": "Eid al-Fitr (estimated)", @@ -1287,14 +1266,13 @@ "2040-12-14": "Eid al-Adha (estimated)", "2040-12-15": "Eid al-Adha (estimated)", "2040-12-16": "Eid al-Adha (estimated)", - "2041-01-13": "Ashura (estimated)", "2041-02-15": "Liberation Day", "2041-03-15": "Prophet's Birthday (estimated)", "2041-04-28": "Mojahedin's Victory Day", + "2041-08-14": "Islamic Emirate Victory Day", "2041-08-19": "Afghanistan Independence Day", "2041-08-28": "First Day of Ramadan (estimated)", "2041-08-31": "American Withdrawal Day", - "2041-09-09": "Martyrs' Day", "2041-09-26": "Eid al-Fitr (estimated)", "2041-09-27": "Eid al-Fitr (estimated)", "2041-09-28": "Eid al-Fitr (estimated)", @@ -1302,14 +1280,13 @@ "2041-12-04": "Eid al-Adha (estimated)", "2041-12-05": "Eid al-Adha (estimated)", "2041-12-06": "Eid al-Adha (estimated)", - "2042-01-02": "Ashura (estimated)", "2042-02-15": "Liberation Day", "2042-03-04": "Prophet's Birthday (estimated)", "2042-04-28": "Mojahedin's Victory Day", + "2042-08-15": "Islamic Emirate Victory Day", "2042-08-17": "First Day of Ramadan (estimated)", "2042-08-19": "Afghanistan Independence Day", "2042-08-31": "American Withdrawal Day", - "2042-09-09": "Martyrs' Day", "2042-09-15": "Eid al-Fitr (estimated)", "2042-09-16": "Eid al-Fitr (estimated)", "2042-09-17": "Eid al-Fitr (estimated)", @@ -1317,52 +1294,47 @@ "2042-11-23": "Eid al-Adha (estimated)", "2042-11-24": "Eid al-Adha (estimated)", "2042-11-25": "Eid al-Adha (estimated)", - "2042-12-23": "Ashura (estimated)", "2043-02-15": "Liberation Day", "2043-02-22": "Prophet's Birthday (estimated)", "2043-04-28": "Mojahedin's Victory Day", "2043-08-06": "First Day of Ramadan (estimated)", + "2043-08-15": "Islamic Emirate Victory Day", "2043-08-19": "Afghanistan Independence Day", "2043-08-31": "American Withdrawal Day", "2043-09-04": "Eid al-Fitr (estimated)", "2043-09-05": "Eid al-Fitr (estimated)", "2043-09-06": "Eid al-Fitr (estimated)", - "2043-09-09": "Martyrs' Day", "2043-11-11": "Day of Arafah (estimated)", "2043-11-12": "Eid al-Adha (estimated)", "2043-11-13": "Eid al-Adha (estimated)", "2043-11-14": "Eid al-Adha (estimated)", - "2043-12-12": "Ashura (estimated)", "2044-02-11": "Prophet's Birthday (estimated)", "2044-02-15": "Liberation Day", "2044-04-28": "Mojahedin's Victory Day", "2044-07-26": "First Day of Ramadan (estimated)", + "2044-08-14": "Islamic Emirate Victory Day", "2044-08-19": "Afghanistan Independence Day", "2044-08-24": "Eid al-Fitr (estimated)", "2044-08-25": "Eid al-Fitr (estimated)", "2044-08-26": "Eid al-Fitr (estimated)", "2044-08-31": "American Withdrawal Day", - "2044-09-09": "Martyrs' Day", "2044-10-30": "Day of Arafah (estimated)", "2044-10-31": "Eid al-Adha (estimated)", "2044-11-01": "Eid al-Adha (estimated)", "2044-11-02": "Eid al-Adha (estimated)", - "2044-11-30": "Ashura (estimated)", "2045-01-30": "Prophet's Birthday (estimated)", "2045-02-15": "Liberation Day", "2045-04-28": "Mojahedin's Victory Day", "2045-07-15": "First Day of Ramadan (estimated)", - "2045-08-14": "Eid al-Fitr (estimated)", + "2045-08-14": "Eid al-Fitr (estimated); Islamic Emirate Victory Day", "2045-08-15": "Eid al-Fitr (estimated)", "2045-08-16": "Eid al-Fitr (estimated)", "2045-08-19": "Afghanistan Independence Day", "2045-08-31": "American Withdrawal Day", - "2045-09-09": "Martyrs' Day", "2045-10-20": "Day of Arafah (estimated)", "2045-10-21": "Eid al-Adha (estimated)", "2045-10-22": "Eid al-Adha (estimated)", "2045-10-23": "Eid al-Adha (estimated)", - "2045-11-19": "Ashura (estimated)", "2046-01-19": "Prophet's Birthday (estimated)", "2046-02-15": "Liberation Day", "2046-04-28": "Mojahedin's Victory Day", @@ -1370,14 +1342,13 @@ "2046-08-03": "Eid al-Fitr (estimated)", "2046-08-04": "Eid al-Fitr (estimated)", "2046-08-05": "Eid al-Fitr (estimated)", + "2046-08-15": "Islamic Emirate Victory Day", "2046-08-19": "Afghanistan Independence Day", "2046-08-31": "American Withdrawal Day", - "2046-09-09": "Martyrs' Day", "2046-10-09": "Day of Arafah (estimated)", "2046-10-10": "Eid al-Adha (estimated)", "2046-10-11": "Eid al-Adha (estimated)", "2046-10-12": "Eid al-Adha (estimated)", - "2046-11-09": "Ashura (estimated)", "2047-01-08": "Prophet's Birthday (estimated)", "2047-02-15": "Liberation Day", "2047-04-28": "Mojahedin's Victory Day", @@ -1385,14 +1356,13 @@ "2047-07-24": "Eid al-Fitr (estimated)", "2047-07-25": "Eid al-Fitr (estimated)", "2047-07-26": "Eid al-Fitr (estimated)", + "2047-08-15": "Islamic Emirate Victory Day", "2047-08-19": "Afghanistan Independence Day", "2047-08-31": "American Withdrawal Day", - "2047-09-09": "Martyrs' Day", "2047-09-29": "Day of Arafah (estimated)", "2047-09-30": "Eid al-Adha (estimated)", "2047-10-01": "Eid al-Adha (estimated)", "2047-10-02": "Eid al-Adha (estimated)", - "2047-10-29": "Ashura (estimated)", "2047-12-29": "Prophet's Birthday (estimated)", "2048-02-15": "Liberation Day", "2048-04-28": "Mojahedin's Victory Day", @@ -1400,14 +1370,13 @@ "2048-07-12": "Eid al-Fitr (estimated)", "2048-07-13": "Eid al-Fitr (estimated)", "2048-07-14": "Eid al-Fitr (estimated)", + "2048-08-14": "Islamic Emirate Victory Day", "2048-08-19": "Afghanistan Independence Day", "2048-08-31": "American Withdrawal Day", - "2048-09-09": "Martyrs' Day", "2048-09-18": "Day of Arafah (estimated)", "2048-09-19": "Eid al-Adha (estimated)", "2048-09-20": "Eid al-Adha (estimated)", "2048-09-21": "Eid al-Adha (estimated)", - "2048-10-18": "Ashura (estimated)", "2048-12-18": "Prophet's Birthday (estimated)", "2049-02-15": "Liberation Day", "2049-04-28": "Mojahedin's Victory Day", @@ -1415,13 +1384,13 @@ "2049-07-01": "Eid al-Fitr (estimated)", "2049-07-02": "Eid al-Fitr (estimated)", "2049-07-03": "Eid al-Fitr (estimated)", + "2049-08-14": "Islamic Emirate Victory Day", "2049-08-19": "Afghanistan Independence Day", "2049-08-31": "American Withdrawal Day", "2049-09-07": "Day of Arafah (estimated)", "2049-09-08": "Eid al-Adha (estimated)", - "2049-09-09": "Eid al-Adha (estimated); Martyrs' Day", + "2049-09-09": "Eid al-Adha (estimated)", "2049-09-10": "Eid al-Adha (estimated)", - "2049-10-07": "Ashura (estimated)", "2049-12-07": "Prophet's Birthday (estimated)", "2050-02-15": "Liberation Day", "2050-04-28": "Mojahedin's Victory Day", @@ -1429,13 +1398,12 @@ "2050-06-20": "Eid al-Fitr (estimated)", "2050-06-21": "Eid al-Fitr (estimated)", "2050-06-22": "Eid al-Fitr (estimated)", + "2050-08-15": "Islamic Emirate Victory Day", "2050-08-19": "Afghanistan Independence Day", "2050-08-27": "Day of Arafah (estimated)", "2050-08-28": "Eid al-Adha (estimated)", "2050-08-29": "Eid al-Adha (estimated)", "2050-08-30": "Eid al-Adha (estimated)", "2050-08-31": "American Withdrawal Day", - "2050-09-09": "Martyrs' Day", - "2050-09-26": "Ashura (estimated)", "2050-11-26": "Prophet's Birthday (estimated)" } diff --git a/tests/countries/test_afghanistan.py b/tests/countries/test_afghanistan.py index 01d671511..0ca501e6b 100644 --- a/tests/countries/test_afghanistan.py +++ b/tests/countries/test_afghanistan.py @@ -29,26 +29,6 @@ def test_country_aliases(self): def test_no_holidays(self): self.assertNoHolidays(Afghanistan(years=1918)) - def test_2021(self): - self.assertHolidays( - Afghanistan(years=2021), - ("2021-02-15", "روز آزادی"), - ("2021-04-13", "اول رمضان (برآورد شده)"), - ("2021-04-28", "روز پیروزی مجاهدین"), - ("2021-05-01", "روز جهانی کارگر"), - ("2021-05-13", "عید فطر (برآورد شده)"), - ("2021-05-14", "عید فطر (برآورد شده)"), - ("2021-05-15", "عید فطر (برآورد شده)"), - ("2021-07-19", "روز عرفه (برآورد شده)"), - ("2021-07-20", "عید قربانی (برآورد شده)"), - ("2021-07-21", "عید قربانی (برآورد شده)"), - ("2021-07-22", "عید قربانی (برآورد شده)"), - ("2021-08-18", "عاشورا (برآورد شده)"), - ("2021-08-19", "روز استقلال افغانستان"), - ("2021-09-09", "روز شهیدان"), - ("2021-10-18", "میلاد پیامبر (برآورد شده)"), - ) - def test_liberation_day(self): name = "روز آزادی" self.assertHolidayName(name, (f"{year}-02-15" for year in range(1989, 2050))) @@ -57,8 +37,19 @@ def test_liberation_day(self): def test_nowruz(self): name = "نوروز" self.assertHolidayName( - name, (f"{year}-03-21" for year in (*range(1919, 1997), *range(2001, 2021))) + name, + "2011-03-21", + "2012-03-20", + "2013-03-21", + "2014-03-21", + "2015-03-21", + "2016-03-20", + "2017-03-21", + "2018-03-21", + "2019-03-21", + "2020-03-20", ) + self.assertHolidayName(name, range(1919, 1997), range(2001, 2021)) self.assertNoHolidayName(name, range(1997, 2001), range(2021, 2050)) def test_victory_of_mujahideen_day(self): @@ -78,6 +69,17 @@ def test_soviet_victory_day(self): self.assertHolidayName(name, (f"{year}-05-09" for year in range(1978, 1989))) self.assertNoHolidayName(name, range(1919, 1978), (1989, 2050)) + def test_islamic_emirat_victory_day(self): + name = "روز پیروزی امارت اسلامی" + self.assertHolidayName( + name, + "2022-08-15", + "2023-08-15", + "2024-08-14", + ) + self.assertHolidayName(name, range(2022, 2050)) + self.assertNoHolidayName(name, range(1919, 2022)) + def test_american_withdrawal_day(self): name = "روز خروج آمریکایی ها" self.assertHolidayName(name, (f"{year}-08-31" for year in range(2022, 2050))) @@ -89,64 +91,235 @@ def test_independence_day(self): def test_martyrs_day(self): name = "روز شهیدان" - self.assertHolidayName(name, (f"{year}-09-09" for year in range(2012, 2050))) - self.assertNoHolidayName(name, range(1919, 2012)) + self.assertHolidayName(name, (f"{year}-09-09" for year in range(2012, 2021))) + self.assertNoHolidayName(name, range(1919, 2012), (2021, 2050)) + + def test_ashura(self): + name = "عاشورا" + self.assertHolidayName( + name, + "2014-11-03", + "2015-10-24", + "2016-10-12", + "2017-10-01", + "2018-09-21", + "2019-09-10", + "2020-08-30", + "2021-08-19", + ) + years_found = {dt.year for dt in self.holidays.get_named(name, lookup="startswith")} + self.assertEqual(set(range(1924, 2022)), years_found) + + def test_prophets_birthday(self): + name = "میلاد پیامبر" + self.assertHolidayName( + name, + "2014-01-14", + "2015-01-03", + "2015-12-24", + "2016-12-12", + "2017-12-01", + "2018-11-21", + "2019-11-10", + "2020-10-29", + "2021-10-19", + "2022-10-08", + "2023-09-27", + "2024-09-16", + ) + years_found = {dt.year for dt in self.holidays.get_named(name, lookup="startswith")} + self.assertEqual(set(range(1924, 2050)), years_found) + + def test_first_day_of_ramadan(self): + name = "اول رمضان" + self.assertHolidayName( + name, + "2014-06-29", + "2015-06-18", + "2016-06-07", + "2017-05-27", + "2018-05-16", + "2019-05-06", + "2020-04-24", + "2021-04-13", + "2022-04-02", + "2023-03-23", + "2024-03-11", + ) + years_found = {dt.year for dt in self.holidays.get_named(name, lookup="startswith")} + self.assertEqual(set(range(1925, 2050)), years_found) + + def test_eid_al_fitr(self): + name = "عید فطر" + self.assertHolidayName( + name, + "2014-07-29", + "2014-07-30", + "2014-07-31", + "2015-07-18", + "2015-07-19", + "2015-07-20", + "2016-07-07", + "2016-07-08", + "2016-07-09", + "2017-06-26", + "2017-06-27", + "2017-06-28", + "2018-06-15", + "2018-06-16", + "2018-06-17", + "2019-06-04", + "2019-06-05", + "2019-06-06", + "2020-05-24", + "2020-05-25", + "2020-05-26", + "2021-05-13", + "2021-05-14", + "2021-05-15", + "2022-05-01", + "2022-05-02", + "2022-05-03", + "2023-04-22", + "2023-04-23", + "2023-04-24", + "2024-04-10", + "2024-04-11", + "2024-04-12", + ) + years_found = {dt.year for dt in self.holidays.get_named(name, lookup="startswith")} + self.assertEqual(set(range(1925, 2050)), years_found) + + def test_arafah_day(self): + name = "روز عرفه" + self.assertHolidayName( + name, + "2014-10-04", + "2015-09-22", + "2016-09-12", + "2017-09-01", + "2018-08-21", + "2019-08-10", + "2020-07-30", + "2021-07-19", + "2022-07-08", + "2023-06-27", + "2024-06-16", + ) + years_found = {dt.year for dt in self.holidays.get_named(name, lookup="startswith")} + self.assertEqual(set(range(1925, 2050)), years_found) + + def test_eid_al_adha(self): + name = "عید قربانی" + self.assertHolidayName( + name, + "2014-10-05", + "2014-10-06", + "2014-10-07", + "2015-09-23", + "2015-09-24", + "2015-09-25", + "2016-09-13", + "2016-09-14", + "2016-09-15", + "2017-09-02", + "2017-09-03", + "2017-09-04", + "2018-08-22", + "2018-08-23", + "2018-08-24", + "2019-08-11", + "2019-08-12", + "2019-08-13", + "2020-07-31", + "2020-08-01", + "2020-08-02", + "2021-07-20", + "2021-07-21", + "2021-07-22", + "2022-07-09", + "2022-07-10", + "2022-07-11", + "2023-06-28", + "2023-06-29", + "2023-06-30", + "2024-06-17", + "2024-06-18", + "2024-06-19", + ) + years_found = {dt.year for dt in self.holidays.get_named(name, lookup="startswith")} + self.assertEqual(set(range(1925, 2050)), years_found) + + def test_2021(self): + self.assertHolidays( + Afghanistan(years=2021), + ("2021-02-15", "روز آزادی"), + ("2021-04-13", "اول رمضان"), + ("2021-04-28", "روز پیروزی مجاهدین"), + ("2021-05-01", "روز جهانی کارگر"), + ("2021-05-13", "عید فطر"), + ("2021-05-14", "عید فطر"), + ("2021-05-15", "عید فطر"), + ("2021-07-19", "روز عرفه"), + ("2021-07-20", "عید قربانی"), + ("2021-07-21", "عید قربانی"), + ("2021-07-22", "عید قربانی"), + ("2021-08-19", "روز استقلال افغانستان; عاشورا"), + ("2021-10-19", "میلاد پیامبر"), + ) def test_l10_default(self): self.assertLocalizedHolidays( ("2022-02-15", "روز آزادی"), - ("2022-04-02", "اول رمضان (برآورد شده)"), + ("2022-04-02", "اول رمضان"), ("2022-04-28", "روز پیروزی مجاهدین"), - ("2022-05-02", "عید فطر (برآورد شده)"), - ("2022-05-03", "عید فطر (برآورد شده)"), - ("2022-05-04", "عید فطر (برآورد شده)"), - ("2022-07-08", "روز عرفه (برآورد شده)"), - ("2022-07-09", "عید قربانی (برآورد شده)"), - ("2022-07-10", "عید قربانی (برآورد شده)"), - ("2022-07-11", "عید قربانی (برآورد شده)"), - ("2022-08-08", "عاشورا (برآورد شده)"), + ("2022-05-01", "عید فطر"), + ("2022-05-02", "عید فطر"), + ("2022-05-03", "عید فطر"), + ("2022-07-08", "روز عرفه"), + ("2022-07-09", "عید قربانی"), + ("2022-07-10", "عید قربانی"), + ("2022-07-11", "عید قربانی"), + ("2022-08-15", "روز پیروزی امارت اسلامی"), ("2022-08-19", "روز استقلال افغانستان"), ("2022-08-31", "روز خروج آمریکایی ها"), - ("2022-09-09", "روز شهیدان"), - ("2022-10-08", "میلاد پیامبر (برآورد شده)"), - ) - - def test_l10n_ps_af(self): - self.assertLocalizedHolidays( - "ps_AF", - ("2022-02-15", "د ازادۍ ورځ"), - ("2022-04-02", "د روژې لومړۍ نیټه (اټکل)"), - ("2022-04-28", "مجاهدو د بریا ورځ"), - ("2022-05-02", "عید فطر (اټکل)"), - ("2022-05-03", "عید فطر (اټکل)"), - ("2022-05-04", "عید فطر (اټکل)"), - ("2022-07-08", "د عرفه ورځ (اټکل)"), - ("2022-07-09", "عید قربانی (اټکل)"), - ("2022-07-10", "عید قربانی (اټکل)"), - ("2022-07-11", "عید قربانی (اټکل)"), - ("2022-08-08", "عاشورا (اټکل)"), - ("2022-08-19", "د افغانستان د استقلال ورځ"), - ("2022-08-31", "د امریکا د وتلو ورځ"), - ("2022-09-09", "د شهیدانو ورځ"), - ("2022-10-08", "د پیغمبر الله صلی الله علیه وسلم د میلاد ورځ (اټکل)"), + ("2022-10-08", "میلاد پیامبر"), ) def test_l10n_en_us(self): self.assertLocalizedHolidays( "en_US", ("2022-02-15", "Liberation Day"), - ("2022-04-02", "First Day of Ramadan (estimated)"), + ("2022-04-02", "First Day of Ramadan"), ("2022-04-28", "Mojahedin's Victory Day"), - ("2022-05-02", "Eid al-Fitr (estimated)"), - ("2022-05-03", "Eid al-Fitr (estimated)"), - ("2022-05-04", "Eid al-Fitr (estimated)"), - ("2022-07-08", "Day of Arafah (estimated)"), - ("2022-07-09", "Eid al-Adha (estimated)"), - ("2022-07-10", "Eid al-Adha (estimated)"), - ("2022-07-11", "Eid al-Adha (estimated)"), - ("2022-08-08", "Ashura (estimated)"), + ("2022-05-01", "Eid al-Fitr"), + ("2022-05-02", "Eid al-Fitr"), + ("2022-05-03", "Eid al-Fitr"), + ("2022-07-08", "Day of Arafah"), + ("2022-07-09", "Eid al-Adha"), + ("2022-07-10", "Eid al-Adha"), + ("2022-07-11", "Eid al-Adha"), + ("2022-08-15", "Islamic Emirate Victory Day"), ("2022-08-19", "Afghanistan Independence Day"), ("2022-08-31", "American Withdrawal Day"), - ("2022-09-09", "Martyrs' Day"), - ("2022-10-08", "Prophet's Birthday (estimated)"), + ("2022-10-08", "Prophet's Birthday"), + ) + + def test_l10n_ps_af(self): + self.assertLocalizedHolidays( + "ps_AF", + ("2022-02-15", "د ازادۍ ورځ"), + ("2022-04-02", "د روژې لومړۍ نیټه"), + ("2022-04-28", "مجاهدو د بریا ورځ"), + ("2022-05-01", "عید فطر"), + ("2022-05-02", "عید فطر"), + ("2022-05-03", "عید فطر"), + ("2022-07-08", "د عرفه ورځ"), + ("2022-07-09", "عید قربانی"), + ("2022-07-10", "عید قربانی"), + ("2022-07-11", "عید قربانی"), + ("2022-08-15", "د اسلامي امارت د بریا ورځ"), + ("2022-08-19", "د افغانستان د استقلال ورځ"), + ("2022-08-31", "د امریکا د وتلو ورځ"), + ("2022-10-08", "د پیغمبر الله صلی الله علیه وسلم د میلاد ورځ"), ) From eb47c2d6cf1f3cdfc1d0b2a442603eeaa854eccf Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com> Date: Fri, 10 Jan 2025 20:03:35 -0800 Subject: [PATCH 2/2] Update ruff from v0.8.6 to v0.9.1 (#2224) --- .pre-commit-config.yaml | 2 +- holidays/countries/lithuania.py | 5 +---- holidays/countries/thailand.py | 3 +-- holidays/holiday_base.py | 3 +-- tests/countries/test_argentina.py | 3 +-- tests/countries/test_germany.py | 2 +- tests/countries/test_laos.py | 10 ++-------- tests/countries/test_spain.py | 3 +-- 8 files changed, 9 insertions(+), 22 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e3253093b..dd85c4519 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -23,7 +23,7 @@ repos: - --py39-plus - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.8.6 + rev: v0.9.1 hooks: - id: ruff - id: ruff-format diff --git a/holidays/countries/lithuania.py b/holidays/countries/lithuania.py index 316940e8d..222e0d21b 100644 --- a/holidays/countries/lithuania.py +++ b/holidays/countries/lithuania.py @@ -67,10 +67,7 @@ def _populate_public_holidays(self) -> None: if self._year >= 1991: self._add_holiday_jul_6( # Statehood Day. - tr( - "Valstybės (Lietuvos karaliaus Mindaugo karūnavimo) " - "ir Tautiškos giesmės diena" - ) + tr("Valstybės (Lietuvos karaliaus Mindaugo karūnavimo) ir Tautiškos giesmės diena") ) # Assumption Day. diff --git a/holidays/countries/thailand.py b/holidays/countries/thailand.py index 53bd7dd1b..f5dbb16db 100644 --- a/holidays/countries/thailand.py +++ b/holidays/countries/thailand.py @@ -556,8 +556,7 @@ def _populate_public_holidays(self): if self._year >= 2019: # HM King Bhumibol Adulyadej the Great's Birthday Anniversary. name = tr( - "วันคล้ายวันเฉลิมพระชนมพรรษาพระบาทสมเด็จพระบรมชนกาธิเบศร " - "มหาภูมิพลอดุลยเดชมหาราช บรมนาถบพิตร" + "วันคล้ายวันเฉลิมพระชนมพรรษาพระบาทสมเด็จพระบรมชนกาธิเบศร มหาภูมิพลอดุลยเดชมหาราช บรมนาถบพิตร" ) elif self._year >= 2016: # HM King Bhumibol Adulyadej Birthday Anniversary. diff --git a/holidays/holiday_base.py b/holidays/holiday_base.py index 2db65448c..5a9a2eae5 100644 --- a/holidays/holiday_base.py +++ b/holidays/holiday_base.py @@ -329,8 +329,7 @@ def __init__( # Deprecated arguments. if prov_state := prov or state: warnings.warn( - "Arguments prov and state are deprecated, use " - f"subdiv='{prov_state}' instead.", + f"Arguments prov and state are deprecated, use subdiv='{prov_state}' instead.", DeprecationWarning, ) diff --git a/tests/countries/test_argentina.py b/tests/countries/test_argentina.py index 8c874045f..e4fc1a12d 100644 --- a/tests/countries/test_argentina.py +++ b/tests/countries/test_argentina.py @@ -139,8 +139,7 @@ def test_may_revolution_day(self): def test_sovereignty_over_malvinas_day(self): name = ( - "Día de los Derechos Argentinos sobre las Islas Malvinas, " - "Sandwich y del Atlántico Sur" + "Día de los Derechos Argentinos sobre las Islas Malvinas, Sandwich y del Atlántico Sur" ) self.assertNoHolidayName(name, 1982, range(2001, 2050)) diff --git a/tests/countries/test_germany.py b/tests/countries/test_germany.py index 7fdcb6fad..fd417d5e4 100644 --- a/tests/countries/test_germany.py +++ b/tests/countries/test_germany.py @@ -97,7 +97,7 @@ def test_all_holidays_present(self): self.assertEqual( all_h, y_2015, - f"missing: {all_h - y_2015 or 'no'}," f" extra: {y_2015 - all_h or 'no'}", + f"missing: {all_h - y_2015 or 'no'}, extra: {y_2015 - all_h or 'no'}", ) def test_fixed_holidays(self): diff --git a/tests/countries/test_laos.py b/tests/countries/test_laos.py index a9aaf45c1..d0b47a37d 100644 --- a/tests/countries/test_laos.py +++ b/tests/countries/test_laos.py @@ -380,10 +380,7 @@ def test_l10n_default(self): ("2022-06-01", "ວັນປູກຕົ້ນໄມ້ແຫ່ງຊາດ; ວັນເດັກສາກົນ"), ( "2022-07-13", - ( - "ວັນຄ້າຍວັນເກີດ ທ່ານ ປະທານ ສຸພານຸວົງ; ວັນບຸນເຂົ້າພັນສາ; " - "ວັນປ່ອຍປາ ແລະ ວັນອະນຸລັກສັດນ້ຳ-ສັດປ່າແຫ່ງຊາດ" - ), + ("ວັນຄ້າຍວັນເກີດ ທ່ານ ປະທານ ສຸພານຸວົງ; ວັນບຸນເຂົ້າພັນສາ; ວັນປ່ອຍປາ ແລະ ວັນອະນຸລັກສັດນ້ຳ-ສັດປ່າແຫ່ງຊາດ"), ), ("2022-07-20", "ວັນສ້າງຕັ້ງສະຫະພັນແມ່ຍິງລາວ"), ("2022-08-13", "ວັນສື່ມວນຊົນແຫ່ງຊາດ ແລະ ວັນພິມຈໍາໜ່າຍ"), @@ -466,10 +463,7 @@ def test_l10n_th(self): ("2022-06-01", "วันปลูกต้นไม้แห่งชาติ; วันเด็กสากล"), ( "2022-07-13", - ( - "วันคล้ายวันเกิดท่านประธานสุภานุวงศ์; วันอนุรักษ์สัตว์น้ำ สัตว์ป่า " - "และวันปล่อยปลาแห่งชาติ; วันเข้าพรรษา" - ), + ("วันคล้ายวันเกิดท่านประธานสุภานุวงศ์; วันอนุรักษ์สัตว์น้ำ สัตว์ป่า และวันปล่อยปลาแห่งชาติ; วันเข้าพรรษา"), ), ("2022-07-20", "วันก่อตั้งสหภาพแม่หญิงลาว"), ("2022-08-13", "วันสื่อสารมวลชนและการพิมพ์แห่งชาติ"), diff --git a/tests/countries/test_spain.py b/tests/countries/test_spain.py index af33bc1c7..22ace437e 100644 --- a/tests/countries/test_spain.py +++ b/tests/countries/test_spain.py @@ -33,8 +33,7 @@ def _assertVariableDays(self, year: int, subdiv_holidays: dict): # noqa: N802 self.assertEqual( dt in prov_holidays, subdiv in hol_provs, - f"Failed date `{dt:%Y-%m-%d}`, " - f"province `{subdiv}`: {', '.join(hol_provs)}", + f"Failed date `{dt:%Y-%m-%d}`, province `{subdiv}`: {', '.join(hol_provs)}", ) def test_country_aliases(self):