Skip to content

Conversation

Wasif-Shahzad
Copy link
Contributor

@Wasif-Shahzad Wasif-Shahzad commented May 3, 2025

I've added Yemen's holidays.

Closes #1299.

Type of change

  • 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

Copy link
Contributor

coderabbitai bot commented May 3, 2025

Summary by CodeRabbit

  • New Features
    • Added support for Yemen, including national, school, and workday holidays, with accurate Islamic holiday dates and observed holiday rules.
    • Introduced Arabic and US English translations for Yemeni holidays.
  • Documentation
    • Updated documentation to reflect Yemen as a supported country.
  • Tests
    • Added comprehensive tests to verify Yemen holiday calculations, categories, and localizations.

Summary by CodeRabbit

  • New Features

    • Added support for Yemen as a new country, including public, school, and workday holidays from 1991 onward.
    • Included accurate Islamic holiday calculations and observed holiday rules specific to Yemen.
    • Provided localization for Yemeni holidays in both Arabic and US English.
  • Documentation

    • Updated documentation to reflect Yemen as a supported country and detailed its holiday categories and languages.
  • Tests

    • Introduced comprehensive tests to ensure correct holiday dates, categories, and localization for Yemen.

Walkthrough

This PR adds support for Yemen holidays, including a new Yemen-specific holiday class, localization in Arabic and English, updates to the registry and init files, and comprehensive tests verifying holiday dates, localization, and observed rules.

Changes

Files/Paths Change Summary
README.md Yemen added to supported countries list with holiday details.
holidays/countries/init.py, holidays/registry.py Yemen support integrated via import and registry entry.
holidays/countries/yemen.py New Yemen holiday class with public, Islamic, school, and workday holidays, plus localization.
holidays/locale/ar/LC_MESSAGES/YE.po, holidays/locale/en_US/LC_MESSAGES/YE.po Localization files for Yemen holidays in Arabic and US English.
tests/countries/test_yemen.py Tests verifying Yemen holiday dates, localization, aliases, and observed rules.

Assessment against linked issues

