+
Skip to content

Add Solomon Islands holidays #2632

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 21 commits into from
Jun 16, 2025
Merged

Conversation

kritibirda26
Copy link
Collaborator

@kritibirda26 kritibirda26 commented Jun 15, 2025

Proposed change

Add Solomon Islands holidays.
Resolves #1269.

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 Jun 15, 2025

Summary by CodeRabbit

  • New Features

    • Added support for Solomon Islands public holidays, including national and province-specific holidays from 1979 to 2050.
    • Solomon Islands holidays now include observed rules and special cases, with detailed coverage for all subdivisions.
  • Documentation

    • Updated documentation to reflect the addition of Solomon Islands as a supported country.
  • Tests

    • Introduced comprehensive tests to validate Solomon Islands holiday calculations and observance rules.
  • Chores

    • Added holiday data snapshots for Solomon Islands and its subdivisions for reference and validation.

Summary by CodeRabbit

  • New Features
    • Added support for Solomon Islands public holidays, including national and province-specific holidays, with accurate observance rules and aliases.
  • Documentation
    • Updated documentation to include Solomon Islands in the list of supported countries and detailed its holiday support.
  • Tests
    • Introduced comprehensive tests to verify Solomon Islands holiday definitions, observance rules, and subdivision-specific holidays.

Walkthrough

Support for Solomon Islands holidays was added. This included updates to documentation, new country-specific holiday definitions and logic, registration of the country in the registry, corresponding import statements, and a full suite of unit tests covering national and subdivision holidays.

Changes

Files/Paths Change Summary
README.md Updated supported country count and added Solomon Islands entry with subdivisions and language info.
holidays/countries/init.py Added import for Solomon Islands holiday class and its aliases.
holidays/countries/solomon_islands.py Introduced Solomon Islands holiday definitions, subdivision support, static holidays, and class aliases.
holidays/registry.py Registered Solomon Islands in the country registry.
tests/countries/test_solomon_islands.py Added comprehensive unit tests for Solomon Islands holidays and subdivisions.

Assessment against linked issues

