Repository: vacanza/holidays
Pull request #2695 (2025-07-03 15:56:58)

Add working day tests for countries with substituted holidays
<!--
  Thanks for contributing to holidays!
-->

## Proposed change

<!--
  Describe the big picture of your changes.
  Don't forget to link your PR to an existing issue if any.
-->

Add working day tests for countries with substituted holidays.

## Type of change

<!--
  Type of change you want to introduce. Please, check one (1) box only!
  If your PR requires multiple boxes to be checked, most likely it needs to
  be split into multiple PRs.
-->

- [ ] New country/market holidays support (thank you!)
- [ ] Supported country/market holidays update (calendar discrepancy fix, localization)
- [x] Existing code/documentation/test/process quality improvement (best practice, cleanup, refactoring, optimization)
- [ ] Dependency update (version deprecation/pin/upgrade)
- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] Breaking change (a code change causing existing functionality to break)
- [ ] New feature (new `holidays` functionality in general)

## Checklist

<!--
  Put an `x` in the boxes that apply. You can change them after PR is created.
-->

- [x] I've followed the [contributing guidelines][contributing-guidelines]
- [x] I've successfully run `make check`, all checks and tests are green

<!--
  Thanks again for your contribution!
-->

[contributing-guidelines]: https://github.com/vacanza/holidays/blob/dev/CONTRIBUTING.md
[docs]: https://github.com/vacanza/holidays/tree/dev/docs/source


coderabbitai[bot]: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- This is an auto-generated comment: review in progress by coderabbit.ai -->

> [!NOTE]
> Currently processing new changes in this PR. This may take a few minutes, please wait...
> 
> <details>
> <summary>📥 Commits</summary>
> 
> Reviewing files that changed from the base of the PR and between 88054e37a26761669353d6fde17ee6313109c3b3 and 047beb60cded246feaf5e923912d6711ddac1d81.
> 
> </details>
> 
> <details>
> <summary>📒 Files selected for processing (5)</summary>
> 
> * `holidays/countries/hungary.py` (2 hunks)
> * `tests/countries/test_hungary.py` (2 hunks)
> * `tests/countries/test_kazakhstan.py` (1 hunks)
> * `tests/countries/test_russia.py` (3 hunks)
> * `tests/countries/test_vietnam.py` (1 hunks)
> 
> </details>
> 
> ```ascii
>  _______________________________________________________________________________________________________________________________________________
> < Configure, don't integrate. Implement technology choices for an application as configuration options, not through integration or engineering. >
>  -----------------------------------------------------------------------------------------------------------------------------------------------
>   \
>    \   \
>         \ /\
>         ( )
>       .( o ).
> ```

<!-- end of auto-generated comment: review in progress by coderabbit.ai -->
<!-- usage_tips_start -->

> [!TIP]
> <details>
> <summary>CodeRabbit can generate a title for your PR based on the changes with custom instructions.</summary>
> 
> Add the `reviews.auto_title_instructions` setting in your project's settings in CodeRabbit to generate a title for your PR based on the changes in the PR with custom instructions.
> 
> </details>

<!-- usage_tips_end -->
<!-- finishing_touch_checkbox_start -->

<details open="true">
<summary>✨ Finishing Touches</summary>