Objective Addressed Explanation
Add Yemen holidays with correct dates and logic (#1299)
Provide localization for Yemen holidays in Arabic and English (#1299)
Update documentation and registry to include Yemen (#1299)
Add comprehensive tests for Yemen holidays (#1299)

Suggested reviewers

  • PPsyrius
  • KJhellico

📜 Recent review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1ac4450 and b75660c.

📒 Files selected for processing (3)
  • README.md (2 hunks)
  • holidays/countries/__init__.py (1 hunks)
  • holidays/registry.py (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
holidays/countries/__init__.py (1)
holidays/countries/yemen.py (3)
  • Yemen (37-146)
  • YE (149-150)
  • YEM (153-154)
🔇 Additional comments (4)
holidays/countries/__init__.py (1)

196-196: Import Yemen module
The new import correctly adds Yemen and its ISO codes in alphabetical order alongside other country modules.

holidays/registry.py (1)

204-204: Register Yemen in COUNTRIES
The "yemen": ("Yemen", "YE", "YEM") entry is properly added in alphabetical sequence within the COUNTRIES registry.

README.md (2)

108-108: Update supported country count
The supported country count has been updated from 178 to 179 to reflect the addition of Yemen.


1390-1396: Add Yemen to available countries table
The table row for Yemen displays the ISO code YE, default language ar, secondary language en_US, and additional categories SCHOOL, WORKDAY as expected.

✨ Finishing Touches
  • 📝 Generate Docstrings

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

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

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

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

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

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

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

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🔭 Outside diff range comments (1)
holidays/locale/en_US/LC_MESSAGES/YE.po (1)

70-70: 🧹 Nitpick (assertive)

Add trailing newline.
POSIX-compliant text files should end with a newline. Please ensure the final line is followed by a line break.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 180b104 and c535cd1.

📒 Files selected for processing (7)
  • README.md (2 hunks)
  • holidays/countries/__init__.py (1 hunks)
  • holidays/countries/yemen.py (1 hunks)
  • holidays/locale/ar/LC_MESSAGES/YE.po (1 hunks)
  • holidays/locale/en_US/LC_MESSAGES/YE.po (1 hunks)
  • holidays/registry.py (1 hunks)
  • tests/countries/test_yemen.py (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
holidays/locale/en_US/LC_MESSAGES/YE.po (1)
Learnt from: KJhellico
PR: vacanza/holidays#2388
File: holidays/locale/en_CI/LC_MESSAGES/CI.po:88-88
Timestamp: 2025-03-30T18:25:07.087Z
Learning: In the holidays library, localization files have a specific structure: message comments are in standard English (en_US) describing the holiday, while actual translations (msgstr) should use the locale-specific terminology (e.g., en_CI for Ivory Coast English). For example, "Night of Power" in standard English is translated as "Lailatou-Kadr" in Ivory Coast English.
🧬 Code Graph Analysis (1)
holidays/countries/__init__.py (1)
holidays/countries/yemen.py (3)
  • Yemen (30-91)
  • YE (94-95)
  • YEM (98-99)
🔇 Additional comments (26)
holidays/countries/__init__.py (1)

189-189: Yemen import added correctly.
The new import sits in alphabetical order between Vietnam and Zambia, making the Yemen provider available through the package.

holidays/registry.py (1)

197-197: Yemen registered in COUNTRIES.
The "yemen": ("Yemen", "YE", "YEM") entry is inserted in the correct alphabetical spot and matches the module naming.

README.md (2)

108-108: Update supported country count.
The count is bumped to 172 to reflect the addition of Yemen—please confirm this matches any automated metrics or release notes.


1341-1346: Add Yemen to the countries table.
The table row for Yemen is placed alphabetically after Virgin Islands (U.S.), lists the correct ISO code, and shows supported languages (ar, en_US).

holidays/locale/ar/LC_MESSAGES/YE.po (1)

29-69: Populate or confirm Arabic translations.
All msgstr entries are currently empty. Since these are Arabic translations and msgid is already in Arabic, decide whether to set each msgstr equal to its msgid or remove the file to rely on the default strings.

holidays/locale/en_US/LC_MESSAGES/YE.po (3)

15-29: Verify .po header consistency.
The header includes both Generated-By and X-Generator fields and the correct version; it aligns with other English locale files.


30-34: Check estimated placeholder translation.
The %s (estimated) translation correctly mirrors the original format and uses C-format syntax properly.


35-69: Review English holiday translations.
Each holiday name is translated and capitalized correctly. These match existing naming conventions in other locales.

tests/countries/test_yemen.py (11)

1-17: Strong implementation of imports and header setup.

The imports include all the necessary components for testing the Yemen holiday implementation.


19-25: Test class setup is robust and follows project patterns.

The test setup establishes a comprehensive year range (1990-2050) and correctly creates an instance without estimated holiday labels for more accurate testing.


26-28: Good alias testing.

Proper verification that Yemen, YE, and YEM all function as expected.


29-31: Appropriate edge case testing.

Testing for no holidays before the start year (1989) is a good boundary check.


32-51: Fixed holiday tests are well-structured.

All national holidays (Labor Day, Unity Day, Revolution Day, Liberation Day, Independence Day) are properly tested with correct Arabic names and date patterns.


52-63: Hijri New Year test is thorough.

The test properly verifies both specific known dates (2020-2024) and ensures holidays exist across all years with and without estimation.


64-75: Mawlid test coverage is complete.

Good implementation of Prophet's Birthday holiday testing covering both specific dates and the full year range.


76-100: Eid al-Fitr testing is comprehensive.

The test correctly verifies the three-day holiday period across multiple years with specific dates and confirms behavior with and without estimation.


101-127: Eid al-Adha testing is thorough.

The four-day festival period is properly tested with known dates for 2020-2024 and verification across the full year range.


128-145: Default localization testing is well-implemented.

The test confirms proper Arabic naming for all holidays in 2023.


146-164: English localization testing is comprehensive.

The test verifies all holiday names are correctly translated to US English for 2023.

holidays/countries/yemen.py (7)

1-28: Imports and header are correctly structured.

All necessary modules and constants are imported appropriately for implementing Yemen holidays.


30-44: Yemen class definition follows project standards.

Good job including:

  • Informative docstring with references
  • Correct country code
  • Appropriate default language (Arabic)
  • Properly formatted estimated label
  • Start year (1990)
  • Supported languages (Arabic and English)

45-57: Constructor implementation is correct.

The initialization properly sets up International and Islamic holidays with the custom Yemen-specific Islamic holiday dates.


58-73: Fixed holiday implementation is accurate.

All national holidays are correctly implemented:

  • Labor Day
  • Unity Day (May 22)
  • Revolution Day (September 26)
  • Liberation Day (October 14)
  • Independence Day (November 30)

74-92: Islamic holiday implementation is thorough.

All Islamic holidays are properly implemented with correct Arabic names:

  • Hijri New Year
  • Prophet's Birthday
  • Eid al-Fitr (all three days)
  • Eid al-Adha (all four days)

94-100: Country code aliases are properly defined.

The YE and YEM aliases follow project standards.


102-139: Custom Islamic holiday dates are well-implemented.

The implementation:

  • Includes proper references for date sources
  • Provides specific Gregorian dates for Islamic holidays (2020-2025)
  • Covers all relevant Islamic holidays

This ensures accuracy for known years while still supporting estimation for future years.

Copy link

codecov bot commented May 3, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 100.00%. Comparing base (c2391ff) to head (b75660c).
Report is 1 commits behind head on dev.

Additional details and impacted files
@@            Coverage Diff            @@
##               dev     #2522   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          222       223    +1     
  Lines        14197     14267   +70     
  Branches      1996      2003    +7     
=========================================
+ Hits         14197     14267   +70     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@KJhellico KJhellico changed the title Add Yemen holidays. Add Yemen holidays May 3, 2025
@KJhellico
Copy link
Collaborator

KJhellico commented May 3, 2025

Yemen has changed its weekend from Thursday-Friday to Friday-Saturday since August 15th, 2013 - source.

Wiki

Decree Law No. (2) of 2000
Eid al-Fitr: 29 Shawwal to 3 Ramadan
Eid al-Adha: 9-13 Dhu al-Hijjah

If the holiday falls on a Friday or an official holiday, that day shall be replaced by another working day immediately following the holiday.

Also, according to this text, the Prophet's Birthday isn't an official holiday. However, most sources now show it as a holiday; perhaps changes were made later.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 88d54bf and 0030050.

📒 Files selected for processing (4)
  • holidays/countries/yemen.py (1 hunks)
  • holidays/locale/ar/LC_MESSAGES/YE.po (1 hunks)
  • holidays/locale/en_US/LC_MESSAGES/YE.po (1 hunks)
  • tests/countries/test_yemen.py (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
holidays/locale/ar/LC_MESSAGES/YE.po (1)
Learnt from: PPsyrius
PR: vacanza/holidays#2522
File: holidays/locale/ar/LC_MESSAGES/YE.po:15-28
Timestamp: 2025-05-03T04:27:20.742Z
Learning: In .po files, the X-Generator field should only be included if the file was actually generated by the specified tool. Adding this field for consistency when the file was generated by a different tool (already indicated by Generated-By field) would be misleading.

@Wasif-Shahzad
Copy link
Contributor Author

Regarding the changes I made now.
I migrated the holidays from HolidayBase to ObservedHolidayBase. During this, I was facing an issue and that was when Eid al-Fitr Eve (30th Ramadan in particular) was falling on a day which was assigned public holiday already then it would skip that as the line if _timedelta(dt, +1) not in self would evaluate to False. To avoid that, I've changed the ordering of the structure of the file. Now its Islamic (chronological) and then Gregorian (chronological). This works with the current implementation of 29th Ramadan which is due to be changed because of many issues it causes.

I'll work on further changes like the SCHOOL category holiday and other holidays sometime later as I have to prepare for exam on Thursday.

@Wasif-Shahzad
Copy link
Contributor Author

As of now, I've added all the references in advance myself so I won't have to bother with them when working on other changes...

@arkid15r
Copy link
Collaborator

@KJhellico I'm not sure if there is more to be done for merging this?
@Wasif-Shahzad thank you for your hard work on this!

// It'd be great to complete the work before our next version release May 19

@Wasif-Shahzad
Copy link
Contributor Author

Wasif-Shahzad commented May 15, 2025

@KJhellico I'm not sure if there is more to be done for merging this? @Wasif-Shahzad thank you for your hard work on this!

// It'd be great to complete the work before our next version release May 19

@arkid15r
My bad but it's due to the exams and I'm not entirely sure if I could get this done before 19th. I have exam on 17th and then 20th but yes, I'll try my best....

@arkid15r
Copy link
Collaborator

@arkid15r My bad but it's due to the exams and I'm not entirely sure if I could get this done before 19th. I have exam on 17th and then 20th but yes, I'll try my best....

@Wasif-Shahzad it's alright, I suggest focusing on the exams -- as I mentioned it'd be great but it certainly can wait.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 23

🔭 Outside diff range comments (2)
snapshots/countries/IN_AS.json (1)

1-1913: 💡 Verification agent

🧩 Analysis chain

Verify consistency across all IN_*.json snapshots.
Please ensure that the same date corrections for Maha Navami (2018, 2019) and Diwali (2024) have been applied to every regional snapshot under snapshots/countries/IN_*.json.


🏁 Script executed:

#!/bin/bash
# Find any remaining old dates in Indian snapshots
rg -l '"2018-10-18":' snapshots/countries/IN_*.json
rg -l '"2019-10-07":' snapshots/countries/IN_*.json
rg -l '"2024-11-01":' snapshots/countries/IN_*.json

Length of output: 3772


Fix Diwali date in remaining IN_*.json snapshots
Maha Navami corrections (2018/2019) are applied everywhere, but these files still list Diwali on "2024-11-01". Please update to "2024-10-31":

• snapshots/countries/IN_AP.json
• snapshots/countries/IN_CG.json
• snapshots/countries/IN_HR.json
• snapshots/countries/IN_KA.json
• snapshots/countries/IN_KL.json
• snapshots/countries/IN_MP.json
• snapshots/countries/IN_PB.json
• snapshots/countries/IN_PY.json

holidays/locale/fr/LC_MESSAGES/TG.po (1)

29-93: ⚠️ Potential issue

Critical: French translations are missing. All msgstr fields are empty. Please provide the appropriate French translations for each msgid.

♻️ Duplicate comments (2)
holidays/locale/ar/LC_MESSAGES/YE.po (1)

15-27: ⚠️ Potential issue

Add mandatory Plural-Forms header.
The Arabic PO file is missing the required Plural-Forms header, which can cause msgfmt warnings and incorrect plural handling. Please insert:

 "Generated-By: Lingva 5.0.6\n"
+"Plural-Forms: nplurals=6; plural=n==0?0:n==1?1:n==2?2:n%100>=3 && n%100<=10?3:n%100>=11 && n%100<=99?4:5;\n"
 "X-Source-Language: ar\n"
holidays/locale/en_US/LC_MESSAGES/YE.po (1)

17-28: Ensure Plural-Forms in English locale header. To prevent tooling issues, please add:

"Plural-Forms: nplurals=2; plural=(n != 1);\n"
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge Base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 34e51d2 and 8ff6dda.

📒 Files selected for processing (82)
  • .github/workflows/ci-cd.yml (1 hunks)
  • .pre-commit-config.yaml (1 hunks)
  • CHANGES.md (1 hunks)
  • README.md (7 hunks)
  • SECURITY.md (1 hunks)
  • holidays/calendars/hindu.py (10 hunks)
  • holidays/countries/__init__.py (5 hunks)
  • holidays/countries/andorra.py (4 hunks)
  • holidays/countries/cocos_islands.py (1 hunks)
  • holidays/countries/grenada.py (1 hunks)
  • holidays/countries/malaysia.py (0 hunks)
  • holidays/countries/nepal.py (1 hunks)
  • holidays/countries/philippines.py (2 hunks)
  • holidays/countries/togo.py (1 hunks)
  • holidays/countries/vatican_city.py (1 hunks)
  • holidays/countries/yemen.py (1 hunks)
  • holidays/groups/christian.py (3 hunks)
  • holidays/groups/hindu.py (6 hunks)
  • holidays/locale/ar/LC_MESSAGES/YE.po (1 hunks)
  • holidays/locale/ca/LC_MESSAGES/AD.po (1 hunks)
  • holidays/locale/coa_CC/LC_MESSAGES/CC.po (1 hunks)
  • holidays/locale/en_CC/LC_MESSAGES/CC.po (1 hunks)
  • holidays/locale/en_GD/LC_MESSAGES/GD.po (1 hunks)
  • holidays/locale/en_US/LC_MESSAGES/AD.po (1 hunks)
  • holidays/locale/en_US/LC_MESSAGES/CC.po (1 hunks)
  • holidays/locale/en_US/LC_MESSAGES/GD.po (1 hunks)
  • holidays/locale/en_US/LC_MESSAGES/TG.po (1 hunks)
  • holidays/locale/en_US/LC_MESSAGES/YE.po (1 hunks)
  • holidays/locale/fr/LC_MESSAGES/TG.po (1 hunks)
  • holidays/locale/uk/LC_MESSAGES/AD.po (1 hunks)
  • holidays/registry.py (5 hunks)
  • holidays/version.py (1 hunks)
  • pyproject.toml (1 hunks)
  • requirements/build.txt (1 hunks)
  • requirements/dev.txt (1 hunks)
  • scripts/docs/gen_changelog.py (1 hunks)
  • snapshots/countries/AD_02.json (1 hunks)
  • snapshots/countries/AD_03.json (1 hunks)
  • snapshots/countries/AD_04.json (1 hunks)
  • snapshots/countries/AD_05.json (1 hunks)
  • snapshots/countries/AD_COMMON.json (1 hunks)
  • snapshots/countries/CC_COMMON.json (1 hunks)
  • snapshots/countries/GD_COMMON.json (1 hunks)
  • snapshots/countries/IN_AN.json (3 hunks)
  • snapshots/countries/IN_AP.json (3 hunks)
  • snapshots/countries/IN_AR.json (3 hunks)
  • snapshots/countries/IN_AS.json (3 hunks)
  • snapshots/countries/IN_BR.json (3 hunks)
  • snapshots/countries/IN_CG.json (3 hunks)
  • snapshots/countries/IN_CH.json (3 hunks)
  • snapshots/countries/IN_COMMON.json (3 hunks)
  • snapshots/countries/IN_DH.json (3 hunks)
  • snapshots/countries/IN_DL.json (3 hunks)
  • snapshots/countries/IN_GA.json (3 hunks)
  • snapshots/countries/IN_GJ.json (3 hunks)
  • snapshots/countries/IN_HP.json (3 hunks)
  • snapshots/countries/IN_HR.json (3 hunks)
  • snapshots/countries/IN_JH.json (3 hunks)
  • snapshots/countries/IN_JK.json (3 hunks)
  • snapshots/countries/IN_KA.json (3 hunks)
  • snapshots/countries/IN_KL.json (3 hunks)
  • snapshots/countries/IN_LA.json (3 hunks)
  • snapshots/countries/IN_LD.json (3 hunks)
  • snapshots/countries/IN_MH.json (3 hunks)
  • snapshots/countries/IN_ML.json (3 hunks)
  • snapshots/countries/IN_MN.json (3 hunks)
  • snapshots/countries/IN_MP.json (3 hunks)
  • snapshots/countries/IN_MZ.json (3 hunks)
  • snapshots/countries/IN_NL.json (3 hunks)
  • snapshots/countries/IN_OD.json (3 hunks)
  • snapshots/countries/IN_PB.json (3 hunks)
  • snapshots/countries/IN_PY.json (3 hunks)
  • snapshots/countries/IN_RJ.json (3 hunks)
  • snapshots/countries/IN_SK.json (3 hunks)
  • snapshots/countries/IN_TN.json (3 hunks)
  • snapshots/countries/IN_TR.json (3 hunks)
  • snapshots/countries/IN_TS.json (3 hunks)
  • snapshots/countries/IN_UK.json (3 hunks)
  • snapshots/countries/IN_UP.json (3 hunks)
  • snapshots/countries/IN_WB.json (3 hunks)
  • snapshots/countries/NP_COMMON.json (1 hunks)
  • snapshots/countries/PH_COMMON.json (1 hunks)
💤 Files with no reviewable changes (1)
  • holidays/countries/malaysia.py
🧰 Additional context used
🧬 Code Graph Analysis (4)
holidays/countries/togo.py (5)
holidays/calendars/islamic.py (1)
  • _CustomIslamicHolidays (3881-3882)
holidays/groups/christian.py (6)
  • ChristianHolidays (22-463)
  • _add_easter_monday (259-268)
  • _add_ascension_thursday (119-127)
  • _add_whit_monday (432-441)
  • _add_all_saints_day (97-105)
  • _add_christmas_day (208-216)
holidays/groups/international.py (2)
  • InternationalHolidays (18-220)
  • _add_new_years_day (126-134)
holidays/groups/islamic.py (4)
  • IslamicHolidays (20-426)
  • _add_ramadan_beginning_day (386-396)
  • _add_eid_al_fitr_day (152-163)
  • _add_eid_al_adha_day (109-120)
holidays/holiday_base.py (1)
  • HolidayBase (57-1301)
holidays/groups/hindu.py (1)
holidays/calendars/hindu.py (7)
  • govardhan_puja_date (1429-1430)
  • gyalpo_losar_date (1441-1442)
  • holi_date (1444-1445)
  • maha_ashtami_date (1453-1454)
  • dussehra_date (1423-1424)
  • sonam_losar_date (1480-1481)
  • tamu_losar_date (1483-1484)
holidays/countries/vatican_city.py (1)
holidays/groups/christian.py (2)
  • _add_saint_georges_day (381-389)
  • _add_saint_josephs_day (410-420)
holidays/calendars/hindu.py (1)
holidays/calendars/buddhist.py (1)
  • _get_holiday (430-434)
🔇 Additional comments (159)
requirements/build.txt (1)

2-2:

❓ Verification inconclusive

Verify cyclonedx-bom version bump
The version was updated to 6.1.1. Please confirm that this release exists on PyPI, provides the needed fixes/features for the new holiday imports, and has no known security advisories.


🏁 Script executed:

#!/bin/bash
# Check that cyclonedx-bom 6.1.1 is available on PyPI
curl -s https://pypi.org/pypi/cyclonedx-bom/json | jq -r '.releases | keys[]' | grep -x "6.1.1" || echo "Version 6.1.1 not found"

Length of output: 101


Confirm cyclonedx-bom 6.1.1 release and impact
We’ve verified that version 6.1.1 exists on PyPI. Please also:

  • Review the 6.1.1 changelog/release notes to ensure it delivers the needed holiday-import fixes.
  • Check for any open security advisories (e.g. via the project’s GitHub Security tab or public CVE feeds).

(Optional) fetch the package description for a quick glance at the release notes:

curl -s https://pypi.org/pypi/cyclonedx-bom/6.1.1/json \
  | jq -r '.info.description' \
  | sed -n '1,20p'
pyproject.toml (1)

70-70: Ensure security lint selection behaves as expected
Adding "S" to the select list is great for catching security issues, but it may introduce new failures across your code and tests. Please run a full ruff pass (e.g., ruff --select S) to confirm no unexpected errors crop up in your new country modules or existing tests.

requirements/dev.txt (1)

10-11: Upgrade ruff and tox dev dependencies
The bumps to ruff==0.11.9 and tox==4.26.0 align with the overall tooling updates and are compatible upgrades.

.github/workflows/ci-cd.yml (1)

61-61: Bump CodeQL Action versions
Updating the init and analyze steps to commit 60168efe1c415ce0f5521ea06d5c2062adbeed1b ensures the workflow uses the latest CodeQL features and security fixes.

Also applies to: 66-66

holidays/groups/christian.py (3)

198-205: Doc-string tweak looks good.

Only wording was adjusted; no functional impact.


370-377: Minor spacing fix is fine.

The added space after the period improves readability; nothing else to flag.


422-426: Uniform opening verb – good touch.

Changing the doc-string to start with “Add …” keeps things consistent with neighbouring helpers.

holidays/countries/vatican_city.py (1)

91-106:

❌ Incorrect review comment

Election-anniversary misses 2013 and may need range tightening

The election section starts Pope Francis at self._year >= 2014, so 2013—the very year of his election—receives no anniversary holiday.
Conversely, once Leo XIV starts in 2026, Francis still covers 2014-2025, which is fine, but the one-year gap in 2013 looks accidental.

-        elif self._year >= 2014:
+        elif self._year >= 2013:
             # Pope Francis (Jorge Mario Bergoglio).
             self._add_holiday_mar_13(name_election)

Please verify the intended coverage window (and adjust the preceding Leo XIV boundary if you accept the Name-Day fix).
Failing to add 2013 breaks consistency with earlier popes whose election year is included.


Election-anniversary logic is correct

The code consistently treats “Anniversario” as the anniversary (one year after election), not the election date itself. For example:

  • John Paul II’s election in 1978 isn’t included in 1978, and Benedict XVI’s election in 2005 isn’t included in 2005.
  • Likewise, Pope Francis’s election in 2013 is correctly excluded (first anniversary in 2014).

No changes required.

Likely an incorrect or invalid review comment.

holidays/version.py (1)

13-13: Confirm version bump aligns with release scope.

The update from 0.73 to 0.74 matches the addition of six new country modules (including Yemen) and related localization and snapshot updates. Ensure the changelog and release notes are updated accordingly.

snapshots/countries/PH_COMMON.json (1)

594-594: Approve new Philippines special election day.

Adding "2025-05-12": "Elections special (non-working) day" fits the existing snapshot pattern for election-related non-working days.

snapshots/countries/IN_MN.json (3)

1143-1143: Verify Maha Navami shift for 2018.

The entry "2018-10-17": "Maha Navami" moves the holiday one day earlier. Please cross-check official Hindu calendar sources and ensure other IN_* snapshots are updated in tandem.


1170-1170: Verify Maha Navami shift for 2019.

Similarly, "2019-10-06": "Maha Navami" reflects a one-day-earlier adjustment. Confirm this aligns with the lunar calculation and regional consistency.


1311-1311: Approve Diwali date correction for 2024.

Updating Diwali to "2024-10-31" correctly reflects the earlier lunar date, matching the pattern in other regional snapshots.

snapshots/countries/IN_GA.json (3)

1273-1273: ✅ Approved: Maha Navami date corrected for 2018.
The snapshot now reflects “2018-10-17” matching the updated Hindu calendar.


1301-1301: ✅ Approved: Maha Navami date corrected for 2019.
Updated to “2019-10-06” in line with the coordinated regional updates.


1451-1451: ✅ Approved: Diwali date corrected for 2024.
Changed to “2024-10-31” to align with the core calendar fix.

snapshots/countries/IN_RJ.json (3)

1334-1334: ✅ Approved: Maha Navami date corrected for 2018.
Snapshot now shows “2018-10-17” consistent with the updated Hindu calendar.


1363-1363: ✅ Approved: Maha Navami date corrected for 2019.
Adjusted to “2019-10-06” matching the common data corrections.


1517-1517: ✅ Approved: Diwali date corrected for 2024.
Updated to “2024-10-31” for consistency with other state snapshots.

snapshots/countries/IN_TR.json (3)

1143-1143: Adjust Maha Navami for 2018
The date for “Maha Navami” has been moved to October 17, 2018 to match the updated Hindu calendar calculation.


1170-1170: Adjust Maha Navami for 2019
The date for “Maha Navami” has been moved to October 6, 2019 to match the updated Hindu calendar calculation.


1311-1311: Correct Diwali for 2024
The date for “Diwali” has been corrected from November 1 to October 31, 2024 per the revised calculations.

snapshots/countries/IN_NL.json (3)

1210-1210: Adjust Maha Navami for 2018
Updated “Maha Navami” to October 17, 2018 in line with the new calendar logic.


1238-1238: Adjust Maha Navami for 2019
Updated “Maha Navami” to October 6, 2019 in line with the new calendar logic.


1384-1384: Correct Diwali for 2024
Changed “Diwali” to October 31, 2024 to reflect the revised holiday date.

snapshots/countries/IN_AS.json (3)

1209-1211: Adjusted Maha Navami date for 2018 is correct.
The entry now reads "2018-10-17": "Maha Navami", which aligns with the actual observance and maintains chronological ordering.


1237-1239: Adjusted Maha Navami date for 2019 is correct.
The entry now reads "2019-10-06": "Maha Navami", matching the proper festival date and sequence.


1383-1385: Adjusted Diwali date for 2024 is correct.
The entry now reads "2024-10-31": "Diwali", reflecting the updated observance and preserving order.

snapshots/countries/IN_MZ.json (3)

1209-1211: Adjusted Maha Navami date for 2018 is correct.
The entry now reads "2018-10-17": "Maha Navami", which aligns with the actual observance and keeps chronological consistency.


1237-1239: Adjusted Maha Navami date for 2019 is correct.
The entry now reads "2019-10-06": "Maha Navami", matching the true festival date and sequence.


1383-1385: Adjusted Diwali date for 2024 is correct.
The entry now reads "2024-10-31": "Diwali", reflecting the updated observance and preserving proper order.

snapshots/countries/IN_AN.json (3)

1205-1205: Approved: Corrected 2018 Maha Navami date.
Updating Maha Navami to October 17, 2018 aligns with other regional datasets.


1232-1232: Approved: Corrected 2019 Maha Navami date.
Moving Maha Navami to October 6, 2019 keeps it consistent across snapshots.


1377-1377: Approved: Adjusted 2024 Diwali date.
Changing Diwali to October 31, 2024 syncs with the updated festival calendar.

snapshots/countries/IN_BR.json (3)

1287-1287: Approved: Corrected 2018 Maha Navami date.
October 17, 2018 is now consistent with other IN subregions.


1316-1316: Approved: Corrected 2019 Maha Navami date.
October 6, 2019 matches the shared update across snapshots.


1471-1471: Approved: Adjusted 2024 Diwali date.
Setting Diwali to October 31, 2024 maintains consistency with other regions.

snapshots/countries/IN_TN.json (3)

1242-1242: Corrected 2018 Maha Navami date
The update moves Maha Navami from October 18 to October 17, matching regional observance.


1271-1271: Adjusted 2019 Maha Navami date
Shifting Maha Navami to October 6 aligns with the corrected festival calendar.


1428-1428: Fixed 2024 Diwali date
Diwali has been moved back one day to October 31, which is accurate for 2024.

snapshots/countries/IN_OD.json (3)

1324-1324: Corrected 2018 Maha Navami date
Updating Maha Navami to October 17 reflects the proper 2018 observance.


1353-1353: Adjusted 2019 Maha Navami date
Moving the date to October 6 aligns with the regional holiday schedule.


1507-1507: Fixed 2024 Diwali date
Diwali is correctly set to October 31 for the 2024 snapshot.

snapshots/countries/IN_CH.json (3)

1205-1205: Approve the 2018 Maha Navami date update.

The shift from October 18 to October 17 aligns with the corrected regional calendars.


1232-1232: Approve the 2019 Maha Navami date correction.

Moving the holiday from October 7 to October 6 matches the other snapshots.


1377-1377: Approve the 2024 Diwali date adjustment.

Updating Diwali to October 31 ensures consistency with the official festival date.

holidays/countries/philippines.py (2)

55-55: Approve new Proclamation reference.

Adding Proclamation No. 878/2025 to the docstring keeps the source list up to date.


338-338: Approve new election special holiday entry.

Including May 12, 2025 as an election_special non-working day matches the latest proclamation.

snapshots/countries/IN_SK.json (3)

1272-1272: Approve the 2018 Maha Navami date update.

Correcting the state holiday to October 17 aligns with the national data.


1300-1300: Approve the 2019 Maha Navami date correction.

The shift to October 6 is consistent with other Sikkim region snapshots.


1449-1449: Approve the 2024 Diwali date adjustment.

Updating Diwali to October 31 ensures snapshot accuracy.

snapshots/countries/IN_DH.json (3)

1143-1143: Approve: Corrected 2018 Maha Navami date
The change updates "Maha Navami" from the previous 10th to 2018-10-17, aligning with the revised Hindu calendar calculations.


1170-1170: Approve: Corrected 2019 Maha Navami date
The entry for "Maha Navami" moves from October 7 to October 6 in 2019, matching the updated algorithm output.


1311-1311: Approve: Corrected 2024 Diwali date
Diwali is shifted from November 1 to October 31 in 2024, reflecting the corrected lunar calculation.

snapshots/countries/IN_JK.json (3)

1205-1205: Approve: Corrected 2018 Maha Navami date
Updated "Maha Navami" to 2018-10-17 for Jammu & Kashmir, consistent with the Delhi snapshot change.


1232-1232: Approve: Corrected 2019 Maha Navami date
The snapshot now lists October 6, 2019 for Maha Navami, in sync with the core holiday calculation fix.


1377-1377: Approve: Corrected 2024 Diwali date
Diwali is moved to October 31, 2024 in the JK snapshot, mirroring the updated regional data.

snapshots/countries/IN_ML.json (3)

1143-1143: Approve date correction for Maha Navami 2018
Updated the 2018 Maha Navami date from October 18 to October 17 to align with the lunar calendar fix.


1170-1170: Approve date correction for Maha Navami 2019
Shifted the 2019 Maha Navami date from October 7 to October 6, consistent with other regional data updates.


1311-1311: Approve Diwali 2024 date fix
Corrected Diwali in 2024 from November 1 to October 31, matching the updated calendar in hindu.py.

snapshots/countries/IN_UK.json (3)

1205-1205: Approve date correction for Maha Navami 2018
Adjusted the 2018 Maha Navami date from October 18 to October 17, ensuring consistency across snapshots.


1232-1232: Approve date correction for Maha Navami 2019
Moved the 2019 Maha Navami from October 7 to October 6, in line with standardized updates.


1377-1377: Approve Diwali 2024 date fix
Fixed Diwali 2024 to October 31 (was November 1) to reflect the corrected holiday mapping.

snapshots/countries/IN_JH.json (3)

1288-1288: Corrected Maha Navami date for 2018
Moved one day earlier, from October 18 to October 17, to match the actual lunar observance.


1317-1317: Corrected Maha Navami date for 2019
Adjusted from October 7 to October 6 to align with the Hindu lunisolar calendar.


1471-1471: Corrected Diwali date for 2024
Shifted from November 1 to October 31 to reflect the proper festival date.

snapshots/countries/IN_AR.json (3)

1143-1143: Corrected Maha Navami date for 2018
Changed from October 18 to October 17 to accurately follow the lunar cycle.


1170-1170: Corrected Maha Navami date for 2019
Updated from October 7 to October 6 to match the festival’s actual observance.


1311-1311: Corrected Diwali date for 2024
Moved from November 1 to October 31 in line with the Hindu calendar.

snapshots/countries/IN_HP.json (3)

1263-1263: Confirm 2018 Maha Navami adjustment
The date for Maha Navami in 2018 has been corrected to 2018-10-17, matching the updated lunar calendar.


1291-1291: Confirm 2019 Maha Navami adjustment
Adjusted the Maha Navami entry for 2019 to 2019-10-06, aligning with the regional observance.


1440-1440: Confirm 2024 Diwali adjustment
Diwali for 2024 has been moved to 2024-10-31, which now reflects the actual festival date.

snapshots/countries/IN_WB.json (3)

1331-1331: Confirm 2018 Maha Navami adjustment
The Maha Navami date for 2018 is now 2018-10-17, in line with the corrected Hindu calendar calculation.


1360-1360: Confirm 2019 Maha Navami adjustment
Updated Maha Navami 2019 to 2019-10-06, consistent with the regional festival date.


1514-1514: Confirm 2024 Diwali adjustment
Diwali entry updated to 2024-10-31, reflecting the observed date for West Bengal in 2024.

snapshots/countries/IN_COMMON.json (3)

1143-1143: Correct 2018 Maha Navami date
The entry is updated to October 17, 2018, which aligns with the official festival calendar and matches the corrections in regional snapshots.


1170-1170: Correct 2019 Maha Navami date
Moving Maha Navami to October 6, 2019 ensures consistency with the standardized dates across all IN snapshots.


1311-1311: Fix Diwali date for 2024
Changing Diwali to October 31, 2024 separates it from Govardhan Puja and aligns with the payload in other regional files.

snapshots/countries/IN_PY.json (3)

1339-1339: Update 2018 Maha Navami date
Adjusted to October 17, 2018 to mirror the change in IN_COMMON and maintain regional consistency.


1368-1368: Update 2019 Maha Navami date
Corrected to October 6, 2019, matching all other snapshots for Puducherry.


1523-1524: Separate Diwali and Puducherry Liberation Day in 2024
Splitting the combined entry into Diwali on October 31, 2024 and Liberation Day on November 1, 2024 ensures each holiday is distinct and correctly ordered.

snapshots/countries/IN_LD.json (3)

1143-1143: Correct Maha Navami 2018 date
Moved the 2018 “Maha Navami” entry from October 18 to October 17 to match official regional calendars.


1170-1170: Correct Maha Navami 2019 date
Adjusted the 2019 “Maha Navami” date from October 7 to October 6 for consistency with other snapshots.


1311-1311: Fix Diwali 2024 date
Changed the 2024 “Diwali” holiday from November 1 to October 31 to resolve the one-day offset.

snapshots/countries/IN_LA.json (3)

1205-1205: Correct Maha Navami 2018 date
Updated the 2018 “Maha Navami” entry to October 17, aligning with the corrected dates in other regions.


1232-1232: Correct Maha Navami 2019 date
Adjusted the 2019 “Maha Navami” date to October 6 for consistency across state files.


1377-1377: Fix Diwali 2024 date
Corrected the 2024 “Diwali” holiday from November 1 to October 31 to align with the festival’s actual date.

snapshots/countries/IN_PB.json (4)

1362-1362: Confirm “Maha Navami” date shift for 2018
The date for “Maha Navami” has been moved from 2018-10-18 to 2018-10-17, matching the adjustment applied in other regional snapshots.


1391-1391: Confirm “Maha Navami” date shift for 2019
Similarly, “Maha Navami” for 2019 is now correctly set to 2019-10-06, one day earlier. This aligns with the coordinated update.


1553-1553: Split “Diwali” into its own entry for 2024
“Diwali” is now on 2024-10-31, separated from “Punjab Day”, which enhances clarity in the snapshot.


1554-1554: Add standalone “Punjab Day” for 2024
“Punjab Day” is correctly set to 2024-11-01 as a distinct entry. Consistent with the PR summary.

snapshots/countries/IN_HR.json (4)

1272-1272: Confirm “Maha Navami” date shift for 2018
Updated “Maha Navami” to 2018-10-17 aligns with the regional correction pattern.


1300-1300: Confirm “Maha Navami” date shift for 2019
The entry for 2019-10-06 correctly reflects the one-day-earlier adjustment.


1450-1450: Split “Diwali” into its own entry for 2024
“Diwali” is now on 2024-10-31, separated from “Haryana Foundation Day” for better clarity.


1451-1451: Add standalone “Haryana Foundation Day” for 2024
“Haryana Foundation Day” is correctly set to 2024-11-01 as a separate record.

snapshots/countries/IN_MH.json (4)

1-1: Summary mismatch: PR overview vs. file contents.
The PR summary and AI summary describe adding Yemen holidays, but this file shows Indian (Maharashtra) snapshot updates. Please verify the intended scope and update the summary or files accordingly.

Likely an incorrect or invalid review comment.


1289-1289: Correct 2018 Maha Navami date.
Updated from Oct 18 to Oct 17 to align with the lunisolar calendar.


1318-1318: Correct 2019 Maha Navami date.
Changed from Oct 7 to Oct 6 for consistency with regional data.


1473-1473: Correct 2024 Diwali date.
Adjusted from Nov 1 to Oct 31 based on updated festival calculations.

snapshots/countries/IN_UP.json (4)

1-1: Summary mismatch: PR overview vs. file contents.
The PR summary and AI summary mention Yemen holidays, yet this file contains Uttar Pradesh snapshot corrections. Please confirm and align the summary or file changes.

Likely an incorrect or invalid review comment.


1291-1291: Correct 2018 Maha Navami date.
Moved from Oct 18 to Oct 17 to match updated calendar data.


1319-1319: Correct 2019 Maha Navami date.
Adjusted from Oct 7 to Oct 6 to reflect the proper festival date.


1475-1475: Correct 2024 Diwali date.
Changed from Nov 1 to Oct 31 in line with revised lunisolar calculations.

scripts/docs/gen_changelog.py (2)

15-15: Clean addition of the regex module import.

The import of the re module is appropriately placed with the core Python imports, preparing for the regex functionality added later in the file.


23-27: Well-implemented enhancement for clickable PR links.

This change effectively improves the changelog by converting PR references (#123) into clickable markdown links. The implementation is efficient - processing the entire content as a string before splitting into lines makes the regex substitution straightforward.

The regex pattern correctly captures PR numbers and the generated links follow proper GitHub URL format.

snapshots/countries/IN_MP.json (3)

1272-1272: Corrected Maha Navami date for 2018.

This update aligns the 2018 Maha Navami date with the proper Hindu calendar calculation.


1300-1300: Corrected Maha Navami date for 2019.

This update aligns the 2019 Maha Navami date with the proper Hindu calendar calculation.


1450-1451: Properly separated Diwali and Foundation Day in 2024.

Good correction separating Diwali (October 31, 2024) from Madhya Pradesh Foundation Day (November 1, 2024), which were previously combined. This makes the holiday data more accurate as these are distinct celebrations.

snapshots/countries/IN_AP.json (3)

1272-1272: Corrected Maha Navami date for 2018.

This update aligns the 2018 Maha Navami date with the proper Hindu calendar calculation.


1300-1300: Corrected Maha Navami date for 2019.

This update aligns the 2019 Maha Navami date with the proper Hindu calendar calculation.


1450-1451: Properly separated Diwali and Foundation Day in 2024.

Good correction separating Diwali (October 31, 2024) from Andhra Pradesh Foundation Day (November 1, 2024), which were previously combined. This makes the holiday data more accurate as these are distinct celebrations.

snapshots/countries/IN_KL.json (3)

1288-1288: Corrected Maha Navami 2018 date
The 2018 "Maha Navami" date has been updated to October 17, aligning with regional observance. Looks good.


1317-1317: Corrected Maha Navami 2019 date
Updated "Maha Navami" for 2019 to October 6; consistent with corrections in other snapshots.


1472-1473: Adjusted Diwali and Kerala Foundation Day for 2024
Moved "Diwali" to October 31 and preserved "Kerala Foundation Day" on November 1 as separate entries for clarity.

snapshots/countries/IN_DL.json (3)

1160-1160: Updated Maha Navami 2018 date
Changed "Maha Navami" to October 17, 2018; consistent with IN_KL adjustments.


1188-1188: Updated Maha Navami 2019 date
Corrected the 2019 "Maha Navami" date to October 6.


1334-1334: Moved Diwali 2024 one day earlier
Adjusted the 2024 "Diwali" date to October 31, matching the other regional updates.

snapshots/countries/IN_KA.json (3)

1271-1273: Adjusted "Maha Navami" to the correct 2018 observance.
Moved from Oct 18 → Oct 17, matching the regional calendar.

Please run the snapshot tests to verify consistency across all state JSON files.


1299-1301: Fixed "Maha Navami" date for 2019.
Shifted to Oct 6 as per the Hindu lunar calendar.

Ensure any dependent displays or logic reflect this update.


1448-1452: Split Diwali and Karnataka Rajyotsava for 2024.
Diwali moved to 2024-10-31, and Rajyotsava remains on 2024-11-01 for clear separation.

Verify that tests and downstream consumers handle the two distinct entries correctly.

snapshots/countries/IN_CG.json (3)

1271-1273: Corrected "Maha Navami" date in 2018.
Adjusted to Oct 17 from Oct 18 to reflect the accurate observance.


1299-1301: Updated "Maha Navami" observance for 2019.
Moved one day earlier to Oct 6, in line with regional practice.


1450-1452: Separated Diwali and Chhattisgarh Foundation Day for 2024.
Diwali now on 2024-10-31; Foundation Day stays on 2024-11-01, ensuring each holiday is distinct.

snapshots/countries/IN_TS.json (3)

1271-1271: Confirmed correct date adjustment for Maha Navami (2018).
The entry has been moved one day earlier to "2018-10-17" in line with the updated festival calendar.


1299-1299: Confirmed correct date adjustment for Bathukamma Festival & Maha Navami (2019).
The combined holiday entry has been updated to "2019-10-06" to reflect the one-day-earlier observance.


1520-1520: Confirmed Diwali date correction for 2024.
The Diwali holiday has been shifted to "2024-10-31" as per the revised state calendar.

holidays/registry.py (5)

57-57: Registered Cocos Islands.
New "cocos_islands": ("CocosIslands", "CC", "CCK") entry matches existing format and alphabetical order.


87-87: Registered Grenada.
New "grenada": ("Grenada", "GD", "GRD") entry is consistent with the registry conventions.


133-133: Registered Nepal.
New "nepal": ("Nepal", "NP", "NPL") entry is correctly placed and formatted.


178-178: Registered Togo.
New "togo": ("Togo", "TG", "TGO") entry aligns with the alphabetical ordering and tuple structure.


201-201: Registered Yemen.
New "yemen": ("Yemen", "YE", "YEM") entry is complete and formatted correctly.

snapshots/countries/IN_GJ.json (1)

1-19: No lines are annotated as changed (~) in the provided snippet; nothing to review.

holidays/countries/__init__.py (5)

49-49: Approve Cocos Islands import.
The import for CocosIslands, CC, CCK follows the established pattern and maintains alphabetical order.


78-78: Approve Grenada import.
The import for Grenada, GD, GRD follows the established pattern and maintains alphabetical order.


125-125: Approve Nepal import.
The import for Nepal, NP, NPL follows the established pattern and maintains alphabetical order.


170-170: Approve Togo import.
The import for Togo, TG, TGO follows the established pattern and maintains alphabetical order.


193-193: Approve Yemen import.
The import for Yemen, YE, YEM follows the established pattern and maintains alphabetical order.

README.md (1)

181-182: Supported countries table updated correctly.
New entries for Cocos Islands, Grenada, Nepal, Togo, and Yemen (and the Catalan default for Andorra) align with the PR objectives and follow formatting conventions.

Also applies to: 388-393, 591-596, 921-926, 1236-1241, 1369-1374

holidays/locale/uk/LC_MESSAGES/AD.po (1)

30-146: Great job! All msgidmsgstr pairs are provided and look accurate for Ukrainian localization.

holidays/locale/en_US/LC_MESSAGES/YE.po (1)

30-92: Translations look solid. Every Arabic msgid maps appropriately to English equivalents.

holidays/locale/en_US/LC_MESSAGES/TG.po (1)

30-94: Good translations. All French msgid entries map correctly to English msgstr.

holidays/locale/coa_CC/LC_MESSAGES/CC.po (1)

30-104: Well done! All msgidmsgstr pairs are filled and seem correct for the coa_CC localization.

holidays/locale/en_US/LC_MESSAGES/CC.po (1)

1-104: Localisation entries look correct for Cocos Islands in en_US.
All msgid/msgstr pairs match expected holiday names, and the file header metadata is properly set.

holidays/locale/en_CC/LC_MESSAGES/CC.po (1)

1-104: Template for en_CC locale is properly structured.
The header and msgid entries are in place; msgstr fields are intentionally empty awaiting translation.

holidays/locale/en_US/LC_MESSAGES/GD.po (1)

1-97: Grenada en_US localisation is accurate.
Msgid/msgstr mappings (e.g., "Labour Day" → "Labor Day") conform to US English conventions, and header data is complete.

snapshots/countries/GD_COMMON.json (1)

1-745: Snapshot for Grenada holidays is consistent and complete.
Entries are chronologically ordered, include observed variants, and align with the Grenada holiday implementation.

snapshots/countries/NP_COMMON.json (1)

1-914: Snapshot for Nepal holidays is comprehensive from 2010 to 2050.
Data is logically sorted, covers all declared holidays and estimated entries, and matches the expected definitions.

snapshots/countries/CC_COMMON.json (1)

1-995: Approve static holiday dataset for Cocos (Keeling) Islands.
The JSON is well-structured: keys are chronological, fixed and Islamic holidays appear with their observed variants, and the date range spans 1985–2050 as expected.

Please double-check that this snapshot fully aligns with the holidays/countries/cocos_islands.py implementation (including observed rules) and that no dates in the intended range were inadvertently omitted.

snapshots/countries/AD_02.json (1)

3-3: Validate new afternoon-start annotations and added government holidays.
The snapshot now includes “(from 1pm)” for Epiphany Eve, Maundy Thursday, Christmas Eve, New Year’s Eve, plus Saint Roch’s Day and renaming “National Day” to “Our Lady of Meritxell.” Ensure these names and times exactly match what the Andorra provider’s _populate_government_holidays method emits and that the localization files cover them.

Also applies to: 6-6, 12-12, 16-16, 19-19

snapshots/countries/AD_COMMON.json (1)

1-1777: Inconsistent file content vs PR objectives
This JSON snapshot defines Andorra (AD) holidays, whereas the PR aims to add Yemen (YE) holidays. Please confirm you’ve provided the correct country data for Yemen.

Likely an incorrect or invalid review comment.

holidays/locale/en_US/LC_MESSAGES/AD.po (1)

1-146: Inconsistent file content vs PR objectives
The localization file is for Andorra (AD), but the PR is meant to introduce Yemen holiday support. Please supply the appropriate Yemeni localization resources.

Likely an incorrect or invalid review comment.

holidays/locale/ca/LC_MESSAGES/AD.po (1)

1-146: Inconsistent file content vs PR objectives
This Catalan localization file targets Andorra (AD), not Yemen. Ensure the correct files for Yemen (YE) are included in the PR.

Likely an incorrect or invalid review comment.

snapshots/countries/AD_03.json (1)

1-1777: Inconsistent file content vs PR objectives
The provided snapshot describes Andorra holidays (AD_03.json), but the PR objectives describe adding Yemen (YE) holidays. Please verify the correct country snapshot for Yemen is present.

Likely an incorrect or invalid review comment.

snapshots/countries/AD_04.json (2)

1-2: Inconsistent file context vs PR summary.
The PR is titled “Add Yemen holidays” (country code YE), yet this snapshot is for Andorra (AD_04.json). Please confirm whether these files were intended for review or if the correct Yemen snapshot files are missing.

Likely an incorrect or invalid review comment.


3-7: Consistent addition of partial-day and holiday entries.
Entries for Epiphany Eve (from 1pm), Saint Anthony’s Day, Carnival, Maundy Thursday (from 1pm), Assumption Day, Our Lady of Meritxell, Immaculate Conception, Christmas Eve (from 1pm), and New Year’s Eve (from 1pm) have been added across 1950–1952. They are correctly sorted by date and maintain naming consistency.

Also applies to: 12-16, 19-25, 30-34, 37-39, 42-48, 50-54

snapshots/countries/AD_05.json (2)

1-2: Inconsistent file context vs PR summary.
This snapshot (AD_05.json) also pertains to Andorra, but the PR summary describes Yemen (YE). Please verify that these Andorra updates are intended for this pull request.

Likely an incorrect or invalid review comment.


11-11: Addition of Saint Peter’s Day on June 29.
The new "1950-06-29": "Saint Peter's Day" entry appears in the 1950 block. Confirm that this holiday is official for Andorra and that the corresponding logic in andorra.py has been updated to include it.

holidays/calendars/hindu.py (1)

357-358: Please double-check 2024 Diwali-India date

DIWALI_INDIA_DATES[2024] has been updated to 31 Oct. Most published almanacs list Diwali in early Nov 2024 – worth re-confirming before release.

holidays/countries/nepal.py (1)

262-264:

❌ Incorrect review comment

Confirm helper _add_gau_krida exists

self._add_gau_krida("Gai Tihar") looks plausible but no such helper exists in the upstream Hindu mix-in (usual name is _add_govardhan_puja or _add_gai_tihar). Please check:

If the search returns empty, create the helper or swap to the correct one.


🏁 Script executed:

#!/bin/bash
# List any helper named *_gau_krida in the codebase
rg --no-heading "_add_gau_krida" -n

Length of output: 191


Helper _add_gau_krida Exists—No Action Required

The _add_gau_krida method is defined in holidays/groups/hindu.py (line 141), so the call in holidays/countries/nepal.py is valid. Please ignore the earlier suggestion.

Likely an incorrect or invalid review comment.

KJhellico
KJhellico previously approved these changes May 27, 2025
Copy link
Collaborator

@KJhellico KJhellico left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! 👍

PPsyrius
PPsyrius previously approved these changes May 27, 2025
Copy link
Collaborator

@PPsyrius PPsyrius left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🇾🇪

@arkid15r arkid15r dismissed stale reviews from PPsyrius and KJhellico via b75660c May 28, 2025 18:44
Copy link

@arkid15r arkid15r enabled auto-merge May 28, 2025 18:51
Copy link
Collaborator

@arkid15r arkid15r left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great addition @Wasif-Shahzad ! Thanks for implementing this 👍

@arkid15r
Copy link
Collaborator

@coderabbitai resolve

Copy link
Contributor

coderabbitai bot commented May 28, 2025

✅ Actions performed

Comments resolved.

@arkid15r arkid15r added this pull request to the merge queue May 28, 2025
Merged via the queue into vacanza:dev with commit 6f8b928 May 28, 2025
33 checks passed
This was referenced May 28, 2025
@coderabbitai coderabbitai bot mentioned this pull request Jul 9, 2025
9 tasks
@coderabbitai coderabbitai bot mentioned this pull request Jul 30, 2025
9 tasks
This was referenced Aug 19, 2025
@coderabbitai coderabbitai bot mentioned this pull request Aug 27, 2025
9 tasks
This was referenced Sep 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add Yemen holidays
4 participants