Objective Addressed Explanation
Add Solomon Islands holidays (#1269)
Include national and subdivision holidays (#1269)
Implement correct observance rules (#1269)
Register Solomon Islands in the country registry (#1269)

Assessment against linked issues: Out-of-scope changes

No out-of-scope changes detected.

Suggested reviewers

  • KJhellico
  • PPsyrius

📜 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 93b2408 and 0c92466.

📒 Files selected for processing (14)
  • README.md (2 hunks)
  • holidays/countries/__init__.py (1 hunks)
  • holidays/registry.py (1 hunks)
  • snapshots/countries/SB_CE.json (1 hunks)
  • snapshots/countries/SB_CH.json (1 hunks)
  • snapshots/countries/SB_COMMON.json (1 hunks)
  • snapshots/countries/SB_CT.json (1 hunks)
  • snapshots/countries/SB_GU.json (1 hunks)
  • snapshots/countries/SB_IS.json (1 hunks)
  • snapshots/countries/SB_MK.json (1 hunks)
  • snapshots/countries/SB_ML.json (1 hunks)
  • snapshots/countries/SB_RB.json (1 hunks)
  • snapshots/countries/SB_TE.json (1 hunks)
  • snapshots/countries/SB_WE.json (1 hunks)
🧰 Additional context used
🧠 Learnings (11)
📓 Common learnings
Learnt from: KJhellico
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:90-97
Timestamp: 2025-06-15T20:39:51.064Z
Learning: Solomon Islands Saturday → Friday holiday shift rule was systematically implemented only from around 2021-2022 onward, not consistently applied since 1979. The Public Holidays Act only explicitly mentions Sunday → Monday shifts, with Saturday shifts handled through discretionary ministerial gazette notices.
snapshots/countries/SB_WE.json (1)
Learnt from: PPsyrius
PR: vacanza/holidays#2407
File: snapshots/countries/TL_COMMON.json:7-7
Timestamp: 2025-04-03T05:59:57.480Z
Learning: In the holidays project, snapshot files (like snapshots/countries/TL_COMMON.json) are auto-generated when running `make snapshot` and should not be manually edited. Semicolons (;) in holiday entries are used as separators when multiple holidays occur on the same date.
snapshots/countries/SB_TE.json (1)
Learnt from: PPsyrius
PR: vacanza/holidays#2407
File: snapshots/countries/TL_COMMON.json:7-7
Timestamp: 2025-04-03T05:59:57.480Z
Learning: In the holidays project, snapshot files (like snapshots/countries/TL_COMMON.json) are auto-generated when running `make snapshot` and should not be manually edited. Semicolons (;) in holiday entries are used as separators when multiple holidays occur on the same date.
snapshots/countries/SB_CH.json (1)
Learnt from: PPsyrius
PR: vacanza/holidays#2407
File: snapshots/countries/TL_COMMON.json:7-7
Timestamp: 2025-04-03T05:59:57.480Z
Learning: In the holidays project, snapshot files (like snapshots/countries/TL_COMMON.json) are auto-generated when running `make snapshot` and should not be manually edited. Semicolons (;) in holiday entries are used as separators when multiple holidays occur on the same date.
snapshots/countries/SB_RB.json (1)
Learnt from: PPsyrius
PR: vacanza/holidays#2407
File: snapshots/countries/TL_COMMON.json:7-7
Timestamp: 2025-04-03T05:59:57.480Z
Learning: In the holidays project, snapshot files (like snapshots/countries/TL_COMMON.json) are auto-generated when running `make snapshot` and should not be manually edited. Semicolons (;) in holiday entries are used as separators when multiple holidays occur on the same date.
snapshots/countries/SB_CE.json (1)
Learnt from: PPsyrius
PR: vacanza/holidays#2407
File: snapshots/countries/TL_COMMON.json:7-7
Timestamp: 2025-04-03T05:59:57.480Z
Learning: In the holidays project, snapshot files (like snapshots/countries/TL_COMMON.json) are auto-generated when running `make snapshot` and should not be manually edited. Semicolons (;) in holiday entries are used as separators when multiple holidays occur on the same date.
snapshots/countries/SB_IS.json (1)
Learnt from: PPsyrius
PR: vacanza/holidays#2407
File: snapshots/countries/TL_COMMON.json:7-7
Timestamp: 2025-04-03T05:59:57.480Z
Learning: In the holidays project, snapshot files (like snapshots/countries/TL_COMMON.json) are auto-generated when running `make snapshot` and should not be manually edited. Semicolons (;) in holiday entries are used as separators when multiple holidays occur on the same date.
snapshots/countries/SB_COMMON.json (1)
Learnt from: PPsyrius
PR: vacanza/holidays#2407
File: snapshots/countries/TL_COMMON.json:7-7
Timestamp: 2025-04-03T05:59:57.480Z
Learning: In the holidays project, snapshot files (like snapshots/countries/TL_COMMON.json) are auto-generated when running `make snapshot` and should not be manually edited. Semicolons (;) in holiday entries are used as separators when multiple holidays occur on the same date.
snapshots/countries/SB_MK.json (1)
Learnt from: PPsyrius
PR: vacanza/holidays#2407
File: snapshots/countries/TL_COMMON.json:7-7
Timestamp: 2025-04-03T05:59:57.480Z
Learning: In the holidays project, snapshot files (like snapshots/countries/TL_COMMON.json) are auto-generated when running `make snapshot` and should not be manually edited. Semicolons (;) in holiday entries are used as separators when multiple holidays occur on the same date.
snapshots/countries/SB_ML.json (1)
Learnt from: PPsyrius
PR: vacanza/holidays#2407
File: snapshots/countries/TL_COMMON.json:7-7
Timestamp: 2025-04-03T05:59:57.480Z
Learning: In the holidays project, snapshot files (like snapshots/countries/TL_COMMON.json) are auto-generated when running `make snapshot` and should not be manually edited. Semicolons (;) in holiday entries are used as separators when multiple holidays occur on the same date.
snapshots/countries/SB_CT.json (1)
Learnt from: PPsyrius
PR: vacanza/holidays#2407
File: snapshots/countries/TL_COMMON.json:7-7
Timestamp: 2025-04-03T05:59:57.480Z
Learning: In the holidays project, snapshot files (like snapshots/countries/TL_COMMON.json) are auto-generated when running `make snapshot` and should not be manually edited. Semicolons (;) in holiday entries are used as separators when multiple holidays occur on the same date.
🧬 Code Graph Analysis (1)
holidays/countries/__init__.py (1)
holidays/countries/solomon_islands.py (3)
  • SolomonIslands (23-187)
  • SB (190-191)
  • SLB (194-195)
🔇 Additional comments (15)
snapshots/countries/SB_RB.json (1)

1-871: Snapshot auto-generated correctly.

This JSON file appears to be the auto-generated snapshot for Rennell and Bellona Province, matching the new Solomon Islands holiday logic. No manual edits are needed.

snapshots/countries/SB_CT.json (1)

1-779: New country-capital snapshot follows conventions

This JSON appears auto-generated, is chronologically ordered, and contains only single-holiday entries per date (no semicolons needed). No manual edits detected.

snapshots/countries/SB_COMMON.json (1)

1-780: New common snapshot follows conventions

Auto-generated national snapshot is well-structured, chronological, and uses only single-holiday entries per date. No manual modifications spotted.

snapshots/countries/SB_TE.json (2)

1-846: New Temotu subdivision snapshot follows conventions

This auto-generated file is properly ordered and structured.


7-7: Multiple-holiday entries use semicolons correctly

All dates with more than one holiday correctly separate entries with semicolons, per snapshot guidelines.

Also applies to: 29-29, 67-67, 79-79

snapshots/countries/SB_WE.json (1)

1-872: Let’s invoke the Python snapshot generator directly and diff the file:

#!/bin/bash
# Generate snapshots via Python and check SB_WE.json
python3 scripts/generate_snapshots.py
git diff --exit-code snapshots/countries/SB_WE.json
snapshots/countries/SB_CH.json (1)

1-873: Let’s confirm the snapshot file and the generator target:

#!/bin/bash
set -euo pipefail

# 1. Check that the snapshot exists
if [ -f snapshots/countries/SB_CH.json ]; then
  echo "✔ SB_CH.json found at snapshots/countries/SB_CH.json"
else
  echo "✖ SB_CH.json is missing"
fi

# 2. Inspect Makefile for a snapshot rule
if grep -R --color=never -n 'snapshot' Makefile; then
  echo "✔ Found snapshot rule in Makefile"
else
  echo "✖ No 'snapshot' target in Makefile"
fi
snapshots/countries/SB_ML.json (1)

1-873: Verify snapshot generation
Ensure this snapshot is generated (not hand‐edited) by executing make snapshot. Confirm it matches the committed version.

#!/bin/bash
# Verify SB_ML.json is up to date
make snapshot
git diff --exit-code snapshots/countries/SB_ML.json
snapshots/countries/SB_MK.json (1)

1-872: Let’s inspect the country snapshot generator and re-run it for SB_MK:

#!/bin/bash
# Show implementation of generate_country_snapshots
rg -n "def generate_country_snapshots" -A10 -B5 scripts/generate_snapshots.py

# Regenerate snapshot for SB_MK and check for changes
python3 scripts/generate_snapshots.py -c SB_MK
git diff snapshots/countries/SB_MK.json
snapshots/countries/SB_CE.json (1)

1-872: Let’s locate the actual snapshot file and see how your project defines “snapshot.”

#!/bin/bash
# 1. Find where SB_CE.json actually lives
find . -type f -name "SB_CE.json"

# 2. Is there a Makefile with a snapshot target?
fd -d 1 -t f Makefile || echo "No Makefile in repo root"
grep -R "snapshot" -n Makefile || echo "No 'snapshot' target in Makefile"

# 3. Any other snapshot-related scripts or entries?
grep -R "snapshot" -n .
snapshots/countries/SB_GU.json (1)

1-874: Let’s inspect the country snapshots folder directly to see what’s in there.

#!/bin/bash
set -e
echo "Content of snapshots/countries:"
ls -lah snapshots/countries || echo "→ Directory empty or missing"
snapshots/countries/SB_IS.json (1)

1-870: Skip snapshot file Snapshot JSON files are auto-generated reference data from make snapshot and do not require manual content review.

holidays/registry.py (1)

179-179: Registry updated The "solomon_islands" entry mapping to ("SolomonIslands", "SB", "SLB") is correctly added in alphabetical order.

holidays/countries/__init__.py (1)

176-176: Import statement added The SolomonIslands class with its aliases SB and SLB is properly imported and positioned alphabetically.

README.md (1)

1242-1247: Documentation updated The Solomon Islands row is accurately inserted with the correct subdivisions. Leaving languages and categories blank aligns with the code’s lack of language or category settings.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate Unit Tests
  • Create PR with Unit Tests
  • Commit Unit Tests in branch solomon-islands
  • Post Copyable Unit Tests in Comment

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 auto-generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

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

Documentation and Community

  • Visit our Documentation 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.

@github-actions github-actions bot added the test label Jun 15, 2025
Copy link

codecov bot commented Jun 15, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 100.00%. Comparing base (3894211) to head (0c92466).
Report is 1 commits behind head on dev.

Additional details and impacted files
@@            Coverage Diff            @@
##               dev     #2632   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          234       235    +1     
  Lines        14806     14869   +63     
  Branches      2060      2063    +3     
=========================================
+ Hits         14806     14869   +63     

☔ 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.

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: 2

🔭 Outside diff range comments (1)
holidays/countries/solomon_islands.py (1)

170-187: ⚠️ Potential issue

Incomplete line at the end of file.

Line 187 appears to be truncated or incomplete. Consider removing it or completing the definition if something is missing.

-    special_gu_public_holidays = {2020: (NOV, 18, "Public Holiday")}
-
+    special_gu_public_holidays = {2020: (NOV, 18, "Public Holiday")}
🧰 Tools
🪛 Pylint (3.3.7)

[convention] 174-174: Line too long (162/100)

(C0301)


[convention] 175-175: Line too long (164/100)

(C0301)


[convention] 176-176: Line too long (172/100)

(C0301)


[refactor] 170-170: Too few public methods (0/2)

(R0903)

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 3d11b59 and 22227ea.

📒 Files selected for processing (5)
  • README.md (2 hunks)
  • holidays/countries/__init__.py (1 hunks)
  • holidays/countries/solomon_islands.py (1 hunks)
  • holidays/registry.py (1 hunks)
  • tests/countries/test_solomon_islands.py (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
holidays/countries/__init__.py (1)
holidays/countries/solomon_islands.py (3)
  • SolomonIslands (23-159)
  • SB (162-163)
  • SLB (166-167)
🪛 Pylint (3.3.7)
tests/countries/test_solomon_islands.py

[convention] 1-1: Missing module docstring

(C0114)


[convention] 20-20: Missing class docstring

(C0115)


[warning] 22-22: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestSolomonIslands.setUpClass' method

(W0221)


[convention] 33-33: Missing function or method docstring

(C0116)


[convention] 36-36: Missing function or method docstring

(C0116)


[convention] 39-39: Missing function or method docstring

(C0116)


[convention] 51-51: Missing function or method docstring

(C0116)


[convention] 62-62: Missing function or method docstring

(C0116)


[convention] 76-76: Missing function or method docstring

(C0116)


[convention] 90-90: Missing function or method docstring

(C0116)


[convention] 104-104: Missing function or method docstring

(C0116)


[convention] 118-118: Missing function or method docstring

(C0116)


[convention] 145-145: Missing function or method docstring

(C0116)


[convention] 156-156: Missing function or method docstring

(C0116)


[convention] 169-169: Missing function or method docstring

(C0116)


[convention] 198-198: Missing function or method docstring

(C0116)


[convention] 207-207: Missing function or method docstring

(C0116)


[convention] 214-214: Missing function or method docstring

(C0116)


[convention] 221-221: Missing function or method docstring

(C0116)


[convention] 228-228: Missing function or method docstring

(C0116)


[convention] 235-235: Missing function or method docstring

(C0116)


[convention] 242-242: Missing function or method docstring

(C0116)


[convention] 249-249: Missing function or method docstring

(C0116)


[convention] 256-256: Missing function or method docstring

(C0116)


[convention] 263-263: Missing function or method docstring

(C0116)


[refactor] 20-20: Too many public methods (23/20)

(R0904)

holidays/countries/solomon_islands.py

[convention] 29-29: Line too long (134/100)

(C0301)


[convention] 40-40: Line too long (173/100)

(C0301)


[convention] 41-41: Line too long (175/100)

(C0301)


[convention] 47-47: Line too long (147/100)

(C0301)


[convention] 48-48: Line too long (122/100)

(C0301)


[convention] 174-174: Line too long (162/100)

(C0301)


[convention] 175-175: Line too long (164/100)

(C0301)


[convention] 176-176: Line too long (172/100)

(C0301)


[convention] 1-1: Missing module docstring

(C0114)


[convention] 162-162: Missing class docstring

(C0115)


[convention] 166-166: Missing class docstring

(C0115)


[refactor] 170-170: Too few public methods (0/2)

(R0903)

⏰ Context from checks skipped due to timeout of 300000ms (2)
  • GitHub Check: Test docs build
  • GitHub Check: Build distribution
🔇 Additional comments (7)
holidays/countries/solomon_islands.py (3)

23-87: Well-structured holiday class implementation.

The class properly inherits from all necessary base classes and defines subdivisions comprehensively. The documentation with official references is thorough.

🧰 Tools
🪛 Pylint (3.3.7)

[convention] 29-29: Line too long (134/100)

(C0301)


[convention] 40-40: Line too long (173/100)

(C0301)


[convention] 41-41: Line too long (175/100)

(C0301)


[convention] 47-47: Line too long (147/100)

(C0301)


[convention] 48-48: Line too long (122/100)

(C0301)


88-133: Holiday implementation correctly handles royal transition and observance rules.

The Queen's/King's Birthday logic properly accounts for the 2023 transition and documented exceptions. Different observance rules for Christmas holidays follow the official gazette patterns.


134-160: Clean implementation of province-specific holidays.

The dictionary-based approach for province days is efficient and maintainable.

holidays/registry.py (1)

178-178: Registry entry correctly added.

The Solomon Islands entry follows the standard format and maintains alphabetical ordering.

holidays/countries/__init__.py (1)

175-175: Import statement properly added.

The import follows the standard pattern and maintains alphabetical ordering.

README.md (1)

108-108: Documentation properly updated.

The country count is correctly incremented and the Solomon Islands entry includes all subdivisions with accurate information.

Also applies to: 1235-1240

tests/countries/test_solomon_islands.py (1)

20-276: Comprehensive test coverage for Solomon Islands holidays.

The tests thoroughly cover all holiday types, observance rules, and province-specific holidays with both positive and negative test cases.

🧰 Tools
🪛 Pylint (3.3.7)

[convention] 20-20: Missing class docstring

(C0115)


[warning] 22-22: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestSolomonIslands.setUpClass' method

(W0221)


[convention] 33-33: Missing function or method docstring

(C0116)


[convention] 36-36: Missing function or method docstring

(C0116)


[convention] 39-39: Missing function or method docstring

(C0116)


[convention] 51-51: Missing function or method docstring

(C0116)


[convention] 62-62: Missing function or method docstring

(C0116)


[convention] 76-76: Missing function or method docstring

(C0116)


[convention] 90-90: Missing function or method docstring

(C0116)


[convention] 104-104: Missing function or method docstring

(C0116)


[convention] 118-118: Missing function or method docstring

(C0116)


[convention] 145-145: Missing function or method docstring

(C0116)


[convention] 156-156: Missing function or method docstring

(C0116)


[convention] 169-169: Missing function or method docstring

(C0116)


[convention] 198-198: Missing function or method docstring

(C0116)


[convention] 207-207: Missing function or method docstring

(C0116)


[convention] 214-214: Missing function or method docstring

(C0116)


[convention] 221-221: Missing function or method docstring

(C0116)


[convention] 228-228: Missing function or method docstring

(C0116)


[convention] 235-235: Missing function or method docstring

(C0116)


[convention] 242-242: Missing function or method docstring

(C0116)


[convention] 249-249: Missing function or method docstring

(C0116)


[convention] 256-256: Missing function or method docstring

(C0116)


[convention] 263-263: Missing function or method docstring

(C0116)


[refactor] 20-20: Too many public methods (23/20)

(R0904)

Co-authored-by: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com>
Signed-off-by: Kriti Birda <164247895+kritibirda26@users.noreply.github.com>
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.

I took a look at CanadaTests to try fix this but it seems to be defining subdiv_holidays in a similar way without mypy complaining there. How do I fix this error properly?

This seems to work with mypy, but I'm not so sure with doing them that way - I think the current # type: ignore looks better 😔 - what do you think? @KJhellico @arkid15r

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: 2

🔭 Outside diff range comments (1)
holidays/countries/solomon_islands.py (1)

170-188: 🛠️ Refactor suggestion

Static-holiday dicts look good but lack subdivision routing

special_ch_public_holidays & special_gu_public_holidays will be ignored unless StaticHolidays is patched to route on subdiv. That support exists upstream only for keys named <subdiv>_special_public_holidays.
Rename the dicts accordingly to ensure they load:

-    special_ch_public_holidays = {2020: (NOV, 18, name)}
-    special_gu_public_holidays = {2020: (NOV, 18, name)}
+    ch_special_public_holidays = {2020: (NOV, 18, name)}
+    gu_special_public_holidays = {2020: (NOV, 18, name)}
🧰 Tools
🪛 Pylint (3.3.7)

[convention] 174-174: Line too long (162/100)

(C0301)


[convention] 175-175: Line too long (164/100)

(C0301)


[convention] 176-176: Line too long (172/100)

(C0301)


[refactor] 170-170: Too few public methods (0/2)

(R0903)

🪛 GitHub Actions: CI/CD

[error] 175-175: Ruff format hook failed: file was reformatted by the hook. Run 'ruff --fix' or 'pre-commit run --all-files' locally to fix formatting issues.

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between c3209cb and eb88cf0.

📒 Files selected for processing (2)
  • README.md (2 hunks)
  • holidays/countries/solomon_islands.py (1 hunks)
🧰 Additional context used
🪛 Pylint (3.3.7)
holidays/countries/solomon_islands.py

[convention] 29-29: Line too long (134/100)

(C0301)


[convention] 40-40: Line too long (173/100)

(C0301)


[convention] 41-41: Line too long (175/100)

(C0301)


[convention] 47-47: Line too long (147/100)

(C0301)


[convention] 48-48: Line too long (122/100)

(C0301)


[convention] 174-174: Line too long (162/100)

(C0301)


[convention] 175-175: Line too long (164/100)

(C0301)


[convention] 176-176: Line too long (172/100)

(C0301)


[convention] 1-1: Missing module docstring

(C0114)


[convention] 162-162: Missing class docstring

(C0115)


[convention] 166-166: Missing class docstring

(C0115)


[refactor] 170-170: Too few public methods (0/2)

(R0903)

🪛 GitHub Actions: CI/CD
holidays/countries/solomon_islands.py

[error] 175-175: Ruff format hook failed: file was reformatted by the hook. Run 'ruff --fix' or 'pre-commit run --all-files' locally to fix formatting issues.

🔇 Additional comments (3)
README.md (2)

108-117: Country count hard-coded—consider deriving it automatically

The total country count stating “189” will drift the next time a country is added (or removed) unless someone remembers to update the number again. It’s easy to forget and CI didn’t catch it here.
A tiny helper in the docs-build step (e.g. parsing the registry and injecting the value) keeps the README self-healing and avoids future off-by-one edits.

Would you like a quick snippet that counts the entries in holidays/registry.py and replaces the figure during the docs build?

🧰 Tools
🪛 LanguageTool

[typographical] ~110-~110: Consider adding a comma after this introductory phrase.
Context: ...e same used for domain names, and for a subdivision its [ISO 3166-2 code](https://en.wikipe...

(AS_A_NN_COMMA)


[uncategorized] ~114-~114: You might be missing the article “the” here.
Context: ...utput. A default language is defined by default_language (optional) attribute f...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


1235-1240: 👍 Row inserted in correct alphabetical order

Solomon Islands is slotted between Slovenia and South Africa, as expected. Subdivision codes match those in the implementation file.

holidays/countries/solomon_islands.py (1)

90-91: New Year’s Day: Saturday case silently ignored

You override the default rule and pass rule=SUN_TO_NEXT_MON, so if 1 Jan falls on a Saturday the prior-Friday shift defined in observed_rule is lost. Was that intentional?
If not, drop the explicit rule so the combined SAT/​SUN rule from __init__ applies:

- self._add_observed(self._add_new_years_day("New Year's Day"), rule=SUN_TO_NEXT_MON)
+ self._add_observed(self._add_new_years_day("New Year's Day"))

Co-authored-by: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com>
Signed-off-by: Kriti Birda <164247895+kritibirda26@users.noreply.github.com>
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

♻️ Duplicate comments (2)
holidays/countries/solomon_islands.py (2)

29-48: CI still fails on line-length / formatting

Several lines exceed 100 chars, and the module docstring is missing – the same issues flagged earlier.
Run ruff format (or pre-commit run --all-files) to satisfy the style gate before the pipeline runs again.

🧰 Tools
🪛 Pylint (3.3.7)

[convention] 29-29: Line too long (134/100)

(C0301)


[convention] 40-40: Line too long (173/100)

(C0301)


[convention] 41-41: Line too long (175/100)

(C0301)


[convention] 47-47: Line too long (147/100)

(C0301)


[convention] 48-48: Line too long (122/100)

(C0301)


111-118: 🛠️ Refactor suggestion

Duplicate Saturday + Friday entry for Sovereign’s Birthday

_add_observed(self._add_holiday_2nd_sat_of_jun(name)) keeps the original Saturday holiday and then adds an “(observed)” Friday, so two public-holiday keys are produced for pre-2023 years. The gazette lists only the Friday.

-            self._add_observed(self._add_holiday_2nd_sat_of_jun(name))
+            # Move the Saturday holiday to the previous Friday and drop the original.
+            self._move_holiday(self._add_holiday_2nd_sat_of_jun(name))

_move_holiday() removes the Saturday entry, leaving a single Friday record with the observed label.

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between eb88cf0 and 03ff3ce.

📒 Files selected for processing (1)
  • holidays/countries/solomon_islands.py (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
holidays/countries/solomon_islands.py (5)
holidays/groups/christian.py (6)
  • _add_good_friday (308-317)
  • _add_holy_saturday (319-326)
  • _add_easter_monday (259-268)
  • _add_whit_monday (432-441)
  • _add_christmas_day (208-216)
  • _add_christmas_day_two (218-226)
holidays/groups/international.py (1)
  • _add_new_years_day (126-134)
holidays/groups/custom.py (1)
  • StaticHolidays (18-47)
holidays/observed_holiday_base.py (1)
  • ObservedHolidayBase (101-243)
holidays/holiday_base.py (1)
  • _add_holiday (819-831)
🪛 Pylint (3.3.7)
holidays/countries/solomon_islands.py

[convention] 29-29: Line too long (134/100)

(C0301)


[convention] 40-40: Line too long (173/100)

(C0301)


[convention] 41-41: Line too long (175/100)

(C0301)


[convention] 47-47: Line too long (147/100)

(C0301)


[convention] 48-48: Line too long (122/100)

(C0301)


[convention] 174-174: Line too long (162/100)

(C0301)


[convention] 175-175: Line too long (164/100)

(C0301)


[convention] 176-176: Line too long (172/100)

(C0301)


[convention] 1-1: Missing module docstring

(C0114)


[convention] 162-162: Missing class docstring

(C0115)


[convention] 166-166: Missing class docstring

(C0115)


[refactor] 170-170: Too few public methods (0/2)

(R0903)

⏰ Context from checks skipped due to timeout of 300000ms (2)
  • GitHub Check: Test docs build
  • GitHub Check: Build distribution
🔇 Additional comments (2)
holidays/countries/solomon_islands.py (2)

128-132: Observed-rule asymmetry for Christmas & Boxing Day

Using SAT_SUN_TO_NEXT_MON_TUE means a Saturday Christmas moves forward to Monday, whereas other fixed-date holidays (e.g. Independence Day) move back to Friday. Confirm this mirrors gazette practice; if not, adopt the default combined rule.


85-91:

❓ Verification inconclusive

Check New Year’s Day Saturday handling

Here you override the rule with SUN_TO_NEXT_MON, so 1 Jan 2028 (a Saturday) would not shift to Friday, even though the Act’s Saturday-to-Friday convention is applied elsewhere. Was this intentional?


🏁 Script executed:

#!/bin/bash
# Show how New Year's Day is stored for 2028
python - <<'PY'
import holidays, datetime as dt
print(holidays.country_holidays("SB", years=[2028])[dt.date(2028, 1, 1):dt.date(2028, 1, 3)])
PY

Length of output: 38


Review New Year’s Day observed logic

The New Year’s Day override only applies SUN_TO_NEXT_MON, so 2028-01-01 (Saturday) doesn’t shift to Friday. The output for 2028 shows:

{datetime.date(2028, 1, 1)}

Should we include SAT_TO_PREV_FRI here as well?

• File: holidays/countries/solomon_islands.py (lines 85–91)
• Current snippet:

kwargs.setdefault("observed_rule", SUN_TO_NEXT_MON + SAT_TO_PREV_FRI)
…
self._add_observed(
    self._add_new_years_day("New Year's Day"),
    rule=SUN_TO_NEXT_MON
)

Co-authored-by: ~Jhellico <KJhellico@users.noreply.github.com>
Signed-off-by: Kriti Birda <164247895+kritibirda26@users.noreply.github.com>
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: 2

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 03ff3ce and 35ae673.

📒 Files selected for processing (2)
  • holidays/countries/solomon_islands.py (1 hunks)
  • tests/countries/test_solomon_islands.py (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
holidays/countries/solomon_islands.py (2)
Learnt from: PPsyrius
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:137-156
Timestamp: 2025-06-15T08:29:43.208Z
Learning: In Solomon Islands holidays implementation, Capital Territory (CT/Honiara) does not observe any provincial day holiday, including Guadalcanal's Province Day, despite being geographically located on Guadalcanal island. CT was split from Guadalcanal Province in 1983 to become a separate self-governing territory and does not have or observe provincial day holidays.
Learnt from: KJhellico
PR: vacanza/holidays#2386
File: holidays/countries/nepal.py:24-26
Timestamp: 2025-03-30T20:18:46.006Z
Learning: In the holidays library, country classes do not directly implement `_populate()`. Instead, they implement specialized methods like `_populate_public_holidays()`, and the base class `HolidayBase` handles the orchestration by calling these specialized methods.
🧬 Code Graph Analysis (2)
tests/countries/test_solomon_islands.py (2)
tests/common.py (9)
  • CommonCountryTests (356-374)
  • assertAliases (121-130)
  • assertNoHolidays (292-294)
  • assertHolidayName (195-199)
  • assertNoHoliday (244-246)
  • assertNoNonObservedHoliday (248-250)
  • assertNoNonObservedHolidayName (277-279)
  • assertNoHolidayName (273-275)
  • assertHolidays (228-230)
holidays/countries/solomon_islands.py (3)
  • SolomonIslands (23-167)
  • SB (170-171)
  • SLB (174-175)
holidays/countries/solomon_islands.py (5)
holidays/groups/christian.py (6)
  • _add_good_friday (308-317)
  • _add_holy_saturday (319-326)
  • _add_easter_monday (259-268)
  • _add_whit_monday (432-441)
  • _add_christmas_day (208-216)
  • _add_christmas_day_two (218-226)
holidays/groups/international.py (1)
  • _add_new_years_day (126-134)
holidays/groups/custom.py (1)
  • StaticHolidays (18-47)
holidays/observed_holiday_base.py (1)
  • ObservedHolidayBase (101-243)
holidays/holiday_base.py (1)
  • _add_holiday (819-831)
🪛 Pylint (3.3.7)
tests/countries/test_solomon_islands.py

[convention] 1-1: Missing module docstring

(C0114)


[convention] 20-20: Missing class docstring

(C0115)


[warning] 22-22: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestSolomonIslands.setUpClass' method

(W0221)


[convention] 34-34: Missing function or method docstring

(C0116)


[convention] 37-37: Missing function or method docstring

(C0116)


[convention] 40-40: Missing function or method docstring

(C0116)


[convention] 52-52: Missing function or method docstring

(C0116)


[convention] 63-63: Missing function or method docstring

(C0116)


[convention] 77-77: Missing function or method docstring

(C0116)


[convention] 91-91: Missing function or method docstring

(C0116)


[convention] 105-105: Missing function or method docstring

(C0116)


[convention] 119-119: Missing function or method docstring

(C0116)


[convention] 146-146: Missing function or method docstring

(C0116)


[convention] 157-157: Missing function or method docstring

(C0116)


[convention] 170-170: Missing function or method docstring

(C0116)


[convention] 201-201: Missing function or method docstring

(C0116)


[convention] 211-211: Missing function or method docstring

(C0116)


[convention] 218-218: Missing function or method docstring

(C0116)


[convention] 225-225: Missing function or method docstring

(C0116)


[convention] 232-232: Missing function or method docstring

(C0116)


[convention] 239-239: Missing function or method docstring

(C0116)


[convention] 246-246: Missing function or method docstring

(C0116)


[convention] 253-253: Missing function or method docstring

(C0116)


[convention] 260-260: Missing function or method docstring

(C0116)


[convention] 267-267: Missing function or method docstring

(C0116)


[refactor] 20-20: Too many public methods (23/20)

(R0904)

holidays/countries/solomon_islands.py

[convention] 29-29: Line too long (134/100)

(C0301)


[convention] 30-30: Line too long (128/100)

(C0301)


[convention] 31-31: Line too long (158/100)

(C0301)


[convention] 32-32: Line too long (153/100)

(C0301)


[convention] 45-45: Line too long (165/100)

(C0301)


[convention] 46-46: Line too long (167/100)

(C0301)


[convention] 182-182: Line too long (162/100)

(C0301)


[convention] 183-183: Line too long (164/100)

(C0301)


[convention] 184-184: Line too long (172/100)

(C0301)


[convention] 1-1: Missing module docstring

(C0114)


[convention] 170-170: Missing class docstring

(C0115)


[convention] 174-174: Missing class docstring

(C0115)


[refactor] 178-178: Too few public methods (0/2)

(R0903)

🪛 GitHub Actions: CI/CD
tests/countries/test_solomon_islands.py

[error] 216-216: Test failure in TestSolomonIslands.test_choiseul_province_day due to dateutil.parser.ParserError: Unknown string format with invalid date string containing a list instead of a single date.


[error] 223-223: Test failure in TestSolomonIslands.test_guadalcanal_province_day due to dateutil.parser.ParserError: Unknown string format with invalid date string containing a list instead of a single date.


[error] 230-230: Test failure in TestSolomonIslands.test_isabel_province_day due to dateutil.parser.ParserError: Unknown string format with invalid date string containing a list instead of a single date.


[error] 237-237: Test failure in TestSolomonIslands.test_makira_ulawa_province_day due to dateutil.parser.ParserError: Unknown string format with invalid date string containing a list instead of a single date.


[error] 244-244: Test failure in TestSolomonIslands.test_malaita_province_day due to dateutil.parser.ParserError: Unknown string format with invalid date string containing a list instead of a single date.


[error] 251-251: Test failure in TestSolomonIslands.test_rennell_and_bellona_province_day due to dateutil.parser.ParserError: Unknown string format with invalid date string containing a list instead of a single date.


[error] 258-258: Test failure in TestSolomonIslands.test_temotu_province_day due to dateutil.parser.ParserError: Unknown string format with invalid date string containing a list instead of a single date.


[error] 265-265: Test failure in TestSolomonIslands.test_western_province_day due to dateutil.parser.ParserError: Unknown string format with invalid date string containing a list instead of a single date.

🔇 Additional comments (2)
holidays/countries/solomon_islands.py (2)

86-92: Default observed rule wired in correctly – nice touch

setdefault("observed_rule", SUN_TO_NEXT_MON + SAT_TO_PREV_FRI) makes the instance honour both Sunday-to-Monday and Saturday-to-Friday shifts while still allowing a caller to override. Clean and future-proof.


109-126: Birthday logic reads clearly and handles the outliers

The ternary for the King/Queen label + the sovereign_birthday_dates override table together cover the rule-change (2023→) and the 2022 / 2025 exceptions. Implementation mirrors the gazette exactly—LGTM.

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

♻️ Duplicate comments (1)
tests/countries/test_solomon_islands.py (1)

191-199: 🛠️ Refactor suggestion

Avoid in-loop mutation of name – it breaks subsequent assertions

name is reassigned to its “ (observed)” variant while the for loop is still iterating.
All iterations after the matching subdivision now see the mutated value, so the else
branch no longer checks for the original holiday name in the remaining subdivisions
(coverage gap + potential false positives).

-                name = f"{name} (observed)"
-                self.assertHolidayName(name, holidays, observed_dts)
+                observed_name = f"{name} (observed)"
+                self.assertHolidayName(observed_name, holidays, observed_dts)
 ...
-                self.assertNoHolidayName(name, holidays, range(1979, 2050))
+                self.assertNoHolidayName(name, holidays, range(1979, 2050))
+                self.assertNoHolidayName(observed_name, holidays, range(1979, 2050))

Same issue was raised earlier but remains unfixed.

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 35ae673 and 281c081.

📒 Files selected for processing (2)
  • holidays/countries/solomon_islands.py (1 hunks)
  • tests/countries/test_solomon_islands.py (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
holidays/countries/solomon_islands.py (2)
Learnt from: PPsyrius
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:137-156
Timestamp: 2025-06-15T08:29:43.208Z
Learning: In Solomon Islands holidays implementation, Capital Territory (CT/Honiara) does not observe any provincial day holiday, including Guadalcanal's Province Day, despite being geographically located on Guadalcanal island. CT was split from Guadalcanal Province in 1983 to become a separate self-governing territory and does not have or observe provincial day holidays.
Learnt from: KJhellico
PR: vacanza/holidays#2386
File: holidays/countries/nepal.py:24-26
Timestamp: 2025-03-30T20:18:46.006Z
Learning: In the holidays library, country classes do not directly implement `_populate()`. Instead, they implement specialized methods like `_populate_public_holidays()`, and the base class `HolidayBase` handles the orchestration by calling these specialized methods.
🪛 Pylint (3.3.7)
tests/countries/test_solomon_islands.py

[convention] 1-1: Missing module docstring

(C0114)


[convention] 20-20: Missing class docstring

(C0115)


[warning] 22-22: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestSolomonIslands.setUpClass' method

(W0221)


[convention] 34-34: Missing function or method docstring

(C0116)


[convention] 37-37: Missing function or method docstring

(C0116)


[convention] 40-40: Missing function or method docstring

(C0116)


[convention] 52-52: Missing function or method docstring

(C0116)


[convention] 63-63: Missing function or method docstring

(C0116)


[convention] 77-77: Missing function or method docstring

(C0116)


[convention] 91-91: Missing function or method docstring

(C0116)


[convention] 105-105: Missing function or method docstring

(C0116)


[convention] 119-119: Missing function or method docstring

(C0116)


[convention] 146-146: Missing function or method docstring

(C0116)


[convention] 157-157: Missing function or method docstring

(C0116)


[convention] 170-170: Missing function or method docstring

(C0116)


[convention] 201-201: Missing function or method docstring

(C0116)


[convention] 211-211: Missing function or method docstring

(C0116)


[convention] 215-215: Missing function or method docstring

(C0116)


[convention] 219-219: Missing function or method docstring

(C0116)


[convention] 223-223: Missing function or method docstring

(C0116)


[convention] 227-227: Missing function or method docstring

(C0116)


[convention] 231-231: Missing function or method docstring

(C0116)


[convention] 237-237: Missing function or method docstring

(C0116)


[convention] 241-241: Missing function or method docstring

(C0116)


[convention] 245-245: Missing function or method docstring

(C0116)


[refactor] 20-20: Too many public methods (23/20)

(R0904)

holidays/countries/solomon_islands.py

[convention] 29-29: Line too long (134/100)

(C0301)


[convention] 30-30: Line too long (128/100)

(C0301)


[convention] 31-31: Line too long (158/100)

(C0301)


[convention] 32-32: Line too long (153/100)

(C0301)


[convention] 45-45: Line too long (165/100)

(C0301)


[convention] 46-46: Line too long (167/100)

(C0301)


[convention] 191-191: Line too long (162/100)

(C0301)


[convention] 192-192: Line too long (164/100)

(C0301)


[convention] 193-193: Line too long (172/100)

(C0301)


[convention] 1-1: Missing module docstring

(C0114)


[convention] 179-179: Missing class docstring

(C0115)


[convention] 183-183: Missing class docstring

(C0115)


[refactor] 187-187: Too few public methods (0/2)

(R0903)

⏰ Context from checks skipped due to timeout of 300000ms (2)
  • GitHub Check: Build distribution
  • GitHub Check: Test docs build
🔇 Additional comments (2)
holidays/countries/solomon_islands.py (2)

90-96: Confirm composite observed_rule is still honoured for New Year’s Day

_add_observed(..., rule=SUN_TO_NEXT_MON) intentionally suppresses
the default Saturday-to-Friday shift you configured in
__init__.
If that is policy (only Sundays observed for New Year), perfect.
If Saturdays should also shift, drop the explicit rule= argument so
the combined SUN_TO_NEXT_MON + SAT_TO_PREV_FRI applies.

No change required if the single-rule behaviour is correct.


116-125: Edge cases covered – nice!

The bespoke mapping for 2022 & 2025 plus the fallback logic cleanly
handles the Sovereign’s Birthday transition.
Implementation is clear and matches gazette data.

KJhellico
KJhellico previously approved these changes Jun 15, 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! 👍

@KJhellico KJhellico disabled auto-merge June 15, 2025 21:36
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: 2

♻️ Duplicate comments (2)
tests/countries/test_solomon_islands.py (2)

208-210: Also assert absence of the observed label for other provinces

The helper currently checks that the base holiday name is absent in unrelated subdivisions, but it doesn’t check the " (observed)" variant. A quick addition tightens coverage.

-                self.assertNoHolidayName(holiday_name, holidays, range(1979, 2050))
+                self.assertNoHolidayName(holiday_name, holidays, range(1979, 2050))
+                self.assertNoHolidayName(
+                    f"{holiday_name} (observed)", holidays, range(1979, 2050)
+                )

196-200: Zero-pad generated dates to keep "YYYY-MM-DD" format

Without padding, the generator yields strings like 1979-6-29, while the rest of the suite (and dateutil) expect 1979-06-29. This leads to inconsistent assertions and brittle parsing.

-                    holiday_name, holidays, (f"{year}-{month}-{day}" for year in range(1979, 2050))
+                    holiday_name,
+                    holidays,
+                    (
+                        f"{year}-{month:02d}-{day:02d}"
+                        for year in range(1979, 2050)
+                    ),
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 49381d1 and 194351f.

📒 Files selected for processing (2)
  • holidays/countries/solomon_islands.py (1 hunks)
  • tests/countries/test_solomon_islands.py (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: KJhellico
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:90-97
Timestamp: 2025-06-15T20:39:51.064Z
Learning: Solomon Islands Saturday → Friday holiday shift rule was systematically implemented only from around 2021-2022 onward, not consistently applied since 1979. The Public Holidays Act only explicitly mentions Sunday → Monday shifts, with Saturday shifts handled through discretionary ministerial gazette notices.
tests/countries/test_solomon_islands.py (1)
Learnt from: PPsyrius
PR: vacanza/holidays#2416
File: tests/countries/test_turkmenistan.py:52-64
Timestamp: 2025-04-05T04:47:27.213Z
Learning: For holiday tests in the vacanza/holidays project, structure tests by individual holidays rather than by years. Each test method should focus on a specific holiday and test it across multiple years (from start_year through 2050) using helper methods like `assertHolidayName`. For fixed holidays, use generators like `(f"{year}-01-01" for year in range(1991, 2051))`. For movable holidays, specify individual dates for specific years followed by a range check.
holidays/countries/solomon_islands.py (6)
Learnt from: KJhellico
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:90-97
Timestamp: 2025-06-15T20:39:51.064Z
Learning: Solomon Islands Saturday → Friday holiday shift rule was systematically implemented only from around 2021-2022 onward, not consistently applied since 1979. The Public Holidays Act only explicitly mentions Sunday → Monday shifts, with Saturday shifts handled through discretionary ministerial gazette notices.
Learnt from: PPsyrius
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:137-156
Timestamp: 2025-06-15T08:29:43.208Z
Learning: In Solomon Islands holidays implementation, Capital Territory (CT/Honiara) does not observe any provincial day holiday, including Guadalcanal's Province Day, despite being geographically located on Guadalcanal island. CT was split from Guadalcanal Province in 1983 to become a separate self-governing territory and does not have or observe provincial day holidays.
Learnt from: KJhellico
PR: vacanza/holidays#2386
File: holidays/countries/nepal.py:24-26
Timestamp: 2025-03-30T20:18:46.006Z
Learning: In the holidays library, country classes do not directly implement `_populate()`. Instead, they implement specialized methods like `_populate_public_holidays()`, and the base class `HolidayBase` handles the orchestration by calling these specialized methods.
Learnt from: KJhellico
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:28-54
Timestamp: 2025-06-15T15:10:20.335Z
Learning: In the vacanza/holidays project, ruff configuration allows longer docstring lines than the typical 100-character limit, so docstring reference lines that exceed standard line length limits are acceptable and won't be flagged by ruff format during pre-commit checks.
Learnt from: KJhellico
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:28-54
Timestamp: 2025-06-15T15:10:20.335Z
Learning: The vacanza/holidays project uses ruff with line-length = 99 characters (configured in pyproject.toml), not the standard 80 or 100 character limits. When pre-commit checks pass, the formatting is compliant with the project's specific ruff configuration.
Learnt from: PPsyrius
PR: vacanza/holidays#2637
File: holidays/countries/singapore.py:49-50
Timestamp: 2025-06-16T11:17:34.653Z
Learning: For the vacanza/holidays project, defer to ruff's line length rules rather than pylint's C0301 warnings. If ruff passes in pre-commit tests, line length is acceptable regardless of pylint warnings about exceeding 100 characters.
🪛 Pylint (3.3.7)
tests/countries/test_solomon_islands.py

[convention] 1-1: Missing module docstring

(C0114)


[convention] 20-20: Missing class docstring

(C0115)


[warning] 22-22: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestSolomonIslands.setUpClass' method

(W0221)


[convention] 34-34: Missing function or method docstring

(C0116)


[convention] 37-37: Missing function or method docstring

(C0116)


[convention] 40-40: Missing function or method docstring

(C0116)


[convention] 55-55: Missing function or method docstring

(C0116)


[convention] 68-68: Missing function or method docstring

(C0116)


[convention] 82-82: Missing function or method docstring

(C0116)


[convention] 96-96: Missing function or method docstring

(C0116)


[convention] 110-110: Missing function or method docstring

(C0116)


[convention] 124-124: Missing function or method docstring

(C0116)


[convention] 151-151: Missing function or method docstring

(C0116)


[convention] 162-162: Missing function or method docstring

(C0116)


[convention] 175-175: Missing function or method docstring

(C0116)


[refactor] 188-188: Too many arguments (6/5)

(R0913)


[refactor] 188-188: Too many positional arguments (6/5)

(R0917)


[convention] 211-211: Missing function or method docstring

(C0116)


[convention] 221-221: Missing function or method docstring

(C0116)


[convention] 231-231: Missing function or method docstring

(C0116)


[convention] 241-241: Missing function or method docstring

(C0116)


[convention] 251-251: Missing function or method docstring

(C0116)


[convention] 261-261: Missing function or method docstring

(C0116)


[convention] 271-271: Missing function or method docstring

(C0116)


[convention] 283-283: Missing function or method docstring

(C0116)


[convention] 293-293: Missing function or method docstring

(C0116)


[convention] 303-303: Missing function or method docstring

(C0116)


[refactor] 20-20: Too many public methods (23/20)

(R0904)

holidays/countries/solomon_islands.py

[convention] 29-29: Line too long (134/100)

(C0301)


[convention] 30-30: Line too long (128/100)

(C0301)


[convention] 31-31: Line too long (158/100)

(C0301)


[convention] 32-32: Line too long (153/100)

(C0301)


[convention] 45-45: Line too long (165/100)

(C0301)


[convention] 46-46: Line too long (167/100)

(C0301)


[convention] 193-193: Line too long (162/100)

(C0301)


[convention] 194-194: Line too long (164/100)

(C0301)


[convention] 195-195: Line too long (172/100)

(C0301)


[convention] 1-1: Missing module docstring

(C0114)


[convention] 181-181: Missing class docstring

(C0115)


[convention] 185-185: Missing class docstring

(C0115)


[refactor] 189-189: Too few public methods (0/2)

(R0903)

⏰ Context from checks skipped due to timeout of 300000ms (1)
  • GitHub Check: Test Python 3.13 on windows-latest
🔇 Additional comments (1)
holidays/countries/solomon_islands.py (1)

34-53: ```shell
#!/bin/bash

Locate the SolomonIslands holiday definition

FILE=$(rg --files-with-matches "class SolomonIslands" -l)
echo "File found: $FILE"

Show top of file to inspect docstring and class signature

sed -n '1,100p' "$FILE"

Find all usages of the Saturday→Friday rule

echo -e "\nInstances of SAT_TO_PREV_FRI:"
grep -n "SAT_TO_PREV_FRI" "$FILE" || echo "None found"

Check for any observed_since constraints

echo -e "\nInstances of observed_since:"
grep -n "observed_since" "$FILE" || echo "None found"


</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

PPsyrius
PPsyrius previously approved these changes Jun 16, 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 🇸🇧

Co-authored-by: ~Jhellico <KJhellico@users.noreply.github.com>
Signed-off-by: Kriti Birda <164247895+kritibirda26@users.noreply.github.com>
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

♻️ Duplicate comments (2)
holidays/countries/solomon_islands.py (1)

97-98: Duplicate of earlier feedback: unconditional SUN_TO_NEXT_MON + SAT_TO_PREV_FRI may over-apply to pre-2016 data.
See previous discussion for potential conditionalisation.

tests/countries/test_solomon_islands.py (1)

191-203: Zero-pad month/day in generated date strings for consistency

f"{year}-{month}-{day}" yields variants like 1980-6-2.
Everywhere else in the test-suite we use the canonical YYYY-MM-DD format, so the mix looks untidy (though it still parses).

-                    holiday_name, holidays, (f"{year}-{month}-{day}" for year in range(1979, 2050))
+                    holiday_name,
+                    holidays,
+                    (
+                        f"{year}-{month:02d}-{day:02d}"
+                        for year in range(1979, 2050)
+                    ),
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 43c523a and cce71fd.

📒 Files selected for processing (2)
  • holidays/countries/solomon_islands.py (1 hunks)
  • tests/countries/test_solomon_islands.py (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: KJhellico
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:90-97
Timestamp: 2025-06-15T20:39:51.064Z
Learning: Solomon Islands Saturday → Friday holiday shift rule was systematically implemented only from around 2021-2022 onward, not consistently applied since 1979. The Public Holidays Act only explicitly mentions Sunday → Monday shifts, with Saturday shifts handled through discretionary ministerial gazette notices.
holidays/countries/solomon_islands.py (7)
Learnt from: KJhellico
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:90-97
Timestamp: 2025-06-15T20:39:51.064Z
Learning: Solomon Islands Saturday → Friday holiday shift rule was systematically implemented only from around 2021-2022 onward, not consistently applied since 1979. The Public Holidays Act only explicitly mentions Sunday → Monday shifts, with Saturday shifts handled through discretionary ministerial gazette notices.
Learnt from: PPsyrius
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:137-156
Timestamp: 2025-06-15T08:29:43.208Z
Learning: In Solomon Islands holidays implementation, Capital Territory (CT/Honiara) does not observe any provincial day holiday, including Guadalcanal's Province Day, despite being geographically located on Guadalcanal island. CT was split from Guadalcanal Province in 1983 to become a separate self-governing territory and does not have or observe provincial day holidays.
Learnt from: KJhellico
PR: vacanza/holidays#2386
File: holidays/countries/nepal.py:24-26
Timestamp: 2025-03-30T20:18:46.006Z
Learning: In the holidays library, country classes do not directly implement `_populate()`. Instead, they implement specialized methods like `_populate_public_holidays()`, and the base class `HolidayBase` handles the orchestration by calling these specialized methods.
Learnt from: KJhellico
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:28-54
Timestamp: 2025-06-15T15:10:20.335Z
Learning: In the vacanza/holidays project, ruff configuration allows longer docstring lines than the typical 100-character limit, so docstring reference lines that exceed standard line length limits are acceptable and won't be flagged by ruff format during pre-commit checks.
Learnt from: KJhellico
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:28-54
Timestamp: 2025-06-15T15:10:20.335Z
Learning: The vacanza/holidays project uses ruff with line-length = 99 characters (configured in pyproject.toml), not the standard 80 or 100 character limits. When pre-commit checks pass, the formatting is compliant with the project's specific ruff configuration.
Learnt from: PPsyrius
PR: vacanza/holidays#2637
File: holidays/countries/singapore.py:49-50
Timestamp: 2025-06-16T11:17:34.653Z
Learning: For the vacanza/holidays project, defer to ruff's line length rules rather than pylint's C0301 warnings. If ruff passes in pre-commit tests, line length is acceptable regardless of pylint warnings about exceeding 100 characters.
Learnt from: PPsyrius
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:95-98
Timestamp: 2025-06-16T12:28:31.624Z
Learning: Library-wide holiday patterns and their optimizations should be handled at the base class level (like InternationalHolidays) rather than documenting workarounds in individual country modules. This maintains separation of concerns and avoids documentation duplication.
🧬 Code Graph Analysis (1)
tests/countries/test_solomon_islands.py (2)
tests/common.py (8)
  • TestCase (28-338)
  • CommonCountryTests (356-374)
  • assertAliases (121-130)
  • assertNoHolidays (292-294)
  • assertHolidayName (195-199)
  • assertNoHoliday (244-246)
  • assertNoNonObservedHoliday (248-250)
  • assertHolidays (228-230)
holidays/countries/solomon_islands.py (3)
  • SolomonIslands (23-187)
  • SB (190-191)
  • SLB (194-195)
🪛 Pylint (3.3.7)
tests/countries/test_solomon_islands.py

[convention] 1-1: Missing module docstring

(C0114)


[convention] 20-20: Missing class docstring

(C0115)


[warning] 22-22: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestSolomonIslands.setUpClass' method

(W0221)


[convention] 34-34: Missing function or method docstring

(C0116)


[convention] 37-37: Missing function or method docstring

(C0116)


[convention] 40-40: Missing function or method docstring

(C0116)


[convention] 55-55: Missing function or method docstring

(C0116)


[convention] 68-68: Missing function or method docstring

(C0116)


[convention] 82-82: Missing function or method docstring

(C0116)


[convention] 96-96: Missing function or method docstring

(C0116)


[convention] 110-110: Missing function or method docstring

(C0116)


[convention] 124-124: Missing function or method docstring

(C0116)


[convention] 154-154: Missing function or method docstring

(C0116)


[convention] 165-165: Missing function or method docstring

(C0116)


[convention] 178-178: Missing function or method docstring

(C0116)


[refactor] 191-191: Too many arguments (6/5)

(R0913)


[refactor] 191-191: Too many positional arguments (6/5)

(R0917)


[convention] 214-214: Missing function or method docstring

(C0116)


[convention] 224-224: Missing function or method docstring

(C0116)


[convention] 234-234: Missing function or method docstring

(C0116)


[convention] 244-244: Missing function or method docstring

(C0116)


[convention] 254-254: Missing function or method docstring

(C0116)


[convention] 264-264: Missing function or method docstring

(C0116)


[convention] 274-274: Missing function or method docstring

(C0116)


[convention] 286-286: Missing function or method docstring

(C0116)


[convention] 296-296: Missing function or method docstring

(C0116)


[convention] 306-306: Missing function or method docstring

(C0116)


[refactor] 20-20: Too many public methods (23/20)

(R0904)

holidays/countries/solomon_islands.py

[convention] 29-29: Line too long (134/100)

(C0301)


[convention] 30-30: Line too long (128/100)

(C0301)


[convention] 31-31: Line too long (130/100)

(C0301)


[convention] 32-32: Line too long (163/100)

(C0301)


[convention] 33-33: Line too long (154/100)

(C0301)


[convention] 34-34: Line too long (158/100)

(C0301)


[convention] 35-35: Line too long (152/100)

(C0301)


[convention] 36-36: Line too long (153/100)

(C0301)


[convention] 49-49: Line too long (165/100)

(C0301)


[convention] 53-53: Line too long (167/100)

(C0301)


[convention] 202-202: Line too long (162/100)

(C0301)


[convention] 203-203: Line too long (164/100)

(C0301)


[convention] 204-204: Line too long (172/100)

(C0301)


[convention] 1-1: Missing module docstring

(C0114)


[convention] 190-190: Missing class docstring

(C0115)


[convention] 194-194: Missing class docstring

(C0115)


[refactor] 198-198: Too few public methods (0/2)

(R0903)

🔇 Additional comments (3)
holidays/countries/solomon_islands.py (1)

133-134: Let’s inspect the dynamic helper generator in holidays/holiday_base.py:

#!/bin/bash
rg -n "def __getattr__" -A50 holidays/holiday_base.py
tests/countries/test_solomon_islands.py (2)

214-223: Historic Friday-shift assertions may overreach – please verify sources

The test expects Saturday-to-Friday shifts for Central Province Day as far back as 2013/2014.
Per Public Holidays Act only Sunday→Monday is automatic; Saturday shifts have been ad-hoc (see ministerial gazettes) and appear systematic only from ~2021-22 (see project learning note).

If the underlying rules in holidays/countries/solomon_islands.py were not updated to hard-code those pre-2021 shifts, these assertions will fail silently when data is refreshed.

Can you double-check the primary sources for 2013/2014 and either:

  1. Remove the early Friday dates, or
  2. Extend the holiday class with the appropriate special-case logic.

24-32: setUpClass signature differs from unittest.TestCase – double-check linter noise

Overloading setUpClass(cls) with extra positional arguments triggers Pylint W0221.
The call‐site in CommonCountryTests.setUpClass() still works, so it’s harmless functionally, but the warning will keep coming back.

If you want to silence it without sacrificing readability, consider:

-    @classmethod
-    def setUpClass(cls):
+    @classmethod  # noqa: D401
+    def setUpClass(cls) -> None:  # type: ignore[override]

or disable the warning in the project config.
Feel free to ignore if your tooling already whitelists this pattern.

⛔ Skipped due to learnings
Learnt from: KJhellico
PR: vacanza/holidays#2609
File: tests/countries/test_nauru.py:20-24
Timestamp: 2025-06-13T15:15:25.128Z
Learning: In the vacanza/holidays test suite, overriding `setUpClass` is intentionally done with the single `cls` parameter (no *args/**kwargs), so signature-mismatch lint warnings are ignored project-wide.

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

♻️ Duplicate comments (2)
holidays/countries/solomon_islands.py (2)

97-98: Observed-rule still unconditional – see earlier feedback

Hard-coding both SUN_TO_NEXT_MON + SAT_TO_PREV_FRI for every year ignores the historical nuance we already discussed.
If the goal is fidelity pre-2016, gate SAT_TO_PREV_FRI behind the year check; otherwise please mark that limitation in the docstring.


104-105: Palau-style carry-over caveat still undocumented

The self._next_year_new_years_day pattern means the 31 Dec observed date only materialises when the caller requests both Y-1 and Y.
Users pulling just {Y-1} will miss it.

Either add a short note in the class docstring or move the helper to a shared mix-in so every country solves this once.

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between cce71fd and 638676a.

📒 Files selected for processing (1)
  • holidays/countries/solomon_islands.py (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: KJhellico
PR: vacanza/holidays#2632
File: holidays/countries/solomon_islands.py:90-97
Timestamp: 2025-06-15T20:39:51.064Z
Learning: Solomon Islands Saturday → Friday holiday shift rule was systematically implemented only from around 2021-2022 onward, not consistently applied since 1979. The Public Holidays Act only explicitly mentions Sunday → Monday shifts, with Saturday shifts handled through discretionary ministerial gazette notices.
holidays/countries/solomon_islands.py (7)

<retrieved_learning>
Learnt from: KJhellico
PR: #2632
File: holidays/countries/solomon_islands.py:90-97
Timestamp: 2025-06-15T20:39:51.064Z
Learning: Solomon Islands Saturday → Friday holiday shift rule was systematically implemented only from around 2021-2022 onward, not consistently applied since 1979. The Public Holidays Act only explicitly mentions Sunday → Monday shifts, with Saturday shifts handled through discretionary ministerial gazette notices.
</retrieved_learning>

<retrieved_learning>
Learnt from: PPsyrius
PR: #2632
File: holidays/countries/solomon_islands.py:137-156
Timestamp: 2025-06-15T08:29:43.208Z
Learning: In Solomon Islands holidays implementation, Capital Territory (CT/Honiara) does not observe any provincial day holiday, including Guadalcanal's Province Day, despite being geographically located on Guadalcanal island. CT was split from Guadalcanal Province in 1983 to become a separate self-governing territory and does not have or observe provincial day holidays.
</retrieved_learning>

<retrieved_learning>
Learnt from: KJhellico
PR: #2386
File: holidays/countries/nepal.py:24-26
Timestamp: 2025-03-30T20:18:46.006Z
Learning: In the holidays library, country classes do not directly implement _populate(). Instead, they implement specialized methods like _populate_public_holidays(), and the base class HolidayBase handles the orchestration by calling these specialized methods.
</retrieved_learning>

<retrieved_learning>
Learnt from: KJhellico
PR: #2632
File: holidays/countries/solomon_islands.py:28-54
Timestamp: 2025-06-15T15:10:20.335Z
Learning: In the vacanza/holidays project, ruff configuration allows longer docstring lines than the typical 100-character limit, so docstring reference lines that exceed standard line length limits are acceptable and won't be flagged by ruff format during pre-commit checks.
</retrieved_learning>

<retrieved_learning>
Learnt from: KJhellico
PR: #2632
File: holidays/countries/solomon_islands.py:28-54
Timestamp: 2025-06-15T15:10:20.335Z
Learning: The vacanza/holidays project uses ruff with line-length = 99 characters (configured in pyproject.toml), not the standard 80 or 100 character limits. When pre-commit checks pass, the formatting is compliant with the project's specific ruff configuration.
</retrieved_learning>

<retrieved_learning>
Learnt from: PPsyrius
PR: #2637
File: holidays/countries/singapore.py:49-50
Timestamp: 2025-06-16T11:17:34.653Z
Learning: For the vacanza/holidays project, defer to ruff's line length rules rather than pylint's C0301 warnings. If ruff passes in pre-commit tests, line length is acceptable regardless of pylint warnings about exceeding 100 characters.
</retrieved_learning>

<retrieved_learning>
Learnt from: PPsyrius
PR: #2632
File: holidays/countries/solomon_islands.py:95-98
Timestamp: 2025-06-16T12:28:31.624Z
Learning: Library-wide holiday patterns and their optimizations should be handled at the base class level (like InternationalHolidays) rather than documenting workarounds in individual country modules. This maintains separation of concerns and avoids documentation duplication.
</retrieved_learning>

🪛 Pylint (3.3.7)
holidays/countries/solomon_islands.py

[convention] 29-29: Line too long (134/100)

(C0301)


[convention] 30-30: Line too long (128/100)

(C0301)


[convention] 31-31: Line too long (130/100)

(C0301)


[convention] 32-32: Line too long (163/100)

(C0301)


[convention] 33-33: Line too long (154/100)

(C0301)


[convention] 34-34: Line too long (158/100)

(C0301)


[convention] 35-35: Line too long (152/100)

(C0301)


[convention] 36-36: Line too long (153/100)

(C0301)


[convention] 49-49: Line too long (165/100)

(C0301)


[convention] 53-53: Line too long (167/100)

(C0301)


[convention] 202-202: Line too long (162/100)

(C0301)


[convention] 203-203: Line too long (164/100)

(C0301)


[convention] 204-204: Line too long (172/100)

(C0301)


[convention] 1-1: Missing module docstring

(C0114)


[convention] 190-190: Missing class docstring

(C0115)


[convention] 194-194: Missing class docstring

(C0115)


[refactor] 198-198: Too few public methods (0/2)

(R0903)

@arkid15r arkid15r enabled auto-merge June 16, 2025 21:52
Copy link

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! 👍

@arkid15r arkid15r added this pull request to the merge queue Jun 16, 2025
Merged via the queue into vacanza:dev with commit a9bf7b3 Jun 16, 2025
33 checks passed
@arkid15r arkid15r mentioned this pull request Jun 16, 2025
@coderabbitai coderabbitai bot mentioned this pull request Jul 9, 2025
9 tasks
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 Solomon Islands holidays
4 participants
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载