Repository: vacanza/holidays
Pull request #2451 (2025-04-09 02:04:32)

Update South Korea holidays: add 2025 Presidential Election Day
<!--
  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 South Korea's temporary public holidays to [June 3rd, 2025.](https://en.wikipedia.org/wiki/2025_South_Korean_presidential_election)
and exclud in 2027 Presidential Election Day due to the 2025 Special Presidential Election Day

Since it is already specified in the docstring references at https://namu.wiki/w/임시공휴일, no additional docstring has been added.

## 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!)
- [x] Supported country/market holidays update (calendar discrepancy fix, localization)
- [ ] 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 c1f4eaf5dc65430fbb6f6ee083a273d6e0cd62e8 and ed9bbb809a5e8c16fc91a208c89221e8e499bac7.
> 
> </details>
> 
> <details>
> <summary>📒 Files selected for processing (7)</summary>
> 
> * `holidays/countries/south_korea.py` (3 hunks)
> * `holidays/locale/be/LC_MESSAGES/BY.po` (1 hunks)
> * `holidays/locale/en_US/LC_MESSAGES/BY.po` (1 hunks)
> * `holidays/locale/ru/LC_MESSAGES/BY.po` (1 hunks)
> * `holidays/locale/th/LC_MESSAGES/BY.po` (1 hunks)
> * `snapshots/countries/KR_COMMON.json` (1 hunks)
> * `tests/countries/test_south_korea.py` (1 hunks)
> 
> </details>
> 
> ```ascii
>  ___________________________________________________________________________________________________________________________________________________________
> < Don't be a slave to formal methods. Don't blindly adopt any technique without putting it into the context of your development practices and capabilities. >
>  -----------------------------------------------------------------------------------------------------------------------------------------------------------
>   \
>    \   \
>         \ /\
>         ( )
>       .( o ).
> ```

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

> [!TIP]
> <details>
> <summary>CodeRabbit can use your project's `ruff` configuration to improve the quality of Python code reviews.</summary>
> 
> Add a Ruff [configuration file](https://docs.astral.sh/ruff/configuration/) to your project to customize how CodeRabbit runs `ruff`.
> 
> </details>

<!-- usage_tips_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=2451):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Generate unit testing code for this file.`
  - `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 generate unit testing code for this file.`
  -	`@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 generate unit testing code.`
  - `@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.`

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 resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai plan` to trigger planning for file edits and PR creation.
- `@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 -->
sonarqubecloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2451) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2451&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2451&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=vacanza_python-holidays&pullRequest=2451&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2451&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2451&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2451)


codecov[bot]: ## [Codecov](https://app.codecov.io/gh/vacanza/holidays/pull/2451?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 [(`c1f4eaf`)](https://app.codecov.io/gh/vacanza/holidays/commit/c1f4eaf5dc65430fbb6f6ee083a273d6e0cd62e8?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza) to head [(`ed9bbb8`)](https://app.codecov.io/gh/vacanza/holidays/commit/ed9bbb809a5e8c16fc91a208c89221e8e499bac7?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     #2451   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          210       210           
  Lines        13348     13350    +2     
  Branches      1909      1910    +1     
=========================================
+ Hits         13348     13350    +2     
```

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/vacanza/holidays/pull/2451?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>
sonarqubecloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2451) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2451&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2451&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=vacanza_python-holidays&pullRequest=2451&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2451&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2451&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2451)


sonarqubecloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2451) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2451&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2451&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=vacanza_python-holidays&pullRequest=2451&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2451&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2451&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2451)


sonarqubecloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2451) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2451&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2451&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=vacanza_python-holidays&pullRequest=2451&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2451&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2451&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2451)



Patch:
diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml
index 7a96e6e4..ec6c3ff2 100644
--- a/.github/workflows/ci-cd.yml
+++ b/.github/workflows/ci-cd.yml
@@ -58,12 +58,12 @@ jobs:
         uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 
       - name: Initialize CodeQL
-        uses: github/codeql-action/init@1b549b9259bda1cb5ddde3b41741a82a2d15a841
+        uses: github/codeql-action/init@45775bd8235c68ba998cffa5171334d58593da47
         with:
           languages: python
 
       - name: Perform CodeQL Analysis
-        uses: github/codeql-action/analyze@1b549b9259bda1cb5ddde3b41741a82a2d15a841
+        uses: github/codeql-action/analyze@45775bd8235c68ba998cffa5171334d58593da47
         with:
           category: '/language:python'
 
diff --git a/holidays/countries/pakistan.py b/holidays/countries/pakistan.py
index 642a43e9..9aea2307 100644
--- a/holidays/countries/pakistan.py
+++ b/holidays/countries/pakistan.py
@@ -24,6 +24,8 @@ class Pakistan(HolidayBase, InternationalHolidays, IslamicHolidays):
     References:
         * <https://en.wikipedia.org/wiki/Public_holidays_in_Pakistan>
         * <https://ur.wikipedia.org/wiki/تعطیلات_پاکستان>
