Repository: vacanza/holidays
Pull request #2228 (2025-01-14 12:24:11)

Add Sri Lanka holidays

## Proposed change

Added Sri Lanka holidays
Closes  #1272

## Type of change


- [x] New country/market holidays support (thank you!)
- [ ] 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

- [x] I've followed the [contributing guidelines][contributing-guidelines]
- [x] I've successfully run `make check`, all checks and tests are green

[contributing-guidelines]: https://github.com/vacanza/holidays/blob/dev/CONTRIBUTING.rst
[docs]: https://github.com/vacanza/holidays/tree/dev/docs/source


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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.4% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.4% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


sonarqubecloud[bot]: ## [![Quality Gate Failed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-failed-20px.png 'Quality Gate Failed')](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228) **Quality Gate failed**  
Failed conditions  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/failed-16px.png '') [3.2% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list) (required ≤ 3%)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


sonarqubecloud[bot]: ## [![Quality Gate Failed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-failed-20px.png 'Quality Gate Failed')](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228) **Quality Gate failed**  
Failed conditions  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/failed-16px.png '') [3.2% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list) (required ≤ 3%)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.4% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


PPsyrius: I'm working up a solution for Poya Day calculations at the moment and will create a suggestion PR with them later - I was originally planned to base them on Thai LuniSolar calendar ones but it appears the results aren't a 100% match yet
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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.4% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


Prateekshit73: > I'm working up a solution for Poya Day calculations at the moment and will create a suggestion PR with them later - I was originally planned to base them on Thai LuniSolar calendar ones but it appears the results aren't a 100% match yet

If there's anything I can do to assist you with the Poya Day calculations, please let me know. I’d be more than happy to help out in any way I can!
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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.4% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.4% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.4% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.4% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


arkid15r: @PPsyrius anything we should wait from you or this is good for review?
PPsyrius: @arkid15r no, many poya days assignments are still incorrect at the moment
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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.4% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


Prateekshit73: Thanks for the update, @PPsyrius! If there's anything specific you'd like me to look into, just let me know. I'm happy to contribute!
PPsyrius: @Prateekshit73 I've created a PR to address Poya day assignment and some other issues I've come across while working on them. Sinhala Lunar calendar method of inserting an extra lunar month every 33-month cycle makes it impractical to compute so I've ended up hardcoding 2023-2025 ones for now.