- [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> 📝 Generate Docstrings
<details open="true">
<summary>🧪 Generate Unit Tests</summary>

- [ ] <!-- {"checkboxId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} -->   Create PR with Unit Tests
- [ ] <!-- {"checkboxId": "07f1e7d6-8a8e-4e23-9900-8731c2c87f58", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} -->   Post Copyable Unit Tests in a Comment

</details>

</details>

<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->

---

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=vacanza/holidays&utm_content=2695):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Explain this complex logic.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai explain this code block.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and explain its main purpose.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

### Support

Need help? Create a ticket on our [support page](https://www.coderabbit.ai/contact-us/support) for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR.
- `@coderabbitai auto-generate unit tests` to generate unit tests for this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/vacanza/holidays/pull/2695?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 100.00%. Comparing base [(`88054e3`)](https://app.codecov.io/gh/vacanza/holidays/commit/88054e37a26761669353d6fde17ee6313109c3b3?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza) to head [(`047beb6`)](https://app.codecov.io/gh/vacanza/holidays/commit/047beb60cded246feaf5e923912d6711ddac1d81?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza).

<details><summary>Additional details and impacted files</summary>


```diff
@@            Coverage Diff            @@
##               dev     #2695   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          253       253           
  Lines        15201     15202    +1     
  Branches      2095      2095           
=========================================
+ Hits         15201     15202    +1     
```

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/vacanza/holidays/pull/2695?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza).

<details><summary> :rocket: New features to boost your workflow: </summary>

- :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
</details>

Patch:
diff --git a/README.md b/README.md
index c0e8c3be..ab205076 100644
--- a/README.md
+++ b/README.md
@@ -105,7 +105,7 @@ and detailed information.
 
 ## Available Countries
 
-We currently support 205 country codes. The standard way to refer to a country is by using its [ISO
+We currently support 206 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
@@ -868,6 +868,13 @@ any) in brackets, available languages and additional holiday categories. All cou
 <td></td>
 </tr>
 <tr>
+<td>Libya</td>
+<td>LY</td>
+<td></td>
+<td><strong>ar</strong>, en_US</td>
+<td>WORKDAY</td>
+</tr>
+<tr>
 <td>Liechtenstein</td>
 <td>LI</td>
 <td></td>
diff --git a/holidays/countries/__init__.py b/holidays/countries/__init__.py
index 81df7e8e..b213e1f5 100644
--- a/holidays/countries/__init__.py
+++ b/holidays/countries/__init__.py
@@ -120,6 +120,7 @@ from holidays.countries.kyrgyzstan import Kyrgyzstan, KG, KGZ
 from holidays.countries.laos import Laos, LA, LAO
 from holidays.countries.latvia import Latvia, LV, LVA
 from holidays.countries.lesotho import Lesotho, LS, LSO
+from holidays.countries.libya import Libya, LY, LBY
 from holidays.countries.liechtenstein import Liechtenstein, LI, LIE
 from holidays.countries.lithuania import Lithuania, LT, LTU
 from holidays.countries.luxembourg import Luxembourg, LU, LUX
diff --git a/holidays/countries/hungary.py b/holidays/countries/hungary.py
index 18d7b901..34ed0c61 100644
--- a/holidays/countries/hungary.py
+++ b/holidays/countries/hungary.py
@@ -28,6 +28,7 @@ class Hungary(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
 
     country = "HU"
     default_language = "hu"
+    start_year = 1945
     supported_languages = ("en_US", "hu", "uk")
 
     def __init__(self, *args, **kwargs):
@@ -40,7 +41,7 @@ class Hungary(HolidayBase, ChristianHolidays, InternationalHolidays, StaticHolid
         # New Year's Day.
         self._add_new_years_day(tr("Újév"))
 
-        if 1945 <= self._year <= 1950 or self._year >= 1989:
+        if self._year <= 1950 or self._year >= 1989:
             # National Day.
             self._add_holiday_mar_15(tr("Nemzeti ünnep"))
 
diff --git a/holidays/countries/libya.py b/holidays/countries/libya.py
new file mode 100644
index 00000000..d9b398a0
--- /dev/null
+++ b/holidays/countries/libya.py
@@ -0,0 +1,227 @@
+#  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 <dr.prodigy.github@gmail.com> (c) 2017-2023
+#           ryanss <ryanssdev@icloud.com> (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 JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
+from holidays.constants import PUBLIC, WORKDAY
+from holidays.groups import InternationalHolidays, IslamicHolidays, StaticHolidays
+from holidays.holiday_base import HolidayBase
+
+
+class Libya(HolidayBase, InternationalHolidays, IslamicHolidays, StaticHolidays):
+    """Libya holidays.
+
+    References:
+        * [Law No. 4 of 1987](https://web.archive.org/web/20250629084625/https://lawsociety.ly/legislation/قانون-رقم-4-لسنة-1987-م-بشأن-العطلات-الرسمية/)
+        * [Law No. 5 of 2012](https://web.archive.org/web/20250629084558/https://lawsociety.ly/legislation/القانون-رقم-5-لسنة-2012-م-بشأن-العطلات-الرسم/)
+        * [National Environmental Sanitation Day](https://web.archive.org/web/20250629084547/https://lawsociety.ly/legislation/قرار-رقم-414-لسنة-2021-م-باعتبار-يوم-14-أغسطس-يو/)
+    """
+
+    country = "LY"
+    default_language = "ar"
+    # %s (estimated).
+    estimated_label = tr("%s (المقدرة)")
+    start_year = 1988
+    supported_categories = (PUBLIC, WORKDAY)
+    supported_languages = ("ar", "en_US")
+
+    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=LibyaIslamicHolidays, show_estimated=islamic_show_estimated
+        )
+        StaticHolidays.__init__(self, cls=LibyaStaticHolidays)
+        super().__init__(*args, **kwargs)
+
+    def _populate_public_holidays(self):
+        if self._year <= 2011:
+            # People's Authority Day.
+            self._add_holiday_mar_2(tr("عید إعلان سلطة الشعب"))
+
+            # American Forces Evacuation Day.
+            self._add_holiday_jun_11(tr("عيد إجلاء القوات الأمريكية"))
+
+            # Glorious July Revolution Day.
+            self._add_holiday_jul_23(tr("عيد ثورة يوليو المجيدة"))
+
+            # Great Al-Fateh Revolution Day.
+            self._add_holiday_sep_1(tr("عيد الفاتح العظيم"))
+        else:
+            # Anniversary of the February 17 Revolution.
+            self._add_holiday_feb_17(tr("ثورة 17 فبراير"))
+
+            # Labor Day.
+            self._add_labor_day(tr("عيد العمال"))
+
+            if self._year >= 2022:
+                # National Environmental Sanitation Day.
+                self._add_holiday_aug_14(tr("يوم وطني للإصحاح البيئي"))
+
+            # Martyrs' Day.
+            self._add_holiday_sep_16(tr("يوم الشهيد"))
+
+            # Liberation Day.
+            self._add_holiday_oct_23(tr("يوم التحرير"))
+
+            # Independence Day.
+            self._add_holiday_dec_24(tr("عيد الاستقلال"))
+
+            # Islamic New Year.
+            self._add_islamic_new_year_day(tr("عيد رأس السنة الهجرية"))
+
+        # Prophet's Birthday.
+        self._add_mawlid_day(tr("ذكرى المولد النبوي الشريف"))
+
+        # Eid al-Fitr.
+        name = tr("عيد الفطر")
+        self._add_eid_al_fitr_day(name)
+        self._add_eid_al_fitr_day_two(name)
+        self._add_eid_al_fitr_day_three(name)
+
+        # Day of Arafah.
+        self._add_arafah_day(tr("يوم عرفة"))
+
+        # Eid al-Adha.
+        name = tr("عيد الأضحى")
+        self._add_eid_al_adha_day(name)
+        self._add_eid_al_adha_day_two(name)
+        self._add_eid_al_adha_day_three(name)
+
+    def _populate_workday_holidays(self):
+        if self._year <= 2011:
+            # Syrian Revolution Day.
+            self._add_holiday_mar_8(tr("عيد ثورة سوريا"))
+
+            # Anniversary of the Arab League.
+            self._add_holiday_mar_22(tr("ذكرى إنشاء الجامعة العربية"))
+
+            # British Forces Evacuation Day.
+            self._add_holiday_mar_28(tr("عيد إجلاء القوات البريطانية"))
+
+            # Italian Forces Evacuation Day.
+            self._add_holiday_oct_7(tr("عيد إجلاء الطليان"))
+
+            # Islamic New Year.
+            self._add_islamic_new_year_day(tr("عيد رأس السنة الهجرية"))
+
+            # Ashura.
+            self._add_ashura_day(tr("عاشوراء"))
+
+            # Isra and Mi'raj.
+            self._add_isra_and_miraj_day(tr("ذكرى الإسراء والمعراج"))
+
+            # Night of Forgiveness.
+            self._add_imam_mahdi_birthday_day(tr("ليلة النصف من شعبان"))
+
+
+class LY(Libya):
+    pass
+
+
+class LBY(Libya):
+    pass
+
+
+class LibyaIslamicHolidays(_CustomIslamicHolidays):
+    # https://web.archive.org/web/20240908234803/https://www.timeanddate.com/holidays/libya/eid-al-adha
+    # https://web.archive.org/web/20250629084537/https://lawsociety.ly/legislation/قرار-رقم-773-لسنة-2017-م-بشأن-تحديد-عطلة-عيد-ال/
+    EID_AL_ADHA_DATES = {
+        2012: (OCT, 26),
+        2013: (OCT, 15),
+        2014: (OCT, 5),
+        2015: (SEP, 23),
+        2016: (SEP, 11),
+        2017: (SEP, 1),
+        2018: (AUG, 22),
+        2019: (AUG, 11),
+        2020: (JUL, 31),
+        2021: (JUL, 20),
+        2022: (JUL, 9),
+        2023: (JUN, 28),
+        2024: (JUN, 16),
+        2025: (JUN, 6),
+    }
+
+    # https://web.archive.org/web/20241012125707/https://www.timeanddate.com/holidays/libya/eid-al-fitr
+    EID_AL_FITR_DATES = {
+        2012: (AUG, 19),
+        2013: (AUG, 8),
+        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, 2),
+        2023: (APR, 21),
+        2024: (APR, 10),
+        2025: (MAR, 31),
+    }
+
+    # https://web.archive.org/web/20250418094505/https://www.timeanddate.com/holidays/libya/muharram-new-year
+    HIJRI_NEW_YEAR_DATES = {
+        2012: (NOV, 15),
+        2013: (NOV, 5),
+        2014: (OCT, 25),
+        2015: (OCT, 15),
+        2016: (OCT, 3),
+        2017: (SEP, 22),
+        2018: (SEP, 12),
+        2019: (AUG, 31),
+        2020: (AUG, 20),
+        2021: (AUG, 10),
+        2022: (JUL, 30),
+        2023: (JUL, 19),
+        2024: (JUL, 7),
+        2025: (JUN, 26),
+    }
+
+    # https://web.archive.org/web/20241213175353/https://www.timeanddate.com/holidays/libya/prophet-birthday
+    # https://web.archive.org/web/20250629084607/https://lawsociety.ly/legislation/قرار-رقم-1299-لسنة-2019-م-بشأن-عطلة-ذكرى-المولد/
+    MAWLID_DATES = {
+        2012: (FEB, 5),
+        2013: (JAN, 24),
+        2014: (JAN, 14),
+        2015: ((JAN, 3), (DEC, 23)),
+        2016: (DEC, 12),
+        2017: (DEC, 1),
+        2018: (NOV, 21),
+        2019: (NOV, 9),
+        2020: (OCT, 29),
+        2021: (OCT, 19),
+        2022: (OCT, 8),
+        2023: (SEP, 27),
+        2024: (SEP, 15),
+    }
+
+
+class LibyaStaticHolidays:
+    """Libya special holidays.
+
+    References:
+        * <https://web.archive.org/web/20250629084721/https://lawsociety.ly/legislation/قرار-رقم-555-لسنة-2023-م-بمنح-إجازة-رسمية/>
+    """
+
+    special_public_holidays = {
+        # Public Holiday.
+        2023: (DEC, 10, tr("عطلة رسمية"))
+    }
diff --git a/holidays/locale/ar/LC_MESSAGES/LY.po b/holidays/locale/ar/LC_MESSAGES/LY.po
new file mode 100644
index 00000000..d9924938
--- /dev/null
+++ b/holidays/locale/ar/LC_MESSAGES/LY.po
@@ -0,0 +1,124 @@
+#  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 <dr.prodigy.github@gmail.com> (c) 2017-2023
+#           ryanss <ryanssdev@icloud.com> (c) 2014-2017
+#  Website: https://github.com/vacanza/holidays
+#  License: MIT (see LICENSE file)
+#
+# Libya holidays.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.76\n"
+"POT-Creation-Date: 2025-06-23 01:55+0530\n"
+"PO-Revision-Date: 2025-06-23 01:55+0530\n"
+"Last-Translator: Kriti Birda <workwithkritibirda@gmail.com>\n"
+"Language-Team: Holidays Localization Team\n"
+"Language: ar\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: ar\n"
+
+#. %s (estimated).
+#, c-format
+msgid "%s (المقدرة)"
+msgstr ""
+
+#. People's Authority Day.
+msgid "عید إعلان سلطة الشعب"
+msgstr ""
+
+#. American Forces Evacuation Day.
+msgid "عيد إجلاء القوات الأمريكية"
+msgstr ""
+
+#. Glorious July Revolution Day.
+msgid "عيد ثورة يوليو المجيدة"
+msgstr ""
+
+#. Great Al-Fateh Revolution Day.
+msgid "عيد الفاتح العظيم"
+msgstr ""
+
+#. Anniversary of the February 17 Revolution.
+msgid "ثورة 17 فبراير"
+msgstr ""
+
+#. Labor Day.
+msgid "عيد العمال"
+msgstr ""
+
+#. National Environmental Sanitation Day.
+msgid "يوم وطني للإصحاح البيئي"
+msgstr ""
+
+#. Martyrs' Day.
+msgid "يوم الشهيد"
+msgstr ""
+
+#. Liberation Day.
+msgid "يوم التحرير"
+msgstr ""
+
+#. Independence Day.
+msgid "عيد الاستقلال"
+msgstr ""
+
+#. Islamic New Year.
+msgid "عيد رأس السنة الهجرية"
+msgstr ""
+
+#. Prophet's Birthday.
+msgid "ذكرى المولد النبوي الشريف"
+msgstr ""
+
+#. Eid al-Fitr.
+msgid "عيد الفطر"
+msgstr ""
+
+#. Day of Arafah.
+msgid "يوم عرفة"
+msgstr ""
+
+#. Eid al-Adha.
+msgid "عيد الأضحى"
+msgstr ""
+
+#. Syrian Revolution Day.
+msgid "عيد ثورة سوريا"
+msgstr ""
+
+#. Anniversary of the Arab League.
+msgid "ذكرى إنشاء الجامعة العربية"
+msgstr ""
+
+#. British Forces Evacuation Day.
+msgid "عيد إجلاء القوات البريطانية"
+msgstr ""
+
+#. Italian Forces Evacuation Day.
+msgid "عيد إجلاء الطليان"
+msgstr ""
+
+#. Ashura.
+msgid "عاشوراء"
+msgstr ""
+
+#. Isra and Mi'raj.
+msgid "ذكرى الإسراء والمعراج"
+msgstr ""
+
+#. Night of Forgiveness.
+msgid "ليلة النصف من شعبان"
+msgstr ""
+
+#. Public Holiday.
+msgid "عطلة رسمية"
+msgstr ""
diff --git a/holidays/locale/en_US/LC_MESSAGES/LY.po b/holidays/locale/en_US/LC_MESSAGES/LY.po
new file mode 100644
index 00000000..e016874b
--- /dev/null
+++ b/holidays/locale/en_US/LC_MESSAGES/LY.po
@@ -0,0 +1,124 @@
+#  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 <dr.prodigy.github@gmail.com> (c) 2017-2023
+#           ryanss <ryanssdev@icloud.com> (c) 2014-2017
+#  Website: https://github.com/vacanza/holidays
+#  License: MIT (see LICENSE file)
+#
+# Libya holidays en_US localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.76\n"
+"POT-Creation-Date: 2025-06-23 01:55+0530\n"
+"PO-Revision-Date: 2025-06-23 01:55+0530\n"
+"Last-Translator: Kriti Birda <workwithkritibirda@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: ar\n"
+
+#. %s (estimated).
+#, c-format
+msgid "%s (المقدرة)"
+msgstr "%s (estimated)"
+
+#. People's Authority Day.
+msgid "عید إعلان سلطة الشعب"
+msgstr "People's Authority Day"
+
+#. American Forces Evacuation Day.
+msgid "عيد إجلاء القوات الأمريكية"
+msgstr "American Forces Evacuation Day"
+
+#. Glorious July Revolution Day.
+msgid "عيد ثورة يوليو المجيدة"
+msgstr "Glorious July Revolution Day"
+
+#. Great Al-Fateh Revolution Day.
+msgid "عيد الفاتح العظيم"
+msgstr "Great Al-Fateh Revolution Day"
+
+#. Anniversary of the February 17 Revolution.
+msgid "ثورة 17 فبراير"
+msgstr "Anniversary of the February 17 Revolution"
+
+#. Labor Day.
+msgid "عيد العمال"
+msgstr "Labor Day"
+
+#. National Environmental Sanitation Day.
+msgid "يوم وطني للإصحاح البيئي"
+msgstr "National Environmental Sanitation Day"
+
+#. Martyrs' Day.
+msgid "يوم الشهيد"
+msgstr "Martyrs' Day"
+
+#. Liberation Day.
+msgid "يوم التحرير"
+msgstr "Liberation Day"
+
+#. Independence Day.
+msgid "عيد الاستقلال"
+msgstr "Independence Day"
+
+#. Islamic New Year.
+msgid "عيد رأس السنة الهجرية"
+msgstr "Islamic New Year"
+
+#. Prophet's Birthday.
+msgid "ذكرى المولد النبوي الشريف"
+msgstr "Prophet's Birthday"
+
+#. Eid al-Fitr.
+msgid "عيد الفطر"
+msgstr "Eid al-Fitr"
+
+#. Day of Arafah.
+msgid "يوم عرفة"
+msgstr "Day of Arafah"
+
+#. Eid al-Adha.
+msgid "عيد الأضحى"
+msgstr "Eid al-Adha"
+
+#. Syrian Revolution Day.
+msgid "عيد ثورة سوريا"
+msgstr "Syrian Revolution Day"
+
+#. Anniversary of the Arab League.
+msgid "ذكرى إنشاء الجامعة العربية"
+msgstr "Anniversary of the Arab League"
+
+#. British Forces Evacuation Day.
+msgid "عيد إجلاء القوات البريطانية"
+msgstr "British Forces Evacuation Day"
+
+#. Italian Forces Evacuation Day.
+msgid "عيد إجلاء الطليان"
+msgstr "Italian Forces Evacuation Day"
+
+#. Ashura.
+msgid "عاشوراء"
+msgstr "Ashura"
+
+#. Isra and Mi'raj.
+msgid "ذكرى الإسراء والمعراج"
+msgstr "Isra and Mi'raj"
+
+#. Night of Forgiveness.
+msgid "ليلة النصف من شعبان"
+msgstr "Night of Forgiveness"
+
+#. Public Holiday.
+msgid "عطلة رسمية"
+msgstr "Public Holiday"
diff --git a/holidays/registry.py b/holidays/registry.py
index 967e503d..8456babc 100644
--- a/holidays/registry.py
+++ b/holidays/registry.py
@@ -123,6 +123,7 @@ COUNTRIES: RegistryDict = {
     "laos": ("Laos", "LA", "LAO"),
     "latvia": ("Latvia", "LV", "LVA"),
     "lesotho": ("Lesotho", "LS", "LSO"),
+    "libya": ("Libya", "LY", "LBY"),
     "liechtenstein": ("Liechtenstein", "LI", "LIE"),
     "lithuania": ("Lithuania", "LT", "LTU"),
     "luxembourg": ("Luxembourg", "LU", "LUX"),
diff --git a/snapshots/countries/LY_COMMON.json b/snapshots/countries/LY_COMMON.json
new file mode 100644
index 00000000..8fc76fa9
--- /dev/null
+++ b/snapshots/countries/LY_COMMON.json
@@ -0,0 +1,1064 @@
+{
+    "1988-03-02": "People's Authority Day",
+    "1988-03-08": "Syrian Revolution Day",
+    "1988-03-15": "Isra and Mi'raj (estimated)",
+    "1988-03-22": "Anniversary of the Arab League",
+    "1988-03-28": "British Forces Evacuation Day",
+    "1988-04-02": "Night of Forgiveness (estimated)",
+    "1988-05-16": "Eid al-Fitr (estimated)",
+    "1988-05-17": "Eid al-Fitr (estimated)",
+    "1988-05-18": "Eid al-Fitr (estimated)",
+    "1988-06-11": "American Forces Evacuation Day",
+    "1988-07-22": "Day of Arafah (estimated)",
+    "1988-07-23": "Eid al-Adha (estimated); Glorious July Revolution Day",
+    "1988-07-24": "Eid al-Adha (estimated)",
+    "1988-07-25": "Eid al-Adha (estimated)",
+    "1988-08-13": "Islamic New Year (estimated)",
+    "1988-08-22": "Ashura (estimated)",
+    "1988-09-01": "Great Al-Fateh Revolution Day",
+    "1988-10-07": "Italian Forces Evacuation Day",
+    "1988-10-22": "Prophet's Birthday (estimated)",
+    "1989-03-02": "People's Authority Day",
+    "1989-03-05": "Isra and Mi'raj (estimated)",
+    "1989-03-08": "Syrian Revolution Day",
+    "1989-03-22": "Anniversary of the Arab League; Night of Forgiveness (estimated)",
+    "1989-03-28": "British Forces Evacuation Day",
+    "1989-05-06": "Eid al-Fitr (estimated)",
+    "1989-05-07": "Eid al-Fitr (estimated)",
+    "1989-05-08": "Eid al-Fitr (estimated)",
+    "1989-06-11": "American Forces Evacuation Day",
+    "1989-07-12": "Day of Arafah (estimated)",
+    "1989-07-13": "Eid al-Adha (estimated)",
+    "1989-07-14": "Eid al-Adha (estimated)",
+    "1989-07-15": "Eid al-Adha (estimated)",
+    "1989-07-23": "Glorious July Revolution Day",
+    "1989-08-02": "Islamic New Year (estimated)",
+    "1989-08-11": "Ashura (estimated)",
+    "1989-09-01": "Great Al-Fateh Revolution Day",
+    "1989-10-07": "Italian Forces Evacuation Day",
+    "1989-10-11": "Prophet's Birthday (estimated)",
+    "1990-02-22": "Isra and Mi'raj (estimated)",
+    "1990-03-02": "People's Authority Day",
+    "1990-03-08": "Syrian Revolution Day",
+    "1990-03-12": "Night of Forgiveness (estimated)",
+    "1990-03-22": "Anniversary of the Arab League",
+    "1990-03-28": "British Forces Evacuation Day",
+    "1990-04-26": "Eid al-Fitr (estimated)",
+    "1990-04-27": "Eid al-Fitr (estimated)",
+    "1990-04-28": "Eid al-Fitr (estimated)",
+    "1990-06-11": "American Forces Evacuation Day",
+    "1990-07-01": "Day of Arafah (estimated)",
+    "1990-07-02": "Eid al-Adha (estimated)",
+    "1990-07-03": "Eid al-Adha (estimated)",
+    "1990-07-04": "Eid al-Adha (estimated)",
+    "1990-07-23": "Glorious July Revolution Day; Islamic New Year (estimated)",
+    "1990-08-01": "Ashura (estimated)",
+    "1990-09-01": "Great Al-Fateh Revolution Day",
+    "1990-10-01": "Prophet's Birthday (estimated)",
+    "1990-10-07": "Italian Forces Evacuation Day",
+    "1991-02-11": "Isra and Mi'raj (estimated)",
+    "1991-03-01": "Night of Forgiveness (estimated)",
+    "1991-03-02": "People's Authority Day",
+    "1991-03-08": "Syrian Revolution Day",
+    "1991-03-22": "Anniversary of the Arab League",
+    "1991-03-28": "British Forces Evacuation Day",
+    "1991-04-15": "Eid al-Fitr (estimated)",
+    "1991-04-16": "Eid al-Fitr (estimated)",
+    "1991-04-17": "Eid al-Fitr (estimated)",
+    "1991-06-11": "American Forces Evacuation Day",
+    "1991-06-21": "Day of Arafah (estimated)",
+    "1991-06-22": "Eid al-Adha (estimated)",
+    "1991-06-23": "Eid al-Adha (estimated)",
+    "1991-06-24": "Eid al-Adha (estimated)",
+    "1991-07-12": "Islamic New Year (estimated)",
+    "1991-07-21": "Ashura (estimated)",
+    "1991-07-23": "Glorious July Revolution Day",
+    "1991-09-01": "Great Al-Fateh Revolution Day",
+    "1991-09-20": "Prophet's Birthday (estimated)",
+    "1991-10-07": "Italian Forces Evacuation Day",
+    "1992-01-31": "Isra and Mi'raj (estimated)",
+    "1992-02-18": "Night of Forgiveness (estimated)",
+    "1992-03-02": "People's Authority Day",
+    "1992-03-08": "Syrian Revolution Day",
+    "1992-03-22": "Anniversary of the Arab League",
+    "1992-03-28": "British Forces Evacuation Day",
+    "1992-04-04": "Eid al-Fitr (estimated)",
+    "1992-04-05": "Eid al-Fitr (estimated)",
+    "1992-04-06": "Eid al-Fitr (estimated)",
+    "1992-06-10": "Day of Arafah (estimated)",
+    "1992-06-11": "American Forces Evacuation Day; Eid al-Adha (estimated)",
+    "1992-06-12": "Eid al-Adha (estimated)",
+    "1992-06-13": "Eid al-Adha (estimated)",
+    "1992-07-01": "Islamic New Year (estimated)",
+    "1992-07-10": "Ashura (estimated)",
+    "1992-07-23": "Glorious July Revolution Day",
+    "1992-09-01": "Great Al-Fateh Revolution Day",
+    "1992-09-09": "Prophet's Birthday (estimated)",
+    "1992-10-07": "Italian Forces Evacuation Day",
+    "1993-01-20": "Isra and Mi'raj (estimated)",
+    "1993-02-06": "Night of Forgiveness (estimated)",
+    "1993-03-02": "People's Authority Day",
+    "1993-03-08": "Syrian Revolution Day",
+    "1993-03-22": "Anniversary of the Arab League",
+    "1993-03-24": "Eid al-Fitr (estimated)",
+    "1993-03-25": "Eid al-Fitr (estimated)",
+    "1993-03-26": "Eid al-Fitr (estimated)",
+    "1993-03-28": "British Forces Evacuation Day",
+    "1993-05-30": "Day of Arafah (estimated)",
+    "1993-05-31": "Eid al-Adha (estimated)",
+    "1993-06-01": "Eid al-Adha (estimated)",
+    "1993-06-02": "Eid al-Adha (estimated)",
+    "1993-06-11": "American Forces Evacuation Day",
+    "1993-06-21": "Islamic New Year (estimated)",
+    "1993-06-30": "Ashura (estimated)",
+    "1993-07-23": "Glorious July Revolution Day",
+    "1993-08-29": "Prophet's Birthday (estimated)",
+    "1993-09-01": "Great Al-Fateh Revolution Day",
+    "1993-10-07": "Italian Forces Evacuation Day",
+    "1994-01-09": "Isra and Mi'raj (estimated)",
+    "1994-01-26": "Night of Forgiveness (estimated)",
+    "1994-03-02": "People's Authority Day",
+    "1994-03-08": "Syrian Revolution Day",
+    "1994-03-13": "Eid al-Fitr (estimated)",
+    "1994-03-14": "Eid al-Fitr (estimated)",
+    "1994-03-15": "Eid al-Fitr (estimated)",
+    "1994-03-22": "Anniversary of the Arab League",
+    "1994-03-28": "British Forces Evacuation Day",
+    "1994-05-19": "Day of Arafah (estimated)",
+    "1994-05-20": "Eid al-Adha (estimated)",
+    "1994-05-21": "Eid al-Adha (estimated)",
+    "1994-05-22": "Eid al-Adha (estimated)",
+    "1994-06-10": "Islamic New Year (estimated)",
+    "1994-06-11": "American Forces Evacuation Day",
+    "1994-06-19": "Ashura (estimated)",
+    "1994-07-23": "Glorious July Revolution Day",
+    "1994-08-19": "Prophet's Birthday (estimated)",
+    "1994-09-01": "Great Al-Fateh Revolution Day",
+    "1994-10-07": "Italian Forces Evacuation Day",
+    "1994-12-29": "Isra and Mi'raj (estimated)",
+    "1995-01-16": "Night of Forgiveness (estimated)",
+    "1995-03-02": "Eid al-Fitr (estimated); People's Authority Day",
+    "1995-03-03": "Eid al-Fitr (estimated)",
+    "1995-03-04": "Eid al-Fitr (estimated)",
+    "1995-03-08": "Syrian Revolution Day",
+    "1995-03-22": "Anniversary of the Arab League",
+    "1995-03-28": "British Forces Evacuation Day",
+    "1995-05-08": "Day of Arafah (estimated)",
+    "1995-05-09": "Eid al-Adha (estimated)",
+    "1995-05-10": "Eid al-Adha (estimated)",
+    "1995-05-11": "Eid al-Adha (estimated)",
+    "1995-05-30": "Islamic New Year (estimated)",
+    "1995-06-08": "Ashura (estimated)",
+    "1995-06-11": "American Forces Evacuation Day",
+    "1995-07-23": "Glorious July Revolution Day",
+    "1995-08-08": "Prophet's Birthday (estimated)",
+    "1995-09-01": "Great Al-Fateh Revolution Day",
+    "1995-10-07": "Italian Forces Evacuation Day",
+    "1995-12-19": "Isra and Mi'raj (estimated)",
+    "1996-01-06": "Night of Forgiveness (estimated)",
+    "1996-02-19": "Eid al-Fitr (estimated)",
+    "1996-02-20": "Eid al-Fitr (estimated)",
+    "1996-02-21": "Eid al-Fitr (estimated)",
+    "1996-03-02": "People's Authority Day",
+    "1996-03-08": "Syrian Revolution Day",
+    "1996-03-22": "Anniversary of the Arab League",
+    "1996-03-28": "British Forces Evacuation Day",
+    "1996-04-26": "Day of Arafah (estimated)",
+    "1996-04-27": "Eid al-Adha (estimated)",
+    "1996-04-28": "Eid al-Adha (estimated)",
+    "1996-04-29": "Eid al-Adha (estimated)",
+    "1996-05-18": "Islamic New Year (estimated)",
+    "1996-05-27": "Ashura (estimated)",
+    "1996-06-11": "American Forces Evacuation Day",
+    "1996-07-23": "Glorious July Revolution Day",
+    "1996-07-27": "Prophet's Birthday (estimated)",
+    "1996-09-01": "Great Al-Fateh Revolution Day",
+    "1996-10-07": "Italian Forces Evacuation Day",
+    "1996-12-08": "Isra and Mi'raj (estimated)",
+    "1996-12-25": "Night of Forgiveness (estimated)",
+    "1997-02-08": "Eid al-Fitr (estimated)",
+    "1997-02-09": "Eid al-Fitr (estimated)",
+    "1997-02-10": "Eid al-Fitr (estimated)",
+    "1997-03-02": "People's Authority Day",
+    "1997-03-08": "Syrian Revolution Day",
+    "1997-03-22": "Anniversary of the Arab League",
+    "1997-03-28": "British Forces Evacuation Day",
+    "1997-04-16": "Day of Arafah (estimated)",
+    "1997-04-17": "Eid al-Adha (estimated)",
+    "1997-04-18": "Eid al-Adha (estimated)",
+    "1997-04-19": "Eid al-Adha (estimated)",
+    "1997-05-07": "Islamic New Year (estimated)",
+    "1997-05-16": "Ashura (estimated)",
+    "1997-06-11": "American Forces Evacuation Day",
+    "1997-07-16": "Prophet's Birthday (estimated)",
+    "1997-07-23": "Glorious July Revolution Day",
+    "1997-09-01": "Great Al-Fateh Revolution Day",
+    "1997-10-07": "Italian Forces Evacuation Day",
+    "1997-11-27": "Isra and Mi'raj (estimated)",
+    "1997-12-15": "Night of Forgiveness (estimated)",
+    "1998-01-29": "Eid al-Fitr (estimated)",
+    "1998-01-30": "Eid al-Fitr (estimated)",
+    "1998-01-31": "Eid al-Fitr (estimated)",
+    "1998-03-02": "People's Authority Day",
+    "1998-03-08": "Syrian Revolution Day",
+    "1998-03-22": "Anniversary of the Arab League",
+    "1998-03-28": "British Forces Evacuation Day",
+    "1998-04-06": "Day of Arafah (estimated)",
+    "1998-04-07": "Eid al-Adha (estimated)",
+    "1998-04-08": "Eid al-Adha (estimated)",
+    "1998-04-09": "Eid al-Adha (estimated)",
+    "1998-04-27": "Islamic New Year (estimated)",
+    "1998-05-06": "Ashura (estimated)",
+    "1998-06-11": "American Forces Evacuation Day",
+    "1998-07-06": "Prophet's Birthday (estimated)",
+    "1998-07-23": "Glorious July Revolution Day",
+    "1998-09-01": "Great Al-Fateh Revolution Day",
+    "1998-10-07": "Italian Forces Evacuation Day",
+    "1998-11-16": "Isra and Mi'raj (estimated)",
+    "1998-12-04": "Night of Forgiveness (estimated)",
+    "1999-01-18": "Eid al-Fitr (estimated)",
+    "1999-01-19": "Eid al-Fitr (estimated)",
+    "1999-01-20": "Eid al-Fitr (estimated)",
+    "1999-03-02": "People's Authority Day",
+    "1999-03-08": "Syrian Revolution Day",
+    "1999-03-22": "Anniversary of the Arab League",
+    "1999-03-26": "Day of Arafah (estimated)",
+    "1999-03-27": "Eid al-Adha (estimated)",
+    "1999-03-28": "British Forces Evacuation Day; Eid al-Adha (estimated)",
+    "1999-03-29": "Eid al-Adha (estimated)",
+    "1999-04-17": "Islamic New Year (estimated)",
+    "1999-04-26": "Ashura (estimated)",
+    "1999-06-11": "American Forces Evacuation Day",
+    "1999-06-26": "Prophet's Birthday (estimated)",
+    "1999-07-23": "Glorious July Revolution Day",
+    "1999-09-01": "Great Al-Fateh Revolution Day",
+    "1999-10-07": "Italian Forces Evacuation Day",
+    "1999-11-05": "Isra and Mi'raj (estimated)",
+    "1999-11-23": "Night of Forgiveness (estimated)",
+    "2000-01-08": "Eid al-Fitr (estimated)",
+    "2000-01-09": "Eid al-Fitr (estimated)",
+    "2000-01-10": "Eid al-Fitr (estimated)",
+    "2000-03-02": "People's Authority Day",
+    "2000-03-08": "Syrian Revolution Day",
+    "2000-03-15": "Day of Arafah (estimated)",
+    "2000-03-16": "Eid al-Adha (estimated)",
+    "2000-03-17": "Eid al-Adha (estimated)",
+    "2000-03-18": "Eid al-Adha (estimated)",
+    "2000-03-22": "Anniversary of the Arab League",
+    "2000-03-28": "British Forces Evacuation Day",
+    "2000-04-06": "Islamic New Year (estimated)",
+    "2000-04-15": "Ashura (estimated)",
+    "2000-06-11": "American Forces Evacuation Day",
+    "2000-06-14": "Prophet's Birthday (estimated)",
+    "2000-07-23": "Glorious July Revolution Day",
+    "2000-09-01": "Great Al-Fateh Revolution Day",
+    "2000-10-07": "Italian Forces Evacuation Day",
+    "2000-10-24": "Isra and Mi'raj (estimated)",
+    "2000-11-11": "Night of Forgiveness (estimated)",
+    "2000-12-27": "Eid al-Fitr (estimated)",
+    "2000-12-28": "Eid al-Fitr (estimated)",
+    "2000-12-29": "Eid al-Fitr (estimated)",
+    "2001-03-02": "People's Authority Day",
+    "2001-03-04": "Day of Arafah (estimated)",
+    "2001-03-05": "Eid al-Adha (estimated)",
+    "2001-03-06": "Eid al-Adha (estimated)",
+    "2001-03-07": "Eid al-Adha (estimated)",
+    "2001-03-08": "Syrian Revolution Day",
+    "2001-03-22": "Anniversary of the Arab League",
+    "2001-03-26": "Islamic New Year (estimated)",
+    "2001-03-28": "British Forces Evacuation Day",
+    "2001-04-04": "Ashura (estimated)",
+    "2001-06-04": "Prophet's Birthday (estimated)",
+    "2001-06-11": "American Forces Evacuation Day",
+    "2001-07-23": "Glorious July Revolution Day",
+    "2001-09-01": "Great Al-Fateh Revolution Day",
+    "2001-10-07": "Italian Forces Evacuation Day",
+    "2001-10-14": "Isra and Mi'raj (estimated)",
+    "2001-10-31": "Night of Forgiveness (estimated)",
+    "2001-12-16": "Eid al-Fitr (estimated)",
+    "2001-12-17": "Eid al-Fitr (estimated)",
+    "2001-12-18": "Eid al-Fitr (estimated)",
+    "2002-02-21": "Day of Arafah (estimated)",
+    "2002-02-22": "Eid al-Adha (estimated)",
+    "2002-02-23": "Eid al-Adha (estimated)",
+    "2002-02-24": "Eid al-Adha (estimated)",
+    "2002-03-02": "People's Authority Day",
+    "2002-03-08": "Syrian Revolution Day",
+    "2002-03-15": "Islamic New Year (estimated)",
+    "2002-03-22": "Anniversary of the Arab League",
+    "2002-03-24": "Ashura (estimated)",
+    "2002-03-28": "British Forces Evacuation Day",
+    "2002-05-24": "Prophet's Birthday (estimated)",
+    "2002-06-11": "American Forces Evacuation Day",
+    "2002-07-23": "Glorious July Revolution Day",
+    "2002-09-01": "Great Al-Fateh Revolution Day",
+    "2002-10-04": "Isra and Mi'raj (estimated)",
+    "2002-10-07": "Italian Forces Evacuation Day",
+    "2002-10-21": "Night of Forgiveness (estimated)",
+    "2002-12-05": "Eid al-Fitr (estimated)",
+    "2002-12-06": "Eid al-Fitr (estimated)",
+    "2002-12-07": "Eid al-Fitr (estimated)",
+    "2003-02-10": "Day of Arafah (estimated)",
+    "2003-02-11": "Eid al-Adha (estimated)",
+    "2003-02-12": "Eid al-Adha (estimated)",
+    "2003-02-13": "Eid al-Adha (estimated)",
+    "2003-03-02": "People's Authority Day",
+    "2003-03-04": "Islamic New Year (estimated)",
+    "2003-03-08": "Syrian Revolution Day",
+    "2003-03-13": "Ashura (estimated)",
+    "2003-03-22": "Anniversary of the Arab League",
+    "2003-03-28": "British Forces Evacuation Day",
+    "2003-05-13": "Prophet's Birthday (estimated)",
+    "2003-06-11": "American Forces Evacuation Day",
+    "2003-07-23": "Glorious July Revolution Day",
+    "2003-09-01": "Great Al-Fateh Revolution Day",
+    "2003-09-24": "Isra and Mi'raj (estimated)",
+    "2003-10-07": "Italian Forces Evacuation Day",
+    "2003-10-11": "Night of Forgiveness (estimated)",
+    "2003-11-25": "Eid al-Fitr (estimated)",
+    "2003-11-26": "Eid al-Fitr (estimated)",
+    "2003-11-27": "Eid al-Fitr (estimated)",
+    "2004-01-31": "Day of Arafah (estimated)",
+    "2004-02-01": "Eid al-Adha (estimated)",
+    "2004-02-02": "Eid al-Adha (estimated)",
+    "2004-02-03": "Eid al-Adha (estimated)",
+    "2004-02-21": "Islamic New Year (estimated)",
+    "2004-03-01": "Ashura (estimated)",
+    "2004-03-02": "People's Authority Day",
+    "2004-03-08": "Syrian Revolution Day",
+    "2004-03-22": "Anniversary of the Arab League",
+    "2004-03-28": "British Forces Evacuation Day",
+    "2004-05-01": "Prophet's Birthday (estimated)",
+    "2004-06-11": "American Forces Evacuation Day",
+    "2004-07-23": "Glorious July Revolution Day",
+    "2004-09-01": "Great Al-Fateh Revolution Day",
+    "2004-09-12": "Isra and Mi'raj (estimated)",
+    "2004-09-29": "Night of Forgiveness (estimated)",
+    "2004-10-07": "Italian Forces Evacuation Day",
+    "2004-11-14": "Eid al-Fitr (estimated)",
+    "2004-11-15": "Eid al-Fitr (estimated)",
+    "2004-11-16": "Eid al-Fitr (estimated)",
+    "2005-01-20": "Day of Arafah (estimated)",
+    "2005-01-21": "Eid al-Adha (estimated)",
+    "2005-01-22": "Eid al-Adha (estimated)",
+    "2005-01-23": "Eid al-Adha (estimated)",
+    "2005-02-10": "Islamic New Year (estimated)",
+    "2005-02-19": "Ashura (estimated)",
+    "2005-03-02": "People's Authority Day",
+    "2005-03-08": "Syrian Revolution Day",
+    "2005-03-22": "Anniversary of the Arab League",
+    "2005-03-28": "British Forces Evacuation Day",
+    "2005-04-21": "Prophet's Birthday (estimated)",
+    "2005-06-11": "American Forces Evacuation Day",
+    "2005-07-23": "Glorious July Revolution Day",
+    "2005-09-01": "Great Al-Fateh Revolution Day; Isra and Mi'raj (estimated)",
+    "2005-09-19": "Night of Forgiveness (estimated)",
+    "2005-10-07": "Italian Forces Evacuation Day",
+    "2005-11-03": "Eid al-Fitr (estimated)",
+    "2005-11-04": "Eid al-Fitr (estimated)",
+    "2005-11-05": "Eid al-Fitr (estimated)",
+    "2006-01-09": "Day of Arafah (estimated)",
+    "2006-01-10": "Eid al-Adha (estimated)",
+    "2006-01-11": "Eid al-Adha (estimated)",
+    "2006-01-12": "Eid al-Adha (estimated)",
+    "2006-01-31": "Islamic New Year (estimated)",
+    "2006-02-09": "Ashura (estimated)",
+    "2006-03-02": "People's Authority Day",
+    "2006-03-08": "Syrian Revolution Day",
+    "2006-03-22": "Anniversary of the Arab League",
+    "2006-03-28": "British Forces Evacuation Day",
+    "2006-04-10": "Prophet's Birthday (estimated)",
+    "2006-06-11": "American Forces Evacuation Day",
+    "2006-07-23": "Glorious July Revolution Day",
+    "2006-08-21": "Isra and Mi'raj (estimated)",
+    "2006-09-01": "Great Al-Fateh Revolution Day",
+    "2006-09-08": "Night of Forgiveness (estimated)",
+    "2006-10-07": "Italian Forces Evacuation Day",
+    "2006-10-23": "Eid al-Fitr (estimated)",
+    "2006-10-24": "Eid al-Fitr (estimated)",
+    "2006-10-25": "Eid al-Fitr (estimated)",
+    "2006-12-30": "Day of Arafah (estimated)",
+    "2006-12-31": "Eid al-Adha (estimated)",
+    "2007-01-01": "Eid al-Adha (estimated)",
+    "2007-01-02": "Eid al-Adha (estimated)",
+    "2007-01-20": "Islamic New Year (estimated)",
+    "2007-01-29": "Ashura (estimated)",
+    "2007-03-02": "People's Authority Day",
+    "2007-03-08": "Syrian Revolution Day",
+    "2007-03-22": "Anniversary of the Arab League",
+    "2007-03-28": "British Forces Evacuation Day",
+    "2007-03-31": "Prophet's Birthday (estimated)",
+    "2007-06-11": "American Forces Evacuation Day",
+    "2007-07-23": "Glorious July Revolution Day",
+    "2007-08-10": "Isra and Mi'raj (estimated)",
+    "2007-08-28": "Night of Forgiveness (estimated)",
+    "2007-09-01": "Great Al-Fateh Revolution Day",
+    "2007-10-07": "Italian Forces Evacuation Day",
+    "2007-10-13": "Eid al-Fitr (estimated)",
+    "2007-10-14": "Eid al-Fitr (estimated)",
+    "2007-10-15": "Eid al-Fitr (estimated)",
+    "2007-12-19": "Day of Arafah (estimated)",
+    "2007-12-20": "Eid al-Adha (estimated)",
+    "2007-12-21": "Eid al-Adha (estimated)",
+    "2007-12-22": "Eid al-Adha (estimated)",
+    "2008-01-10": "Islamic New Year (estimated)",
+    "2008-01-19": "Ashura (estimated)",
+    "2008-03-02": "People's Authority Day",
+    "2008-03-08": "Syrian Revolution Day",
+    "2008-03-20": "Prophet's Birthday (estimated)",
+    "2008-03-22": "Anniversary of the Arab League",
+    "2008-03-28": "British Forces Evacuation Day",
+    "2008-06-11": "American Forces Evacuation Day",
+    "2008-07-23": "Glorious July Revolution Day",
+    "2008-07-30": "Isra and Mi'raj (estimated)",
+    "2008-08-16": "Night of Forgiveness (estimated)",
+    "2008-09-01": "Great Al-Fateh Revolution Day",
+    "2008-10-01": "Eid al-Fitr (estimated)",
+    "2008-10-02": "Eid al-Fitr (estimated)",
+    "2008-10-03": "Eid al-Fitr (estimated)",
+    "2008-10-07": "Italian Forces Evacuation Day",
+    "2008-12-07": "Day of Arafah (estimated)",
+    "2008-12-08": "Eid al-Adha (estimated)",
+    "2008-12-09": "Eid al-Adha (estimated)",
+    "2008-12-10": "Eid al-Adha (estimated)",
+    "2008-12-29": "Islamic New Year (estimated)",
+    "2009-01-07": "Ashura (estimated)",
+    "2009-03-02": "People's Authority Day",
+    "2009-03-08": "Syrian Revolution Day",
+    "2009-03-09": "Prophet's Birthday (estimated)",
+    "2009-03-22": "Anniversary of the Arab League",
+    "2009-03-28": "British Forces Evacuation Day",
+    "2009-06-11": "American Forces Evacuation Day",
+    "2009-07-20": "Isra and Mi'raj (estimated)",
+    "2009-07-23": "Glorious July Revolution Day",
+    "2009-08-06": "Night of Forgiveness (estimated)",
+    "2009-09-01": "Great Al-Fateh Revolution Day",
+    "2009-09-20": "Eid al-Fitr (estimated)",
+    "2009-09-21": "Eid al-Fitr (estimated)",
+    "2009-09-22": "Eid al-Fitr (estimated)",
+    "2009-10-07": "Italian Forces Evacuation Day",
+    "2009-11-26": "Day of Arafah (estimated)",
+    "2009-11-27": "Eid al-Adha (estimated)",
+    "2009-11-28": "Eid al-Adha (estimated)",
+    "2009-11-29": "Eid al-Adha (estimated)",
+    "2009-12-18": "Islamic New Year (estimated)",
+    "2009-12-27": "Ashura (estimated)",
+    "2010-02-26": "Prophet's Birthday (estimated)",
+    "2010-03-02": "People's Authority Day",
+    "2010-03-08": "Syrian Revolution Day",
+    "2010-03-22": "Anniversary of the Arab League",
+    "2010-03-28": "British Forces Evacuation Day",
+    "2010-06-11": "American Forces Evacuation Day",
+    "2010-07-09": "Isra and Mi'raj (estimated)",
+    "2010-07-23": "Glorious July Revolution Day",
+    "2010-07-27": "Night of Forgiveness (estimated)",
+    "2010-09-01": "Great Al-Fateh Revolution Day",
+    "2010-09-10": "Eid al-Fitr (estimated)",
+    "2010-09-11": "Eid al-Fitr (estimated)",
+    "2010-09-12": "Eid al-Fitr (estimated)",
+    "2010-10-07": "Italian Forces Evacuation Day",
+    "2010-11-15": "Day of Arafah (estimated)",
+    "2010-11-16": "Eid al-Adha (estimated)",
+    "2010-11-17": "Eid al-Adha (estimated)",
+    "2010-11-18": "Eid al-Adha (estimated)",
+    "2010-12-07": "Islamic New Year (estimated)",
+    "2010-12-16": "Ashura (estimated)",
+    "2011-02-15": "Prophet's Birthday (estimated)",
+    "2011-03-02": "People's Authority Day",
+    "2011-03-08": "Syrian Revolution Day",
+    "2011-03-22": "Anniversary of the Arab League",
+    "2011-03-28": "British Forces Evacuation Day",
+    "2011-06-11": "American Forces Evacuation Day",
+    "2011-06-29": "Isra and Mi'raj (estimated)",
+    "2011-07-16": "Night of Forgiveness (estimated)",
+    "2011-07-23": "Glorious July Revolution Day",
+    "2011-08-30": "Eid al-Fitr (estimated)",
+    "2011-08-31": "Eid al-Fitr (estimated)",
+    "2011-09-01": "Eid al-Fitr (estimated); Great Al-Fateh Revolution Day",
+    "2011-10-07": "Italian Forces Evacuation Day",
+    "2011-11-05": "Day of Arafah (estimated)",
+    "2011-11-06": "Eid al-Adha (estimated)",
+    "2011-11-07": "Eid al-Adha (estimated)",
+    "2011-11-08": "Eid al-Adha (estimated)",
+    "2011-11-26": "Islamic New Year (estimated)",
+    "2011-12-05": "Ashura (estimated)",
+    "2012-02-05": "Prophet's Birthday",
+    "2012-02-17": "Anniversary of the February 17 Revolution",
+    "2012-05-01": "Labor Day",
+    "2012-08-19": "Eid al-Fitr",
+    "2012-08-20": "Eid al-Fitr",
+    "2012-08-21": "Eid al-Fitr",
+    "2012-09-16": "Martyrs' Day",
+    "2012-10-23": "Liberation Day",
+    "2012-10-25": "Day of Arafah",
+    "2012-10-26": "Eid al-Adha",
+    "2012-10-27": "Eid al-Adha",
+    "2012-10-28": "Eid al-Adha",
+    "2012-11-15": "Islamic New Year",
+    "2012-12-24": "Independence Day",
+    "2013-01-24": "Prophet's Birthday",
+    "2013-02-17": "Anniversary of the February 17 Revolution",
+    "2013-05-01": "Labor Day",
+    "2013-08-08": "Eid al-Fitr",
+    "2013-08-09": "Eid al-Fitr",
+    "2013-08-10": "Eid al-Fitr",
+    "2013-09-16": "Martyrs' Day",
+    "2013-10-14": "Day of Arafah",
+    "2013-10-15": "Eid al-Adha",
+    "2013-10-16": "Eid al-Adha",
+    "2013-10-17": "Eid al-Adha",
+    "2013-10-23": "Liberation Day",
+    "2013-11-05": "Islamic New Year",
+    "2013-12-24": "Independence Day",
+    "2014-01-14": "Prophet's Birthday",
+    "2014-02-17": "Anniversary of the February 17 Revolution",
+    "2014-05-01": "Labor Day",
+    "2014-07-29": "Eid al-Fitr",
+    "2014-07-30": "Eid al-Fitr",
+    "2014-07-31": "Eid al-Fitr",
+    "2014-09-16": "Martyrs' Day",
+    "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-10-23": "Liberation Day",
+    "2014-10-25": "Islamic New Year",
+    "2014-12-24": "Independence Day",
+    "2015-01-03": "Prophet's Birthday",
+    "2015-02-17": "Anniversary of the February 17 Revolution",
+    "2015-05-01": "Labor Day",
+    "2015-07-18": "Eid al-Fitr",
+    "2015-07-19": "Eid al-Fitr",
+    "2015-07-20": "Eid al-Fitr",
+    "2015-09-16": "Martyrs' Day",
+    "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-15": "Islamic New Year",
+    "2015-10-23": "Liberation Day",
+    "2015-12-23": "Prophet's Birthday",
+    "2015-12-24": "Independence Day",
+    "2016-02-17": "Anniversary of the February 17 Revolution",
+    "2016-05-01": "Labor Day",
+    "2016-07-07": "Eid al-Fitr",
+    "2016-07-08": "Eid al-Fitr",
+    "2016-07-09": "Eid al-Fitr",
+    "2016-09-10": "Day of Arafah",
+    "2016-09-11": "Eid al-Adha",
+    "2016-09-12": "Eid al-Adha",
+    "2016-09-13": "Eid al-Adha",
+    "2016-09-16": "Martyrs' Day",
+    "2016-10-03": "Islamic New Year",
+    "2016-10-23": "Liberation Day",
+    "2016-12-12": "Prophet's Birthday",
+    "2016-12-24": "Independence Day",
+    "2017-02-17": "Anniversary of the February 17 Revolution",
+    "2017-05-01": "Labor Day",
+    "2017-06-26": "Eid al-Fitr",
+    "2017-06-27": "Eid al-Fitr",
+    "2017-06-28": "Eid al-Fitr",
+    "2017-08-31": "Day of Arafah",
+    "2017-09-01": "Eid al-Adha",
+    "2017-09-02": "Eid al-Adha",
+    "2017-09-03": "Eid al-Adha",
+    "2017-09-16": "Martyrs' Day",
+    "2017-09-22": "Islamic New Year",
+    "2017-10-23": "Liberation Day",
+    "2017-12-01": "Prophet's Birthday",
+    "2017-12-24": "Independence Day",
+    "2018-02-17": "Anniversary of the February 17 Revolution",
+    "2018-05-01": "Labor Day",
+    "2018-06-15": "Eid al-Fitr",
+    "2018-06-16": "Eid al-Fitr",
+    "2018-06-17": "Eid al-Fitr",
+    "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-12": "Islamic New Year",
+    "2018-09-16": "Martyrs' Day",
+    "2018-10-23": "Liberation Day",
+    "2018-11-21": "Prophet's Birthday",
+    "2018-12-24": "Independence Day",
+    "2019-02-17": "Anniversary of the February 17 Revolution",
+    "2019-05-01": "Labor Day",
+    "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-31": "Islamic New Year",
+    "2019-09-16": "Martyrs' Day",
+    "2019-10-23": "Liberation Day",
+    "2019-11-09": "Prophet's Birthday",
+    "2019-12-24": "Independence Day",
+    "2020-02-17": "Anniversary of the February 17 Revolution",
+    "2020-05-01": "Labor Day",
+    "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-20": "Islamic New Year",
+    "2020-09-16": "Martyrs' Day",
+    "2020-10-23": "Liberation Day",
+    "2020-10-29": "Prophet's Birthday",
+    "2020-12-24": "Independence Day",
+    "2021-02-17": "Anniversary of the February 17 Revolution",
+    "2021-05-01": "Labor Day",
+    "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-10": "Islamic New Year",
+    "2021-09-16": "Martyrs' Day",
+    "2021-10-19": "Prophet's Birthday",
+    "2021-10-23": "Liberation Day",
+    "2021-12-24": "Independence Day",
+    "2022-02-17": "Anniversary of the February 17 Revolution",
+    "2022-05-01": "Labor Day",
+    "2022-05-02": "Eid al-Fitr",
+    "2022-05-03": "Eid al-Fitr",
+    "2022-05-04": "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-07-30": "Islamic New Year",
+    "2022-08-14": "National Environmental Sanitation Day",
+    "2022-09-16": "Martyrs' Day",
+    "2022-10-08": "Prophet's Birthday",
+    "2022-10-23": "Liberation Day",
+    "2022-12-24": "Independence Day",
+    "2023-02-17": "Anniversary of the February 17 Revolution",
+    "2023-04-21": "Eid al-Fitr",
+    "2023-04-22": "Eid al-Fitr",
+    "2023-04-23": "Eid al-Fitr",
+    "2023-05-01": "Labor Day",
+    "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-07-19": "Islamic New Year",
+    "2023-08-14": "National Environmental Sanitation Day",
+    "2023-09-16": "Martyrs' Day",
+    "2023-09-27": "Prophet's Birthday",
+    "2023-10-23": "Liberation Day",
+    "2023-12-10": "Public Holiday",
+    "2023-12-24": "Independence Day",
+    "2024-02-17": "Anniversary of the February 17 Revolution",
+    "2024-04-10": "Eid al-Fitr",
+    "2024-04-11": "Eid al-Fitr",
+    "2024-04-12": "Eid al-Fitr",
+    "2024-05-01": "Labor Day",
+    "2024-06-15": "Day of Arafah",
+    "2024-06-16": "Eid al-Adha",
+    "2024-06-17": "Eid al-Adha",
+    "2024-06-18": "Eid al-Adha",
+    "2024-07-07": "Islamic New Year",
+    "2024-08-14": "National Environmental Sanitation Day",
+    "2024-09-15": "Prophet's Birthday",
+    "2024-09-16": "Martyrs' Day",
+    "2024-10-23": "Liberation Day",
+    "2024-12-24": "Independence Day",
+    "2025-02-17": "Anniversary of the February 17 Revolution",
+    "2025-03-31": "Eid al-Fitr",
+    "2025-04-01": "Eid al-Fitr",
+    "2025-04-02": "Eid al-Fitr",
+    "2025-05-01": "Labor Day",
+    "2025-06-05": "Day of Arafah",
+    "2025-06-06": "Eid al-Adha",
+    "2025-06-07": "Eid al-Adha",
+    "2025-06-08": "Eid al-Adha",
+    "2025-06-26": "Islamic New Year",
+    "2025-08-14": "National Environmental Sanitation Day",
+    "2025-09-04": "Prophet's Birthday (estimated)",
+    "2025-09-16": "Martyrs' Day",
+    "2025-10-23": "Liberation Day",
+    "2025-12-24": "Independence Day",
+    "2026-02-17": "Anniversary of the February 17 Revolution",
+    "2026-03-20": "Eid al-Fitr (estimated)",
+    "2026-03-21": "Eid al-Fitr (estimated)",
+    "2026-03-22": "Eid al-Fitr (estimated)",
+    "2026-05-01": "Labor Day",
+    "2026-05-26": "Day of Arafah (estimated)",
+    "2026-05-27": "Eid al-Adha (estimated)",
+    "2026-05-28": "Eid al-Adha (estimated)",
+    "2026-05-29": "Eid al-Adha (estimated)",
+    "2026-06-16": "Islamic New Year (estimated)",
+    "2026-08-14": "National Environmental Sanitation Day",
+    "2026-08-25": "Prophet's Birthday (estimated)",
+    "2026-09-16": "Martyrs' Day",
+    "2026-10-23": "Liberation Day",
+    "2026-12-24": "Independence Day",
+    "2027-02-17": "Anniversary of the February 17 Revolution",
+    "2027-03-09": "Eid al-Fitr (estimated)",
+    "2027-03-10": "Eid al-Fitr (estimated)",
+    "2027-03-11": "Eid al-Fitr (estimated)",
+    "2027-05-01": "Labor Day",
+    "2027-05-15": "Day of Arafah (estimated)",
+    "2027-05-16": "Eid al-Adha (estimated)",
+    "2027-05-17": "Eid al-Adha (estimated)",
+    "2027-05-18": "Eid al-Adha (estimated)",
+    "2027-06-06": "Islamic New Year (estimated)",
+    "2027-08-14": "National Environmental Sanitation Day; Prophet's Birthday (estimated)",
+    "2027-09-16": "Martyrs' Day",
+    "2027-10-23": "Liberation Day",
+    "2027-12-24": "Independence Day",
+    "2028-02-17": "Anniversary of the February 17 Revolution",
+    "2028-02-26": "Eid al-Fitr (estimated)",
+    "2028-02-27": "Eid al-Fitr (estimated)",
+    "2028-02-28": "Eid al-Fitr (estimated)",
+    "2028-05-01": "Labor Day",
+    "2028-05-04": "Day of Arafah (estimated)",
+    "2028-05-05": "Eid al-Adha (estimated)",
+    "2028-05-06": "Eid al-Adha (estimated)",
+    "2028-05-07": "Eid al-Adha (estimated)",
+    "2028-05-25": "Islamic New Year (estimated)",
+    "2028-08-03": "Prophet's Birthday (estimated)",
+    "2028-08-14": "National Environmental Sanitation Day",
+    "2028-09-16": "Martyrs' Day",
+    "2028-10-23": "Liberation Day",
+    "2028-12-24": "Independence Day",
+    "2029-02-14": "Eid al-Fitr (estimated)",
+    "2029-02-15": "Eid al-Fitr (estimated)",
+    "2029-02-16": "Eid al-Fitr (estimated)",
+    "2029-02-17": "Anniversary of the February 17 Revolution",
+    "2029-04-23": "Day of Arafah (estimated)",
+    "2029-04-24": "Eid al-Adha (estimated)",
+    "2029-04-25": "Eid al-Adha (estimated)",
+    "2029-04-26": "Eid al-Adha (estimated)",
+    "2029-05-01": "Labor Day",
+    "2029-05-14": "Islamic New Year (estimated)",
+    "2029-07-24": "Prophet's Birthday (estimated)",
+    "2029-08-14": "National Environmental Sanitation Day",
+    "2029-09-16": "Martyrs' Day",
+    "2029-10-23": "Liberation Day",
+    "2029-12-24": "Independence Day",
+    "2030-02-04": "Eid al-Fitr (estimated)",
+    "2030-02-05": "Eid al-Fitr (estimated)",
+    "2030-02-06": "Eid al-Fitr (estimated)",
+    "2030-02-17": "Anniversary of the February 17 Revolution",
+    "2030-04-12": "Day of Arafah (estimated)",
+    "2030-04-13": "Eid al-Adha (estimated)",
+    "2030-04-14": "Eid al-Adha (estimated)",
+    "2030-04-15": "Eid al-Adha (estimated)",
+    "2030-05-01": "Labor Day",
+    "2030-05-03": "Islamic New Year (estimated)",
+    "2030-07-13": "Prophet's Birthday (estimated)",
+    "2030-08-14": "National Environmental Sanitation Day",
+    "2030-09-16": "Martyrs' Day",
+    "2030-10-23": "Liberation Day",
+    "2030-12-24": "Independence Day",
+    "2031-01-24": "Eid al-Fitr (estimated)",
+    "2031-01-25": "Eid al-Fitr (estimated)",
+    "2031-01-26": "Eid al-Fitr (estimated)",
+    "2031-02-17": "Anniversary of the February 17 Revolution",
+    "2031-04-01": "Day of Arafah (estimated)",
+    "2031-04-02": "Eid al-Adha (estimated)",
+    "2031-04-03": "Eid al-Adha (estimated)",
+    "2031-04-04": "Eid al-Adha (estimated)",
+    "2031-04-23": "Islamic New Year (estimated)",
+    "2031-05-01": "Labor Day",
+    "2031-07-02": "Prophet's Birthday (estimated)",
+    "2031-08-14": "National Environmental Sanitation Day",
+    "2031-09-16": "Martyrs' Day",
+    "2031-10-23": "Liberation Day",
+    "2031-12-24": "Independence Day",
+    "2032-01-14": "Eid al-Fitr (estimated)",
+    "2032-01-15": "Eid al-Fitr (estimated)",
+    "2032-01-16": "Eid al-Fitr (estimated)",
+    "2032-02-17": "Anniversary of the February 17 Revolution",
+    "2032-03-21": "Day of Arafah (estimated)",
+    "2032-03-22": "Eid al-Adha (estimated)",
+    "2032-03-23": "Eid al-Adha (estimated)",
+    "2032-03-24": "Eid al-Adha (estimated)",
+    "2032-04-11": "Islamic New Year (estimated)",
+    "2032-05-01": "Labor Day",
+    "2032-06-20": "Prophet's Birthday (estimated)",
+    "2032-08-14": "National Environmental Sanitation Day",
+    "2032-09-16": "Martyrs' Day",
+    "2032-10-23": "Liberation Day",
+    "2032-12-24": "Independence Day",
+    "2033-01-02": "Eid al-Fitr (estimated)",
+    "2033-01-03": "Eid al-Fitr (estimated)",
+    "2033-01-04": "Eid al-Fitr (estimated)",
+    "2033-02-17": "Anniversary of the February 17 Revolution",
+    "2033-03-10": "Day of Arafah (estimated)",
+    "2033-03-11": "Eid al-Adha (estimated)",
+    "2033-03-12": "Eid al-Adha (estimated)",
+    "2033-03-13": "Eid al-Adha (estimated)",
+    "2033-04-01": "Islamic New Year (estimated)",
+    "2033-05-01": "Labor Day",
+    "2033-06-09": "Prophet's Birthday (estimated)",
+    "2033-08-14": "National Environmental Sanitation Day",
+    "2033-09-16": "Martyrs' Day",
+    "2033-10-23": "Liberation Day",
+    "2033-12-23": "Eid al-Fitr (estimated)",
+    "2033-12-24": "Eid al-Fitr (estimated); Independence Day",
+    "2033-12-25": "Eid al-Fitr (estimated)",
+    "2034-02-17": "Anniversary of the February 17 Revolution",
+    "2034-02-28": "Day of Arafah (estimated)",
+    "2034-03-01": "Eid al-Adha (estimated)",
+    "2034-03-02": "Eid al-Adha (estimated)",
+    "2034-03-03": "Eid al-Adha (estimated)",
+    "2034-03-21": "Islamic New Year (estimated)",
+    "2034-05-01": "Labor Day",
+    "2034-05-30": "Prophet's Birthday (estimated)",
+    "2034-08-14": "National Environmental Sanitation Day",
+    "2034-09-16": "Martyrs' Day",
+    "2034-10-23": "Liberation Day",
+    "2034-12-12": "Eid al-Fitr (estimated)",
+    "2034-12-13": "Eid al-Fitr (estimated)",
+    "2034-12-14": "Eid al-Fitr (estimated)",
+    "2034-12-24": "Independence Day",
+    "2035-02-17": "Anniversary of the February 17 Revolution; Day of Arafah (estimated)",
+    "2035-02-18": "Eid al-Adha (estimated)",
+    "2035-02-19": "Eid al-Adha (estimated)",
+    "2035-02-20": "Eid al-Adha (estimated)",
+    "2035-03-11": "Islamic New Year (estimated)",
+    "2035-05-01": "Labor Day",
+    "2035-05-20": "Prophet's Birthday (estimated)",
+    "2035-08-14": "National Environmental Sanitation Day",
+    "2035-09-16": "Martyrs' Day",
+    "2035-10-23": "Liberation Day",
+    "2035-12-01": "Eid al-Fitr (estimated)",
+    "2035-12-02": "Eid al-Fitr (estimated)",
+    "2035-12-03": "Eid al-Fitr (estimated)",
+    "2035-12-24": "Independence Day",
+    "2036-02-06": "Day of Arafah (estimated)",
+    "2036-02-07": "Eid al-Adha (estimated)",
+    "2036-02-08": "Eid al-Adha (estimated)",
+    "2036-02-09": "Eid al-Adha (estimated)",
+    "2036-02-17": "Anniversary of the February 17 Revolution",
+    "2036-02-28": "Islamic New Year (estimated)",
+    "2036-05-01": "Labor Day",
+    "2036-05-08": "Prophet's Birthday (estimated)",
+    "2036-08-14": "National Environmental Sanitation Day",
+    "2036-09-16": "Martyrs' Day",
+    "2036-10-23": "Liberation Day",
+    "2036-11-19": "Eid al-Fitr (estimated)",
+    "2036-11-20": "Eid al-Fitr (estimated)",
+    "2036-11-21": "Eid al-Fitr (estimated)",
+    "2036-12-24": "Independence Day",
+    "2037-01-25": "Day of Arafah (estimated)",
+    "2037-01-26": "Eid al-Adha (estimated)",
+    "2037-01-27": "Eid al-Adha (estimated)",
+    "2037-01-28": "Eid al-Adha (estimated)",
+    "2037-02-16": "Islamic New Year (estimated)",
+    "2037-02-17": "Anniversary of the February 17 Revolution",
+    "2037-04-28": "Prophet's Birthday (estimated)",
+    "2037-05-01": "Labor Day",
+    "2037-08-14": "National Environmental Sanitation Day",
+    "2037-09-16": "Martyrs' Day",
+    "2037-10-23": "Liberation Day",
+    "2037-11-08": "Eid al-Fitr (estimated)",
+    "2037-11-09": "Eid al-Fitr (estimated)",
+    "2037-11-10": "Eid al-Fitr (estimated)",
+    "2037-12-24": "Independence Day",
+    "2038-01-15": "Day of Arafah (estimated)",
+    "2038-01-16": "Eid al-Adha (estimated)",
+    "2038-01-17": "Eid al-Adha (estimated)",
+    "2038-01-18": "Eid al-Adha (estimated)",
+    "2038-02-05": "Islamic New Year (estimated)",
+    "2038-02-17": "Anniversary of the February 17 Revolution",
+    "2038-04-17": "Prophet's Birthday (estimated)",
+    "2038-05-01": "Labor Day",
+    "2038-08-14": "National Environmental Sanitation Day",
+    "2038-09-16": "Martyrs' Day",
+    "2038-10-23": "Liberation Day",
+    "2038-10-29": "Eid al-Fitr (estimated)",
+    "2038-10-30": "Eid al-Fitr (estimated)",
+    "2038-10-31": "Eid al-Fitr (estimated)",
+    "2038-12-24": "Independence Day",
+    "2039-01-04": "Day of Arafah (estimated)",
+    "2039-01-05": "Eid al-Adha (estimated)",
+    "2039-01-06": "Eid al-Adha (estimated)",
+    "2039-01-07": "Eid al-Adha (estimated)",
+    "2039-01-26": "Islamic New Year (estimated)",
+    "2039-02-17": "Anniversary of the February 17 Revolution",
+    "2039-04-06": "Prophet's Birthday (estimated)",
+    "2039-05-01": "Labor Day",
+    "2039-08-14": "National Environmental Sanitation Day",
+    "2039-09-16": "Martyrs' Day",
+    "2039-10-19": "Eid al-Fitr (estimated)",
+    "2039-10-20": "Eid al-Fitr (estimated)",
+    "2039-10-21": "Eid al-Fitr (estimated)",
+    "2039-10-23": "Liberation Day",
+    "2039-12-24": "Independence Day",
+    "2039-12-25": "Day of Arafah (estimated)",
+    "2039-12-26": "Eid al-Adha (estimated)",
+    "2039-12-27": "Eid al-Adha (estimated)",
+    "2039-12-28": "Eid al-Adha (estimated)",
+    "2040-01-15": "Islamic New Year (estimated)",
+    "2040-02-17": "Anniversary of the February 17 Revolution",
+    "2040-03-25": "Prophet's Birthday (estimated)",
+    "2040-05-01": "Labor Day",
+    "2040-08-14": "National Environmental Sanitation Day",
+    "2040-09-16": "Martyrs' Day",
+    "2040-10-07": "Eid al-Fitr (estimated)",
+    "2040-10-08": "Eid al-Fitr (estimated)",
+    "2040-10-09": "Eid al-Fitr (estimated)",
+    "2040-10-23": "Liberation Day",
+    "2040-12-13": "Day of Arafah (estimated)",
+    "2040-12-14": "Eid al-Adha (estimated)",
+    "2040-12-15": "Eid al-Adha (estimated)",
+    "2040-12-16": "Eid al-Adha (estimated)",
+    "2040-12-24": "Independence Day",
+    "2041-01-04": "Islamic New Year (estimated)",
+    "2041-02-17": "Anniversary of the February 17 Revolution",
+    "2041-03-15": "Prophet's Birthday (estimated)",
+    "2041-05-01": "Labor Day",
+    "2041-08-14": "National Environmental Sanitation Day",
+    "2041-09-16": "Martyrs' Day",
+    "2041-09-26": "Eid al-Fitr (estimated)",
+    "2041-09-27": "Eid al-Fitr (estimated)",
+    "2041-09-28": "Eid al-Fitr (estimated)",
+    "2041-10-23": "Liberation Day",
+    "2041-12-03": "Day of Arafah (estimated)",
+    "2041-12-04": "Eid al-Adha (estimated)",
+    "2041-12-05": "Eid al-Adha (estimated)",
+    "2041-12-06": "Eid al-Adha (estimated)",
+    "2041-12-24": "Independence Day; Islamic New Year (estimated)",
+    "2042-02-17": "Anniversary of the February 17 Revolution",
+    "2042-03-04": "Prophet's Birthday (estimated)",
+    "2042-05-01": "Labor Day",
+    "2042-08-14": "National Environmental Sanitation Day",
+    "2042-09-15": "Eid al-Fitr (estimated)",
+    "2042-09-16": "Eid al-Fitr (estimated); Martyrs' Day",
+    "2042-09-17": "Eid al-Fitr (estimated)",
+    "2042-10-23": "Liberation Day",
+    "2042-11-22": "Day of Arafah (estimated)",
+    "2042-11-23": "Eid al-Adha (estimated)",
+    "2042-11-24": "Eid al-Adha (estimated)",
+    "2042-11-25": "Eid al-Adha (estimated)",
+    "2042-12-14": "Islamic New Year (estimated)",
+    "2042-12-24": "Independence Day",
+    "2043-02-17": "Anniversary of the February 17 Revolution",
+    "2043-02-22": "Prophet's Birthday (estimated)",
+    "2043-05-01": "Labor Day",
+    "2043-08-14": "National Environmental Sanitation Day",
+    "2043-09-04": "Eid al-Fitr (estimated)",
+    "2043-09-05": "Eid al-Fitr (estimated)",
+    "2043-09-06": "Eid al-Fitr (estimated)",
+    "2043-09-16": "Martyrs' Day",
+    "2043-10-23": "Liberation 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-03": "Islamic New Year (estimated)",
+    "2043-12-24": "Independence Day",
+    "2044-02-11": "Prophet's Birthday (estimated)",
+    "2044-02-17": "Anniversary of the February 17 Revolution",
+    "2044-05-01": "Labor Day",
+    "2044-08-14": "National Environmental Sanitation Day",
+    "2044-08-24": "Eid al-Fitr (estimated)",
+    "2044-08-25": "Eid al-Fitr (estimated)",
+    "2044-08-26": "Eid al-Fitr (estimated)",
+    "2044-09-16": "Martyrs' Day",
+    "2044-10-23": "Liberation 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-21": "Islamic New Year (estimated)",
+    "2044-12-24": "Independence Day",
+    "2045-01-30": "Prophet's Birthday (estimated)",
+    "2045-02-17": "Anniversary of the February 17 Revolution",
+    "2045-05-01": "Labor Day",
+    "2045-08-14": "Eid al-Fitr (estimated); National Environmental Sanitation Day",
+    "2045-08-15": "Eid al-Fitr (estimated)",
+    "2045-08-16": "Eid al-Fitr (estimated)",
+    "2045-09-16": "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); Liberation Day",
+    "2045-11-10": "Islamic New Year (estimated)",
+    "2045-12-24": "Independence Day",
+    "2046-01-19": "Prophet's Birthday (estimated)",
+    "2046-02-17": "Anniversary of the February 17 Revolution",
+    "2046-05-01": "Labor Day",
+    "2046-08-03": "Eid al-Fitr (estimated)",
+    "2046-08-04": "Eid al-Fitr (estimated)",
+    "2046-08-05": "Eid al-Fitr (estimated)",
+    "2046-08-14": "National Environmental Sanitation Day",
+    "2046-09-16": "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-10-23": "Liberation Day",
+    "2046-10-31": "Islamic New Year (estimated)",
+    "2046-12-24": "Independence Day",
+    "2047-01-08": "Prophet's Birthday (estimated)",
+    "2047-02-17": "Anniversary of the February 17 Revolution",
+    "2047-05-01": "Labor Day",
+    "2047-07-24": "Eid al-Fitr (estimated)",
+    "2047-07-25": "Eid al-Fitr (estimated)",
+    "2047-07-26": "Eid al-Fitr (estimated)",
+    "2047-08-14": "National Environmental Sanitation Day",
+    "2047-09-16": "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-20": "Islamic New Year (estimated)",
+    "2047-10-23": "Liberation Day",
+    "2047-12-24": "Independence Day",
+    "2047-12-29": "Prophet's Birthday (estimated)",
+    "2048-02-17": "Anniversary of the February 17 Revolution",
+    "2048-05-01": "Labor Day",
+    "2048-07-12": "Eid al-Fitr (estimated)",
+    "2048-07-13": "Eid al-Fitr (estimated)",
+    "2048-07-14": "Eid al-Fitr (estimated)",
+    "2048-08-14": "National Environmental Sanitation Day",
+    "2048-09-16": "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-09": "Islamic New Year (estimated)",
+    "2048-10-23": "Liberation Day",
+    "2048-12-18": "Prophet's Birthday (estimated)",
+    "2048-12-24": "Independence Day",
+    "2049-02-17": "Anniversary of the February 17 Revolution",
+    "2049-05-01": "Labor Day",
+    "2049-07-01": "Eid al-Fitr (estimated)",
+    "2049-07-02": "Eid al-Fitr (estimated)",
+    "2049-07-03": "Eid al-Fitr (estimated)",
+    "2049-08-14": "National Environmental Sanitation Day",
+    "2049-09-07": "Day of Arafah (estimated)",
+    "2049-09-08": "Eid al-Adha (estimated)",
+    "2049-09-09": "Eid al-Adha (estimated)",
+    "2049-09-10": "Eid al-Adha (estimated)",
+    "2049-09-16": "Martyrs' Day",
+    "2049-09-28": "Islamic New Year (estimated)",
+    "2049-10-23": "Liberation Day",
+    "2049-12-07": "Prophet's Birthday (estimated)",
+    "2049-12-24": "Independence Day",
+    "2050-02-17": "Anniversary of the February 17 Revolution",
+    "2050-05-01": "Labor Day",
+    "2050-06-20": "Eid al-Fitr (estimated)",
+    "2050-06-21": "Eid al-Fitr (estimated)",
+    "2050-06-22": "Eid al-Fitr (estimated)",
+    "2050-08-14": "National Environmental Sanitation 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-09-16": "Martyrs' Day",
+    "2050-09-17": "Islamic New Year (estimated)",
+    "2050-10-23": "Liberation Day",
+    "2050-11-26": "Prophet's Birthday (estimated)",
+    "2050-12-24": "Independence Day"
+}


Test patch:
diff --git a/tests/countries/test_hungary.py b/tests/countries/test_hungary.py
index 22429d1c..b38fc6f2 100644
--- a/tests/countries/test_hungary.py
+++ b/tests/countries/test_hungary.py
@@ -13,10 +13,10 @@
 from unittest import TestCase
 
 from holidays.countries.hungary import Hungary, HU, HUN
-from tests.common import CommonCountryTests
+from tests.common import CommonCountryTests, WorkingDayTests
 
 
-class TestHungary(CommonCountryTests, TestCase):
+class TestHungary(CommonCountryTests, WorkingDayTests, TestCase):
     @classmethod
     def setUpClass(cls):
         super().setUpClass(Hungary, years=range(1945, 2050))
@@ -24,6 +24,181 @@ class TestHungary(CommonCountryTests, TestCase):
     def test_country_aliases(self):
         self.assertAliases(Hungary, HU, HUN)
 
+    def test_no_holidays(self):
+        self.assertNoHolidays(Hungary(years=1944))
+
+    def test_substituted_holidays(self):
+        self.assertHoliday(
+            "1991-08-19",
+            "1992-08-21",
+            "1992-12-24",
+            "1993-12-24",
+            "1994-03-14",
+            "1997-05-02",
+            "1997-10-24",
+            "1997-12-24",
+            "1998-01-02",
+            "1998-08-21",
+            "1998-12-24",
+            "1999-12-24",
+            "2001-03-16",
+            "2001-04-30",
+            "2001-10-22",
+            "2001-11-02",
+            "2001-12-24",
+            "2001-12-31",
+            "2002-08-19",
+            "2002-12-24",
+            "2003-05-02",
+            "2003-10-24",
+            "2003-12-24",
+            "2004-01-02",
+            "2004-12-24",
+            "2005-03-14",
+            "2005-10-31",
+            "2007-03-16",
+            "2007-04-30",
+            "2007-10-22",
+            "2007-11-02",
+            "2007-12-24",
+            "2007-12-31",
+            "2008-05-02",
+            "2008-10-24",
+            "2008-12-24",
+            "2009-01-02",
+            "2009-08-21",
+            "2009-12-24",
+            "2010-12-24",
+            "2011-03-14",
+            "2011-10-31",
+            "2012-03-16",
+            "2012-04-30",
+            "2012-10-22",
+            "2012-11-02",
+            "2012-12-24",
+            "2012-12-31",
+            "2013-08-19",
+            "2013-12-24",
+            "2013-12-27",
+            "2014-05-02",
+            "2014-10-24",
+            "2014-12-24",
+            "2015-01-02",
+            "2015-08-21",
+            "2015-12-24",
+            "2016-03-14",
+            "2016-10-31",
+            "2018-03-16",
+            "2018-04-30",
+            "2018-10-22",
+            "2018-11-02",
+            "2018-12-24",
+            "2018-12-31",
+            "2019-08-19",
+            "2019-12-24",
+            "2019-12-27",
+            "2020-08-21",
+            "2020-12-24",
+            "2021-12-24",
+            "2022-03-14",
+            "2022-10-31",
+            "2024-08-19",
+            "2024-12-24",
+            "2024-12-27",
+            "2025-05-02",
+            "2025-10-24",
+            "2025-12-24",
+            "2026-01-02",
+            "2026-08-21",
+            "2026-12-24",
+        )
+
+    def test_workdays(self):
+        self.assertWorkingDay(
+            "1991-08-17",
+            "1992-08-29",
+            "1992-12-19",
+            "1993-12-18",
+            "1994-03-12",
+            "1997-04-26",
+            "1997-10-18",
+            "1997-12-20",
+            "1998-01-10",
+            "1998-08-15",
+            "1998-12-19",
+            "1999-12-18",
+            "2001-03-10",
+            "2001-04-28",
+            "2001-10-20",
+            "2001-10-27",
+            "2001-12-22",
+            "2001-12-29",
+            "2002-08-10",
+            "2002-12-28",
+            "2003-04-26",
+            "2003-10-18",
+            "2003-12-13",
+            "2004-01-10",
+            "2004-12-18",
+            "2005-03-19",
+            "2005-11-05",
+            "2007-03-10",
+            "2007-04-21",
+            "2007-10-20",
+            "2007-10-27",
+            "2007-12-22",
+            "2007-12-29",
+            "2008-04-26",
+            "2008-10-18",
+            "2008-12-20",
+            "2009-03-28",
+            "2009-08-29",
+            "2009-12-19",
+            "2010-12-11",
+            "2011-03-19",
+            "2011-11-05",
+            "2012-03-24",
+            "2012-04-21",
+            "2012-10-27",
+            "2012-11-10",
+            "2012-12-15",
+            "2012-12-01",
+            "2013-08-24",
+            "2013-12-07",
+            "2013-12-21",
+            "2014-05-10",
+            "2014-10-18",
+            "2014-12-13",
+            "2015-01-10",
+            "2015-08-08",
+            "2015-12-12",
+            "2016-03-05",
+            "2016-10-15",
+            "2018-03-10",
+            "2018-04-21",
+            "2018-10-13",
+            "2018-11-10",
+            "2018-12-01",
+            "2018-12-15",
+            "2019-08-10",
+            "2019-12-07",
+            "2019-12-14",
+            "2020-08-29",
+            "2020-12-12",
+            "2021-12-11",
+            "2022-03-26",
+            "2022-10-15",
+            "2024-08-03",
+            "2024-12-07",
+            "2024-12-14",
+            "2025-05-17",
+            "2025-10-18",
+            "2025-12-13",
+            "2026-01-10",
+            "2026-08-08",
+            "2026-12-12",
+        )
+
     def test_new_years_day(self):
         self.assertHolidayName("Újév", (f"{year}-01-01" for year in range(1945, 2050)))
 
@@ -48,6 +223,7 @@ class TestHungary(CommonCountryTests, TestCase):
             "2022-04-15",
             "2023-04-07",
         )
+        self.assertHolidayName(name, range(2017, 2050))
         self.assertNoHolidayName(name, range(1945, 2017))
 
     def test_easter(self):
@@ -182,93 +358,6 @@ class TestHungary(CommonCountryTests, TestCase):
         self.assertNoHoliday(f"{year}-11-07" for year in years_absent)
         self.assertNoHolidayName(name, years_absent)
 
-    def test_substituted(self):
-        dt = (
-            "1991-08-19",
-            "1992-08-21",
-            "1992-12-24",
-            "1993-12-24",
-            "1994-03-14",
-            "1997-05-02",
-            "1997-10-24",
-            "1997-12-24",
-            "1998-01-02",
-            "1998-08-21",
-            "1998-12-24",
-            "1999-12-24",
-            "2001-03-16",
-            "2001-04-30",
-            "2001-10-22",
-            "2001-11-02",
-            "2001-12-24",
-            "2001-12-31",
-            "2002-08-19",
-            "2002-12-24",
-            "2003-05-02",
-            "2003-10-24",
-            "2003-12-24",
-            "2004-01-02",
-            "2004-12-24",
-            "2005-03-14",
-            "2005-10-31",
-            "2007-03-16",
-            "2007-04-30",
-            "2007-10-22",
-            "2007-11-02",
-            "2007-12-24",
-            "2007-12-31",
-            "2008-05-02",
-            "2008-10-24",
-            "2008-12-24",
-            "2009-01-02",
-            "2009-08-21",
-            "2009-12-24",
-            "2010-12-24",
-            "2011-03-14",
-            "2011-10-31",
-            "2012-03-16",
-            "2012-04-30",
-            "2012-10-22",
-            "2012-11-02",
-            "2012-12-24",
-            "2012-12-31",
-            "2013-08-19",
-            "2013-12-24",
-            "2013-12-27",
-            "2014-05-02",
-            "2014-10-24",
-            "2014-12-24",
-            "2015-01-02",
-            "2015-08-21",
-            "2015-12-24",
-            "2016-03-14",
-            "2016-10-31",
-            "2018-03-16",
-            "2018-04-30",
-            "2018-10-22",
-            "2018-11-02",
-            "2018-12-24",
-            "2018-12-31",
-            "2019-08-19",
-            "2019-12-24",
-            "2019-12-27",
-            "2020-08-21",
-            "2020-12-24",
-            "2021-12-24",
-            "2022-03-14",
-            "2022-10-31",
-            "2024-08-19",
-            "2024-12-24",
-            "2024-12-27",
-            "2025-05-02",
-            "2025-10-24",
-            "2025-12-24",
-            "2026-01-02",
-            "2026-08-21",
-            "2026-12-24",
-        )
-        self.assertHoliday(dt)
-
     def test_2021(self):
         self.assertHolidays(
             Hungary(years=2021),
diff --git a/tests/countries/test_kazakhstan.py b/tests/countries/test_kazakhstan.py
index dbcda77f..c0299b50 100644
--- a/tests/countries/test_kazakhstan.py
+++ b/tests/countries/test_kazakhstan.py
@@ -27,6 +27,125 @@ class TestKazakhstan(CommonCountryTests, WorkingDayTests, TestCase):
     def test_no_holidays(self):
         self.assertNoHolidays(Kazakhstan(years=1990))
 
+    def test_substituted_holidays(self):
+        self.assertHoliday(
+            "2000-05-08",
+            "2001-03-09",
+            "2001-03-23",
+            "2001-04-30",
+            "2001-12-31",
+            "2002-05-10",
+            "2003-05-02",
+            "2003-12-15",
+            "2005-03-07",
+            "2005-03-21",
+            "2005-08-29",
+            "2005-10-24",
+            "2006-01-11",
+            "2006-05-08",
+            "2007-03-09",
+            "2007-03-23",
+            "2007-08-31",
+            "2007-10-26",
+            "2007-12-31",
+            "2008-05-02",
+            "2009-12-18",
+            "2010-01-08",
+            "2010-07-05",
+            "2011-03-07",
+            "2011-08-29",
+            "2012-03-09",
+            "2012-04-30",
+            "2012-12-31",
+            "2013-05-10",
+            "2013-10-14",
+            "2014-01-03",
+            "2014-05-02",
+            "2014-05-08",
+            "2016-03-07",
+            "2017-03-20",
+            "2017-07-07",
+            "2018-03-09",
+            "2018-04-30",
+            "2018-05-08",
+            "2018-08-31",
+            "2018-12-31",
+            "2019-05-10",
+            "2020-01-03",
+            "2020-12-18",
+            "2021-07-05",
+            "2022-03-07",
+            "2022-08-29",
+            "2022-10-24",
+            "2023-07-07",
+            "2024-05-08",
+            "2025-01-03",
+        )
+
+    def test_workdays(self):
+        self.assertWorkingDay(
+            "2000-05-06",
+            "2001-03-11",
+            "2001-03-25",
+            "2001-04-28",
+            "2001-12-29",
+            "2002-05-12",
+            "2003-05-04",
+            "2003-12-13",
+            "2005-03-05",
+            "2005-03-19",
+            "2005-08-27",
+            "2005-10-22",
+            "2006-01-14",
+            "2006-05-06",
+            "2007-03-11",
+            "2007-03-25",
+            "2007-09-02",
+            "2007-10-28",
+            "2007-12-29",
+            "2008-05-04",
+            "2009-12-20",
+            "2010-01-10",
+            "2010-07-03",
+            "2011-03-05",
+            "2011-08-27",
+            "2012-03-11",
+            "2012-04-28",
+            "2012-12-29",
+            "2013-05-04",
+            "2013-10-12",
+            "2013-12-28",
+            "2014-05-04",
+            "2014-05-11",
+            "2016-03-05",
+            "2017-03-18",
+            "2017-07-01",
+            "2018-03-03",
+            "2018-04-28",
+            "2018-05-05",
+            "2018-08-25",
+            "2018-12-29",
+            "2019-05-04",
+            "2020-01-05",
+            "2020-12-20",
+            "2021-07-03",
+            "2022-03-05",
+            "2022-08-27",
+            "2022-10-22",
+            "2023-07-01",
+            "2024-05-04",
+            "2025-01-05",
+        )
+
+        for year, dts in {
+            2013: (
+                "2013-05-04",
+                "2013-10-12",
+                "2013-12-28",
+            ),
+        }.items():
+            self.assertWorkingDay(Kazakhstan(years=year), dts)
+
     def test_new_year(self):
         name = "Жаңа жыл"
         self.assertHolidayName(name, (f"{year}-01-01" for year in range(1991, 2050)))
@@ -187,125 +306,6 @@ class TestKazakhstan(CommonCountryTests, WorkingDayTests, TestCase):
         self.assertHoliday(observed_holidays)
         self.assertNoNonObservedHoliday(observed_holidays)
 
-    def test_substituted_holidays(self):
-        self.assertHoliday(
-            "2000-05-08",
-            "2001-03-09",
-            "2001-03-23",
-            "2001-04-30",
-            "2001-12-31",
-            "2002-05-10",
-            "2003-05-02",
-            "2003-12-15",
-            "2005-03-07",
-            "2005-03-21",
-            "2005-08-29",
-            "2005-10-24",
-            "2006-01-11",
-            "2006-05-08",
-            "2007-03-09",
-            "2007-03-23",
-            "2007-08-31",
-            "2007-10-26",
-            "2007-12-31",
-            "2008-05-02",
-            "2009-12-18",
-            "2010-01-08",
-            "2010-07-05",
-            "2011-03-07",
-            "2011-08-29",
-            "2012-03-09",
-            "2012-04-30",
-            "2012-12-31",
-            "2013-05-10",
-            "2013-10-14",
-            "2014-01-03",
-            "2014-05-02",
-            "2014-05-08",
-            "2016-03-07",
-            "2017-03-20",
-            "2017-07-07",
-            "2018-03-09",
-            "2018-04-30",
-            "2018-05-08",
-            "2018-08-31",
-            "2018-12-31",
-            "2019-05-10",
-            "2020-01-03",
-            "2020-12-18",
-            "2021-07-05",
-            "2022-03-07",
-            "2022-08-29",
-            "2022-10-24",
-            "2023-07-07",
-            "2024-05-08",
-            "2025-01-03",
-        )
-
-    def test_workdays(self):
-        self.assertWorkingDay(
-            "2000-05-06",
-            "2001-03-11",
-            "2001-03-25",
-            "2001-04-28",
-            "2001-12-29",
-            "2002-05-12",
-            "2003-05-04",
-            "2003-12-13",
-            "2005-03-05",
-            "2005-03-19",
-            "2005-08-27",
-            "2005-10-22",
-            "2006-01-14",
-            "2006-05-06",
-            "2007-03-11",
-            "2007-03-25",
-            "2007-09-02",
-            "2007-10-28",
-            "2007-12-29",
-            "2008-05-04",
-            "2009-12-20",
-            "2010-01-10",
-            "2010-07-03",
-            "2011-03-05",
-            "2011-08-27",
-            "2012-03-11",
-            "2012-04-28",
-            "2012-12-29",
-            "2013-05-04",
-            "2013-10-12",
-            "2013-12-28",
-            "2014-05-04",
-            "2014-05-11",
-            "2016-03-05",
-            "2017-03-18",
-            "2017-07-01",
-            "2018-03-03",
-            "2018-04-28",
-            "2018-05-05",
-            "2018-08-25",
-            "2018-12-29",
-            "2019-05-04",
-            "2020-01-05",
-            "2020-12-20",
-            "2021-07-03",
-            "2022-03-05",
-            "2022-08-27",
-            "2022-10-22",
-            "2023-07-01",
-            "2024-05-04",
-            "2025-01-05",
-        )
-
-        for year, dts in {
-            2013: (
-                "2013-05-04",
-                "2013-10-12",
-                "2013-12-28",
-            ),
-        }.items():
-            self.assertWorkingDay(Kazakhstan(years=year), dts)
-
     def test2022(self):
         self.assertHolidays(
             Kazakhstan(years=2022),
diff --git a/tests/countries/test_libya.py b/tests/countries/test_libya.py
new file mode 100644
index 00000000..88b6e318
--- /dev/null
+++ b/tests/countries/test_libya.py
@@ -0,0 +1,293 @@
+#  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 <dr.prodigy.github@gmail.com> (c) 2017-2023
+#           ryanss <ryanssdev@icloud.com> (c) 2014-2017
+#  Website: https://github.com/vacanza/holidays
+#  License: MIT (see LICENSE file)
+
+from unittest import TestCase
+
+from holidays.constants import WORKDAY
+from holidays.countries.libya import Libya, LY, LBY
+from tests.common import CommonCountryTests
+
+
+class TestLibya(CommonCountryTests, TestCase):
+    @classmethod
+    def setUpClass(cls):
+        years = range(1988, 2050)
+        super().setUpClass(Libya, years=years)
+        cls.workday_holidays = Libya(years=years, categories=WORKDAY, islamic_show_estimated=False)
+        cls.no_estimated_holidays = Libya(years=years, islamic_show_estimated=False)
+
+    def test_country_aliases(self):
+        self.assertAliases(Libya, LY, LBY)
+
+    def test_no_holidays(self):
+        self.assertNoHolidays(Libya(years=1987))
+
+    def test_special_holidays(self):
+        self.assertHolidayName("عطلة رسمية", "2023-12-10")
+
+    def test_peoples_authority_day(self):
+        name = "عید إعلان سلطة الشعب"
+        self.assertHolidayName(name, (f"{year}-03-02" for year in range(1988, 2012)))
+        self.assertNoHolidayName(name, range(2012, 2050))
+
+    def test_american_forces_evacuation_day(self):
+        name = "عيد إجلاء القوات الأمريكية"
+        self.assertHolidayName(name, (f"{year}-06-11" for year in range(1988, 2012)))
+        self.assertNoHolidayName(name, range(2012, 2050))
+
+    def test_glorious_july_revolution_day(self):
+        name = "عيد ثورة يوليو المجيدة"
+        self.assertHolidayName(name, (f"{year}-07-23" for year in range(1988, 2012)))
+        self.assertNoHolidayName(name, range(2012, 2050))
+
+    def test_great_al_fateh_day(self):
+        name = "عيد الفاتح العظيم"
+        self.assertHolidayName(name, (f"{year}-09-01" for year in range(1988, 2012)))
+        self.assertNoHolidayName(name, range(2012, 2050))
+
+    def test_anniversary_of_the_february_17_revolution(self):
+        name = "ثورة 17 فبراير"
+        self.assertHolidayName(name, (f"{year}-02-17" for year in range(2012, 2050)))
+        self.assertNoHolidayName(name, range(1988, 2012))
+
+    def test_labor_day(self):
+        name = "عيد العمال"
+        self.assertHolidayName(name, (f"{year}-05-01" for year in range(2012, 2050)))
+        self.assertNoHolidayName(name, range(1988, 2012))
+
+    def test_national_environmental_sanitation_day(self):
+        name = "يوم وطني للإصحاح البيئي"
+        self.assertHolidayName(name, (f"{year}-08-14" for year in range(2022, 2050)))
+        self.assertNoHolidayName(name, range(1988, 2022))
+
+    def test_martyrs_day(self):
+        name = "يوم الشهيد"
+        self.assertHolidayName(name, (f"{year}-09-16" for year in range(2012, 2050)))
+        self.assertNoHolidayName(name, range(1988, 2012))
+
+    def test_liberation_day(self):
+        name = "يوم التحرير"
+        self.assertHolidayName(name, (f"{year}-10-23" for year in range(2012, 2050)))
+        self.assertNoHolidayName(name, range(1988, 2012))
+
+    def test_independence_day(self):
+        name = "عيد الاستقلال"
+        self.assertHolidayName(name, (f"{year}-12-24" for year in range(2012, 2050)))
+        self.assertNoHolidayName(name, range(1988, 2012))
+
+    def test_islamic_new_year(self):
+        name = "عيد رأس السنة الهجرية"
+        self.assertHolidayName(
+            name,
+            "2021-08-10",
+            "2022-07-30",
+            "2023-07-19",
+            "2024-07-07",
+            "2025-06-26",
+        )
+        self.assertHolidayName(name, self.no_estimated_holidays, range(2012, 2050))
+        self.assertNoHolidayName(name, self.no_estimated_holidays, range(1988, 2012))
+        self.assertHolidayName(name, self.workday_holidays, range(1988, 2012))
+        self.assertNoHolidayName(name, self.workday_holidays, range(2012, 2050))
+
+    def test_prophets_birthday(self):
+        name = "ذكرى المولد النبوي الشريف"
+        self.assertHolidayName(
+            name,
+            "2020-10-29",
+            "2021-10-19",
+            "2022-10-08",
+            "2023-09-27",
+            "2024-09-15",
+        )
+        self.assertHolidayName(name, self.no_estimated_holidays, range(1988, 2050))
+
+    def test_eid_al_fitr(self):
+        name = "عيد الفطر"
+        self.assertHolidayName(
+            name,
+            "2023-04-21",
+            "2023-04-22",
+            "2023-04-23",
+            "2024-04-10",
+            "2024-04-11",
+            "2024-04-12",
+            "2025-03-31",
+            "2025-04-01",
+            "2025-04-02",
+        )
+        self.assertHolidayName(name, self.no_estimated_holidays, range(1988, 2050))
+
+    def test_day_of_arafah(self):
+        name = "يوم عرفة"
+        self.assertHolidayName(
+            name,
+            "2020-07-30",
+            "2021-07-19",
+            "2022-07-08",
+            "2023-06-27",
+            "2024-06-15",
+            "2025-06-05",
+        )
+        self.assertHolidayName(name, self.no_estimated_holidays, range(1988, 2050))
+
+    def test_eid_al_adha(self):
+        name = "عيد الأضحى"
+        self.assertHolidayName(
+            name,
+            "2023-06-28",
+            "2023-06-29",
+            "2023-06-30",
+            "2024-06-16",
+            "2024-06-17",
+            "2024-06-18",
+            "2025-06-06",
+            "2025-06-07",
+            "2025-06-08",
+        )
+        self.assertHolidayName(name, self.no_estimated_holidays, range(1988, 2050))
+
+    def test_syrian_revolution_day(self):
+        name = "عيد ثورة سوريا"
+        self.assertNoHolidayName(name)
+        self.assertHolidayName(
+            name, self.workday_holidays, (f"{year}-03-08" for year in range(1988, 2012))
+        )
+        self.assertNoHolidayName(name, self.workday_holidays, range(2012, 2050))
+
+    def test_anniversary_of_arab_league(self):
+        name = "ذكرى إنشاء الجامعة العربية"
+        self.assertNoHolidayName(name)
+        self.assertHolidayName(
+            name, self.workday_holidays, (f"{year}-03-22" for year in range(1988, 2012))
+        )
+        self.assertNoHolidayName(name, self.workday_holidays, range(2012, 2050))
+
+    def test_british_forces_evacuation_day(self):
+        name = "عيد إجلاء القوات البريطانية"
+        self.assertNoHolidayName(name)
+        self.assertHolidayName(
+            name, self.workday_holidays, (f"{year}-03-28" for year in range(1988, 2012))
+        )
+        self.assertNoHolidayName(name, self.workday_holidays, range(2012, 2050))
+
+    def test_italian_forces_evacuation_day(self):
+        name = "عيد إجلاء الطليان"
+        self.assertNoHolidayName(name)
+        self.assertHolidayName(
+            name, self.workday_holidays, (f"{year}-10-07" for year in range(1988, 2012))
+        )
+        self.assertNoHolidayName(name, self.workday_holidays, range(2012, 2050))
+
+    def test_ashura_day(self):
+        name = "عاشوراء"
+        self.assertNoHolidayName(name)
+        self.assertHolidayName(
+            name,
+            self.workday_holidays,
+            "1988-08-22",
+            "1989-08-11",
+            "1990-08-01",
+            "2010-12-16",
+            "2011-12-05",
+        )
+        self.assertHolidayName(name, self.workday_holidays, range(1988, 2012))
+        self.assertNoHolidayName(name, self.workday_holidays, range(2012, 2050))
+
+    def test_isra_and_miraj_day(self):
+        name = "ذكرى الإسراء والمعراج"
+        self.assertNoHolidayName(name)
+        self.assertHolidayName(
+            name,
+            self.workday_holidays,
+            "1988-03-15",
+            "1989-03-05",
+            "1990-02-22",
+            "2010-07-09",
+            "2011-06-29",
+        )
+        self.assertHolidayName(name, self.workday_holidays, range(1988, 2012))
+        self.assertNoHolidayName(name, self.workday_holidays, range(2012, 2050))
+
+    def test_night_of_forgiveness(self):
+        name = "ليلة النصف من شعبان"
+        self.assertNoHolidayName(name)
+        self.assertHolidayName(
+            name,
+            self.workday_holidays,
+            "1988-04-02",
+            "1989-03-22",
+            "1990-03-12",
+            "2010-07-27",
+            "2011-07-16",
+        )
+        self.assertHolidayName(name, self.workday_holidays, range(1988, 2012))
+        self.assertNoHolidayName(name, self.workday_holidays, range(2012, 2050))
+
+    def test_2024(self):
+        self.assertHolidays(
+            Libya(years=2024),
+            ("2024-02-17", "ثورة 17 فبراير"),
+            ("2024-04-10", "عيد الفطر"),
+            ("2024-04-11", "عيد الفطر"),
+            ("2024-04-12", "عيد الفطر"),
+            ("2024-05-01", "عيد العمال"),
+            ("2024-06-15", "يوم عرفة"),
+            ("2024-06-16", "عيد الأضحى"),
+            ("2024-06-17", "عيد الأضحى"),
+            ("2024-06-18", "عيد الأضحى"),
+            ("2024-07-07", "عيد رأس السنة الهجرية"),
+            ("2024-08-14", "يوم وطني للإصحاح البيئي"),
+            ("2024-09-15", "ذكرى المولد النبوي الشريف"),
+            ("2024-09-16", "يوم الشهيد"),
+            ("2024-10-23", "يوم التحرير"),
+            ("2024-12-24", "عيد الاستقلال"),
+        )
+
+    def test_l10n_default(self):
+        self.assertLocalizedHolidays(
+            ("2025-02-17", "ثورة 17 فبراير"),
+            ("2025-03-31", "عيد الفطر"),
+            ("2025-04-01", "عيد الفطر"),
+            ("2025-04-02", "عيد الفطر"),
+            ("2025-05-01", "عيد العمال"),
+            ("2025-06-05", "يوم عرفة"),
+            ("2025-06-06", "عيد الأضحى"),
+            ("2025-06-07", "عيد الأضحى"),
+            ("2025-06-08", "عيد الأضحى"),
+            ("2025-06-26", "عيد رأس السنة الهجرية"),
+            ("2025-08-14", "يوم وطني للإصحاح البيئي"),
+            ("2025-09-04", "ذكرى المولد النبوي الشريف (المقدرة)"),
+            ("2025-09-16", "يوم الشهيد"),
+            ("2025-10-23", "يوم التحرير"),
+            ("2025-12-24", "عيد الاستقلال"),
+        )
+
+    def test_l10n_en_us(self):
+        self.assertLocalizedHolidays(
+            "en_US",
+            ("2025-02-17", "Anniversary of the February 17 Revolution"),
+            ("2025-03-31", "Eid al-Fitr"),
+            ("2025-04-01", "Eid al-Fitr"),
+            ("2025-04-02", "Eid al-Fitr"),
+            ("2025-05-01", "Labor Day"),
+            ("2025-06-05", "Day of Arafah"),
+            ("2025-06-06", "Eid al-Adha"),
+            ("2025-06-07", "Eid al-Adha"),
+            ("2025-06-08", "Eid al-Adha"),
+            ("2025-06-26", "Islamic New Year"),
+            ("2025-08-14", "National Environmental Sanitation Day"),
+            ("2025-09-04", "Prophet's Birthday (estimated)"),
+            ("2025-09-16", "Martyrs' Day"),
+            ("2025-10-23", "Liberation Day"),
+            ("2025-12-24", "Independence Day"),
+        )
diff --git a/tests/countries/test_russia.py b/tests/countries/test_russia.py
index 7021a393..cdffc758 100644
--- a/tests/countries/test_russia.py
+++ b/tests/countries/test_russia.py
@@ -13,10 +13,10 @@
 from unittest import TestCase
 
 from holidays.countries.russia import Russia, RU, RUS
-from tests.common import CommonCountryTests
+from tests.common import CommonCountryTests, WorkingDayTests
 
 
-class TestRussia(CommonCountryTests, TestCase):
+class TestRussia(CommonCountryTests, WorkingDayTests, TestCase):
     @classmethod
     def setUpClass(cls):
         super().setUpClass(Russia, years=range(1991, 2025))
@@ -27,9 +27,8 @@ class TestRussia(CommonCountryTests, TestCase):
     def test_no_holidays(self):
         self.assertNoHolidays(Russia(years=1990))
 
-    def test_special_holidays(self):
+    def test_substituted_holidays(self):
         self.assertHoliday(
-            # Substituted Holidays.
             "1991-05-03",
             "1991-05-10",
             "1994-03-07",
@@ -210,6 +209,99 @@ class TestRussia(CommonCountryTests, TestCase):
             "2023-11-06",
         )
 
+    def test_workdays(self):
+        self.assertWorkingDay(
+            "1991-05-05",
+            "1991-05-12",
+            "1994-03-05",
+            "1995-05-06",
+            "1995-11-04",
+            "1995-12-09",
+            "1996-05-05",
+            "1996-05-12",
+            "1996-11-10",
+            "1996-12-14",
+            "1996-12-15",
+            "1997-01-05",
+            "1997-06-15",
+            "1999-01-10",
+            "2000-05-06",
+            "2000-11-04",
+            "2000-12-09",
+            "2001-03-11",
+            "2001-04-28",
+            "2001-06-09",
+            "2001-12-29",
+            "2002-04-27",
+            "2002-05-18",
+            "2002-11-10",
+            "2002-12-15",
+            "2003-01-04",
+            "2003-01-05",
+            "2003-06-21",
+            "2005-03-05",
+            "2005-05-14",
+            "2006-02-26",
+            "2006-05-06",
+            "2007-04-28",
+            "2007-06-09",
+            "2007-12-29",
+            "2008-05-04",
+            "2008-06-07",
+            "2008-11-01",
+            "2009-01-11",
+            "2010-02-27",
+            "2010-11-13",
+            "2011-03-05",
+            "2012-03-11",
+            "2012-04-28",
+            "2012-05-05",
+            "2012-05-12",
+            "2012-06-09",
+            "2012-12-29",
+            "2013-01-05",
+            "2013-01-06",
+            # "2013-02-25",
+            "2014-01-04",
+            "2014-01-05",
+            # "2014-02-24",
+            "2015-01-03",
+            "2015-01-04",
+            "2016-01-02",
+            "2016-01-03",
+            "2016-02-20",
+            "2017-01-01",
+            "2017-01-07",
+            "2018-01-06",
+            "2018-01-07",
+            "2018-04-28",
+            "2018-06-09",
+            "2018-12-29",
+            "2019-01-05",
+            "2019-01-06",
+            "2019-02-23",
+            "2020-01-04",
+            "2020-01-05",
+            "2021-01-02",
+            "2021-01-03",
+            "2021-02-20",
+            "2022-01-01",
+            "2022-01-02",
+            "2022-03-05",
+            "2023-01-01",
+            "2023-01-08",
+            "2024-01-06",
+            "2024-01-07",
+            "2024-04-27",
+            "2024-11-02",
+            "2024-12-28",
+            "2025-01-04",
+            "2025-01-05",
+            "2025-02-23",
+            "2025-03-08",
+            "2025-11-01",
+        )
+
     def test_new_year(self):
         name_1 = "Новый год"
         name_2 = "Новогодние каникулы"
diff --git a/tests/countries/test_vietnam.py b/tests/countries/test_vietnam.py
index e1909fa0..0e1d2a72 100644
--- a/tests/countries/test_vietnam.py
+++ b/tests/countries/test_vietnam.py
@@ -26,6 +26,46 @@ class TestVietnam(CommonCountryTests, WorkingDayTests, TestCase):
     def test_country_aliases(self):
         self.assertAliases(Vietnam, VN, VNM)
 
+    def test_substituted_holidays(self):
+        self.assertHoliday(
+            "2010-02-19",
+            "2012-01-27",
+            "2013-04-29",
+            "2014-05-02",
+            "2014-09-01",
+            "2015-01-02",
+            "2015-02-16",
+            "2015-04-29",
+            "2018-12-31",
+            "2019-04-29",
+            "2024-04-29",
+        )
+
+    def test_workdays(self):
+        self.assertWorkingDay(
+            "2010-02-27",
+            "2012-02-04",
+            "2013-05-04",
+            "2014-04-26",
+            "2014-09-06",
+            "2014-12-27",
+            "2015-02-14",
+            "2015-04-25",
+            "2019-01-05",
+            "2019-05-04",
+            "2024-05-04",
+        )
+
+        for year, dts in {
+            2014: (
+                "2014-04-26",
+                "2014-09-06",
+                "2014-12-27",
+            ),
+            2019: ("2019-01-05",),
+        }.items():
+            self.assertWorkingDay(Vietnam(years=year), dts)
+
     def test_common(self):
         self.assertHolidayName(
             "Tết Dương lịch",
@@ -159,46 +199,6 @@ class TestVietnam(CommonCountryTests, WorkingDayTests, TestCase):
         self.assertHoliday(observed_holidays)
         self.assertNoNonObservedHoliday(observed_holidays)
 
-    def test_substituted_holidays(self):
-        self.assertHoliday(
-            "2010-02-19",
-            "2012-01-27",
-            "2013-04-29",
-            "2014-05-02",
-            "2014-09-01",
-            "2015-01-02",
-            "2015-02-16",
-            "2015-04-29",
-            "2018-12-31",
-            "2019-04-29",
-            "2024-04-29",
-        )
-
-    def test_workdays(self):
-        self.assertWorkingDay(
-            "2010-02-27",
-            "2012-02-04",
-            "2013-05-04",
-            "2014-04-26",
-            "2014-09-06",
-            "2014-12-27",
-            "2015-02-14",
-            "2015-04-25",
-            "2019-01-05",
-            "2019-05-04",
-            "2024-05-04",
-        )
-
-        for year, dts in {
-            2014: (
-                "2014-04-26",
-                "2014-09-06",
-                "2014-12-27",
-            ),
-            2019: ("2019-01-05",),
-        }.items():
-            self.assertWorkingDay(Vietnam(years=year), dts)
-
     def test_l10n_default(self):
         self.assertLocalizedHolidays(
             ("2022-01-01", "Tết Dương lịch"),