+        * [Public and optional holidays](https://cabinet.gov.pk/Detail/OTE2ODBiYmItZmI0MS00NDAwLWE5NGUtYmE1MGVjYzllMzAz)
+        * [No.10-01/2024-Min-II](https://cabinet.gov.pk/SiteImage/Misc/files/Holidays/28-5-24.pdf)
     """
 
     country = "PK"
@@ -59,6 +61,10 @@ class Pakistan(HolidayBase, InternationalHolidays, IslamicHolidays):
             # Labor Day.
             self._add_labor_day(tr("Labour Day"))
 
+        if self._year >= 2024:
+            # Youm-e-Takbeer.
+            self._add_holiday_may_28(tr("Youm-e-Takbeer"))
+
         # Independence Day.
         self._add_holiday_aug_14(tr("Independence Day"))
 
@@ -170,6 +176,7 @@ class PakistanIslamicHolidays(_CustomIslamicHolidays):
         2022: (MAY, 3),
         2023: (APR, 22),
         2024: (APR, 10),
+        2025: (MAR, 31),
     }
 
     # https://www.timeanddate.com/holidays/pakistan/eid-milad-un-nabi
diff --git a/holidays/countries/south_korea.py b/holidays/countries/south_korea.py
index f65f4c24..9f1502a0 100644
--- a/holidays/countries/south_korea.py
+++ b/holidays/countries/south_korea.py
@@ -213,7 +213,7 @@ class SouthKorea(
         # Christmas Day.
         append_observed(self._add_christmas_day(tr("기독탄신일")), 2023)
 
-        # Election Days since Sep 2006; excluding the 2017 Special Presidential Election Day.
+        # Election Days since Sep 2006; excluding the 2017, 2025 Special Presidential Election Day.
 
         # Based on Article 34 of the Public Official Election Act.
         # (1) The election day for each election to be held at the expiration of the term shall
@@ -238,23 +238,18 @@ class SouthKorea(
         elif self._year >= 2007 and (self._year - 2008) % 4 == 0:
             self._add_holiday_2nd_wed_of_apr(name)
 
-        if self._year >= 2007 and (self._year - 2007) % 5 == 0:
+        if self._year >= 2007:
             # Presidential Election Day.
             name = tr("대통령 선거일")
-
-            if self._year <= 2012:
-                self._add_holiday_3rd_wed_of_dec(name)
-            elif self._year >= 2022:
-                if (
-                    self._is_tuesday(mar_1)
-                    or self._is_wednesday(mar_1)
-                    or self._is_thursday(mar_1)
-                ):
+            if self._year <= 2024 and (self._year - 2007) % 5 == 0:
+                if self._year <= 2012:
+                    self._add_holiday_3rd_wed_of_dec(name)
+                elif self._year >= 2022:
                     # Moved as per Paragraph 2 of Article 34 due to conflict with
                     # Independence Movement Day (MAR, 1).
                     self._add_holiday_2nd_wed_of_mar(name)
-                else:
-                    self._add_holiday_1st_wed_of_mar(name)
+            elif self._year >= 2030 and (self._year - 2030) % 5 == 0:
+                self._add_holiday_1st_wed_of_apr(name)
 
         if self._year >= 2007 and (self._year - 2010) % 4 == 0:
             # Local Election Day.
@@ -610,8 +605,12 @@ class SouthKoreaStaticHolidays:
         2023: (OCT, 2, temporary_public_holiday),
         # 76th Anniversary of the Armed Forces of Korea.
         2024: (OCT, 1, armed_forces_day),
-        # Added to create a 6-day long holiday period.
-        2025: (JAN, 27, temporary_public_holiday),
+        2025: (
+            # Added to create a 6-day long holiday period.
+            (JAN, 27, temporary_public_holiday),
+            # Special Presidential Election (21st) due to Yoon Seok-yeol's impeachment.
+            (JUN, 3, presidential_election_day),
+        ),
     }
     # Pre-2014 Alternate Holidays
     # https://namu.wiki/w/대체%20휴일%20제도#s-4.2.1
diff --git a/holidays/locale/be/LC_MESSAGES/BY.po b/holidays/locale/be/LC_MESSAGES/BY.po
index b08d9cbc..25408184 100644
--- a/holidays/locale/be/LC_MESSAGES/BY.po
+++ b/holidays/locale/be/LC_MESSAGES/BY.po
@@ -48,8 +48,8 @@ msgid "Дзень Перамогі"
 msgstr ""
 
 #. Day of the National Coat of Arms of the Republic of Belarus, the National
-#. Flag of the Republic
-#. of Belarus and the National Anthem of the Republic of Belarus.
+#. Flag of the Republic of
+#. Belarus and the National Anthem of the Republic of Belarus.
 msgid "Дзень Дзяржаўнага сцяга, Дзяржаўнага герба і Дзяржаўнага гімна Рэспублікі Беларусь"
 msgstr ""
 
diff --git a/holidays/locale/en_PK/LC_MESSAGES/PK.po b/holidays/locale/en_PK/LC_MESSAGES/PK.po
index ed365dd6..00bdbf15 100644
--- a/holidays/locale/en_PK/LC_MESSAGES/PK.po
+++ b/holidays/locale/en_PK/LC_MESSAGES/PK.po
@@ -71,3 +71,7 @@ msgstr ""
 #, c-format
 msgid "%s (estimated)"
 msgstr ""
+
+#. Youm-e-Takbeer.
+msgid "Youm-e-Takbeer"
+msgstr ""
diff --git a/holidays/locale/en_US/LC_MESSAGES/BY.po b/holidays/locale/en_US/LC_MESSAGES/BY.po
index b33f50e9..4761b984 100644
--- a/holidays/locale/en_US/LC_MESSAGES/BY.po
+++ b/holidays/locale/en_US/LC_MESSAGES/BY.po
@@ -48,8 +48,8 @@ msgid "Дзень Перамогі"
 msgstr "Victory Day"
 
 #. Day of the National Coat of Arms of the Republic of Belarus, the National
-#. Flag of the Republic
-#. of Belarus and the National Anthem of the Republic of Belarus.
+#. Flag of the Republic of
+#. Belarus and the National Anthem of the Republic of Belarus.
 msgid "Дзень Дзяржаўнага сцяга, Дзяржаўнага герба і Дзяржаўнага гімна Рэспублікі Беларусь"
 msgstr ""
 "Day of the National Coat of Arms of the Republic of Belarus, the National Flag of the Republic of"
diff --git a/holidays/locale/en_US/LC_MESSAGES/PK.po b/holidays/locale/en_US/LC_MESSAGES/PK.po
index 90b23313..a2345fbc 100644
--- a/holidays/locale/en_US/LC_MESSAGES/PK.po
+++ b/holidays/locale/en_US/LC_MESSAGES/PK.po
@@ -16,7 +16,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Holidays 0.70\n"
 "POT-Creation-Date: 2025-03-29 00:02+0500\n"
-"PO-Revision-Date: 2025-03-30 00:34+0500\n"
+"PO-Revision-Date: 2025-04-08 04:13+0200\n"
 "Last-Translator: Wasif Shahzad <wasif_shahzad_1@outlook.com>\n"
 "Language-Team: Holidays Localization Team\n"
 "Language: en_US\n"
@@ -24,7 +24,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Lingva 5.0.5\n"
-"X-Generator: Poedit 3.5\n"
+"X-Generator: Poedit 3.6\n"
 "X-Source-Language: en_PK\n"
 
 #. Kashmir Solidarity Day.
@@ -71,3 +71,7 @@ msgstr "Ashura"
 #, c-format
 msgid "%s (estimated)"
 msgstr "%s (estimated)"
+
+#. Youm-e-Takbeer.
+msgid "Youm-e-Takbeer"
+msgstr "Youm-e-Takbeer"
diff --git a/holidays/locale/ru/LC_MESSAGES/BY.po b/holidays/locale/ru/LC_MESSAGES/BY.po
index a48ed4ca..309d8750 100644
--- a/holidays/locale/ru/LC_MESSAGES/BY.po
+++ b/holidays/locale/ru/LC_MESSAGES/BY.po
@@ -48,8 +48,8 @@ msgid "Дзень Перамогі"
 msgstr "День Победы"
 
 #. Day of the National Coat of Arms of the Republic of Belarus, the National
-#. Flag of the Republic
-#. of Belarus and the National Anthem of the Republic of Belarus.
+#. Flag of the Republic of
+#. Belarus and the National Anthem of the Republic of Belarus.
 msgid "Дзень Дзяржаўнага сцяга, Дзяржаўнага герба і Дзяржаўнага гімна Рэспублікі Беларусь"
 msgstr ""
 "День Государственного флага, Государственного герба и Государственного гимна Республики Беларусь"
diff --git a/holidays/locale/th/LC_MESSAGES/BY.po b/holidays/locale/th/LC_MESSAGES/BY.po
index c630b570..b29c7a4f 100644
--- a/holidays/locale/th/LC_MESSAGES/BY.po
+++ b/holidays/locale/th/LC_MESSAGES/BY.po
@@ -48,8 +48,8 @@ msgid "Дзень Перамогі"
 msgstr "วันแห่งชัยชนะ"
 
 #. Day of the National Coat of Arms of the Republic of Belarus, the National
-#. Flag of the Republic
-#. of Belarus and the National Anthem of the Republic of Belarus.
+#. Flag of the Republic of
+#. Belarus and the National Anthem of the Republic of Belarus.
 msgid "Дзень Дзяржаўнага сцяга, Дзяржаўнага герба і Дзяржаўнага гімна Рэспублікі Беларусь"
 msgstr "วันธงชาติ ตราแผ่นดิน และเพลงชาติแห่งสาธารณรัฐเบลารุส"
 
diff --git a/holidays/locale/ur_PK/LC_MESSAGES/PK.po b/holidays/locale/ur_PK/LC_MESSAGES/PK.po
index 46aa8d6d..e2e401ce 100644
--- a/holidays/locale/ur_PK/LC_MESSAGES/PK.po
+++ b/holidays/locale/ur_PK/LC_MESSAGES/PK.po
@@ -16,7 +16,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Holidays 0.70\n"
 "POT-Creation-Date: 2025-03-29 00:09+0500\n"
-"PO-Revision-Date: 2025-03-29 23:00+0500\n"
+"PO-Revision-Date: 2025-04-08 04:16+0200\n"
 "Last-Translator: Wasif Shahzad <wasif_shahzad_1@outlook.com>\n"
 "Language-Team: Holidays Localization Team\n"
 "Language: ur_PK\n"
@@ -24,7 +24,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Lingva 5.0.5\n"
-"X-Generator: Poedit 3.5\n"
+"X-Generator: Poedit 3.6\n"
 "X-Source-Language: en_PK\n"
 
 #. Kashmir Solidarity Day.
@@ -71,3 +71,7 @@ msgstr "عاشورہ"
 #, c-format
 msgid "%s (estimated)"
 msgstr "%s (اندازاً)"
+
+#. Youm-e-Takbeer.
+msgid "Youm-e-Takbeer"
+msgstr "یوم تکبیر"
diff --git a/requirements/dev.txt b/requirements/dev.txt
index beadbe3a..c1f8d14c 100644
--- a/requirements/dev.txt
+++ b/requirements/dev.txt
@@ -7,7 +7,7 @@ hijridate==2.5.0
 lingva==5.0.5
 pre-commit==4.2.0
 pygithub==2.6.1
-ruff==0.11.2
+ruff==0.11.4
 tox==4.25.0
 urllib3>=2.2.2 # not directly required, pinned by Snyk to avoid a vulnerability
 zipp>=3.19.1 # not directly required, pinned by Snyk to avoid a vulnerability
diff --git a/requirements/docs.txt b/requirements/docs.txt
index a3a46f22..ce56a778 100644
--- a/requirements/docs.txt
+++ b/requirements/docs.txt
@@ -4,5 +4,5 @@ markdown-include==0.8.1
 mkdocs-gen-files==0.5.0
 mkdocs-literate-nav==0.6.2
 mkdocs==1.6.1
-mkdocstrings-python==1.16.8
+mkdocstrings-python==1.16.10
 zipp==3.21.0 # not directly required, pinned by Snyk to avoid a vulnerability
diff --git a/snapshots/countries/KR_COMMON.json b/snapshots/countries/KR_COMMON.json
index e95e007e..cf8bd9c7 100644
--- a/snapshots/countries/KR_COMMON.json
+++ b/snapshots/countries/KR_COMMON.json
@@ -1302,6 +1302,7 @@
     "2025-05-01": "Workers' Day",
     "2025-05-05": "Buddha's Birthday; Children's Day",
     "2025-05-06": "Alternative holiday for Buddha's Birthday; Alternative holiday for Children's Day",
+    "2025-06-03": "Presidential Election Day",
     "2025-06-06": "Memorial Day",
     "2025-08-15": "Liberation Day",
     "2025-10-03": "National Foundation Day",
@@ -1338,7 +1339,6 @@
     "2027-02-08": "The second day of Korean New Year",
     "2027-02-09": "Alternative holiday for Korean New Year",
     "2027-03-01": "Independence Movement Day",
-    "2027-03-03": "Presidential Election Day",
     "2027-05-01": "Workers' Day",
     "2027-05-05": "Children's Day",
     "2027-05-13": "Buddha's Birthday",
diff --git a/snapshots/countries/PK_COMMON.json b/snapshots/countries/PK_COMMON.json
index 737b16f3..4907ae8d 100644
--- a/snapshots/countries/PK_COMMON.json
+++ b/snapshots/countries/PK_COMMON.json
@@ -1048,6 +1048,7 @@
     "2024-04-11": "Eid al-Fitr",
     "2024-04-12": "Eid al-Fitr",
     "2024-05-01": "Labor Day",
+    "2024-05-28": "Youm-e-Takbeer",
     "2024-06-17": "Eid al-Adha",
     "2024-06-18": "Eid al-Adha",
     "2024-06-19": "Eid al-Adha",
@@ -1059,10 +1060,11 @@
     "2024-12-25": "Quaid-e-Azam Day",
     "2025-02-05": "Kashmir Solidarity Day",
     "2025-03-23": "Pakistan Day",
-    "2025-03-30": "Eid al-Fitr (estimated)",
-    "2025-03-31": "Eid al-Fitr (estimated)",
-    "2025-04-01": "Eid al-Fitr (estimated)",
+    "2025-03-31": "Eid al-Fitr",
+    "2025-04-01": "Eid al-Fitr",
+    "2025-04-02": "Eid al-Fitr",
     "2025-05-01": "Labor Day",
+    "2025-05-28": "Youm-e-Takbeer",
     "2025-06-06": "Eid al-Adha (estimated)",
     "2025-06-07": "Eid al-Adha (estimated)",
     "2025-06-08": "Eid al-Adha (estimated)",
@@ -1079,7 +1081,7 @@
     "2026-03-23": "Pakistan Day",
     "2026-05-01": "Labor Day",
     "2026-05-27": "Eid al-Adha (estimated)",
-    "2026-05-28": "Eid al-Adha (estimated)",
+    "2026-05-28": "Eid al-Adha (estimated); Youm-e-Takbeer",
     "2026-05-29": "Eid al-Adha (estimated)",
     "2026-06-24": "Ashura (estimated)",
     "2026-06-25": "Ashura (estimated)",
@@ -1096,6 +1098,7 @@
     "2027-05-16": "Eid al-Adha (estimated)",
     "2027-05-17": "Eid al-Adha (estimated)",
     "2027-05-18": "Eid al-Adha (estimated)",
+    "2027-05-28": "Youm-e-Takbeer",
     "2027-06-14": "Ashura (estimated)",
     "2027-06-15": "Ashura (estimated)",
     "2027-08-14": "Independence Day; Prophet's Birthday (estimated)",
@@ -1110,6 +1113,7 @@
     "2028-05-05": "Eid al-Adha (estimated)",
     "2028-05-06": "Eid al-Adha (estimated)",
     "2028-05-07": "Eid al-Adha (estimated)",
+    "2028-05-28": "Youm-e-Takbeer",
     "2028-06-02": "Ashura (estimated)",
     "2028-06-03": "Ashura (estimated)",
     "2028-08-03": "Prophet's Birthday (estimated)",
@@ -1127,6 +1131,7 @@
     "2029-05-01": "Labor Day",
     "2029-05-22": "Ashura (estimated)",
     "2029-05-23": "Ashura (estimated)",
+    "2029-05-28": "Youm-e-Takbeer",
     "2029-07-24": "Prophet's Birthday (estimated)",
     "2029-08-14": "Independence Day",
     "2029-11-09": "Iqbal Day",
@@ -1141,6 +1146,7 @@
     "2030-05-01": "Labor Day",
     "2030-05-11": "Ashura (estimated)",
     "2030-05-12": "Ashura (estimated)",
+    "2030-05-28": "Youm-e-Takbeer",
     "2030-07-13": "Prophet's Birthday (estimated)",
     "2030-08-14": "Independence Day",
     "2030-11-09": "Iqbal Day",
@@ -1155,6 +1161,7 @@
     "2031-04-04": "Eid al-Adha (estimated)",
     "2031-05-01": "Ashura (estimated); Labor Day",
     "2031-05-02": "Ashura (estimated)",
+    "2031-05-28": "Youm-e-Takbeer",
     "2031-07-02": "Prophet's Birthday (estimated)",
     "2031-08-14": "Independence Day",
     "2031-11-09": "Iqbal Day",
@@ -1169,6 +1176,7 @@
     "2032-04-19": "Ashura (estimated)",
     "2032-04-20": "Ashura (estimated)",
     "2032-05-01": "Labor Day",
+    "2032-05-28": "Youm-e-Takbeer",
     "2032-06-20": "Prophet's Birthday (estimated)",
     "2032-08-14": "Independence Day",
     "2032-11-09": "Iqbal Day",
@@ -1184,6 +1192,7 @@
     "2033-04-09": "Ashura (estimated)",
     "2033-04-10": "Ashura (estimated)",
     "2033-05-01": "Labor Day",
+    "2033-05-28": "Youm-e-Takbeer",
     "2033-06-09": "Prophet's Birthday (estimated)",
     "2033-08-14": "Independence Day",
     "2033-11-09": "Iqbal Day",
@@ -1198,6 +1207,7 @@
     "2034-03-29": "Ashura (estimated)",
     "2034-03-30": "Ashura (estimated)",
     "2034-05-01": "Labor Day",
+    "2034-05-28": "Youm-e-Takbeer",
     "2034-05-30": "Prophet's Birthday (estimated)",
     "2034-08-14": "Independence Day",
     "2034-11-09": "Iqbal Day",
@@ -1214,6 +1224,7 @@
     "2035-03-23": "Pakistan Day",
     "2035-05-01": "Labor Day",
     "2035-05-20": "Prophet's Birthday (estimated)",
+    "2035-05-28": "Youm-e-Takbeer",
     "2035-08-14": "Independence Day",
     "2035-11-09": "Iqbal Day",
     "2035-12-01": "Eid al-Fitr (estimated)",
@@ -1229,6 +1240,7 @@
     "2036-03-23": "Pakistan Day",
     "2036-05-01": "Labor Day",
     "2036-05-08": "Prophet's Birthday (estimated)",
+    "2036-05-28": "Youm-e-Takbeer",
     "2036-08-14": "Independence Day",
     "2036-11-09": "Iqbal Day",
     "2036-11-19": "Eid al-Fitr (estimated)",
@@ -1244,6 +1256,7 @@
     "2037-03-23": "Pakistan Day",
     "2037-04-28": "Prophet's Birthday (estimated)",
     "2037-05-01": "Labor Day",
+    "2037-05-28": "Youm-e-Takbeer",
     "2037-08-14": "Independence Day",
     "2037-11-08": "Eid al-Fitr (estimated)",
     "2037-11-09": "Eid al-Fitr (estimated); Iqbal Day",
@@ -1258,6 +1271,7 @@
     "2038-03-23": "Pakistan Day",
     "2038-04-17": "Prophet's Birthday (estimated)",
     "2038-05-01": "Labor Day",
+    "2038-05-28": "Youm-e-Takbeer",
     "2038-08-14": "Independence Day",
     "2038-10-29": "Eid al-Fitr (estimated)",
     "2038-10-30": "Eid al-Fitr (estimated)",
@@ -1273,6 +1287,7 @@
     "2039-03-23": "Pakistan Day",
     "2039-04-06": "Prophet's Birthday (estimated)",
     "2039-05-01": "Labor Day",
+    "2039-05-28": "Youm-e-Takbeer",
     "2039-08-14": "Independence Day",
     "2039-10-19": "Eid al-Fitr (estimated)",
     "2039-10-20": "Eid al-Fitr (estimated)",
@@ -1288,6 +1303,7 @@
     "2040-03-23": "Pakistan Day",
     "2040-03-25": "Prophet's Birthday (estimated)",
     "2040-05-01": "Labor Day",
+    "2040-05-28": "Youm-e-Takbeer",
     "2040-08-14": "Independence Day",
     "2040-10-07": "Eid al-Fitr (estimated)",
     "2040-10-08": "Eid al-Fitr (estimated)",
@@ -1303,6 +1319,7 @@
     "2041-03-15": "Prophet's Birthday (estimated)",
     "2041-03-23": "Pakistan Day",
     "2041-05-01": "Labor Day",
+    "2041-05-28": "Youm-e-Takbeer",
     "2041-08-14": "Independence Day",
     "2041-09-26": "Eid al-Fitr (estimated)",
     "2041-09-27": "Eid al-Fitr (estimated)",
@@ -1318,6 +1335,7 @@
     "2042-03-04": "Prophet's Birthday (estimated)",
     "2042-03-23": "Pakistan Day",
     "2042-05-01": "Labor Day",
+    "2042-05-28": "Youm-e-Takbeer",
     "2042-08-14": "Independence Day",
     "2042-09-15": "Eid al-Fitr (estimated)",
     "2042-09-16": "Eid al-Fitr (estimated)",
@@ -1333,6 +1351,7 @@
     "2043-02-22": "Prophet's Birthday (estimated)",
     "2043-03-23": "Pakistan Day",
     "2043-05-01": "Labor Day",
+    "2043-05-28": "Youm-e-Takbeer",
     "2043-08-14": "Independence Day",
     "2043-09-04": "Eid al-Fitr (estimated)",
     "2043-09-05": "Eid al-Fitr (estimated)",
@@ -1348,6 +1367,7 @@
     "2044-02-11": "Prophet's Birthday (estimated)",
     "2044-03-23": "Pakistan Day",
     "2044-05-01": "Labor Day",
+    "2044-05-28": "Youm-e-Takbeer",
     "2044-08-14": "Independence Day",
     "2044-08-24": "Eid al-Fitr (estimated)",
     "2044-08-25": "Eid al-Fitr (estimated)",
@@ -1363,6 +1383,7 @@
     "2045-02-05": "Kashmir Solidarity Day",
     "2045-03-23": "Pakistan Day",
     "2045-05-01": "Labor Day",
+    "2045-05-28": "Youm-e-Takbeer",
     "2045-08-14": "Eid al-Fitr (estimated); Independence Day",
     "2045-08-15": "Eid al-Fitr (estimated)",
     "2045-08-16": "Eid al-Fitr (estimated)",
@@ -1377,6 +1398,7 @@
     "2046-02-05": "Kashmir Solidarity Day",
     "2046-03-23": "Pakistan Day",
     "2046-05-01": "Labor Day",
+    "2046-05-28": "Youm-e-Takbeer",
     "2046-08-03": "Eid al-Fitr (estimated)",
     "2046-08-04": "Eid al-Fitr (estimated)",
     "2046-08-05": "Eid al-Fitr (estimated)",
@@ -1391,6 +1413,7 @@
     "2047-02-05": "Kashmir Solidarity Day",
     "2047-03-23": "Pakistan Day",
     "2047-05-01": "Labor Day",
+    "2047-05-28": "Youm-e-Takbeer",
     "2047-07-24": "Eid al-Fitr (estimated)",
     "2047-07-25": "Eid al-Fitr (estimated)",
     "2047-07-26": "Eid al-Fitr (estimated)",
@@ -1406,6 +1429,7 @@
     "2048-02-05": "Kashmir Solidarity Day",
     "2048-03-23": "Pakistan Day",
     "2048-05-01": "Labor Day",
+    "2048-05-28": "Youm-e-Takbeer",
     "2048-07-12": "Eid al-Fitr (estimated)",
     "2048-07-13": "Eid al-Fitr (estimated)",
     "2048-07-14": "Eid al-Fitr (estimated)",
@@ -1421,6 +1445,7 @@
     "2049-02-05": "Kashmir Solidarity Day",
     "2049-03-23": "Pakistan Day",
     "2049-05-01": "Labor Day",
+    "2049-05-28": "Youm-e-Takbeer",
     "2049-07-01": "Eid al-Fitr (estimated)",
     "2049-07-02": "Eid al-Fitr (estimated)",
     "2049-07-03": "Eid al-Fitr (estimated)",
@@ -1436,6 +1461,7 @@
     "2050-02-05": "Kashmir Solidarity Day",
     "2050-03-23": "Pakistan Day",
     "2050-05-01": "Labor Day",
+    "2050-05-28": "Youm-e-Takbeer",
     "2050-06-20": "Eid al-Fitr (estimated)",
     "2050-06-21": "Eid al-Fitr (estimated)",
     "2050-06-22": "Eid al-Fitr (estimated)",


Test patch:
diff --git a/requirements/tests.txt b/requirements/tests.txt
index b52d3d9c..2fb1c773 100644
--- a/requirements/tests.txt
+++ b/requirements/tests.txt
@@ -5,7 +5,7 @@ importlib-metadata==8.6.1; python_version < '3.10'
 numpy<2.1.0; python_version < '3.10'
 numpy==2.2.4; python_version >= '3.10'
 polib==1.2.0
-pytest-cov==6.1.0
+pytest-cov==6.1.1
 pytest-xdist==3.6.1
 pytest==8.3.5
 zipp>=3.19.1; python_version < '3.10' # not directly required, pinned by Snyk to avoid a vulnerability
diff --git a/tests/countries/test_pakistan.py b/tests/countries/test_pakistan.py
index 39276643..ae2e8ed7 100644
--- a/tests/countries/test_pakistan.py
+++ b/tests/countries/test_pakistan.py
@@ -45,6 +45,11 @@ class TestPakistan(CommonCountryTests, TestCase):
         self.assertHolidayName(name, (f"{year}-05-01" for year in range(1972, 2050)))
         self.assertNoHolidayName(name, range(1948, 1972))
 
+    def test_youm_e_takbeer(self):
+        name = "Youm-e-Takbeer"
+        self.assertHolidayName(name, (f"{year}-05-28" for year in range(2024, 2050)))
+        self.assertNoHolidayName(name, range(1948, 2024))
+
     def test_independence_day(self):
         self.assertHolidayName("Independence Day", (f"{year}-08-14" for year in range(1948, 2050)))
 
@@ -76,6 +81,7 @@ class TestPakistan(CommonCountryTests, TestCase):
             date(2022, 5, 3),
             date(2023, 4, 22),
             date(2024, 4, 10),
+            date(2025, 3, 31),
         ):
             self.assertHolidayName(
                 name, self.no_estimated_holidays, dt, _timedelta(dt, +1), _timedelta(dt, +2)
@@ -204,61 +210,85 @@ class TestPakistan(CommonCountryTests, TestCase):
             ("2022-12-25", "Quaid-e-Azam Day"),
         )
 
+    def test_2024(self):
+        self.assertHolidays(
+            Pakistan(years=2024),
+            ("2024-02-05", "Kashmir Solidarity Day"),
+            ("2024-03-23", "Pakistan Day"),
+            ("2024-05-01", "Labour Day"),
+            ("2024-04-10", "Eid-ul-Fitr"),
+            ("2024-04-11", "Eid-ul-Fitr"),
+            ("2024-04-12", "Eid-ul-Fitr"),
+            ("2024-05-28", "Youm-e-Takbeer"),
+            ("2024-06-17", "Eid-ul-Adha"),
+            ("2024-06-18", "Eid-ul-Adha"),
+            ("2024-06-19", "Eid-ul-Adha"),
+            ("2024-07-15", "Ashura"),
+            ("2024-07-16", "Ashura"),
+            ("2024-08-14", "Independence Day"),
+            ("2024-09-17", "Eid Milad-un-Nabi"),
+            ("2024-11-09", "Iqbal Day"),
+            ("2024-12-25", "Quaid-e-Azam Day"),
+        )
+
     def test_l10n_default(self):
         self.assertLocalizedHolidays(
-            ("2022-02-05", "Kashmir Solidarity Day"),
-            ("2022-03-23", "Pakistan Day"),
-            ("2022-05-01", "Labour Day"),
-            ("2022-05-03", "Eid-ul-Fitr"),
-            ("2022-05-04", "Eid-ul-Fitr"),
-            ("2022-05-05", "Eid-ul-Fitr"),
-            ("2022-07-10", "Eid-ul-Adha"),
-            ("2022-07-11", "Eid-ul-Adha"),
-            ("2022-07-12", "Eid-ul-Adha"),
-            ("2022-08-08", "Ashura"),
-            ("2022-08-09", "Ashura"),
-            ("2022-08-14", "Independence Day"),
-            ("2022-10-09", "Eid Milad-un-Nabi"),
-            ("2022-11-09", "Iqbal Day"),
-            ("2022-12-25", "Quaid-e-Azam Day"),
+            ("2024-02-05", "Kashmir Solidarity Day"),
+            ("2024-03-23", "Pakistan Day"),
+            ("2024-04-10", "Eid-ul-Fitr"),
+            ("2024-04-11", "Eid-ul-Fitr"),
+            ("2024-04-12", "Eid-ul-Fitr"),
+            ("2024-05-01", "Labour Day"),
+            ("2024-05-28", "Youm-e-Takbeer"),
+            ("2024-06-17", "Eid-ul-Adha"),
+            ("2024-06-18", "Eid-ul-Adha"),
+            ("2024-06-19", "Eid-ul-Adha"),
+            ("2024-07-15", "Ashura"),
+            ("2024-07-16", "Ashura"),
+            ("2024-08-14", "Independence Day"),
+            ("2024-09-17", "Eid Milad-un-Nabi"),
+            ("2024-11-09", "Iqbal Day"),
+            ("2024-12-25", "Quaid-e-Azam Day"),
         )
 
     def test_l10n_en_us(self):
         self.assertLocalizedHolidays(
             "en_US",
-            ("2022-02-05", "Kashmir Solidarity Day"),
-            ("2022-03-23", "Pakistan Day"),
-            ("2022-05-01", "Labor Day"),
-            ("2022-05-03", "Eid al-Fitr"),
-            ("2022-05-04", "Eid al-Fitr"),
-            ("2022-05-05", "Eid al-Fitr"),
-            ("2022-07-10", "Eid al-Adha"),
-            ("2022-07-11", "Eid al-Adha"),
-            ("2022-07-12", "Eid al-Adha"),
-            ("2022-08-08", "Ashura"),
-            ("2022-08-09", "Ashura"),
-            ("2022-08-14", "Independence Day"),
-            ("2022-10-09", "Prophet's Birthday"),
-            ("2022-11-09", "Iqbal Day"),
-            ("2022-12-25", "Quaid-e-Azam Day"),
+            ("2024-02-05", "Kashmir Solidarity Day"),
+            ("2024-03-23", "Pakistan Day"),
+            ("2024-04-10", "Eid al-Fitr"),
+            ("2024-04-11", "Eid al-Fitr"),
+            ("2024-04-12", "Eid al-Fitr"),
+            ("2024-05-01", "Labor Day"),
+            ("2024-05-28", "Youm-e-Takbeer"),
+            ("2024-06-17", "Eid al-Adha"),
+            ("2024-06-18", "Eid al-Adha"),
+            ("2024-06-19", "Eid al-Adha"),
+            ("2024-07-15", "Ashura"),
+            ("2024-07-16", "Ashura"),
+            ("2024-08-14", "Independence Day"),
+            ("2024-09-17", "Prophet's Birthday"),
+            ("2024-11-09", "Iqbal Day"),
+            ("2024-12-25", "Quaid-e-Azam Day"),
         )
 
     def test_l10n_ur_pk(self):
         self.assertLocalizedHolidays(
             "ur_PK",
-            ("2022-02-05", "یوم یکجہتی کشمیر"),
-            ("2022-03-23", "یوم پاکستان"),
-            ("2022-05-01", "یوم مزدور"),
-            ("2022-05-03", "عید الفطر"),
-            ("2022-05-04", "عید الفطر"),
-            ("2022-05-05", "عید الفطر"),
-            ("2022-07-10", "عید الاضحی"),
-            ("2022-07-11", "عید الاضحی"),
-            ("2022-07-12", "عید الاضحی"),
-            ("2022-08-08", "عاشورہ"),
-            ("2022-08-09", "عاشورہ"),
-            ("2022-08-14", "یوم آزادی"),
-            ("2022-10-09", "عید میلاد النبی"),
-            ("2022-11-09", "یوم اقبال"),
-            ("2022-12-25", "یوم قائداعظم"),
+            ("2024-02-05", "یوم یکجہتی کشمیر"),
+            ("2024-03-23", "یوم پاکستان"),
+            ("2024-04-10", "عید الفطر"),
+            ("2024-04-11", "عید الفطر"),
+            ("2024-04-12", "عید الفطر"),
+            ("2024-05-01", "یوم مزدور"),
+            ("2024-05-28", "یوم تکبیر"),
+            ("2024-06-17", "عید الاضحی"),
+            ("2024-06-18", "عید الاضحی"),
+            ("2024-06-19", "عید الاضحی"),
+            ("2024-07-15", "عاشورہ"),
+            ("2024-07-16", "عاشورہ"),
+            ("2024-08-14", "یوم آزادی"),
+            ("2024-09-17", "عید میلاد النبی"),
+            ("2024-11-09", "یوم اقبال"),
+            ("2024-12-25", "یوم قائداعظم"),
         )
diff --git a/tests/countries/test_south_korea.py b/tests/countries/test_south_korea.py
index 9fd5f9a6..b5810a1a 100644
--- a/tests/countries/test_south_korea.py
+++ b/tests/countries/test_south_korea.py
@@ -154,8 +154,9 @@ class TestSouthKorea(CommonCountryTests, TestCase):
             "2012-12-19",
             "2017-05-09",
             "2022-03-09",
-            # Preliminary Dates.
-            "2027-03-03",
+            # Special Presidential Election (21st) due to Yoon Seok-yeol's impeachment.
+            "2025-06-03",
+            "2030-04-03",
         )
 
     def test_local_election_day(self):
@@ -297,12 +298,10 @@ class TestSouthKorea(CommonCountryTests, TestCase):
 
     def test_tree_planting_day(self):
         name = "식목일"
-        self.assertHolidayName(name, (f"{year}-04-05" for year in range(1949, 1960)))
-        self.assertHolidayName(name, (f"{year}-04-05" for year in range(1961, 2006)))
-        self.assertNoHolidayName(name, 1948, 1960, range(2006, 2050))
-        self.assertNoHoliday(
-            "1948-04-05", "1960-04-05", (f"{year}-04-05" for year in range(2006, 2050))
+        self.assertHolidayName(
+            name, (f"{year}-04-05" for year in (*range(1949, 1960), *range(1961, 2006)))
         )
+        self.assertNoHolidayName(name, 1948, 1960, range(2006, 2050))
         self.assertHolidayName(f"{name} 대체 휴일", "1959-04-06")
 
     def test_childrens_day(self):