- Implements SinhalaCalendarHolidays (for all Poya holidays since none of these matches the Thai nor Buddhist (East Asian Mahayana) calculation method.
- Adds SriLankaHinduHolidays for exact Deepavali/Divali entries (again, Sri Lankan ones sadly didn't match India's).
- Switch `en_US`, `sk_LK`, and `tl_LK` localization to the ones used in the official 2025 calendar.
- 100% exact match for 2003-2025 calendar years as seen from [[1]](https://web.archive.org/web/20110722150724/http://www.pubad.gov.lk/Holidays/holidays%202003.htm) [[2]](https://web.archive.org/web/20111018053717/http://www.pubad.gov.lk/Holidays/Public%20&%20Bank%20Holidays%202004.pdf) [[3]](https://web.archive.org/web/20241120204015/https://documents.gov.lk/en/calendar.php) .

I think I might have missed a test case somewhere, but the results from local tests sadly aren't that descriptive so I'm leaving that for you to sort out later 🙏
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=2228) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [14 New issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.1% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


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=2228) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [14 New issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.1% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


Prateekshit73: I feel that instead of helping, I often end up increasing your workload. Hopefully, I will complete the allotted work correctly this time. Thank you for your help, @PPsyrius sir.
PPsyrius: @Prateekshit73 Nah, it's fine - it's just that I've vastly underestimated Sri Lankan holiday complexity myself too.

I heard they're Theravada like the Indochinese trios (🇹🇭🇱🇦🇰🇭) so I thought their implementation would be quite similar myself, until a quick test with real 2022 data ended in failure - and it just went down the rabbit hole from there... 🥲

This is probably on par with the unimplemented Myanmar ones that I kept in the backburner.

Anyway, if you're still up for this, there's a list of African/Caribbean/Pacific [here](https://github.com/vacanza/holidays/issues/1141) that's likely more straightforward for new contributors as they're mostly Gregorian-based i.e. [Saint Lucia](https://github.com/vacanza/holidays/issues/1262)
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=2228) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [14 New issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.1% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.1% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


Prateekshit73: The output of  `make coverage` suggests the following:
```
holidays\countries\sri_lanka.py                                 84      0      8      1    99%   174->179
```
This corresponds to the following code snippet:
```python3
        if maha_sivarathri_date:
            # Maha Sivarathri Day.
            self._add_holiday(tr("මහ සිවරාත්රි දිනය"), maha_sivarathri_date)

        # Deepavali was considered a workday in 2003.
        if self._year >= 2004:
 ```
I attempted to implement a test for this with the following code:
  ```python3
  def test_maha_sivarathri(self):
    self.assertHolidayName(
        "මහ සිවරාත්රි දිනය",
        "2003-03-01",
        ...
    )
```
However, I am still getting a coverage of 99%.
PPsyrius: @arkid15r @KJhellico quick sidenote: `CodeCov` on PC isn't showing for the new commits and I don't even see their test message anywhere at all on the mobile version of the GitHub app.

SonarCloud does support code coverage display too, so we might want to migrate to that tool later for a simpler review process in the future. 
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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.1% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


KJhellico: > ```
> holidays\countries\sri_lanka.py                                 84      0      8      1    99%   174->179
> ```

For full coverage it's required to execute a branch where `maha_sivarathri_date` is `None`. But there is no such case in years range 2003-2025 (defined by `start_year`/`end_year` values for LK).

KJhellico: > @arkid15r @KJhellico quick sidenote: `CodeCov` on PC isn't showing for the new commits and I don't even see their test message anywhere at all on the mobile version of the GitHub app.

As I understand, it's because on latest commits the tests fail and coverage report not being uploaded.
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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.1% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


Prateekshit73:  > For full coverage it's required to execute a branch where `maha_sivarathri_date` is `None`. But there is no such case in years range 2003-2025 (defined by `start_year`/`end_year` values for LK).

Hi Sir @KJhellico,

Thank you for your insights! Given that `maha_sivarathri_date` is never `None` for the years 2003-2025, do you think it would be feasible to change the `start_year` to a year before 2003? This could help us create a test case that triggers the branch where `maha_sivarathri_date` is `None`, allowing us to achieve full coverage.

As a referenced in the code itself, `Sri Lanka's Holidays Act (No. 29 of 1971) was first proclaimed on September 2nd, 1971, which might provide context for setting the start_year`.
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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


KJhellico: > `Sri Lanka's Holidays Act (No. 29 of 1971) was first proclaimed on September 2nd, 1971

Then I think it's better to pick 1972 as `start_year`.

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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


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=2228) **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=2228&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=2228&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=2228&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=2228&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2228&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2228)


Prateekshit73: > Thanks for this amazing contribution @Prateekshit73 !

I just initiated the PR; it was @PPsyrius, @KJhellico and you who made it work.



arkid15r: > > Thanks for this amazing contribution @Prateekshit73 !
> 
> I just initiated the PR; it was @PPsyrius, @KJhellico and you who made it work.

Yep, those two are just awesome in terms of calendars/holidays work. We are so lucky to have them as a part of the team.

Patch:
diff --git a/README.rst b/README.rst
index f0a82bef..5ce0c205 100644
--- a/README.rst
+++ b/README.rst
@@ -146,7 +146,7 @@ Available Countries
 .. _ISO 639-1 code: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
 .. _ISO 639-2 code: https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes
 
-We currently support 156 country codes. The standard way to refer to a country
+We currently support 157 country codes. The standard way to refer to a country
 is by using its `ISO 3166-1 alpha-2 code`_, the same used for domain names, and
 for a subdivision its `ISO 3166-2 code`_. Some countries have common or foreign
 names or abbreviations as aliases for their subdivisions. These are defined in
@@ -845,6 +845,11 @@ All other default values are highlighted with bold:
      - Autonomous communities: AN, AR, AS, CB, CE, CL, CM, CN, CT, EX, GA, IB, MC, MD, ML, NC, PV, RI, VC
      - en_US, **es**, uk
      -
+   * - Sri Lanka
+     - LK
+     -
+     - en_US, **si_LK**, ta_LK
+     - BANK, GOVERNMENT, WORKDAY
    * - Sweden
      - SE
      -
diff --git a/holidays/calendars/__init__.py b/holidays/calendars/__init__.py
index ff8bb182..7edbcd8c 100644
--- a/holidays/calendars/__init__.py
+++ b/holidays/calendars/__init__.py
@@ -22,4 +22,5 @@ from holidays.calendars.islamic import _CustomIslamicHolidays, _IslamicLunar
 from holidays.calendars.julian import JULIAN_CALENDAR
 from holidays.calendars.julian_revised import JULIAN_REVISED_CALENDAR
 from holidays.calendars.persian import _Persian
+from holidays.calendars.sinhala import _SinhalaLunar, _CustomSinhalaHolidays
 from holidays.calendars.thai import _ThaiLunisolar, KHMER_CALENDAR, THAI_CALENDAR
diff --git a/holidays/calendars/sinhala.py b/holidays/calendars/sinhala.py
new file mode 100644
index 00000000..f4ac119d
--- /dev/null
+++ b/holidays/calendars/sinhala.py
@@ -0,0 +1,414 @@
+#  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 AUTHORS 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 collections.abc import Iterable
+from datetime import date
+from typing import Optional
+
+from holidays.calendars.custom import _CustomCalendar
+from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
+from holidays.helpers import _normalize_tuple
+
+BAK_POYA = "BAK_POYA"
+BINARA_POYA = "BINARA_POYA"
+DURUTHU_POYA = "DURUTHU_POYA"
+ESALA_POYA = "ESALA_POYA"
+IL_POYA = "IL_POYA"
+MEDIN_POYA = "MEDIN_POYA"
+NAWAM_POYA = "NAWAM_POYA"
+NIKINI_POYA = "NIKINI_POYA"
+POSON_POYA = "POSON_POYA"
+UNDUVAP_POYA = "UNDUVAP_POYA"
+VAP_POYA = "VAP_POYA"
+VESAK_POYA = "VESAK_POYA"
+
+
+class _SinhalaLunar:
+    """
+    Sinhala Lunar calendar for 2003-2025 years.
+
+    Their Buddhist Uposatha day calculation method is different from Thai LuniSolar
+    and Buddhist (Mahayana) used in East Asia.
+
+    Due to the fact that Poya (Uposatha) days are calculated astronomically
+    based on how close a particular day is closest to full moon at noon, and that
+    an extra month is added every 33 months interval, this is hardcoded for now.
+
+    Adhi month dates are instead hardcoded in Sri Lanka country implementation.
+    """
+
+    START_YEAR = 2003
+    END_YEAR = 2025
+
+    BAK_POYA_DATES = {
+        2003: (APR, 16),
+        2004: (APR, 5),
+        2005: (APR, 23),
+        2006: (APR, 13),
+        2007: (APR, 2),
+        2008: (APR, 19),
+        2009: (APR, 9),
+        2010: (MAR, 29),
+        2011: (APR, 17),
+        2012: (APR, 6),
+        2013: (APR, 25),
+        2014: (APR, 14),
+        2015: (APR, 3),
+        2016: (APR, 21),
+        2017: (APR, 10),
+        2018: (MAR, 31),
+        2019: (APR, 19),
+        2020: (APR, 7),
+        2021: (APR, 26),
+        2022: (APR, 16),
+        2023: (APR, 5),
+        2024: (APR, 23),
+        2025: (APR, 12),
+    }
+
+    BINARA_POYA_DATES = {
+        2003: (SEP, 10),
+        2004: (SEP, 28),
+        2005: (SEP, 17),
+        2006: (SEP, 7),
+        2007: (SEP, 26),
+        2008: (SEP, 14),
+        2009: (SEP, 4),
+        2010: (SEP, 22),
+        2011: (SEP, 11),
+        2012: (SEP, 29),
+        2013: (SEP, 19),
+        2014: (SEP, 8),
+        2015: (SEP, 27),
+        2016: (SEP, 16),
+        2017: (SEP, 5),
+        2018: (SEP, 24),
+        2019: (SEP, 13),
+        2020: (SEP, 1),
+        2021: (SEP, 20),
+        2022: (SEP, 10),
+        2023: (SEP, 29),
+        2024: (SEP, 17),
+        2025: (SEP, 7),
+    }
+
+    DURUTHU_POYA_DATES = {
+        2003: (JAN, 17),
+        2004: (JAN, 7),
+        2005: (JAN, 24),
+        2006: (JAN, 13),
+        2007: (JAN, 3),
+        2008: (JAN, 22),
+        2009: ((JAN, 10), (DEC, 31)),
+        2011: (JAN, 19),
+        2012: (JAN, 8),
+        2013: (JAN, 26),
+        2014: (JAN, 15),
+        2015: (JAN, 4),
+        2016: (JAN, 23),
+        2017: (JAN, 12),
+        2018: (JAN, 1),
+        2019: (JAN, 20),
+        2020: (JAN, 10),
+        2021: (JAN, 28),
+        2022: (JAN, 17),
+        2023: (JAN, 6),
+        2024: (JAN, 25),
+        2025: (JAN, 13),
+    }
+
+    ESALA_POYA_DATES = {
+        2003: (JUL, 13),
+        2004: (JUL, 2),
+        2005: (JUL, 21),
+        2006: (JUL, 10),
+        2007: (JUL, 29),
+        2008: (JUL, 17),
+        2009: (JUL, 6),
+        2010: (JUL, 25),
+        2011: (JUL, 14),
+        2012: (JUL, 3),
+        2013: (JUL, 22),
+        2014: (JUL, 12),
+        2015: (JUL, 31),
+        2016: (JUL, 19),
+        2017: (JUL, 8),
+        2018: (JUL, 27),
+        2019: (JUL, 16),
+        2020: (JUL, 4),
+        2021: (JUL, 23),
+        2022: (JUL, 13),
+        2023: (AUG, 1),
+        2024: (JUL, 20),
+        2025: (JUL, 10),
+    }
+
+    IL_POYA_DATES = {
+        2003: (NOV, 8),
+        2004: (NOV, 26),
+        2005: (NOV, 15),
+        2006: (NOV, 5),
+        2007: (NOV, 24),
+        2008: (NOV, 12),
+        2009: (NOV, 2),
+        2010: (NOV, 21),
+        2011: (NOV, 10),
+        2012: (NOV, 27),
+        2013: (NOV, 17),
+        2014: (NOV, 6),
+        2015: (NOV, 25),
+        2016: (NOV, 14),
+        2017: (NOV, 3),
+        2018: (NOV, 22),
+        2019: (NOV, 12),
+        2020: (NOV, 29),
+        2021: (NOV, 18),
+        2022: (NOV, 7),
+        2023: (NOV, 26),
+        2024: (NOV, 15),
+        2025: (NOV, 5),
+    }
+
+    MEDIN_POYA_DATES = {
+        2003: (MAR, 18),
+        2004: (MAR, 6),
+        2005: (MAR, 25),
+        2006: (MAR, 14),
+        2007: (MAR, 3),
+        2008: (MAR, 21),
+        2009: (MAR, 10),
+        2010: (FEB, 28),
+        2011: (MAR, 19),
+        2012: (MAR, 7),
+        2013: (MAR, 26),
+        2014: (MAR, 16),
+        2015: (MAR, 5),
+        2016: (MAR, 22),
+        2017: (MAR, 12),
+        2018: (MAR, 1),
+        2019: (MAR, 20),
+        2020: (MAR, 9),
+        2021: (MAR, 28),
+        2022: (MAR, 17),
+        2023: (MAR, 6),
+        2024: (MAR, 24),
+        2025: (MAR, 13),
+    }
+
+    NAWAM_POYA_DATES = {
+        2003: (FEB, 16),
+        2004: (FEB, 5),
+        2005: (FEB, 23),
+        2006: (FEB, 12),
+        2007: (FEB, 1),
+        2008: (FEB, 20),
+        2009: (FEB, 9),
+        2010: (JAN, 29),
+        2011: (FEB, 17),
+        2012: (FEB, 7),
+        2013: (FEB, 25),
+        2014: (FEB, 14),
+        2015: (FEB, 3),
+        2016: (FEB, 22),
+        2017: (FEB, 10),
+        2018: (JAN, 31),
+        2019: (FEB, 19),
+        2020: (FEB, 8),
+        2021: (FEB, 26),
+        2022: (FEB, 16),
+        2023: (FEB, 5),
+        2024: (FEB, 23),
+        2025: (FEB, 12),
+    }
+
+    NIKINI_POYA_DATES = {
+        2003: (AUG, 11),
+        2004: (AUG, 29),
+        2005: (AUG, 19),
+        2006: (AUG, 9),
+        2007: (AUG, 28),
+        2008: (AUG, 16),
+        2009: (AUG, 5),
+        2010: (AUG, 24),
+        2011: (AUG, 13),
+        2012: (AUG, 1),
+        2013: (AUG, 20),
+        2014: (AUG, 10),
+        2015: (AUG, 29),
+        2016: (AUG, 17),
+        2017: (AUG, 7),
+        2018: (AUG, 25),
+        2019: (AUG, 14),
+        2020: (AUG, 3),
+        2021: (AUG, 22),
+        2022: (AUG, 11),
+        2023: (AUG, 30),
+        2024: (AUG, 19),
+        2025: (AUG, 8),
+    }
+
+    POSON_POYA_DATES = {
+        2003: (JUN, 14),
+        2004: (JUN, 2),
+        2005: (JUN, 21),
+        2006: (JUN, 11),
+        2007: (JUN, 30),
+        2008: (JUN, 18),
+        2009: (JUN, 7),
+        2010: (JUN, 25),
+        2011: (JUN, 15),
+        2012: (JUN, 4),
+        2013: (JUN, 23),
+        2014: (JUN, 12),
+        2015: (JUN, 2),
+        2016: (JUN, 19),
+        2017: (JUN, 8),
+        2018: (JUN, 27),
+        2019: (JUN, 16),
+        2020: (JUN, 5),
+        2021: (JUN, 24),
+        2022: (JUN, 14),
+        2023: (JUN, 3),
+        2024: (JUN, 21),
+        2025: (JUN, 10),
+    }
+
+    UNDUVAP_POYA_DATES = {
+        2003: (DEC, 8),
+        2004: (DEC, 26),
+        2005: (DEC, 15),
+        2006: (DEC, 4),
+        2007: (DEC, 23),
+        2008: (DEC, 12),
+        2009: (DEC, 1),
+        2010: (DEC, 20),
+        2011: (DEC, 10),
+        2012: (DEC, 27),
+        2013: (DEC, 16),
+        2014: (DEC, 6),
+        2015: (DEC, 24),
+        2016: (DEC, 13),
+        2017: (DEC, 3),
+        2018: (DEC, 22),
+        2019: (DEC, 11),
+        2020: (DEC, 29),
+        2021: (DEC, 18),
+        2022: (DEC, 7),
+        2023: (DEC, 26),
+        2024: (DEC, 14),
+        2025: (DEC, 4),
+    }
+
+    VAP_POYA_DATES = {
+        2003: (OCT, 9),
+        2004: (OCT, 27),
+        2005: (OCT, 17),
+        2006: (OCT, 6),
+        2007: (OCT, 25),
+        2008: (OCT, 14),
+        2009: (OCT, 3),
+        2010: (OCT, 22),
+        2011: (OCT, 11),
+        2012: (OCT, 29),
+        2013: (OCT, 18),
+        2014: (OCT, 8),
+        2015: (OCT, 27),
+        2016: (OCT, 15),
+        2017: (OCT, 5),
+        2018: (OCT, 24),
+        2019: (OCT, 13),
+        2020: (OCT, 30),
+        2021: (OCT, 20),
+        2022: (OCT, 9),
+        2023: (OCT, 28),
+        2024: (OCT, 17),
+        2025: (OCT, 6),
+    }
+
+    VESAK_POYA_DATES = {
+        2003: (MAY, 15),
+        2004: (MAY, 4),
+        2005: (MAY, 23),
+        2006: (MAY, 12),
+        2007: (MAY, 1),
+        2008: (MAY, 19),
+        2009: (MAY, 8),
+        2010: (MAY, 27),
+        2011: (MAY, 17),
+        2012: (MAY, 5),
+        2013: (MAY, 24),
+        2014: (MAY, 14),
+        2015: (MAY, 3),
+        2016: (MAY, 21),
+        2017: (MAY, 10),
+        2018: (APR, 29),
+        2019: (MAY, 18),
+        2020: (MAY, 7),
+        2021: (MAY, 26),
+        2022: (MAY, 15),
+        2023: (MAY, 5),
+        2024: (MAY, 23),
+        2025: (MAY, 12),
+    }
+
+    def _get_holiday(self, holiday: str, year: int) -> tuple[Optional[date], bool]:
+        estimated_dates = getattr(self, f"{holiday}_DATES", {})
+        exact_dates = getattr(self, f"{holiday}_DATES_{_CustomCalendar.CUSTOM_ATTR_POSTFIX}", {})
+        dt = exact_dates.get(year, estimated_dates.get(year, ()))
+        return date(year, *dt) if dt else None, year not in exact_dates
+
+    def _get_holiday_set(self, holiday: str, year: int) -> Iterable[tuple[date, bool]]:
+        estimated_dates = getattr(self, f"{holiday}_DATES", {})
+        exact_dates = getattr(self, f"{holiday}_DATES_{_CustomCalendar.CUSTOM_ATTR_POSTFIX}", {})
+        for year in (year - 1, year):
+            for dt in _normalize_tuple(exact_dates.get(year, estimated_dates.get(year, ()))):
+                yield date(year, *dt), year not in exact_dates
+
+    def bak_poya_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(BAK_POYA, year)
+
+    def binara_poya_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(BINARA_POYA, year)
+
+    def duruthu_poya_date(self, year: int) -> Iterable[tuple[date, bool]]:
+        return self._get_holiday_set(DURUTHU_POYA, year)
+
+    def esala_poya_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(ESALA_POYA, year)
+
+    def il_poya_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(IL_POYA, year)
+
+    def medin_poya_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(MEDIN_POYA, year)
+
+    def nawam_poya_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(NAWAM_POYA, year)
+
+    def nikini_poya_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(NIKINI_POYA, year)
+
+    def poson_poya_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(POSON_POYA, year)
+
+    def unduvap_poya_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(UNDUVAP_POYA, year)
+
+    def vap_poya_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(VAP_POYA, year)
+
+    def vesak_poya_date(self, year: int) -> tuple[Optional[date], bool]:
+        return self._get_holiday(VESAK_POYA, year)
+
+
+class _CustomSinhalaHolidays(_CustomCalendar, _SinhalaLunar):
+    pass
diff --git a/holidays/countries/__init__.py b/holidays/countries/__init__.py
index 400afaba..dc2a555d 100644
--- a/holidays/countries/__init__.py
+++ b/holidays/countries/__init__.py
@@ -145,6 +145,7 @@ from .slovenia import Slovenia, SI, SVN
 from .south_africa import SouthAfrica, ZA, ZAF
 from .south_korea import SouthKorea, KR, KOR, Korea
 from .spain import Spain, ES, ESP
+from .sri_lanka import SriLanka, LK, LKA
 from .sweden import Sweden, SE, SWE
 from .switzerland import Switzerland, CH, CHE
 from .taiwan import Taiwan, TW, TWN
diff --git a/holidays/countries/sri_lanka.py b/holidays/countries/sri_lanka.py
new file mode 100644
index 00000000..a3ba0f38
--- /dev/null
+++ b/holidays/countries/sri_lanka.py
@@ -0,0 +1,515 @@
+#  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 AUTHORS 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 _CustomHinduHolidays, _CustomIslamicHolidays
+from holidays.calendars.gregorian import (
+    JAN,
+    FEB,
+    MAR,
+    APR,
+    MAY,
+    JUN,
+    JUL,
+    AUG,
+    SEP,
+    OCT,
+    NOV,
+    DEC,
+    _timedelta,
+)
+from holidays.constants import BANK, GOVERNMENT, PUBLIC, WORKDAY
+from holidays.groups import (
+    ChristianHolidays,
+    HinduCalendarHolidays,
+    InternationalHolidays,
+    IslamicHolidays,
+    SinhalaCalendarHolidays,
+    StaticHolidays,
+)
+from holidays.holiday_base import HolidayBase
+
+
+class SriLanka(
+    HolidayBase,
+    ChristianHolidays,
+    HinduCalendarHolidays,
+    InternationalHolidays,
+    IslamicHolidays,
+    SinhalaCalendarHolidays,
+    StaticHolidays,
+):
+    """
+    References:
+    - http://www.commonlii.org/lk/legis/num_act/ha29o1971152/  # No. 29 of 1971 (Holidays Act)
+    - http://www.commonlii.org/lk/legis/num_act/ha21o1991232/  # No. 21 of 1991 (Amendment)
+    - https://web.archive.org/web/20110722150724/http://www.pubad.gov.lk/Holidays/holidays%202003.htm
+    - https://web.archive.org/web/20111018053717/http://www.pubad.gov.lk/Holidays/Public%20&%20Bank%20Holidays%202004.pdf
+    - https://web.archive.org/web/20241120204015/https://documents.gov.lk/en/calendar.php
+
+    Cross-Checked With:
+    - https://web.archive.org/web/20111018053927/http://www.pubad.gov.lk/Holidays/Public%20&%20Bank%20Holidays%202005.pdf
+    - https://web.archive.org/web/20111018061003/http://www.pubad.gov.lk/Holidays/Public%20&%20Bank%20Holidays%202006.pdf
+    - https://web.archive.org/web/20110722150032/http://www.pubad.gov.lk/Holidays/Public%20&%20Bank%20Holidays%202007.pdf
+    - https://web.archive.org/web/20111018071837/http://www.pubad.gov.lk/Holidays/PublicBankHolidays2008.pdf
+    - https://web.archive.org/web/20120309065711/http://www.pubad.gov.lk/Holidays/Public&BankHolidays2009.pdf
+    - https://web.archive.org/web/20111018071247/http://www.pubad.gov.lk/Holidays/Public&BankHolidays2010.pdf
+    - https://web.archive.org/web/20110722151043/http://www.pubad.gov.lk/Holidays/Public&BankHolidays2011.pdf
+    - https://web.archive.org/web/20111125074237/http://www.pubad.gov.lk/Holidays/Public&BankHolidays2012.pdf
+    - https://www.cbsl.gov.lk/en/about/about-the-bank/bank-holidays-2019
+    - https://www.cbsl.gov.lk/en/about/about-the-bank/bank-holidays-2020
+    - https://www.cbsl.gov.lk/en/about/about-the-bank/bank-holidays-2021
+    - https://www.cbsl.gov.lk/en/about/about-the-bank/bank-holidays-2022
+    - https://www.cbsl.gov.lk/en/about/about-the-bank/bank-holidays-2023
+    - https://www.cbsl.gov.lk/en/about/about-the-bank/bank-holidays-2024
+    - https://www.cbsl.gov.lk/en/about/about-the-bank/bank-holidays-2025
+    """
+
+    country = "LK"
+    supported_categories = (BANK, GOVERNMENT, PUBLIC, WORKDAY)
+    default_language = "si_LK"
+    # %s (estimated).
+    estimated_label = tr("%s (අනුමානිත)")
+    supported_languages = ("en_US", "si_LK", "ta_LK")
+    # Sri Lanka's Holidays Act (No. 29 of 1971) was first proclaimed on SEP 2nd, 1971
+    # but the earliest citable calendar online is from 2003.
+    # As there's no source for future Poya dates, end year is capped at 2025.
+    start_year = 1972
+    end_year = 2025
+
+    def __init__(self, *args, **kwargs):
+        ChristianHolidays.__init__(self)
+        HinduCalendarHolidays.__init__(self, SriLankaHinduHolidays)
+        InternationalHolidays.__init__(self)
+        IslamicHolidays.__init__(self, SriLankaIslamicHolidays)
+        SinhalaCalendarHolidays.__init__(self)
+        StaticHolidays.__init__(self, cls=SriLankaStaticHolidays)
+        super().__init__(*args, **kwargs)
+
+    def _populate_public_holidays(self):
+        # Non-Sectarian Holidays.
+
+        # Tamil Thai Pongal Day.
+        name = tr("දෙමළ තෛපොංැලල් දිනය")
+        thai_pongal_years_jan_14 = {
+            2005,
+            2006,
+            2009,
+            2010,
+            2013,
+            2014,
+            2017,
+            2018,
+            2021,
+            2022,
+            2025,
+        }
+        if self._year in thai_pongal_years_jan_14:
+            self._add_holiday_jan_14(name)
+        else:
+            self._add_holiday_jan_15(name)
+
+        # Independence Day.
+        self._add_holiday_feb_4(tr("නිදහස් සමරු දිනය"))
+
+        # Sinhala and Tamil New Year.
+        name = tr("සිංහල හා දෙමළ අලුත් අවුරුදු දිනය")
+        aluth_avurudda_years_apr_13 = {
+            2004,
+            2008,
+            2012,
+            # 2016 is on APR, 14.
+            2020,
+            2024,
+        }
+        if self._year in aluth_avurudda_years_apr_13:
+            dt = self._add_holiday_apr_13(name)
+        else:
+            dt = self._add_holiday_apr_14(name)
+        # Day Before Sinhala and Tamil New Year.
+        self._add_holiday(tr("සිංහල හා දෙමළ අලුත් අවුරුදු දිනට පෙර දිනය"), _timedelta(dt, -1))
+
+        # International Workers' Day.
+        self._add_labor_day(tr("ලොක කම්කරු දිනය"))
+
+        # Hindu Holidays.
+
+        maha_sivarathri_dates = {
+            # The one used in Sri Lanka isn't an exact match with India, used with caution.
+            2003: (MAR, 1),
+            2004: (FEB, 18),
+            2005: (MAR, 8),
+            2006: (FEB, 26),
+            2007: (FEB, 16),
+            2008: (MAR, 6),
+            2009: (FEB, 23),
+            2010: (MAR, 13),
+            2011: (MAR, 2),
+            2012: (FEB, 20),
+            2013: (MAR, 10),
+            2014: (FEB, 27),
+            2015: (FEB, 17),
+            2016: (MAR, 7),
+            2017: (FEB, 24),
+            2018: (FEB, 13),
+            2019: (MAR, 4),
+            2020: (FEB, 21),
+            2021: (MAR, 11),
+            2022: (MAR, 1),
+            2023: (FEB, 18),
+            2024: (MAR, 8),
+            2025: (FEB, 26),
+        }
+        maha_sivarathri_date = maha_sivarathri_dates.get(self._year)
+        if maha_sivarathri_date:
+            # Maha Sivarathri Day.
+            self._add_holiday(tr("මහ සිවරාත්රි දිනය"), maha_sivarathri_date)
+
+        # Deepavali was a working day in 2003.
+        if self._year >= 2004:
+            # Deepavali Festival Day.
+            self._add_diwali(tr("දීපවාලි උත්සව දිනය"))
+
+        # Christian Holidays.
+
+        # Good Friday.
+        self._add_good_friday(tr("මහ සිකුරාදා දිනය"))
+
+        # Christmas Day.
+        self._add_christmas_day(tr("නත්තල් උත්සව දිනය"))
+
+        # Poya Holidays.
+        # All Adhi Poya Holidays will instead be added in StaticHolidays.
+
+        # Duruthu Full Moon Poya Day.
+        self._add_duruthu_poya(tr("දුරුතු පුර පසළොස්වක පෝය දිනය"))
+
+        # Nawam Full Moon Poya Day.
+        self._add_nawam_poya(tr("නවම් පුර පසළොස්වක පෝය දිනය"))
+
+        # Medin Full Moon Poya Day.
+        self._add_medin_poya(tr("මැදින් පුර පසළොස්වක පෝය දිනය"))
+
+        # Bak Full Moon Poya Day.
+        self._add_bak_poya(tr("බක් පුර පසළොස්වක පෝය දිනය"))
+
+        # Vesak Full Moon Poya Day.
+        dt = self._add_vesak_poya(tr("වෙසක් පුර පසළොස්වක පෝය දිනය"))
+
+        if self._year >= 2003:
+            # Day Following Vesak Full Moon Poya Day.
+            self._add_holiday(tr("වෙසක් පුර පසළොස්වක පෝය දිනට පසු දිනය"), _timedelta(dt, +1))
+
+        # Poson Full Moon Poya Day.
+        self._add_poson_poya(tr("පොසොන් පුර පසළොස්වක පෝය දිනය"))
+
+        # Esala Full Moon Poya Day.
+        self._add_esala_poya(tr("ඇසල පුර පසළොස්වක පෝය දිනය"))
+
+        # Nikini Full Moon Poya Day.
+        self._add_nikini_poya(tr("නිකිණි පුර පසළොස්වක පෝය දිනය"))
+
+        # Binara Full Moon Poya Day.
+        self._add_binara_poya(tr("බිනර පුර පසළොස්වක පෝය දිනය"))
+
+        # Vap Full Moon Poya Day.
+        self._add_vap_poya(tr("වප් පුර පසළොස්වක පෝය දිනය"))
+
+        # Il Full Moon Poya Day.
+        self._add_il_poya(tr("ඉල් පුර පසළොස්වක පෝය දිනය"))
+
+        # Unduvap Full Moon Poya Day.
+        self._add_unduvap_poya(tr("උඳුවප් පුර පසළොස්වක පෝය දිනය"))
+
+        # Islamic Holidays.
+
+        # Eid al-Fitr.
+        self._add_eid_al_fitr_day(tr("ඊදුල් ෆීතර්"))
+
+        # Eid al-Adha.
+        self._add_eid_al_adha_day(tr("ඊදුල් අල්හා"))
+
+        #  The Prophet's Birthday.
+        self._add_mawlid_day(tr("නබි නායකතුමාගේ උපන් දිනය"))
+
+
+class LK(SriLanka):
+    pass
+
+
+class LKA(SriLanka):
+    pass
+
+
+class SriLankaHinduHolidays(_CustomHinduHolidays):
+    DIWALI_DATES = {
+        2003: (OCT, 24),
+        2004: (NOV, 11),
+        2005: (NOV, 1),
+        2006: (OCT, 21),
+        2007: (NOV, 8),
+        2008: (OCT, 27),
+        2009: (OCT, 17),
+        2010: (NOV, 5),
+        2011: (OCT, 26),
+        2012: (NOV, 13),
+        2013: (NOV, 2),
+        2014: (OCT, 22),
+        2015: (NOV, 10),
+        2016: (OCT, 29),
+        2017: (OCT, 18),
+        2018: (NOV, 6),
+        2019: (OCT, 27),
+        2020: (NOV, 14),
+        2021: (NOV, 4),
+        2022: (OCT, 24),
+        2023: (NOV, 12),
+        2024: (OCT, 31),
+        2025: (OCT, 20),
+    }
+
+
+class SriLankaIslamicHolidays(_CustomIslamicHolidays):
+    EID_AL_ADHA_DATES = {
+        2003: (FEB, 12),
+        2004: (FEB, 1),
+        2005: (JAN, 21),
+        2006: ((JAN, 11), (DEC, 31)),
+        2007: (DEC, 21),
+        2008: (DEC, 9),
+        2009: (NOV, 28),
+        2010: (NOV, 17),
+        # https://www.adaderana.lk/news.php?nid=15606
+        2011: (NOV, 7),
+        # https://www.adaderana.lk/news.php?nid=20136
+        2012: (OCT, 27),
+        2013: (OCT, 16),
+        2014: (OCT, 5),
+        2015: (SEP, 24),
+        2016: (SEP, 12),
+        2017: (SEP, 1),
+        2018: (AUG, 22),
+        2019: (AUG, 12),
+        2020: (AUG, 1),
+        2021: (JUL, 21),
+        2022: (JUL, 10),
+        2023: (JUN, 29),
+        2024: (JUN, 17),
+        2025: (JUN, 7),
+    }
+
+    EID_AL_FITR_DATES = {
+        2003: (NOV, 26),
+        2004: (NOV, 14),
+        2005: (NOV, 4),
+        2006: (OCT, 24),
+        2007: (OCT, 13),
+        2008: (OCT, 1),
+        2009: (SEP, 21),
+        2010: (SEP, 10),
+        2011: (AUG, 31),
+        2012: (AUG, 19),
+        2013: (AUG, 9),
+        2014: (JUL, 29),
+        2015: (JUL, 18),
+        2016: (JUL, 6),
+        2017: (JUN, 26),
+        2018: (JUN, 15),
+        2019: (JUN, 5),
+        2020: (MAY, 25),
+        2021: (MAY, 14),
+        2022: (MAY, 3),
+        2023: (APR, 22),
+        2024: (APR, 11),
+        2025: (MAR, 31),
+    }
+
+    MAWLID_DATES = {
+        2003: (MAY, 14),
+        2004: (MAY, 2),
+        2005: (APR, 22),
+        2006: (APR, 11),
+        2007: (APR, 1),
+        2008: (MAR, 20),
+        2009: (MAR, 10),
+        2010: (FEB, 27),
+        2011: (FEB, 16),
+        2012: (FEB, 5),
+        2013: (JAN, 25),
+        2014: (JAN, 14),
+        # Technically 2015 has both JAN 5 and DEC 24
+        # but this is only observed for JAN 4.
+        2015: (JAN, 4),
+        2016: (DEC, 12),
+        2017: (DEC, 1),
+        2018: (NOV, 20),
+        2019: (NOV, 10),
+        2020: (OCT, 30),
+        2021: (OCT, 19),
+        2022: (OCT, 9),
+        2023: (SEP, 28),
+        2024: (SEP, 16),
+        2025: (SEP, 5),
+    }
+
+
+class SriLankaStaticHolidays:
+    """
+    References:
+    - https://www.adaderana.lk/news.php?nid=13026
+    - https://www.adaderana.lk/news.php?nid=17539
+    - https://www.adaderana.lk/news.php?nid=22168
+    - https://www.adaderana.lk/news.php?nid=34870
+    - https://www.adaderana.lk/news.php?nid=55146
+    - https://www.adaderana.lk/news.php?nid=61437
+    - https://www.adaderana.lk/news.php?nid=64367
+    - https://www.adaderana.lk/news.php?nid=81686
+    - https://www.adaderana.lk/news.php?nid=82111
+    - https://www.adaderana.lk/news.php?nid=82979
+    - https://www.adaderana.lk/news.php?nid=83082
+    - https://www.adaderana.lk/news.php?nid=84035
+    - https://www.adaderana.lk/news.php?nid=98560
+    - https://www.adaderana.lk/news.php?nid=102125
+    - https://web.archive.org/web/20110722150724/http://www.pubad.gov.lk/Holidays/holidays%202003.htm
+    - https://web.archive.org/web/20111018053717/http://www.pubad.gov.lk/Holidays/Public%20&%20Bank%20Holidays%202004.pdf
+    - https://web.archive.org/web/20241120204015/https://documents.gov.lk/en/calendar.php
+    """
+
+    # Adhi Binara Full Moon Poya Day.
+    adhi_binara_poya_name = tr("අධි බිනර පුර පසළොස්වක පෝය දිනය")
+
+    # Adhi Esala Full Moon Poya Day.
+    adhi_esala_poya_name = tr("අධි ඇසල පුර පසළොස්වක පෝය දිනය")
+
+    # Adhi Poson Full Moon Poya Day.
+    adhi_poson_poya_name = tr("අධි පොසොන් පුර පසළොස්වක පෝය දිනය")
+
+    # Adhi Vap Full Moon Poya Day.
+    adhi_vap_poya_name = tr("අධි වප් පුර පසළොස්වක පෝය දිනය")
+
+    # Adhi Vesak Full Mon Poya Day.
+    adhi_vesak_poya_name = tr("අධි වෙසක් පුර පසළොස්වක පෝය දිනය")
+
+    # Half-Day Special Bank Holiday.
+    half_day_special_bank_holiday_name = tr("දින භාගයක විශේෂ බැංකු නිවාඩු දිනය")
+
+    # Public Sector Holiday.
+    public_sector_holiday_name = tr("රාජ්ය අංශයේ නිවාඩු දිනය")
+
+    # Special Bank Holiday.
+    special_bank_holiday_name = tr("විශේෂ බැංකු නිවාඩු දිනය")
+
+    # Special Public Holiday.
+    special_public_holiday_name = tr("විශේෂ රජයේ නිවාඩු දිනය")
+
+    special_bank_holidays = {
+        2005: (
+            (MAY, 2, special_bank_holiday_name),
+            (DEC, 26, special_bank_holiday_name),
+        ),
+        2007: (
+            (FEB, 5, special_bank_holiday_name),
+            (APR, 3, special_bank_holiday_name),
+        ),
+        2008: (APR, 18, special_bank_holiday_name),
+        2011: (
+            (MAY, 2, special_bank_holiday_name),
+            (DEC, 26, special_bank_holiday_name),
+        ),
+        2012: (
+            (JAN, 16, special_bank_holiday_name),
+            (FEB, 10, special_bank_holiday_name),
+            (MAY, 7, special_bank_holiday_name),
+        ),
+        2013: (APR, 15, special_bank_holiday_name),
+        2014: (APR, 15, special_bank_holiday_name),
+        2015: (JAN, 5, special_bank_holiday_name),
+        2016: (
+            (MAY, 2, special_bank_holiday_name),
+            (MAY, 23, special_bank_holiday_name),
+            (DEC, 26, special_bank_holiday_name),
+        ),
+        2018: (
+            (JAN, 15, special_bank_holiday_name),
+            (FEB, 5, special_bank_holiday_name),
+        ),
+        2019: (
+            (APR, 15, special_bank_holiday_name),
+            # MAY 20 got upgraded to Special Public Holiday.
+            (NOV, 11, special_bank_holiday_name),
+        ),
+        2020: (APR, 14, special_bank_holiday_name),
+        2021: (
+            (APR, 30, half_day_special_bank_holiday_name),
+            (DEC, 24, half_day_special_bank_holiday_name),
+        ),
+        2022: (
+            # MAY 2 got upgraded to Special Public Holiday.
+            (OCT, 10, special_bank_holiday_name),
+            (DEC, 26, special_bank_holiday_name),
+        ),
+        2023: (JAN, 16, special_bank_holiday_name),
+        2025: (APR, 15, special_bank_holiday_name),
+    }
+
+    special_government_holidays = {
+        2020: (JUN, 4, public_sector_holiday_name),
+        2022: (
+            (JUN, 13, public_sector_holiday_name),
+            # All Friday between JUN 15, 2022 to AUG 2, 2022.
+            (JUN, 17, public_sector_holiday_name),
+            (JUN, 24, public_sector_holiday_name),
+            (JUL, 1, public_sector_holiday_name),
+            (JUL, 8, public_sector_holiday_name),
+            (JUL, 15, public_sector_holiday_name),
+            (JUL, 22, public_sector_holiday_name),
+            (JUL, 29, public_sector_holiday_name),
+        ),
+    }
+
+    special_public_holidays = {
+        2004: (JUL, 31, adhi_esala_poya_name),
+        2007: (MAY, 31, adhi_poson_poya_name),
+        2010: (APR, 28, adhi_vesak_poya_name),
+        # 2011, MAY 2 confirmed as not getting upgrade to Special Public Holiday.
+        2012: (
+            (MAY, 7, special_public_holiday_name),
+            (AUG, 31, adhi_binara_poya_name),
+        ),
+        2013: (APR, 15, special_public_holiday_name),
+        2015: (JUL, 1, adhi_esala_poya_name),
+        2016: (APR, 15, special_public_holiday_name),
+        2018: (MAY, 29, adhi_poson_poya_name),
+        2019: (MAY, 20, special_public_holiday_name),
+        2020: (
+            (MAR, 16, special_public_holiday_name),
+            (MAR, 17, special_public_holiday_name),
+            (MAR, 18, special_public_holiday_name),
+            (MAR, 19, special_public_holiday_name),
+            (OCT, 1, adhi_vap_poya_name),
+        ),
+        2022: (
+            (APR, 11, special_public_holiday_name),
+            (APR, 12, special_public_holiday_name),
+            (MAY, 2, special_public_holiday_name),
+        ),
+        2023: (JUL, 3, adhi_esala_poya_name),
+        2024: (
+            (APR, 15, special_public_holiday_name),
+            (SEP, 29, special_public_holiday_name),
+        ),
+    }
+
+    special_workday_holidays = {
+        2003: (OCT, 24, tr("දීපවාලි උත්සව දිනය")),  # Deepavali Festival Day.
+    }
diff --git a/holidays/groups/__init__.py b/holidays/groups/__init__.py
index ef5527cf..1e940a1c 100644
--- a/holidays/groups/__init__.py
+++ b/holidays/groups/__init__.py
@@ -22,4 +22,5 @@ from holidays.groups.hindu import HinduCalendarHolidays
 from holidays.groups.international import InternationalHolidays
 from holidays.groups.islamic import IslamicHolidays
 from holidays.groups.persian import PersianCalendarHolidays
+from holidays.groups.sinhala import SinhalaCalendarHolidays
 from holidays.groups.thai import ThaiCalendarHolidays
diff --git a/holidays/groups/sinhala.py b/holidays/groups/sinhala.py
new file mode 100644
index 00000000..6a3abafb
--- /dev/null
+++ b/holidays/groups/sinhala.py
@@ -0,0 +1,192 @@
+#  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 AUTHORS 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 collections.abc import Iterable
+from datetime import date
+from typing import Optional
+
+from holidays.calendars import _SinhalaLunar
+from holidays.groups.eastern import EasternCalendarHolidays
+
+
+class SinhalaCalendarHolidays(EasternCalendarHolidays):
+    """
+    Sinhala holidays.
+
+    Sinhala Buddhist Uposatha day calculation method is different from Thai LuniSolar
+    and Buddhist (Mahayana) used in East Asia.
+
+    Due to the fact that Poya (Uposatha) days are calculated astronomically
+    based on how close a particular day is closest to full moon at noon, and that
+    an extra month is added every 33 months interval, this is hardcoded for now.
+
+    Adhi month dates are instead hardcoded in Sri Lanka country implementation.
+    """
+
+    def __init__(self, cls=None, show_estimated=False) -> None:
+        self._sinhala_calendar = cls() if cls else _SinhalaLunar()
+        self._sinhala_calendar_show_estimated = show_estimated
+
+    def _add_sinhala_calendar_holiday(
+        self, name: str, dt_estimated: tuple[Optional[date], bool]
+    ) -> Optional[date]:
+        """
+        Add Sinhala calendar holiday.
+
+        Adds customizable estimation label to holiday name if holiday date
+        is an estimation.
+        """
+        return self._add_eastern_calendar_holiday(
+            name, dt_estimated, self._sinhala_calendar_show_estimated
+        )
+
+    def _add_sinhala_calendar_holiday_set(
+        self, name: str, dts_estimated: Iterable[tuple[date, bool]], days_delta: int = 0
+    ) -> set[date]:
+        """
+        Add Sinhala calendar holidays.
+
+        Adds customizable estimation label to holiday name if holiday date
+        is an estimation.
+        """
+        added_dates = set()
+        for dt_estimated in dts_estimated:
+            if dt := self._add_eastern_calendar_holiday(
+                name, dt_estimated, self._sinhala_calendar_show_estimated, days_delta=days_delta
+            ):
+                added_dates.add(dt)
+
+        return added_dates
+
+    def _add_bak_poya(self, name) -> Optional[date]:
+        """
+        Add Bak Poya (first full moon day of the 5th lunar month).
+
+        https://us.lakpura.com/pages/bak-poya
+        """
+        return self._add_sinhala_calendar_holiday(
+            name, self._sinhala_calendar.bak_poya_date(self._year)
+        )
+
+    def _add_binara_poya(self, name) -> Optional[date]:
+        """
+        Add Binara Poya (first full moon day of the 10th lunar month).
+
+        https://us.lakpura.com/pages/binara-poya
+        """
+        return self._add_sinhala_calendar_holiday(
+            name, self._sinhala_calendar.binara_poya_date(self._year)
+        )
+
+    def _add_duruthu_poya(self, name) -> set[date]:
+        """
+        Add Duruthu Poya (first full moon day of the 2nd lunar month).
+
+        https://us.lakpura.com/pages/duruthu-poya
+        """
+        return self._add_sinhala_calendar_holiday_set(
+            name, self._sinhala_calendar.duruthu_poya_date(self._year)
+        )
+
+    def _add_esala_poya(self, name) -> Optional[date]:
+        """
+        Add Esala Poya (first full moon day of the 8th lunar month).
+
+        https://us.lakpura.com/pages/esala-poya
+        """
+        return self._add_sinhala_calendar_holiday(
+            name, self._sinhala_calendar.esala_poya_date(self._year)
+        )
+
+    def _add_il_poya(self, name) -> Optional[date]:
+        """
+        Add Il Poya (first full moon day of the 12th lunar month).
+
+        Also known as "Ill Poya"
+        https://us.lakpura.com/pages/il-poya
+        """
+        return self._add_sinhala_calendar_holiday(
+            name, self._sinhala_calendar.il_poya_date(self._year)
+        )
+
+    def _add_medin_poya(self, name) -> Optional[date]:
+        """
+        Add Medin Poya (first full moon day of the 4th lunar month).
+
+        https://us.lakpura.com/pages/medin-poya
+        """
+        return self._add_sinhala_calendar_holiday(
+            name, self._sinhala_calendar.medin_poya_date(self._year)
+        )
+
+    def _add_nawam_poya(self, name) -> Optional[date]:
+        """
+        Add Nawam Poya (first full moon day of the 3rd lunar month).
+
+        Also known as "Navam Poya" and "Magha Puja".
+        https://us.lakpura.com/pages/navam-poya
+        """
+        return self._add_sinhala_calendar_holiday(
+            name, self._sinhala_calendar.nawam_poya_date(self._year)
+        )
+
+    def _add_nikini_poya(self, name) -> Optional[date]:
+        """
+        Add Nikini Poya (first full moon day of the 9th lunar month).
+
+        https://us.lakpura.com/pages/nikini-poya
+        """
+        return self._add_sinhala_calendar_holiday(
+            name, self._sinhala_calendar.nikini_poya_date(self._year)
+        )
+
+    def _add_poson_poya(self, name) -> Optional[date]:
+        """
+        Add Poson Poya (first full moon day of the 7th lunar month).
+
+        https://us.lakpura.com/pages/poson
+        """
+        return self._add_sinhala_calendar_holiday(
+            name, self._sinhala_calendar.poson_poya_date(self._year)
+        )
+
+    def _add_unduvap_poya(self, name) -> Optional[date]:
+        """
+        Add Unduvap Poya (first full moon day of the 1st lunar month).
+
+        Also known as "Undawap Poya".
+        https://us.lakpura.com/pages/unduvap-poya
+        """
+        return self._add_sinhala_calendar_holiday(
+            name, self._sinhala_calendar.unduvap_poya_date(self._year)
+        )
+
+    def _add_vap_poya(self, name) -> Optional[date]:
+        """
+        Add Vap Poya (first full moon day of the 11th lunar month).
+
+        https://us.lakpura.com/pages/vap-poya
+        """
+        return self._add_sinhala_calendar_holiday(
+            name, self._sinhala_calendar.vap_poya_date(self._year)
+        )
+
+    def _add_vesak_poya(self, name) -> Optional[date]:
+        """
+        Add Vesak Poya (first full moon day of the 6th lunar month).
+
+        Also known as "Wesak Poya".
+        https://us.lakpura.com/pages/vesak
+        """
+        return self._add_sinhala_calendar_holiday(
+            name, self._sinhala_calendar.vesak_poya_date(self._year)
+        )
diff --git a/holidays/locale/en_US/LC_MESSAGES/LK.po b/holidays/locale/en_US/LC_MESSAGES/LK.po
new file mode 100644
index 00000000..d7c521ba
--- /dev/null
+++ b/holidays/locale/en_US/LC_MESSAGES/LK.po
@@ -0,0 +1,168 @@
+#  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 AUTHORS 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)
+#
+# Sri Lanka holidays en_US localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.66\n"
+"POT-Creation-Date: 2025-01-12 23:29+0530\n"
+"PO-Revision-Date: 2025-01-24 18:16+0700\n"
+"Last-Translator: PPsyrius <ppsyrius@ppsyrius.dev>\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.4\n"
+"X-Generator: Poedit 3.5\n"
+
+#. %s (estimated).
+#, c-format
+msgid "%s (අනුමානිත)"
+msgstr "%s (estimated)"
+
+#. Tamil Thai Pongal Day.
+msgid "දෙමළ තෛපොංැලල් දිනය"
+msgstr "Tamil Thai Pongal Day"
+
+#. Independence Day.
+msgid "නිදහස් සමරු දිනය"
+msgstr "Independence Day"
+
+#. Sinhala and Tamil New Year.
+msgid "සිංහල හා දෙමළ අලුත් අවුරුදු දිනය"
+msgstr "Sinhala and Tamil New Year"
+
+#. Day Before Sinhala and Tamil New Year.
+msgid "සිංහල හා දෙමළ අලුත් අවුරුදු දිනට පෙර දිනය"
+msgstr "Day Before Sinhala and Tamil New Year"
+
+#. International Workers' Day.
+msgid "ලොක කම්කරු දිනය"
+msgstr "International Workers' Day"
+
+#. Duruthu Full Moon Poya Day.
+msgid "දුරුතු පුර පසළොස්වක පෝය දිනය"
+msgstr "Duruthu Full Moon Poya Day"
+
+#. Nawam Full Moon Poya Day.
+msgid "නවම් පුර පසළොස්වක පෝය දිනය"
+msgstr "Nawam Full Moon Poya Day"
+
+#. Medin Full Moon Poya Day.
+msgid "මැදින් පුර පසළොස්වක පෝය දිනය"
+msgstr "Medin Full Moon Poya Day"
+
+#. Bak Full Moon Poya Day.
+msgid "බක් පුර පසළොස්වක පෝය දිනය"
+msgstr "Bak Full Moon Poya Day"
+
+#. Vesak Full Moon Poya Day.
+msgid "වෙසක් පුර පසළොස්වක පෝය දිනය"
+msgstr "Vesak Full Moon Poya Day"
+
+#. Day Following Vesak Full Moon Poya Day.
+msgid "වෙසක් පුර පසළොස්වක පෝය දිනට පසු දිනය"
+msgstr "Day Following Vesak Full Moon Poya Day"
+
+#. Poson Full Moon Poya Day.
+msgid "පොසොන් පුර පසළොස්වක පෝය දිනය"
+msgstr "Poson Full Moon Poya Day"
+
+#. Esala Full Moon Poya Day.
+msgid "ඇසල පුර පසළොස්වක පෝය දිනය"
+msgstr "Esala Full Moon Poya Day"
+
+#. Nikini Full Moon Poya Day.
+msgid "නිකිණි පුර පසළොස්වක පෝය දිනය"
+msgstr "Nikini Full Moon Poya Day"
+
+#. Binara Full Moon Poya Day.
+msgid "බිනර පුර පසළොස්වක පෝය දිනය"
+msgstr "Binara Full Moon Poya Day"
+
+#. Vap Full Moon Poya Day.
+msgid "වප් පුර පසළොස්වක පෝය දිනය"
+msgstr "Vap Full Moon Poya Day"
+
+#. Il Full Moon Poya Day.
+msgid "ඉල් පුර පසළොස්වක පෝය දිනය"
+msgstr "Il Full Moon Poya Day"
+
+#. Unduvap Full Moon Poya Day.
+msgid "උඳුවප් පුර පසළොස්වක පෝය දිනය"
+msgstr "Unduvap Full Moon Poya Day"
+
+#. Maha Sivarathri Day.
+msgid "මහ සිවරාත්රි දිනය"
+msgstr "Maha Sivarathri Day"
+
+#. Deepavali Festival Day.
+msgid "දීපවාලි උත්සව දිනය"
+msgstr "Deepavali Festival Day"
+
+#. Good Friday.
+msgid "මහ සිකුරාදා දිනය"
+msgstr "Good Friday"
+
+#. Christmas Day.
+msgid "නත්තල් උත්සව දිනය"
+msgstr "Christmas Day"
+
+#. Eid al-Fitr.
+msgid "ඊදුල් ෆීතර්"
+msgstr "Eid al-Fitr"
+
+#. Eid al-Adha.
+msgid "ඊදුල් අල්හා"
+msgstr "Eid al-Adha"
+
+#. The Prophet's Birthday.
+msgid "නබි නායකතුමාගේ උපන් දිනය"
+msgstr "The Prophet's Birthday"
+
+#. Adhi Vesak Full Mon Poya Day.
+msgid "අධි වෙසක් පුර පසළොස්වක පෝය දිනය"
+msgstr "Adhi Vesak Full Mon Poya Day"
+
+#. Adhi Poson Full Moon Poya Day.
+msgid "අධි පොසොන් පුර පසළොස්වක පෝය දිනය"
+msgstr "Adhi Poson Full Moon Poya Day"
+
+#. Adhi Esala Full Moon Poya Day.
+msgid "අධි ඇසල පුර පසළොස්වක පෝය දිනය"
+msgstr "Adhi Esala Full Moon Poya Day"
+
+#. Adhi Binara Full Moon Poya Day.
+msgid "අධි බිනර පුර පසළොස්වක පෝය දිනය"
+msgstr "Adhi Binara Full Moon Poya Day"
+
+#. Adhi Vap Full Moon Poya Day.
+msgid "අධි වප් පුර පසළොස්වක පෝය දිනය"
+msgstr "Adhi Vap Full Moon Poya Day"
+
+#. Special Bank Holiday.
+msgid "විශේෂ බැංකු නිවාඩු දිනය"
+msgstr "Special Bank Holiday"
+
+#. Half-Day Special Bank Holiday.
+msgid "දින භාගයක විශේෂ බැංකු නිවාඩු දිනය"
+msgstr "Half-Day Special Bank Holiday"
+
+#. Public Sector Holiday.
+msgid "රාජ්ය අංශයේ නිවාඩු දිනය"
+msgstr "Public Sector Holiday"
+
+#. Special Public Holiday.
+msgid "විශේෂ රජයේ නිවාඩු දිනය"
+msgstr "Special Public Holiday"
diff --git a/holidays/locale/si_LK/LC_MESSAGES/LK.po b/holidays/locale/si_LK/LC_MESSAGES/LK.po
new file mode 100644
index 00000000..887a5fc7
--- /dev/null
+++ b/holidays/locale/si_LK/LC_MESSAGES/LK.po
@@ -0,0 +1,168 @@
+#  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 AUTHORS 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)
+#
+# Sri Lanka holidays.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.66\n"
+"POT-Creation-Date: 2025-01-12 23:29+0530\n"
+"PO-Revision-Date: 2025-01-24 18:17+0700\n"
+"Last-Translator: PPsyrius <ppsyrius@ppsyrius.dev>\n"
+"Language-Team: Holidays Localization Team\n"
+"Language: si_LK\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.4\n"
+"X-Generator: Poedit 3.5\n"
+
+#. %s (estimated).
+#, c-format
+msgid "%s (අනුමානිත)"
+msgstr ""
+
+#. Tamil Thai Pongal Day.
+msgid "දෙමළ තෛපොංැලල් දිනය"
+msgstr ""
+
+#. Independence Day.
+msgid "නිදහස් සමරු දිනය"
+msgstr ""
+
+#. Sinhala and Tamil New Year.
+msgid "සිංහල හා දෙමළ අලුත් අවුරුදු දිනය"
+msgstr ""
+
+#. Day Before Sinhala and Tamil New Year.
+msgid "සිංහල හා දෙමළ අලුත් අවුරුදු දිනට පෙර දිනය"
+msgstr ""
+
+#. International Workers' Day.
+msgid "ලොක කම්කරු දිනය"
+msgstr ""
+
+#. Duruthu Full Moon Poya Day.
+msgid "දුරුතු පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Nawam Full Moon Poya Day.
+msgid "නවම් පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Medin Full Moon Poya Day.
+msgid "මැදින් පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Bak Full Moon Poya Day.
+msgid "බක් පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Vesak Full Moon Poya Day.
+msgid "වෙසක් පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Day Following Vesak Full Moon Poya Day.
+msgid "වෙසක් පුර පසළොස්වක පෝය දිනට පසු දිනය"
+msgstr ""
+
+#. Poson Full Moon Poya Day.
+msgid "පොසොන් පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Esala Full Moon Poya Day.
+msgid "ඇසල පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Nikini Full Moon Poya Day.
+msgid "නිකිණි පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Binara Full Moon Poya Day.
+msgid "බිනර පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Vap Full Moon Poya Day.
+msgid "වප් පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Il Full Moon Poya Day.
+msgid "ඉල් පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Unduvap Full Moon Poya Day.
+msgid "උඳුවප් පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Maha Sivarathri Day.
+msgid "මහ සිවරාත්රි දිනය"
+msgstr ""
+
+#. Deepavali Festival Day.
+msgid "දීපවාලි උත්සව දිනය"
+msgstr ""
+
+#. Good Friday.
+msgid "මහ සිකුරාදා දිනය"
+msgstr ""
+
+#. Christmas Day.
+msgid "නත්තල් උත්සව දිනය"
+msgstr ""
+
+#. Eid al-Fitr.
+msgid "ඊදුල් ෆීතර්"
+msgstr ""
+
+#. Eid al-Adha.
+msgid "ඊදුල් අල්හා"
+msgstr ""
+
+#. The Prophet's Birthday.
+msgid "නබි නායකතුමාගේ උපන් දිනය"
+msgstr ""
+
+#. Adhi Vesak Full Mon Poya Day.
+msgid "අධි වෙසක් පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Adhi Poson Full Moon Poya Day.
+msgid "අධි පොසොන් පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Adhi Esala Full Moon Poya Day.
+msgid "අධි ඇසල පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Adhi Binara Full Moon Poya Day.
+msgid "අධි බිනර පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Adhi Vap Full Moon Poya Day.
+msgid "අධි වප් පුර පසළොස්වක පෝය දිනය"
+msgstr ""
+
+#. Special Bank Holiday.
+msgid "විශේෂ බැංකු නිවාඩු දිනය"
+msgstr ""
+
+#. Half-Day Special Bank Holiday.
+msgid "දින භාගයක විශේෂ බැංකු නිවාඩු දිනය"
+msgstr ""
+
+#. Public Sector Holiday.
+msgid "රාජ්ය අංශයේ නිවාඩු දිනය"
+msgstr ""
+
+#. Special Public Holiday.
+msgid "විශේෂ රජයේ නිවාඩු දිනය"
+msgstr ""
diff --git a/holidays/locale/ta_LK/LC_MESSAGES/LK.po b/holidays/locale/ta_LK/LC_MESSAGES/LK.po
new file mode 100644
index 00000000..abc3ec7e
--- /dev/null
+++ b/holidays/locale/ta_LK/LC_MESSAGES/LK.po
@@ -0,0 +1,168 @@
+#  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 AUTHORS 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)
+#
+# Sri Lanka holidays ta_LK localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.66\n"
+"POT-Creation-Date: 2025-01-12 23:29+0530\n"
+"PO-Revision-Date: 2025-01-24 18:17+0700\n"
+"Last-Translator: PPsyrius <ppsyrius@ppsyrius.dev>\n"
+"Language-Team: Holidays Localization Team\n"
+"Language: ta_LK\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.4\n"
+"X-Generator: Poedit 3.5\n"
+
+#. %s (estimated).
+#, c-format
+msgid "%s (අනුමානිත)"
+msgstr "%s (அனுமானம்)"
+
+#. Tamil Thai Pongal Day.
+msgid "දෙමළ තෛපොංැලල් දිනය"
+msgstr "தமிழ் தைப்பொங்கல் தினம்"
+
+#. Independence Day.
+msgid "නිදහස් සමරු දිනය"
+msgstr "சுதந்திர தினம்"
+
+#. Sinhala and Tamil New Year.
+msgid "සිංහල හා දෙමළ අලුත් අවුරුදු දිනය"
+msgstr "சிங்கள, தமிழ் புத்தாண்டு தினம்"
+
+#. Day Before Sinhala and Tamil New Year.
+msgid "සිංහල හා දෙමළ අලුත් අවුරුදු දිනට පෙර දිනය"
+msgstr "சிங்கள, தமிழ் புத்தாண்டிற்கு முன்னைய தினம்"
+
+#. International Workers' Day.
+msgid "ලොක කම්කරු දිනය"
+msgstr "சர்வதேச தொழிலாளர்கள் தினம்"
+
+#. Duruthu Full Moon Poya Day.
+msgid "දුරුතු පුර පසළොස්වක පෝය දිනය"
+msgstr "துருத்து முழு நோன்மதி தினம்"
+
+#. Nawam Full Moon Poya Day.
+msgid "නවම් පුර පසළොස්වක පෝය දිනය"
+msgstr "நவம் முழு நோன்மதி தினம்"
+
+#. Medin Full Moon Poya Day.
+msgid "මැදින් පුර පසළොස්වක පෝය දිනය"
+msgstr "மெதின் முழு நோன்மதி தினம்"
+
+#. Bak Full Moon Poya Day.
+msgid "බක් පුර පසළොස්වක පෝය දිනය"
+msgstr "பக் முழு நோன்மதி தினம்"
+
+#. Vesak Full Moon Poya Day.
+msgid "වෙසක් පුර පසළොස්වක පෝය දිනය"
+msgstr "வெசாக் முழு நோன்மதி தினம்"
+
+#. Day Following Vesak Full Moon Poya Day.
+msgid "වෙසක් පුර පසළොස්වක පෝය දිනට පසු දිනය"
+msgstr "வெசாக் முழு நோன்மதி தினத்திற்கு அடுத்த நாள்"
+
+#. Poson Full Moon Poya Day.
+msgid "පොසොන් පුර පසළොස්වක පෝය දිනය"
+msgstr "பொசொன் முழு நோன்மதி தினம்"
+
+#. Esala Full Moon Poya Day.
+msgid "ඇසල පුර පසළොස්වක පෝය දිනය"
+msgstr "எசல முழு நோன்மதி தினம்"
+
+#. Nikini Full Moon Poya Day.
+msgid "නිකිණි පුර පසළොස්වක පෝය දිනය"
+msgstr "நிக்கினி முழு நோன்மதி தினம்"
+
+#. Binara Full Moon Poya Day.
+msgid "බිනර පුර පසළොස්වක පෝය දිනය"
+msgstr "பினர முழு நோன்மதி தினம்"
+
+#. Vap Full Moon Poya Day.
+msgid "වප් පුර පසළොස්වක පෝය දිනය"
+msgstr "வப் முழு நோன்மதி தினம்"
+
+#. Il Full Moon Poya Day.
+msgid "ඉල් පුර පසළොස්වක පෝය දිනය"
+msgstr "இல் முழு நோன்மதி தினம்"
+
+#. Unduvap Full Moon Poya Day.
+msgid "උඳුවප් පුර පසළොස්වක පෝය දිනය"
+msgstr "உந்துவப் முழு நோன்மதி தினம்"
+
+#. Maha Sivarathri Day.
+msgid "මහ සිවරාත්රි දිනය"
+msgstr "மகா சிவராத்திரி தினம்"
+
+#. Deepavali Festival Day.
+msgid "දීපවාලි උත්සව දිනය"
+msgstr "தீபாவளிப் பண்டிகை தினம்"
+
+#. Good Friday.
+msgid "මහ සිකුරාදා දිනය"
+msgstr "பெரிய வெள்ளிக்கிழமை"
+
+#. Christmas Day.
+msgid "නත්තල් උත්සව දිනය"
+msgstr "நத்தார் பண்டிகை"
+
+#. Eid al-Fitr.
+msgid "ඊදුල් ෆීතර්"
+msgstr "ஈதுல் பித்ர்"
+
+#. Eid al-Adha.
+msgid "ඊදුල් අල්හා"
+msgstr "ஈதுல் அழ்ஹா"
+
+#. The Prophet's Birthday.
+msgid "නබි නායකතුමාගේ උපන් දිනය"
+msgstr "நபிகள் நாயகத்தின் பிறந்த தினம்"
+
+#. Adhi Vesak Full Mon Poya Day.
+msgid "අධි වෙසක් පුර පසළොස්වක පෝය දිනය"
+msgstr "அதி-வெசாக் முழு நோன்மதி தினம்"
+
+#. Adhi Poson Full Moon Poya Day.
+msgid "අධි පොසොන් පුර පසළොස්වක පෝය දිනය"
+msgstr "அதி-பொசொன் முழு நோன்மதி தினம்"
+
+#. Adhi Esala Full Moon Poya Day.
+msgid "අධි ඇසල පුර පසළොස්වක පෝය දිනය"
+msgstr "அதி-எசல முழு நோன்மதி தினம்"
+
+#. Adhi Binara Full Moon Poya Day.
+msgid "අධි බිනර පුර පසළොස්වක පෝය දිනය"
+msgstr "அதி-பினர முழு நோன்மதி தினம்"
+
+#. Adhi Vap Full Moon Poya Day.
+msgid "අධි වප් පුර පසළොස්වක පෝය දිනය"
+msgstr "அதி-வப் முழு நோன்மதி தினம்"
+
+#. Special Bank Holiday.
+msgid "විශේෂ බැංකු නිවාඩු දිනය"
+msgstr "விசேட வங்கி விடுமுறை"
+
+#. Half-Day Special Bank Holiday.
+msgid "දින භාගයක විශේෂ බැංකු නිවාඩු දිනය"
+msgstr "அரை நாள் விசேட வங்கி விடுமுறை"
+
+#. Public Sector Holiday.
+msgid "රාජ්ය අංශයේ නිවාඩු දිනය"
+msgstr "பொதுத்துறை விடுமுறை"
+
+#. Special Public Holiday.
+msgid "විශේෂ රජයේ නිවාඩු දිනය"
+msgstr "விசேட பொது விடுமுறை"
diff --git a/holidays/registry.py b/holidays/registry.py
index 7760b289..2bf66d51 100644
--- a/holidays/registry.py
+++ b/holidays/registry.py
@@ -153,6 +153,7 @@ COUNTRIES: RegistryDict = {
     "south_africa": ("SouthAfrica", "ZA", "ZAF"),
     "south_korea": ("SouthKorea", "KR", "KOR", "Korea"),
     "spain": ("Spain", "ES", "ESP"),
+    "sri_lanka": ("SriLanka", "LK", "LKA"),
     "sweden": ("Sweden", "SE", "SWE"),
     "switzerland": ("Switzerland", "CH", "CHE"),
     "taiwan": ("Taiwan", "TW", "TWN"),
diff --git a/snapshots/countries/LK_COMMON.json b/snapshots/countries/LK_COMMON.json
new file mode 100644
index 00000000..619352da
--- /dev/null
+++ b/snapshots/countries/LK_COMMON.json
@@ -0,0 +1,927 @@
+{
+    "1972-01-15": "Tamil Thai Pongal Day",
+    "1972-01-26": "Eid al-Adha (estimated)",
+    "1972-02-04": "Independence Day",
+    "1972-03-31": "Good Friday",
+    "1972-04-13": "Day Before Sinhala and Tamil New Year",
+    "1972-04-14": "Sinhala and Tamil New Year",
+    "1972-04-25": "The Prophet's Birthday (estimated)",
+    "1972-05-01": "International Workers' Day",
+    "1972-11-07": "Eid al-Fitr (estimated)",
+    "1972-12-25": "Christmas Day",
+    "1973-01-14": "Eid al-Adha (estimated)",
+    "1973-01-15": "Tamil Thai Pongal Day",
+    "1973-02-04": "Independence Day",
+    "1973-04-13": "Day Before Sinhala and Tamil New Year",
+    "1973-04-14": "Sinhala and Tamil New Year",
+    "1973-04-15": "The Prophet's Birthday (estimated)",
+    "1973-04-20": "Good Friday",
+    "1973-05-01": "International Workers' Day",
+    "1973-10-27": "Eid al-Fitr (estimated)",
+    "1973-12-25": "Christmas Day",
+    "1974-01-03": "Eid al-Adha (estimated)",
+    "1974-01-15": "Tamil Thai Pongal Day",
+    "1974-02-04": "Independence Day",
+    "1974-04-04": "The Prophet's Birthday (estimated)",
+    "1974-04-12": "Good Friday",
+    "1974-04-13": "Day Before Sinhala and Tamil New Year",
+    "1974-04-14": "Sinhala and Tamil New Year",
+    "1974-05-01": "International Workers' Day",
+    "1974-10-16": "Eid al-Fitr (estimated)",
+    "1974-12-24": "Eid al-Adha (estimated)",
+    "1974-12-25": "Christmas Day",
+    "1975-01-15": "Tamil Thai Pongal Day",
+    "1975-02-04": "Independence Day",
+    "1975-03-24": "The Prophet's Birthday (estimated)",
+    "1975-03-28": "Good Friday",
+    "1975-04-13": "Day Before Sinhala and Tamil New Year",
+    "1975-04-14": "Sinhala and Tamil New Year",
+    "1975-05-01": "International Workers' Day",
+    "1975-10-06": "Eid al-Fitr (estimated)",
+    "1975-12-13": "Eid al-Adha (estimated)",
+    "1975-12-25": "Christmas Day",
+    "1976-01-15": "Tamil Thai Pongal Day",
+    "1976-02-04": "Independence Day",
+    "1976-03-12": "The Prophet's Birthday (estimated)",
+    "1976-04-13": "Day Before Sinhala and Tamil New Year",
+    "1976-04-14": "Sinhala and Tamil New Year",
+    "1976-04-16": "Good Friday",
+    "1976-05-01": "International Workers' Day",
+    "1976-09-24": "Eid al-Fitr (estimated)",
+    "1976-12-01": "Eid al-Adha (estimated)",
+    "1976-12-25": "Christmas Day",
+    "1977-01-15": "Tamil Thai Pongal Day",
+    "1977-02-04": "Independence Day",
+    "1977-03-02": "The Prophet's Birthday (estimated)",
+    "1977-04-08": "Good Friday",
+    "1977-04-13": "Day Before Sinhala and Tamil New Year",
+    "1977-04-14": "Sinhala and Tamil New Year",
+    "1977-05-01": "International Workers' Day",
+    "1977-09-14": "Eid al-Fitr (estimated)",
+    "1977-11-21": "Eid al-Adha (estimated)",
+    "1977-12-25": "Christmas Day",
+    "1978-01-15": "Tamil Thai Pongal Day",
+    "1978-02-04": "Independence Day",
+    "1978-02-19": "The Prophet's Birthday (estimated)",
+    "1978-03-24": "Good Friday",
+    "1978-04-13": "Day Before Sinhala and Tamil New Year",
+    "1978-04-14": "Sinhala and Tamil New Year",
+    "1978-05-01": "International Workers' Day",
+    "1978-09-03": "Eid al-Fitr (estimated)",
+    "1978-11-10": "Eid al-Adha (estimated)",
+    "1978-12-25": "Christmas Day",
+    "1979-01-15": "Tamil Thai Pongal Day",
+    "1979-02-04": "Independence Day",
+    "1979-02-09": "The Prophet's Birthday (estimated)",
+    "1979-04-13": "Day Before Sinhala and Tamil New Year; Good Friday",
+    "1979-04-14": "Sinhala and Tamil New Year",
+    "1979-05-01": "International Workers' Day",
+    "1979-08-23": "Eid al-Fitr (estimated)",
+    "1979-10-31": "Eid al-Adha (estimated)",
+    "1979-12-25": "Christmas Day",
+    "1980-01-15": "Tamil Thai Pongal Day",
+    "1980-01-30": "The Prophet's Birthday (estimated)",
+    "1980-02-04": "Independence Day",
+    "1980-04-04": "Good Friday",
+    "1980-04-13": "Day Before Sinhala and Tamil New Year",
+    "1980-04-14": "Sinhala and Tamil New Year",
+    "1980-05-01": "International Workers' Day",
+    "1980-08-12": "Eid al-Fitr (estimated)",
+    "1980-10-19": "Eid al-Adha (estimated)",
+    "1980-12-25": "Christmas Day",
+    "1981-01-15": "Tamil Thai Pongal Day",
+    "1981-01-18": "The Prophet's Birthday (estimated)",
+    "1981-02-04": "Independence Day",
+    "1981-04-13": "Day Before Sinhala and Tamil New Year",
+    "1981-04-14": "Sinhala and Tamil New Year",
+    "1981-04-17": "Good Friday",
+    "1981-05-01": "International Workers' Day",
+    "1981-08-01": "Eid al-Fitr (estimated)",
+    "1981-10-08": "Eid al-Adha (estimated)",
+    "1981-12-25": "Christmas Day",
+    "1982-01-07": "The Prophet's Birthday (estimated)",
+    "1982-01-15": "Tamil Thai Pongal Day",
+    "1982-02-04": "Independence Day",
+    "1982-04-09": "Good Friday",
+    "1982-04-13": "Day Before Sinhala and Tamil New Year",
+    "1982-04-14": "Sinhala and Tamil New Year",
+    "1982-05-01": "International Workers' Day",
+    "1982-07-21": "Eid al-Fitr (estimated)",
+    "1982-09-27": "Eid al-Adha (estimated)",
+    "1982-12-25": "Christmas Day",
+    "1982-12-27": "The Prophet's Birthday (estimated)",
+    "1983-01-15": "Tamil Thai Pongal Day",
+    "1983-02-04": "Independence Day",
+    "1983-04-01": "Good Friday",
+    "1983-04-13": "Day Before Sinhala and Tamil New Year",
+    "1983-04-14": "Sinhala and Tamil New Year",
+    "1983-05-01": "International Workers' Day",
+    "1983-07-11": "Eid al-Fitr (estimated)",
+    "1983-09-17": "Eid al-Adha (estimated)",
+    "1983-12-16": "The Prophet's Birthday (estimated)",
+    "1983-12-25": "Christmas Day",
+    "1984-01-15": "Tamil Thai Pongal Day",
+    "1984-02-04": "Independence Day",
+    "1984-04-13": "Day Before Sinhala and Tamil New Year",
+    "1984-04-14": "Sinhala and Tamil New Year",
+    "1984-04-20": "Good Friday",
+    "1984-05-01": "International Workers' Day",
+    "1984-06-30": "Eid al-Fitr (estimated)",
+    "1984-09-05": "Eid al-Adha (estimated)",
+    "1984-12-04": "The Prophet's Birthday (estimated)",
+    "1984-12-25": "Christmas Day",
+    "1985-01-15": "Tamil Thai Pongal Day",
+    "1985-02-04": "Independence Day",
+    "1985-04-05": "Good Friday",
+    "1985-04-13": "Day Before Sinhala and Tamil New Year",
+    "1985-04-14": "Sinhala and Tamil New Year",
+    "1985-05-01": "International Workers' Day",
+    "1985-06-19": "Eid al-Fitr (estimated)",
+    "1985-08-26": "Eid al-Adha (estimated)",
+    "1985-11-24": "The Prophet's Birthday (estimated)",
+    "1985-12-25": "Christmas Day",
+    "1986-01-15": "Tamil Thai Pongal Day",
+    "1986-02-04": "Independence Day",
+    "1986-03-28": "Good Friday",
+    "1986-04-13": "Day Before Sinhala and Tamil New Year",
+    "1986-04-14": "Sinhala and Tamil New Year",
+    "1986-05-01": "International Workers' Day",
+    "1986-06-08": "Eid al-Fitr (estimated)",
+    "1986-08-15": "Eid al-Adha (estimated)",
+    "1986-11-14": "The Prophet's Birthday (estimated)",
+    "1986-12-25": "Christmas Day",
+    "1987-01-15": "Tamil Thai Pongal Day",
+    "1987-02-04": "Independence Day",
+    "1987-04-13": "Day Before Sinhala and Tamil New Year",
+    "1987-04-14": "Sinhala and Tamil New Year",
+    "1987-04-17": "Good Friday",
+    "1987-05-01": "International Workers' Day",
+    "1987-05-28": "Eid al-Fitr (estimated)",
+    "1987-08-04": "Eid al-Adha (estimated)",
+    "1987-11-03": "The Prophet's Birthday (estimated)",
+    "1987-12-25": "Christmas Day",
+    "1988-01-15": "Tamil Thai Pongal Day",
+    "1988-02-04": "Independence Day",
+    "1988-04-01": "Good Friday",
+    "1988-04-13": "Day Before Sinhala and Tamil New Year",
+    "1988-04-14": "Sinhala and Tamil New Year",
+    "1988-05-01": "International Workers' Day",
+    "1988-05-16": "Eid al-Fitr (estimated)",
+    "1988-07-23": "Eid al-Adha (estimated)",
+    "1988-10-22": "The Prophet's Birthday (estimated)",
+    "1988-12-25": "Christmas Day",
+    "1989-01-15": "Tamil Thai Pongal Day",
+    "1989-02-04": "Independence Day",
+    "1989-03-24": "Good Friday",
+    "1989-04-13": "Day Before Sinhala and Tamil New Year",
+    "1989-04-14": "Sinhala and Tamil New Year",
+    "1989-05-01": "International Workers' Day",
+    "1989-05-06": "Eid al-Fitr (estimated)",
+    "1989-07-13": "Eid al-Adha (estimated)",
+    "1989-10-11": "The Prophet's Birthday (estimated)",
+    "1989-12-25": "Christmas Day",
+    "1990-01-15": "Tamil Thai Pongal Day",
+    "1990-02-04": "Independence Day",
+    "1990-04-13": "Day Before Sinhala and Tamil New Year; Good Friday",
+    "1990-04-14": "Sinhala and Tamil New Year",
+    "1990-04-26": "Eid al-Fitr (estimated)",
+    "1990-05-01": "International Workers' Day",
+    "1990-07-02": "Eid al-Adha (estimated)",
+    "1990-10-01": "The Prophet's Birthday (estimated)",
+    "1990-12-25": "Christmas Day",
+    "1991-01-15": "Tamil Thai Pongal Day",
+    "1991-02-04": "Independence Day",
+    "1991-03-29": "Good Friday",
+    "1991-04-13": "Day Before Sinhala and Tamil New Year",
+    "1991-04-14": "Sinhala and Tamil New Year",
+    "1991-04-15": "Eid al-Fitr (estimated)",
+    "1991-05-01": "International Workers' Day",
+    "1991-06-22": "Eid al-Adha (estimated)",
+    "1991-09-20": "The Prophet's Birthday (estimated)",
+    "1991-12-25": "Christmas Day",
+    "1992-01-15": "Tamil Thai Pongal Day",
+    "1992-02-04": "Independence Day",
+    "1992-04-04": "Eid al-Fitr (estimated)",
+    "1992-04-13": "Day Before Sinhala and Tamil New Year",
+    "1992-04-14": "Sinhala and Tamil New Year",
+    "1992-04-17": "Good Friday",
+    "1992-05-01": "International Workers' Day",
+    "1992-06-11": "Eid al-Adha (estimated)",
+    "1992-09-09": "The Prophet's Birthday (estimated)",
+    "1992-12-25": "Christmas Day",
+    "1993-01-15": "Tamil Thai Pongal Day",
+    "1993-02-04": "Independence Day",
+    "1993-03-24": "Eid al-Fitr (estimated)",
+    "1993-04-09": "Good Friday",
+    "1993-04-13": "Day Before Sinhala and Tamil New Year",
+    "1993-04-14": "Sinhala and Tamil New Year",
+    "1993-05-01": "International Workers' Day",
+    "1993-05-31": "Eid al-Adha (estimated)",
+    "1993-08-29": "The Prophet's Birthday (estimated)",
+    "1993-12-25": "Christmas Day",
+    "1994-01-15": "Tamil Thai Pongal Day",
+    "1994-02-04": "Independence Day",
+    "1994-03-13": "Eid al-Fitr (estimated)",
+    "1994-04-01": "Good Friday",
+    "1994-04-13": "Day Before Sinhala and Tamil New Year",
+    "1994-04-14": "Sinhala and Tamil New Year",
+    "1994-05-01": "International Workers' Day",
+    "1994-05-20": "Eid al-Adha (estimated)",
+    "1994-08-19": "The Prophet's Birthday (estimated)",
+    "1994-12-25": "Christmas Day",
+    "1995-01-15": "Tamil Thai Pongal Day",
+    "1995-02-04": "Independence Day",
+    "1995-03-02": "Eid al-Fitr (estimated)",
+    "1995-04-13": "Day Before Sinhala and Tamil New Year",
+    "1995-04-14": "Good Friday; Sinhala and Tamil New Year",
+    "1995-05-01": "International Workers' Day",
+    "1995-05-09": "Eid al-Adha (estimated)",
+    "1995-08-08": "The Prophet's Birthday (estimated)",
+    "1995-12-25": "Christmas Day",
+    "1996-01-15": "Tamil Thai Pongal Day",
+    "1996-02-04": "Independence Day",
+    "1996-02-19": "Eid al-Fitr (estimated)",
+    "1996-04-05": "Good Friday",
+    "1996-04-13": "Day Before Sinhala and Tamil New Year",
+    "1996-04-14": "Sinhala and Tamil New Year",
+    "1996-04-27": "Eid al-Adha (estimated)",
+    "1996-05-01": "International Workers' Day",
+    "1996-07-27": "The Prophet's Birthday (estimated)",
+    "1996-12-25": "Christmas Day",
+    "1997-01-15": "Tamil Thai Pongal Day",
+    "1997-02-04": "Independence Day",
+    "1997-02-08": "Eid al-Fitr (estimated)",
+    "1997-03-28": "Good Friday",
+    "1997-04-13": "Day Before Sinhala and Tamil New Year",
+    "1997-04-14": "Sinhala and Tamil New Year",
+    "1997-04-17": "Eid al-Adha (estimated)",
+    "1997-05-01": "International Workers' Day",
+    "1997-07-16": "The Prophet's Birthday (estimated)",
+    "1997-12-25": "Christmas Day",
+    "1998-01-15": "Tamil Thai Pongal Day",
+    "1998-01-29": "Eid al-Fitr (estimated)",
+    "1998-02-04": "Independence Day",
+    "1998-04-07": "Eid al-Adha (estimated)",
+    "1998-04-10": "Good Friday",
+    "1998-04-13": "Day Before Sinhala and Tamil New Year",
+    "1998-04-14": "Sinhala and Tamil New Year",
+    "1998-05-01": "International Workers' Day",
+    "1998-07-06": "The Prophet's Birthday (estimated)",
+    "1998-12-25": "Christmas Day",
+    "1999-01-15": "Tamil Thai Pongal Day",
+    "1999-01-18": "Eid al-Fitr (estimated)",
+    "1999-02-04": "Independence Day",
+    "1999-03-27": "Eid al-Adha (estimated)",
+    "1999-04-02": "Good Friday",
+    "1999-04-13": "Day Before Sinhala and Tamil New Year",
+    "1999-04-14": "Sinhala and Tamil New Year",
+    "1999-05-01": "International Workers' Day",
+    "1999-06-26": "The Prophet's Birthday (estimated)",
+    "1999-12-25": "Christmas Day",
+    "2000-01-08": "Eid al-Fitr (estimated)",
+    "2000-01-15": "Tamil Thai Pongal Day",
+    "2000-02-04": "Independence Day",
+    "2000-03-16": "Eid al-Adha (estimated)",
+    "2000-04-13": "Day Before Sinhala and Tamil New Year",
+    "2000-04-14": "Sinhala and Tamil New Year",
+    "2000-04-21": "Good Friday",
+    "2000-05-01": "International Workers' Day",
+    "2000-06-14": "The Prophet's Birthday (estimated)",
+    "2000-12-25": "Christmas Day",
+    "2000-12-27": "Eid al-Fitr (estimated)",
+    "2001-01-15": "Tamil Thai Pongal Day",
+    "2001-02-04": "Independence Day",
+    "2001-03-05": "Eid al-Adha (estimated)",
+    "2001-04-13": "Day Before Sinhala and Tamil New Year; Good Friday",
+    "2001-04-14": "Sinhala and Tamil New Year",
+    "2001-05-01": "International Workers' Day",
+    "2001-06-04": "The Prophet's Birthday (estimated)",
+    "2001-12-16": "Eid al-Fitr (estimated)",
+    "2001-12-25": "Christmas Day",
+    "2002-01-15": "Tamil Thai Pongal Day",
+    "2002-02-04": "Independence Day",
+    "2002-02-22": "Eid al-Adha (estimated)",
+    "2002-03-29": "Good Friday",
+    "2002-04-13": "Day Before Sinhala and Tamil New Year",
+    "2002-04-14": "Sinhala and Tamil New Year",
+    "2002-05-01": "International Workers' Day",
+    "2002-05-24": "The Prophet's Birthday (estimated)",
+    "2002-12-05": "Eid al-Fitr (estimated)",
+    "2002-12-25": "Christmas Day",
+    "2003-01-15": "Tamil Thai Pongal Day",
+    "2003-01-17": "Duruthu Full Moon Poya Day",
+    "2003-02-04": "Independence Day",
+    "2003-02-12": "Eid al-Adha",
+    "2003-02-16": "Nawam Full Moon Poya Day",
+    "2003-03-01": "Maha Sivarathri Day",
+    "2003-03-18": "Medin Full Moon Poya Day",
+    "2003-04-13": "Day Before Sinhala and Tamil New Year",
+    "2003-04-14": "Sinhala and Tamil New Year",
+    "2003-04-16": "Bak Full Moon Poya Day",
+    "2003-04-18": "Good Friday",
+    "2003-05-01": "International Workers' Day",
+    "2003-05-14": "The Prophet's Birthday",
+    "2003-05-15": "Vesak Full Moon Poya Day",
+    "2003-05-16": "Day Following Vesak Full Moon Poya Day",
+    "2003-06-14": "Poson Full Moon Poya Day",
+    "2003-07-13": "Esala Full Moon Poya Day",
+    "2003-08-11": "Nikini Full Moon Poya Day",
+    "2003-09-10": "Binara Full Moon Poya Day",
+    "2003-10-09": "Vap Full Moon Poya Day",
+    "2003-10-24": "Deepavali Festival Day",
+    "2003-11-08": "Il Full Moon Poya Day",
+    "2003-11-26": "Eid al-Fitr",
+    "2003-12-08": "Unduvap Full Moon Poya Day",
+    "2003-12-25": "Christmas Day",
+    "2004-01-07": "Duruthu Full Moon Poya Day",
+    "2004-01-15": "Tamil Thai Pongal Day",
+    "2004-02-01": "Eid al-Adha",
+    "2004-02-04": "Independence Day",
+    "2004-02-05": "Nawam Full Moon Poya Day",
+    "2004-02-18": "Maha Sivarathri Day",
+    "2004-03-06": "Medin Full Moon Poya Day",
+    "2004-04-05": "Bak Full Moon Poya Day",
+    "2004-04-09": "Good Friday",
+    "2004-04-12": "Day Before Sinhala and Tamil New Year",
+    "2004-04-13": "Sinhala and Tamil New Year",
+    "2004-05-01": "International Workers' Day",
+    "2004-05-02": "The Prophet's Birthday",
+    "2004-05-04": "Vesak Full Moon Poya Day",
+    "2004-05-05": "Day Following Vesak Full Moon Poya Day",
+    "2004-06-02": "Poson Full Moon Poya Day",
+    "2004-07-02": "Esala Full Moon Poya Day",
+    "2004-07-31": "Adhi Esala Full Moon Poya Day",
+    "2004-08-29": "Nikini Full Moon Poya Day",
+    "2004-09-28": "Binara Full Moon Poya Day",
+    "2004-10-27": "Vap Full Moon Poya Day",
+    "2004-11-11": "Deepavali Festival Day",
+    "2004-11-14": "Eid al-Fitr",
+    "2004-11-26": "Il Full Moon Poya Day",
+    "2004-12-25": "Christmas Day",
+    "2004-12-26": "Unduvap Full Moon Poya Day",
+    "2005-01-14": "Tamil Thai Pongal Day",
+    "2005-01-21": "Eid al-Adha",
+    "2005-01-24": "Duruthu Full Moon Poya Day",
+    "2005-02-04": "Independence Day",
+    "2005-02-23": "Nawam Full Moon Poya Day",
+    "2005-03-08": "Maha Sivarathri Day",
+    "2005-03-25": "Good Friday; Medin Full Moon Poya Day",
+    "2005-04-13": "Day Before Sinhala and Tamil New Year",
+    "2005-04-14": "Sinhala and Tamil New Year",
+    "2005-04-22": "The Prophet's Birthday",
+    "2005-04-23": "Bak Full Moon Poya Day",
+    "2005-05-01": "International Workers' Day",
+    "2005-05-02": "Special Bank Holiday",
+    "2005-05-23": "Vesak Full Moon Poya Day",
+    "2005-05-24": "Day Following Vesak Full Moon Poya Day",
+    "2005-06-21": "Poson Full Moon Poya Day",
+    "2005-07-21": "Esala Full Moon Poya Day",
+    "2005-08-19": "Nikini Full Moon Poya Day",
+    "2005-09-17": "Binara Full Moon Poya Day",
+    "2005-10-17": "Vap Full Moon Poya Day",
+    "2005-11-01": "Deepavali Festival Day",
+    "2005-11-04": "Eid al-Fitr",
+    "2005-11-15": "Il Full Moon Poya Day",
+    "2005-12-15": "Unduvap Full Moon Poya Day",
+    "2005-12-25": "Christmas Day",
+    "2005-12-26": "Special Bank Holiday",
+    "2006-01-11": "Eid al-Adha",
+    "2006-01-13": "Duruthu Full Moon Poya Day",
+    "2006-01-14": "Tamil Thai Pongal Day",
+    "2006-02-04": "Independence Day",
+    "2006-02-12": "Nawam Full Moon Poya Day",
+    "2006-02-26": "Maha Sivarathri Day",
+    "2006-03-14": "Medin Full Moon Poya Day",
+    "2006-04-11": "The Prophet's Birthday",
+    "2006-04-13": "Bak Full Moon Poya Day; Day Before Sinhala and Tamil New Year",
+    "2006-04-14": "Good Friday; Sinhala and Tamil New Year",
+    "2006-05-01": "International Workers' Day",
+    "2006-05-12": "Vesak Full Moon Poya Day",
+    "2006-05-13": "Day Following Vesak Full Moon Poya Day",
+    "2006-06-11": "Poson Full Moon Poya Day",
+    "2006-07-10": "Esala Full Moon Poya Day",
+    "2006-08-09": "Nikini Full Moon Poya Day",
+    "2006-09-07": "Binara Full Moon Poya Day",
+    "2006-10-06": "Vap Full Moon Poya Day",
+    "2006-10-21": "Deepavali Festival Day",
+    "2006-10-24": "Eid al-Fitr",
+    "2006-11-05": "Il Full Moon Poya Day",
+    "2006-12-04": "Unduvap Full Moon Poya Day",
+    "2006-12-25": "Christmas Day",
+    "2006-12-31": "Eid al-Adha",
+    "2007-01-03": "Duruthu Full Moon Poya Day",
+    "2007-01-15": "Tamil Thai Pongal Day",
+    "2007-02-01": "Nawam Full Moon Poya Day",
+    "2007-02-04": "Independence Day",
+    "2007-02-05": "Special Bank Holiday",
+    "2007-02-16": "Maha Sivarathri Day",
+    "2007-03-03": "Medin Full Moon Poya Day",
+    "2007-04-01": "The Prophet's Birthday",
+    "2007-04-02": "Bak Full Moon Poya Day",
+    "2007-04-03": "Special Bank Holiday",
+    "2007-04-06": "Good Friday",
+    "2007-04-13": "Day Before Sinhala and Tamil New Year",
+    "2007-04-14": "Sinhala and Tamil New Year",
+    "2007-05-01": "International Workers' Day; Vesak Full Moon Poya Day",
+    "2007-05-02": "Day Following Vesak Full Moon Poya Day",
+    "2007-05-31": "Adhi Poson Full Moon Poya Day",
+    "2007-06-30": "Poson Full Moon Poya Day",
+    "2007-07-29": "Esala Full Moon Poya Day",
+    "2007-08-28": "Nikini Full Moon Poya Day",
+    "2007-09-26": "Binara Full Moon Poya Day",
+    "2007-10-13": "Eid al-Fitr",
+    "2007-10-25": "Vap Full Moon Poya Day",
+    "2007-11-08": "Deepavali Festival Day",
+    "2007-11-24": "Il Full Moon Poya Day",
+    "2007-12-21": "Eid al-Adha",
+    "2007-12-23": "Unduvap Full Moon Poya Day",
+    "2007-12-25": "Christmas Day",
+    "2008-01-15": "Tamil Thai Pongal Day",
+    "2008-01-22": "Duruthu Full Moon Poya Day",
+    "2008-02-04": "Independence Day",
+    "2008-02-20": "Nawam Full Moon Poya Day",
+    "2008-03-06": "Maha Sivarathri Day",
+    "2008-03-20": "The Prophet's Birthday",
+    "2008-03-21": "Good Friday; Medin Full Moon Poya Day",
+    "2008-04-12": "Day Before Sinhala and Tamil New Year",
+    "2008-04-13": "Sinhala and Tamil New Year",
+    "2008-04-18": "Special Bank Holiday",
+    "2008-04-19": "Bak Full Moon Poya Day",
+    "2008-05-01": "International Workers' Day",
+    "2008-05-19": "Vesak Full Moon Poya Day",
+    "2008-05-20": "Day Following Vesak Full Moon Poya Day",
+    "2008-06-18": "Poson Full Moon Poya Day",
+    "2008-07-17": "Esala Full Moon Poya Day",
+    "2008-08-16": "Nikini Full Moon Poya Day",
+    "2008-09-14": "Binara Full Moon Poya Day",
+    "2008-10-01": "Eid al-Fitr",
+    "2008-10-14": "Vap Full Moon Poya Day",
+    "2008-10-27": "Deepavali Festival Day",
+    "2008-11-12": "Il Full Moon Poya Day",
+    "2008-12-09": "Eid al-Adha",
+    "2008-12-12": "Unduvap Full Moon Poya Day",
+    "2008-12-25": "Christmas Day",
+    "2009-01-10": "Duruthu Full Moon Poya Day",
+    "2009-01-14": "Tamil Thai Pongal Day",
+    "2009-02-04": "Independence Day",
+    "2009-02-09": "Nawam Full Moon Poya Day",
+    "2009-02-23": "Maha Sivarathri Day",
+    "2009-03-10": "Medin Full Moon Poya Day; The Prophet's Birthday",
+    "2009-04-09": "Bak Full Moon Poya Day",
+    "2009-04-10": "Good Friday",
+    "2009-04-13": "Day Before Sinhala and Tamil New Year",
+    "2009-04-14": "Sinhala and Tamil New Year",
+    "2009-05-01": "International Workers' Day",
+    "2009-05-08": "Vesak Full Moon Poya Day",
+    "2009-05-09": "Day Following Vesak Full Moon Poya Day",
+    "2009-06-07": "Poson Full Moon Poya Day",
+    "2009-07-06": "Esala Full Moon Poya Day",
+    "2009-08-05": "Nikini Full Moon Poya Day",
+    "2009-09-04": "Binara Full Moon Poya Day",
+    "2009-09-21": "Eid al-Fitr",
+    "2009-10-03": "Vap Full Moon Poya Day",
+    "2009-10-17": "Deepavali Festival Day",
+    "2009-11-02": "Il Full Moon Poya Day",
+    "2009-11-28": "Eid al-Adha",
+    "2009-12-01": "Unduvap Full Moon Poya Day",
+    "2009-12-25": "Christmas Day",
+    "2009-12-31": "Duruthu Full Moon Poya Day",
+    "2010-01-14": "Tamil Thai Pongal Day",
+    "2010-01-29": "Nawam Full Moon Poya Day",
+    "2010-02-04": "Independence Day",
+    "2010-02-27": "The Prophet's Birthday",
+    "2010-02-28": "Medin Full Moon Poya Day",
+    "2010-03-13": "Maha Sivarathri Day",
+    "2010-03-29": "Bak Full Moon Poya Day",
+    "2010-04-02": "Good Friday",
+    "2010-04-13": "Day Before Sinhala and Tamil New Year",
+    "2010-04-14": "Sinhala and Tamil New Year",
+    "2010-04-28": "Adhi Vesak Full Mon Poya Day",
+    "2010-05-01": "International Workers' Day",
+    "2010-05-27": "Vesak Full Moon Poya Day",
+    "2010-05-28": "Day Following Vesak Full Moon Poya Day",
+    "2010-06-25": "Poson Full Moon Poya Day",
+    "2010-07-25": "Esala Full Moon Poya Day",
+    "2010-08-24": "Nikini Full Moon Poya Day",
+    "2010-09-10": "Eid al-Fitr",
+    "2010-09-22": "Binara Full Moon Poya Day",
+    "2010-10-22": "Vap Full Moon Poya Day",
+    "2010-11-05": "Deepavali Festival Day",
+    "2010-11-17": "Eid al-Adha",
+    "2010-11-21": "Il Full Moon Poya Day",
+    "2010-12-20": "Unduvap Full Moon Poya Day",
+    "2010-12-25": "Christmas Day",
+    "2011-01-15": "Tamil Thai Pongal Day",
+    "2011-01-19": "Duruthu Full Moon Poya Day",
+    "2011-02-04": "Independence Day",
+    "2011-02-16": "The Prophet's Birthday",
+    "2011-02-17": "Nawam Full Moon Poya Day",
+    "2011-03-02": "Maha Sivarathri Day",
+    "2011-03-19": "Medin Full Moon Poya Day",
+    "2011-04-13": "Day Before Sinhala and Tamil New Year",
+    "2011-04-14": "Sinhala and Tamil New Year",
+    "2011-04-17": "Bak Full Moon Poya Day",
+    "2011-04-22": "Good Friday",
+    "2011-05-01": "International Workers' Day",
+    "2011-05-02": "Special Bank Holiday",
+    "2011-05-17": "Vesak Full Moon Poya Day",
+    "2011-05-18": "Day Following Vesak Full Moon Poya Day",
+    "2011-06-15": "Poson Full Moon Poya Day",
+    "2011-07-14": "Esala Full Moon Poya Day",
+    "2011-08-13": "Nikini Full Moon Poya Day",
+    "2011-08-31": "Eid al-Fitr",
+    "2011-09-11": "Binara Full Moon Poya Day",
+    "2011-10-11": "Vap Full Moon Poya Day",
+    "2011-10-26": "Deepavali Festival Day",
+    "2011-11-07": "Eid al-Adha",
+    "2011-11-10": "Il Full Moon Poya Day",
+    "2011-12-10": "Unduvap Full Moon Poya Day",
+    "2011-12-25": "Christmas Day",
+    "2011-12-26": "Special Bank Holiday",
+    "2012-01-08": "Duruthu Full Moon Poya Day",
+    "2012-01-15": "Tamil Thai Pongal Day",
+    "2012-01-16": "Special Bank Holiday",
+    "2012-02-04": "Independence Day",
+    "2012-02-05": "The Prophet's Birthday",
+    "2012-02-07": "Nawam Full Moon Poya Day",
+    "2012-02-10": "Special Bank Holiday",
+    "2012-02-20": "Maha Sivarathri Day",
+    "2012-03-07": "Medin Full Moon Poya Day",
+    "2012-04-06": "Bak Full Moon Poya Day; Good Friday",
+    "2012-04-12": "Day Before Sinhala and Tamil New Year",
+    "2012-04-13": "Sinhala and Tamil New Year",
+    "2012-05-01": "International Workers' Day",
+    "2012-05-05": "Vesak Full Moon Poya Day",
+    "2012-05-06": "Day Following Vesak Full Moon Poya Day",
+    "2012-05-07": "Special Bank Holiday; Special Public Holiday",
+    "2012-06-04": "Poson Full Moon Poya Day",
+    "2012-07-03": "Esala Full Moon Poya Day",
+    "2012-08-01": "Nikini Full Moon Poya Day",
+    "2012-08-19": "Eid al-Fitr",
+    "2012-08-31": "Adhi Binara Full Moon Poya Day",
+    "2012-09-29": "Binara Full Moon Poya Day",
+    "2012-10-27": "Eid al-Adha",
+    "2012-10-29": "Vap Full Moon Poya Day",
+    "2012-11-13": "Deepavali Festival Day",
+    "2012-11-27": "Il Full Moon Poya Day",
+    "2012-12-25": "Christmas Day",
+    "2012-12-27": "Unduvap Full Moon Poya Day",
+    "2013-01-14": "Tamil Thai Pongal Day",
+    "2013-01-25": "The Prophet's Birthday",
+    "2013-01-26": "Duruthu Full Moon Poya Day",
+    "2013-02-04": "Independence Day",
+    "2013-02-25": "Nawam Full Moon Poya Day",
+    "2013-03-10": "Maha Sivarathri Day",
+    "2013-03-26": "Medin Full Moon Poya Day",
+    "2013-03-29": "Good Friday",
+    "2013-04-13": "Day Before Sinhala and Tamil New Year",
+    "2013-04-14": "Sinhala and Tamil New Year",
+    "2013-04-15": "Special Bank Holiday; Special Public Holiday",
+    "2013-04-25": "Bak Full Moon Poya Day",
+    "2013-05-01": "International Workers' Day",
+    "2013-05-24": "Vesak Full Moon Poya Day",
+    "2013-05-25": "Day Following Vesak Full Moon Poya Day",
+    "2013-06-23": "Poson Full Moon Poya Day",
+    "2013-07-22": "Esala Full Moon Poya Day",
+    "2013-08-09": "Eid al-Fitr",
+    "2013-08-20": "Nikini Full Moon Poya Day",
+    "2013-09-19": "Binara Full Moon Poya Day",
+    "2013-10-16": "Eid al-Adha",
+    "2013-10-18": "Vap Full Moon Poya Day",
+    "2013-11-02": "Deepavali Festival Day",
+    "2013-11-17": "Il Full Moon Poya Day",
+    "2013-12-16": "Unduvap Full Moon Poya Day",
+    "2013-12-25": "Christmas Day",
+    "2014-01-14": "Tamil Thai Pongal Day; The Prophet's Birthday",
+    "2014-01-15": "Duruthu Full Moon Poya Day",
+    "2014-02-04": "Independence Day",
+    "2014-02-14": "Nawam Full Moon Poya Day",
+    "2014-02-27": "Maha Sivarathri Day",
+    "2014-03-16": "Medin Full Moon Poya Day",
+    "2014-04-13": "Day Before Sinhala and Tamil New Year",
+    "2014-04-14": "Bak Full Moon Poya Day; Sinhala and Tamil New Year",
+    "2014-04-15": "Special Bank Holiday",
+    "2014-04-18": "Good Friday",
+    "2014-05-01": "International Workers' Day",
+    "2014-05-14": "Vesak Full Moon Poya Day",
+    "2014-05-15": "Day Following Vesak Full Moon Poya Day",
+    "2014-06-12": "Poson Full Moon Poya Day",
+    "2014-07-12": "Esala Full Moon Poya Day",
+    "2014-07-29": "Eid al-Fitr",
+    "2014-08-10": "Nikini Full Moon Poya Day",
+    "2014-09-08": "Binara Full Moon Poya Day",
+    "2014-10-05": "Eid al-Adha",
+    "2014-10-08": "Vap Full Moon Poya Day",
+    "2014-10-22": "Deepavali Festival Day",
+    "2014-11-06": "Il Full Moon Poya Day",
+    "2014-12-06": "Unduvap Full Moon Poya Day",
+    "2014-12-25": "Christmas Day",
+    "2015-01-04": "Duruthu Full Moon Poya Day; The Prophet's Birthday",
+    "2015-01-05": "Special Bank Holiday",
+    "2015-01-15": "Tamil Thai Pongal Day",
+    "2015-02-03": "Nawam Full Moon Poya Day",
+    "2015-02-04": "Independence Day",
+    "2015-02-17": "Maha Sivarathri Day",
+    "2015-03-05": "Medin Full Moon Poya Day",
+    "2015-04-03": "Bak Full Moon Poya Day; Good Friday",
+    "2015-04-13": "Day Before Sinhala and Tamil New Year",
+    "2015-04-14": "Sinhala and Tamil New Year",
+    "2015-05-01": "International Workers' Day",
+    "2015-05-03": "Vesak Full Moon Poya Day",
+    "2015-05-04": "Day Following Vesak Full Moon Poya Day",
+    "2015-06-02": "Poson Full Moon Poya Day",
+    "2015-07-01": "Adhi Esala Full Moon Poya Day",
+    "2015-07-18": "Eid al-Fitr",
+    "2015-07-31": "Esala Full Moon Poya Day",
+    "2015-08-29": "Nikini Full Moon Poya Day",
+    "2015-09-24": "Eid al-Adha",
+    "2015-09-27": "Binara Full Moon Poya Day",
+    "2015-10-27": "Vap Full Moon Poya Day",
+    "2015-11-10": "Deepavali Festival Day",
+    "2015-11-25": "Il Full Moon Poya Day",
+    "2015-12-24": "Unduvap Full Moon Poya Day",
+    "2015-12-25": "Christmas Day",
+    "2016-01-15": "Tamil Thai Pongal Day",
+    "2016-01-23": "Duruthu Full Moon Poya Day",
+    "2016-02-04": "Independence Day",
+    "2016-02-22": "Nawam Full Moon Poya Day",
+    "2016-03-07": "Maha Sivarathri Day",
+    "2016-03-22": "Medin Full Moon Poya Day",
+    "2016-03-25": "Good Friday",
+    "2016-04-13": "Day Before Sinhala and Tamil New Year",
+    "2016-04-14": "Sinhala and Tamil New Year",
+    "2016-04-15": "Special Public Holiday",
+    "2016-04-21": "Bak Full Moon Poya Day",
+    "2016-05-01": "International Workers' Day",
+    "2016-05-02": "Special Bank Holiday",
+    "2016-05-21": "Vesak Full Moon Poya Day",
+    "2016-05-22": "Day Following Vesak Full Moon Poya Day",
+    "2016-05-23": "Special Bank Holiday",
+    "2016-06-19": "Poson Full Moon Poya Day",
+    "2016-07-06": "Eid al-Fitr",
+    "2016-07-19": "Esala Full Moon Poya Day",
+    "2016-08-17": "Nikini Full Moon Poya Day",
+    "2016-09-12": "Eid al-Adha",
+    "2016-09-16": "Binara Full Moon Poya Day",
+    "2016-10-15": "Vap Full Moon Poya Day",
+    "2016-10-29": "Deepavali Festival Day",
+    "2016-11-14": "Il Full Moon Poya Day",
+    "2016-12-12": "The Prophet's Birthday",
+    "2016-12-13": "Unduvap Full Moon Poya Day",
+    "2016-12-25": "Christmas Day",
+    "2016-12-26": "Special Bank Holiday",
+    "2017-01-12": "Duruthu Full Moon Poya Day",
+    "2017-01-14": "Tamil Thai Pongal Day",
+    "2017-02-04": "Independence Day",
+    "2017-02-10": "Nawam Full Moon Poya Day",
+    "2017-02-24": "Maha Sivarathri Day",
+    "2017-03-12": "Medin Full Moon Poya Day",
+    "2017-04-10": "Bak Full Moon Poya Day",
+    "2017-04-13": "Day Before Sinhala and Tamil New Year",
+    "2017-04-14": "Good Friday; Sinhala and Tamil New Year",
+    "2017-05-01": "International Workers' Day",
+    "2017-05-10": "Vesak Full Moon Poya Day",
+    "2017-05-11": "Day Following Vesak Full Moon Poya Day",
+    "2017-06-08": "Poson Full Moon Poya Day",
+    "2017-06-26": "Eid al-Fitr",
+    "2017-07-08": "Esala Full Moon Poya Day",
+    "2017-08-07": "Nikini Full Moon Poya Day",
+    "2017-09-01": "Eid al-Adha",
+    "2017-09-05": "Binara Full Moon Poya Day",
+    "2017-10-05": "Vap Full Moon Poya Day",
+    "2017-10-18": "Deepavali Festival Day",
+    "2017-11-03": "Il Full Moon Poya Day",
+    "2017-12-01": "The Prophet's Birthday",
+    "2017-12-03": "Unduvap Full Moon Poya Day",
+    "2017-12-25": "Christmas Day",
+    "2018-01-01": "Duruthu Full Moon Poya Day",
+    "2018-01-14": "Tamil Thai Pongal Day",
+    "2018-01-15": "Special Bank Holiday",
+    "2018-01-31": "Nawam Full Moon Poya Day",
+    "2018-02-04": "Independence Day",
+    "2018-02-05": "Special Bank Holiday",
+    "2018-02-13": "Maha Sivarathri Day",
+    "2018-03-01": "Medin Full Moon Poya Day",
+    "2018-03-30": "Good Friday",
+    "2018-03-31": "Bak Full Moon Poya Day",
+    "2018-04-13": "Day Before Sinhala and Tamil New Year",
+    "2018-04-14": "Sinhala and Tamil New Year",
+    "2018-04-29": "Vesak Full Moon Poya Day",
+    "2018-04-30": "Day Following Vesak Full Moon Poya Day",
+    "2018-05-01": "International Workers' Day",
+    "2018-05-29": "Adhi Poson Full Moon Poya Day",
+    "2018-06-15": "Eid al-Fitr",
+    "2018-06-27": "Poson Full Moon Poya Day",
+    "2018-07-27": "Esala Full Moon Poya Day",
+    "2018-08-22": "Eid al-Adha",
+    "2018-08-25": "Nikini Full Moon Poya Day",
+    "2018-09-24": "Binara Full Moon Poya Day",
+    "2018-10-24": "Vap Full Moon Poya Day",
+    "2018-11-06": "Deepavali Festival Day",
+    "2018-11-20": "The Prophet's Birthday",
+    "2018-11-22": "Il Full Moon Poya Day",
+    "2018-12-22": "Unduvap Full Moon Poya Day",
+    "2018-12-25": "Christmas Day",
+    "2019-01-15": "Tamil Thai Pongal Day",
+    "2019-01-20": "Duruthu Full Moon Poya Day",
+    "2019-02-04": "Independence Day",
+    "2019-02-19": "Nawam Full Moon Poya Day",
+    "2019-03-04": "Maha Sivarathri Day",
+    "2019-03-20": "Medin Full Moon Poya Day",
+    "2019-04-13": "Day Before Sinhala and Tamil New Year",
+    "2019-04-14": "Sinhala and Tamil New Year",
+    "2019-04-15": "Special Bank Holiday",
+    "2019-04-19": "Bak Full Moon Poya Day; Good Friday",
+    "2019-05-01": "International Workers' Day",
+    "2019-05-18": "Vesak Full Moon Poya Day",
+    "2019-05-19": "Day Following Vesak Full Moon Poya Day",
+    "2019-05-20": "Special Public Holiday",
+    "2019-06-05": "Eid al-Fitr",
+    "2019-06-16": "Poson Full Moon Poya Day",
+    "2019-07-16": "Esala Full Moon Poya Day",
+    "2019-08-12": "Eid al-Adha",
+    "2019-08-14": "Nikini Full Moon Poya Day",
+    "2019-09-13": "Binara Full Moon Poya Day",
+    "2019-10-13": "Vap Full Moon Poya Day",
+    "2019-10-27": "Deepavali Festival Day",
+    "2019-11-10": "The Prophet's Birthday",
+    "2019-11-11": "Special Bank Holiday",
+    "2019-11-12": "Il Full Moon Poya Day",
+    "2019-12-11": "Unduvap Full Moon Poya Day",
+    "2019-12-25": "Christmas Day",
+    "2020-01-10": "Duruthu Full Moon Poya Day",
+    "2020-01-15": "Tamil Thai Pongal Day",
+    "2020-02-04": "Independence Day",
+    "2020-02-08": "Nawam Full Moon Poya Day",
+    "2020-02-21": "Maha Sivarathri Day",
+    "2020-03-09": "Medin Full Moon Poya Day",
+    "2020-03-16": "Special Public Holiday",
+    "2020-03-17": "Special Public Holiday",
+    "2020-03-18": "Special Public Holiday",
+    "2020-03-19": "Special Public Holiday",
+    "2020-04-07": "Bak Full Moon Poya Day",
+    "2020-04-10": "Good Friday",
+    "2020-04-12": "Day Before Sinhala and Tamil New Year",
+    "2020-04-13": "Sinhala and Tamil New Year",
+    "2020-04-14": "Special Bank Holiday",
+    "2020-05-01": "International Workers' Day",
+    "2020-05-07": "Vesak Full Moon Poya Day",
+    "2020-05-08": "Day Following Vesak Full Moon Poya Day",
+    "2020-05-25": "Eid al-Fitr",
+    "2020-06-04": "Public Sector Holiday",
+    "2020-06-05": "Poson Full Moon Poya Day",
+    "2020-07-04": "Esala Full Moon Poya Day",
+    "2020-08-01": "Eid al-Adha",
+    "2020-08-03": "Nikini Full Moon Poya Day",
+    "2020-09-01": "Binara Full Moon Poya Day",
+    "2020-10-01": "Adhi Vap Full Moon Poya Day",
+    "2020-10-30": "The Prophet's Birthday; Vap Full Moon Poya Day",
+    "2020-11-14": "Deepavali Festival Day",
+    "2020-11-29": "Il Full Moon Poya Day",
+    "2020-12-25": "Christmas Day",
+    "2020-12-29": "Unduvap Full Moon Poya Day",
+    "2021-01-14": "Tamil Thai Pongal Day",
+    "2021-01-28": "Duruthu Full Moon Poya Day",
+    "2021-02-04": "Independence Day",
+    "2021-02-26": "Nawam Full Moon Poya Day",
+    "2021-03-11": "Maha Sivarathri Day",
+    "2021-03-28": "Medin Full Moon Poya Day",
+    "2021-04-02": "Good Friday",
+    "2021-04-13": "Day Before Sinhala and Tamil New Year",
+    "2021-04-14": "Sinhala and Tamil New Year",
+    "2021-04-26": "Bak Full Moon Poya Day",
+    "2021-04-30": "Half-Day Special Bank Holiday",
+    "2021-05-01": "International Workers' Day",
+    "2021-05-14": "Eid al-Fitr",
+    "2021-05-26": "Vesak Full Moon Poya Day",
+    "2021-05-27": "Day Following Vesak Full Moon Poya Day",
+    "2021-06-24": "Poson Full Moon Poya Day",
+    "2021-07-21": "Eid al-Adha",
+    "2021-07-23": "Esala Full Moon Poya Day",
+    "2021-08-22": "Nikini Full Moon Poya Day",
+    "2021-09-20": "Binara Full Moon Poya Day",
+    "2021-10-19": "The Prophet's Birthday",
+    "2021-10-20": "Vap Full Moon Poya Day",
+    "2021-11-04": "Deepavali Festival Day",
+    "2021-11-18": "Il Full Moon Poya Day",
+    "2021-12-18": "Unduvap Full Moon Poya Day",
+    "2021-12-24": "Half-Day Special Bank Holiday",
+    "2021-12-25": "Christmas Day",
+    "2022-01-14": "Tamil Thai Pongal Day",
+    "2022-01-17": "Duruthu Full Moon Poya Day",
+    "2022-02-04": "Independence Day",
+    "2022-02-16": "Nawam Full Moon Poya Day",
+    "2022-03-01": "Maha Sivarathri Day",
+    "2022-03-17": "Medin Full Moon Poya Day",
+    "2022-04-11": "Special Public Holiday",
+    "2022-04-12": "Special Public Holiday",
+    "2022-04-13": "Day Before Sinhala and Tamil New Year",
+    "2022-04-14": "Sinhala and Tamil New Year",
+    "2022-04-15": "Good Friday",
+    "2022-04-16": "Bak Full Moon Poya Day",
+    "2022-05-01": "International Workers' Day",
+    "2022-05-02": "Special Public Holiday",
+    "2022-05-03": "Eid al-Fitr",
+    "2022-05-15": "Vesak Full Moon Poya Day",
+    "2022-05-16": "Day Following Vesak Full Moon Poya Day",
+    "2022-06-13": "Public Sector Holiday",
+    "2022-06-14": "Poson Full Moon Poya Day",
+    "2022-06-17": "Public Sector Holiday",
+    "2022-06-24": "Public Sector Holiday",
+    "2022-07-01": "Public Sector Holiday",
+    "2022-07-08": "Public Sector Holiday",
+    "2022-07-10": "Eid al-Adha",
+    "2022-07-13": "Esala Full Moon Poya Day",
+    "2022-07-15": "Public Sector Holiday",
+    "2022-07-22": "Public Sector Holiday",
+    "2022-07-29": "Public Sector Holiday",
+    "2022-08-11": "Nikini Full Moon Poya Day",
+    "2022-09-10": "Binara Full Moon Poya Day",
+    "2022-10-09": "The Prophet's Birthday; Vap Full Moon Poya Day",
+    "2022-10-10": "Special Bank Holiday",
+    "2022-10-24": "Deepavali Festival Day",
+    "2022-11-07": "Il Full Moon Poya Day",
+    "2022-12-07": "Unduvap Full Moon Poya Day",
+    "2022-12-25": "Christmas Day",
+    "2022-12-26": "Special Bank Holiday",
+    "2023-01-06": "Duruthu Full Moon Poya Day",
+    "2023-01-15": "Tamil Thai Pongal Day",
+    "2023-01-16": "Special Bank Holiday",
+    "2023-02-04": "Independence Day",
+    "2023-02-05": "Nawam Full Moon Poya Day",
+    "2023-02-18": "Maha Sivarathri Day",
+    "2023-03-06": "Medin Full Moon Poya Day",
+    "2023-04-05": "Bak Full Moon Poya Day",
+    "2023-04-07": "Good Friday",
+    "2023-04-13": "Day Before Sinhala and Tamil New Year",
+    "2023-04-14": "Sinhala and Tamil New Year",
+    "2023-04-22": "Eid al-Fitr",
+    "2023-05-01": "International Workers' Day",
+    "2023-05-05": "Vesak Full Moon Poya Day",
+    "2023-05-06": "Day Following Vesak Full Moon Poya Day",
+    "2023-06-03": "Poson Full Moon Poya Day",
+    "2023-06-29": "Eid al-Adha",
+    "2023-07-03": "Adhi Esala Full Moon Poya Day",
+    "2023-08-01": "Esala Full Moon Poya Day",
+    "2023-08-30": "Nikini Full Moon Poya Day",
+    "2023-09-28": "The Prophet's Birthday",
+    "2023-09-29": "Binara Full Moon Poya Day",
+    "2023-10-28": "Vap Full Moon Poya Day",
+    "2023-11-12": "Deepavali Festival Day",
+    "2023-11-26": "Il Full Moon Poya Day",
+    "2023-12-25": "Christmas Day",
+    "2023-12-26": "Unduvap Full Moon Poya Day",
+    "2024-01-15": "Tamil Thai Pongal Day",
+    "2024-01-25": "Duruthu Full Moon Poya Day",
+    "2024-02-04": "Independence Day",
+    "2024-02-23": "Nawam Full Moon Poya Day",
+    "2024-03-08": "Maha Sivarathri Day",
+    "2024-03-24": "Medin Full Moon Poya Day",
+    "2024-03-29": "Good Friday",
+    "2024-04-11": "Eid al-Fitr",
+    "2024-04-12": "Day Before Sinhala and Tamil New Year",
+    "2024-04-13": "Sinhala and Tamil New Year",
+    "2024-04-15": "Special Public Holiday",
+    "2024-04-23": "Bak Full Moon Poya Day",
+    "2024-05-01": "International Workers' Day",
+    "2024-05-23": "Vesak Full Moon Poya Day",
+    "2024-05-24": "Day Following Vesak Full Moon Poya Day",
+    "2024-06-17": "Eid al-Adha",
+    "2024-06-21": "Poson Full Moon Poya Day",
+    "2024-07-20": "Esala Full Moon Poya Day",
+    "2024-08-19": "Nikini Full Moon Poya Day",
+    "2024-09-16": "The Prophet's Birthday",
+    "2024-09-17": "Binara Full Moon Poya Day",
+    "2024-09-29": "Special Public Holiday",
+    "2024-10-17": "Vap Full Moon Poya Day",
+    "2024-10-31": "Deepavali Festival Day",
+    "2024-11-15": "Il Full Moon Poya Day",
+    "2024-12-14": "Unduvap Full Moon Poya Day",
+    "2024-12-25": "Christmas Day",
+    "2025-01-13": "Duruthu Full Moon Poya Day",
+    "2025-01-14": "Tamil Thai Pongal Day",
+    "2025-02-04": "Independence Day",
+    "2025-02-12": "Nawam Full Moon Poya Day",
+    "2025-02-26": "Maha Sivarathri Day",
+    "2025-03-13": "Medin Full Moon Poya Day",
+    "2025-03-31": "Eid al-Fitr",
+    "2025-04-12": "Bak Full Moon Poya Day",
+    "2025-04-13": "Day Before Sinhala and Tamil New Year",
+    "2025-04-14": "Sinhala and Tamil New Year",
+    "2025-04-15": "Special Bank Holiday",
+    "2025-04-18": "Good Friday",
+    "2025-05-01": "International Workers' Day",
+    "2025-05-12": "Vesak Full Moon Poya Day",
+    "2025-05-13": "Day Following Vesak Full Moon Poya Day",
+    "2025-06-07": "Eid al-Adha",
+    "2025-06-10": "Poson Full Moon Poya Day",
+    "2025-07-10": "Esala Full Moon Poya Day",
+    "2025-08-08": "Nikini Full Moon Poya Day",
+    "2025-09-05": "The Prophet's Birthday",
+    "2025-09-07": "Binara Full Moon Poya Day",
+    "2025-10-06": "Vap Full Moon Poya Day",
+    "2025-10-20": "Deepavali Festival Day",
+    "2025-11-05": "Il Full Moon Poya Day",
+    "2025-12-04": "Unduvap Full Moon Poya Day",
+    "2025-12-25": "Christmas Day"
+}


Test patch:
diff --git a/tests/countries/test_sri_lanka.py b/tests/countries/test_sri_lanka.py
new file mode 100644
index 00000000..0b1f1245
--- /dev/null
+++ b/tests/countries/test_sri_lanka.py
@@ -0,0 +1,356 @@
+#  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 AUTHORS 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 BANK, GOVERNMENT, PUBLIC, WORKDAY
+from holidays.countries.sri_lanka import SriLanka, LK, LKA
+from tests.common import CommonCountryTests
+
+
+class TestSriLanka(CommonCountryTests, TestCase):
+    @classmethod
+    def setUpClass(cls):
+        super().setUpClass(SriLanka, years=range(1972, 2025))
+
+    def test_country_aliases(self):
+        self.assertAliases(SriLanka, LK, LKA)
+
+    def test_no_holidays(self):
+        self.assertNoHolidays(
+            SriLanka(years=(1971, 2026), categories=(BANK, GOVERNMENT, PUBLIC, WORKDAY))
+        )
+
+    def test_special(self):
+        self.assertHoliday(
+            # 2020 Covid-19 Lockdowns.
+            "2020-03-16",
+            "2020-03-17",
+            "2020-03-18",
+            "2020-03-19",
+            # Other Special Public Holidays.
+            "2012-05-07",
+            "2013-04-15",
+            "2016-04-15",
+            "2019-05-20",
+            "2022-04-11",
+            "2022-04-12",
+            "2022-05-02",
+            "2024-04-15",
+            "2024-09-29",
+            # Adhi [MONTH] Full Moon Day.
+            "2004-07-31",
+            "2007-05-31",
+            "2010-04-28",
+            "2012-08-31",
+            "2015-07-01",
+            "2018-05-29",
+            "2020-10-01",
+            "2023-07-03",
+        )
+
+    def test_special_bank(self):
+        dt = (
+            # Special Bank Holidays.
+            "2005-05-02",
+            "2005-12-26",
+            "2007-02-05",
+            "2007-04-03",
+            "2008-04-18",
+            "2011-05-02",
+            "2011-12-26",
+            "2012-01-16",
+            "2012-02-10",
+            "2012-05-07",
+            "2013-04-15",
+            "2014-04-15",
+            "2015-01-05",
+            "2016-05-02",
+            "2016-05-23",
+            "2016-12-26",
+            "2018-01-15",
+            "2018-02-05",
+            "2019-04-15",
+            # 2019-05-20 got upgraded to Special Public Holiday.
+            "2019-11-11",
+            "2020-04-14",
+            # 2022-05-02 got upgraded to Special Public Holiday.
+            "2022-10-10",
+            "2022-12-26",
+            "2023-01-16",
+            "2025-04-15",
+        )
+        dt_half = (
+            # Half-Day Special Bank Holidays.
+            "2021-04-30",
+            "2021-12-24",
+        )
+        self.assertHoliday(SriLanka(categories=BANK), dt, dt_half)
+
+    def test_special_government(self):
+        # 2020 Covid Lockdowns
+        # https://www.adaderana.lk/news.php?nid=64367
+        # 2022 Sri Lankan Fuel Crisis
+        # https://www.adaderana.lk/news.php?nid=82979
+        # https://www.adaderana.lk/news.php?nid=83082
+        # https://www.adaderana.lk/news.php?nid=84035
+        self.assertHoliday(
+            SriLanka(categories=GOVERNMENT),
+            "2020-06-04",
+            "2022-06-13",
+            "2022-06-17",
+            "2022-06-24",
+            "2022-07-01",
+            "2022-07-08",
+            "2022-07-15",
+            "2022-07-22",
+            "2022-07-29",
+        )
+
+    def test_special_workday(self):
+        # 2003 Deepavali.
+        self.assertHoliday(SriLanka(categories=WORKDAY), "2003-10-24")
+
+    def test_deepavali(self):
+        name = "දීපවාලි උත්සව දිනය"
+        self.assertHolidayName(
+            name,
+            "2020-11-14",
+            "2021-11-04",
+            "2022-10-24",
+            "2023-11-12",
+            "2024-10-31",
+            "2025-10-20",
+        )
+        self.assertNoHolidayName(name, 2003)
+
+    def test_maha_sivarathri(self):
+        name = "මහ සිවරාත්රි දිනය"
+        self.assertHolidayName(
+            name,
+            "2003-03-01",
+            "2004-02-18",
+            "2005-03-08",
+            "2006-02-26",
+            "2007-02-16",
+            "2008-03-06",
+            "2009-02-23",
+            "2010-03-13",
+            "2011-03-02",
+            "2012-02-20",
+            "2013-03-10",
+            "2014-02-27",
+            "2015-02-17",
+            "2016-03-07",
+            "2017-02-24",
+            "2018-02-13",
+            "2019-03-04",
+            "2020-02-21",
+            "2021-03-11",
+            "2022-03-01",
+            "2023-02-18",
+            "2024-03-08",
+            "2025-02-26",
+        )
+        self.assertNoHolidayName(name, 2002)
+
+    def test_2023_all(self):
+        # https://www.cbsl.gov.lk/en/about/about-the-bank/bank-holidays-2023
+        self.assertHolidays(
+            SriLanka(categories=(BANK, GOVERNMENT, PUBLIC, WORKDAY), years=2023),
+            ("2023-01-06", "දුරුතු පුර පසළොස්වක පෝය දිනය"),
+            ("2023-01-15", "දෙමළ තෛපොංැලල් දිනය"),
+            ("2023-01-16", "විශේෂ බැංකු නිවාඩු දිනය"),
+            ("2023-02-04", "නිදහස් සමරු දිනය"),
+            ("2023-02-05", "නවම් පුර පසළොස්වක පෝය දිනය"),
+            ("2023-02-18", "මහ සිවරාත්රි දිනය"),
+            ("2023-03-06", "මැදින් පුර පසළොස්වක පෝය දිනය"),
+            ("2023-04-05", "බක් පුර පසළොස්වක පෝය දිනය"),
+            ("2023-04-07", "මහ සිකුරාදා දිනය"),
+            ("2023-04-13", "සිංහල හා දෙමළ අලුත් අවුරුදු දිනට පෙර දිනය"),
+            ("2023-04-14", "සිංහල හා දෙමළ අලුත් අවුරුදු දිනය"),
+            ("2023-04-22", "ඊදුල් ෆීතර්"),
+            ("2023-05-01", "ලොක කම්කරු දිනය"),
+            ("2023-05-05", "වෙසක් පුර පසළොස්වක පෝය දිනය"),
+            ("2023-05-06", "වෙසක් පුර පසළොස්වක පෝය දිනට පසු දිනය"),
+            ("2023-06-03", "පොසොන් පුර පසළොස්වක පෝය දිනය"),
+            ("2023-06-29", "ඊදුල් අල්හා"),
+            ("2023-07-03", "අධි ඇසල පුර පසළොස්වක පෝය දිනය"),
+            ("2023-08-01", "ඇසල පුර පසළොස්වක පෝය දිනය"),
+            ("2023-08-30", "නිකිණි පුර පසළොස්වක පෝය දිනය"),
+            ("2023-09-28", "නබි නායකතුමාගේ උපන් දිනය"),
+            ("2023-09-29", "බිනර පුර පසළොස්වක පෝය දිනය"),
+            ("2023-10-28", "වප් පුර පසළොස්වක පෝය දිනය"),
+            ("2023-11-12", "දීපවාලි උත්සව දිනය"),
+            ("2023-11-26", "ඉල් පුර පසළොස්වක පෝය දිනය"),
+            ("2023-12-25", "නත්තල් උත්සව දිනය"),
+            ("2023-12-26", "උඳුවප් පුර පසළොස්වක පෝය දිනය"),
+        )
+
+    def test_2024_all(self):
+        # https://www.cbsl.gov.lk/en/about/about-the-bank/bank-holidays-2024
+        self.assertHolidays(
+            SriLanka(categories=(BANK, GOVERNMENT, PUBLIC, WORKDAY), years=2024),
+            ("2024-01-15", "දෙමළ තෛපොංැලල් දිනය"),
+            ("2024-01-25", "දුරුතු පුර පසළොස්වක පෝය දිනය"),
+            ("2024-02-04", "නිදහස් සමරු දිනය"),
+            ("2024-02-23", "නවම් පුර පසළොස්වක පෝය දිනය"),
+            ("2024-03-08", "මහ සිවරාත්රි දිනය"),
+            ("2024-03-24", "මැදින් පුර පසළොස්වක පෝය දිනය"),
+            ("2024-03-29", "මහ සිකුරාදා දිනය"),
+            ("2024-04-11", "ඊදුල් ෆීතර්"),
+            ("2024-04-12", "සිංහල හා දෙමළ අලුත් අවුරුදු දිනට පෙර දිනය"),
+            ("2024-04-13", "සිංහල හා දෙමළ අලුත් අවුරුදු දිනය"),
+            ("2024-04-15", "විශේෂ රජයේ නිවාඩු දිනය"),
+            ("2024-04-23", "බක් පුර පසළොස්වක පෝය දිනය"),
+            ("2024-05-01", "ලොක කම්කරු දිනය"),
+            ("2024-05-23", "වෙසක් පුර පසළොස්වක පෝය දිනය"),
+            ("2024-05-24", "වෙසක් පුර පසළොස්වක පෝය දිනට පසු දිනය"),
+            ("2024-06-17", "ඊදුල් අල්හා"),
+            ("2024-06-21", "පොසොන් පුර පසළොස්වක පෝය දිනය"),
+            ("2024-07-20", "ඇසල පුර පසළොස්වක පෝය දිනය"),
+            ("2024-08-19", "නිකිණි පුර පසළොස්වක පෝය දිනය"),
+            ("2024-09-16", "නබි නායකතුමාගේ උපන් දිනය"),
+            ("2024-09-17", "බිනර පුර පසළොස්වක පෝය දිනය"),
+            ("2024-09-29", "විශේෂ රජයේ නිවාඩු දිනය"),
+            ("2024-10-17", "වප් පුර පසළොස්වක පෝය දිනය"),
+            ("2024-10-31", "දීපවාලි උත්සව දිනය"),
+            ("2024-11-15", "ඉල් පුර පසළොස්වක පෝය දිනය"),
+            ("2024-12-14", "උඳුවප් පුර පසළොස්වක පෝය දිනය"),
+            ("2024-12-25", "නත්තල් උත්සව දිනය"),
+        )
+
+    def test_l10_default(self):
+        # https://www.cbsl.gov.lk/en/about/about-the-bank/bank-holidays-2025
+        self.assertLocalizedHolidays(
+            ("2022-01-14", "දෙමළ තෛපොංැලල් දිනය"),
+            ("2022-01-17", "දුරුතු පුර පසළොස්වක පෝය දිනය"),
+            ("2022-02-04", "නිදහස් සමරු දිනය"),
+            ("2022-02-16", "නවම් පුර පසළොස්වක පෝය දිනය"),
+            ("2022-03-01", "මහ සිවරාත්රි දිනය"),
+            ("2022-03-17", "මැදින් පුර පසළොස්වක පෝය දිනය"),
+            ("2022-04-11", "විශේෂ රජයේ නිවාඩු දිනය"),
+            ("2022-04-12", "විශේෂ රජයේ නිවාඩු දිනය"),
+            ("2022-04-13", "සිංහල හා දෙමළ අලුත් අවුරුදු දිනට පෙර දිනය"),
+            ("2022-04-14", "සිංහල හා දෙමළ අලුත් අවුරුදු දිනය"),
+            ("2022-04-15", "මහ සිකුරාදා දිනය"),
+            ("2022-04-16", "බක් පුර පසළොස්වක පෝය දිනය"),
+            ("2022-05-01", "ලොක කම්කරු දිනය"),
+            ("2022-05-02", "විශේෂ රජයේ නිවාඩු දිනය"),
+            ("2022-05-03", "ඊදුල් ෆීතර්"),
+            ("2022-05-15", "වෙසක් පුර පසළොස්වක පෝය දිනය"),
+            ("2022-05-16", "වෙසක් පුර පසළොස්වක පෝය දිනට පසු දිනය"),
+            ("2022-06-13", "රාජ්ය අංශයේ නිවාඩු දිනය"),
+            ("2022-06-14", "පොසොන් පුර පසළොස්වක පෝය දිනය"),
+            ("2022-06-17", "රාජ්ය අංශයේ නිවාඩු දිනය"),
+            ("2022-06-24", "රාජ්ය අංශයේ නිවාඩු දිනය"),
+            ("2022-07-01", "රාජ්ය අංශයේ නිවාඩු දිනය"),
+            ("2022-07-08", "රාජ්ය අංශයේ නිවාඩු දිනය"),
+            ("2022-07-10", "ඊදුල් අල්හා"),
+            ("2022-07-13", "ඇසල පුර පසළොස්වක පෝය දිනය"),
+            ("2022-07-15", "රාජ්ය අංශයේ නිවාඩු දිනය"),
+            ("2022-07-22", "රාජ්ය අංශයේ නිවාඩු දිනය"),
+            ("2022-07-29", "රාජ්ය අංශයේ නිවාඩු දිනය"),
+            ("2022-08-11", "නිකිණි පුර පසළොස්වක පෝය දිනය"),
+            ("2022-09-10", "බිනර පුර පසළොස්වක පෝය දිනය"),
+            ("2022-10-09", "නබි නායකතුමාගේ උපන් දිනය; වප් පුර පසළොස්වක පෝය දිනය"),
+            ("2022-10-10", "විශේෂ බැංකු නිවාඩු දිනය"),
+            ("2022-10-24", "දීපවාලි උත්සව දිනය"),
+            ("2022-11-07", "ඉල් පුර පසළොස්වක පෝය දිනය"),
+            ("2022-12-07", "උඳුවප් පුර පසළොස්වක පෝය දිනය"),
+            ("2022-12-25", "නත්තල් උත්සව දිනය"),
+            ("2022-12-26", "විශේෂ බැංකු නිවාඩු දිනය"),
+        )
+
+    def test_l10n_en_us(self):
+        self.assertLocalizedHolidays(
+            "en_US",
+            ("2022-01-14", "Tamil Thai Pongal Day"),
+            ("2022-01-17", "Duruthu Full Moon Poya Day"),
+            ("2022-02-04", "Independence Day"),
+            ("2022-02-16", "Nawam Full Moon Poya Day"),
+            ("2022-03-01", "Maha Sivarathri Day"),
+            ("2022-03-17", "Medin Full Moon Poya Day"),
+            ("2022-04-11", "Special Public Holiday"),
+            ("2022-04-12", "Special Public Holiday"),
+            ("2022-04-13", "Day Before Sinhala and Tamil New Year"),
+            ("2022-04-14", "Sinhala and Tamil New Year"),
+            ("2022-04-15", "Good Friday"),
+            ("2022-04-16", "Bak Full Moon Poya Day"),
+            ("2022-05-01", "International Workers' Day"),
+            ("2022-05-02", "Special Public Holiday"),
+            ("2022-05-03", "Eid al-Fitr"),
+            ("2022-05-15", "Vesak Full Moon Poya Day"),
+            ("2022-05-16", "Day Following Vesak Full Moon Poya Day"),
+            ("2022-06-13", "Public Sector Holiday"),
+            ("2022-06-14", "Poson Full Moon Poya Day"),
+            ("2022-06-17", "Public Sector Holiday"),
+            ("2022-06-24", "Public Sector Holiday"),
+            ("2022-07-01", "Public Sector Holiday"),
+            ("2022-07-08", "Public Sector Holiday"),
+            ("2022-07-10", "Eid al-Adha"),
+            ("2022-07-13", "Esala Full Moon Poya Day"),
+            ("2022-07-15", "Public Sector Holiday"),
+            ("2022-07-22", "Public Sector Holiday"),
+            ("2022-07-29", "Public Sector Holiday"),
+            ("2022-08-11", "Nikini Full Moon Poya Day"),
+            ("2022-09-10", "Binara Full Moon Poya Day"),
+            ("2022-10-09", "The Prophet's Birthday; Vap Full Moon Poya Day"),
+            ("2022-10-10", "Special Bank Holiday"),
+            ("2022-10-24", "Deepavali Festival Day"),
+            ("2022-11-07", "Il Full Moon Poya Day"),
+            ("2022-12-07", "Unduvap Full Moon Poya Day"),
+            ("2022-12-25", "Christmas Day"),
+            ("2022-12-26", "Special Bank Holiday"),
+        )
+
+    def test_l10n_ta_lk(self):
+        self.assertLocalizedHolidays(
+            "ta_LK",
+            ("2022-01-14", "தமிழ் தைப்பொங்கல் தினம்"),
+            ("2022-01-17", "துருத்து முழு நோன்மதி தினம்"),
+            ("2022-02-04", "சுதந்திர தினம்"),
+            ("2022-02-16", "நவம் முழு நோன்மதி தினம்"),
+            ("2022-03-01", "மகா சிவராத்திரி தினம்"),
+            ("2022-03-17", "மெதின் முழு நோன்மதி தினம்"),
+            ("2022-04-11", "விசேட பொது விடுமுறை"),
+            ("2022-04-12", "விசேட பொது விடுமுறை"),
+            ("2022-04-13", "சிங்கள, தமிழ் புத்தாண்டிற்கு முன்னைய தினம்"),
+            ("2022-04-14", "சிங்கள, தமிழ் புத்தாண்டு தினம்"),
+            ("2022-04-15", "பெரிய வெள்ளிக்கிழமை"),
+            ("2022-04-16", "பக் முழு நோன்மதி தினம்"),
+            ("2022-05-01", "சர்வதேச தொழிலாளர்கள் தினம்"),
+            ("2022-05-02", "விசேட பொது விடுமுறை"),
+            ("2022-05-03", "ஈதுல் பித்ர்"),
+            ("2022-05-15", "வெசாக் முழு நோன்மதி தினம்"),
+            ("2022-05-16", "வெசாக் முழு நோன்மதி தினத்திற்கு அடுத்த நாள்"),
+            ("2022-06-13", "பொதுத்துறை விடுமுறை"),
+            ("2022-06-14", "பொசொன் முழு நோன்மதி தினம்"),
+            ("2022-06-17", "பொதுத்துறை விடுமுறை"),
+            ("2022-06-24", "பொதுத்துறை விடுமுறை"),
+            ("2022-07-01", "பொதுத்துறை விடுமுறை"),
+            ("2022-07-08", "பொதுத்துறை விடுமுறை"),
+            ("2022-07-10", "ஈதுல் அழ்ஹா"),
+            ("2022-07-13", "எசல முழு நோன்மதி தினம்"),
+            ("2022-07-15", "பொதுத்துறை விடுமுறை"),
+            ("2022-07-22", "பொதுத்துறை விடுமுறை"),
+            ("2022-07-29", "பொதுத்துறை விடுமுறை"),
+            ("2022-08-11", "நிக்கினி முழு நோன்மதி தினம்"),
+            ("2022-09-10", "பினர முழு நோன்மதி தினம்"),
+            ("2022-10-09", "நபிகள் நாயகத்தின் பிறந்த தினம்; வப் முழு நோன்மதி தினம்"),
+            ("2022-10-10", "விசேட வங்கி விடுமுறை"),
+            ("2022-10-24", "தீபாவளிப் பண்டிகை தினம்"),
+            ("2022-11-07", "இல் முழு நோன்மதி தினம்"),
+            ("2022-12-07", "உந்துவப் முழு நோன்மதி தினம்"),
+            ("2022-12-25", "நத்தார் பண்டிகை"),
+            ("2022-12-26", "விசேட வங்கி விடுமுறை"),
+        )