-
-
Notifications
You must be signed in to change notification settings - Fork 539
Add Guyana holidays #2614
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
Add Guyana holidays #2614
Conversation
Summary by CodeRabbit
Summary by CodeRabbit
WalkthroughThis change introduces full holiday support for Guyana. It adds the Guyana holiday calendar, updates documentation and registry, provides localization files for holiday names, and includes a comprehensive test suite for Guyana-specific holidays and their observance rules. Changes
Assessment against linked issues
Assessment against linked issues: Out-of-scope changesNo out-of-scope changes detected. Possibly related PRs
Suggested reviewers
✨ Finishing Touches
🧪 Generate Unit Tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit 8000 :
SupportNeed 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)
Other keywords and placeholders
Documentation and Community
|
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## dev #2614 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 231 232 +1
Lines 14681 14739 +58
Branches 2050 2057 +7
=========================================
+ Hits 14681 14739 +58 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🔭 Outside diff range comments (1)
holidays/locale/en_GY/LC_MESSAGES/GY.po (1)
29-96
: 🧹 Nitpick (assertive)Empty translations fallback
Allmsgstr
entries are blank, causing fallback tomsgid
. Consider adding region-specific spellings or phrases where needed (e.g., confirm “Labour Day” vs “Labor Day”).
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (7)
README.md
(2 hunks)holidays/countries/__init__.py
(1 hunks)holidays/countries/guyana.py
(1 hunks)holidays/locale/en_GY/LC_MESSAGES/GY.po
(1 hunks)holidays/locale/en_US/LC_MESSAGES/GY.po
(1 hunks)holidays/registry.py
(1 hunks)tests/countries/test_guyana.py
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
tests/countries/test_guyana.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.
🧬 Code Graph Analysis (1)
holidays/countries/__init__.py (1)
holidays/countries/guyana.py (3)
Guyana
(32-124)GY
(127-128)GUY
(131-132)
🪛 Pylint (3.3.7)
tests/countries/test_guyana.py
[convention] 1-1: Missing module docstring
(C0114)
[convention] 19-19: Missing class docstring
(C0115)
[warning] 21-21: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestGuyana.setUpClass' method
(W0221)
[convention] 25-25: Missing function or method docstring
(C0116)
[convention] 28-28: Missing function or method docstring
(C0116)
[convention] 31-31: Missing function or method docstring
(C0116)
[convention] 35-35: Missing function or method docstring
(C0116)
[convention] 45-45: Missing function or method docstring
(C0116)
[convention] 50-50: Missing function or method docstring
(C0116)
[convention] 54-54: 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] 89-89: 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] 121-121: Missing function or method docstring
(C0116)
[convention] 138-138: Missing function or method docstring
(C0116)
[convention] 157-157: Missing function or method docstring
(C0116)
[convention] 173-173: Missing function or method docstring
(C0116)
[convention] 189-189: Missing function or method docstring
(C0116)
[convention] 206-206: Missing function or method docstring
(C0116)
[convention] 222-222: Missing function or method docstring
(C0116)
holidays/countries/guyana.py
[convention] 43-43: Line too long (173/100)
(C0301)
[convention] 44-44: Line too long (160/100)
(C0301)
[convention] 45-45: Line too long (133/100)
(C0301)
[convention] 256-256: Line too long (157/100)
(C0301)
[convention] 1-1: Missing module docstring
(C0114)
[refactor] 32-32: Too many ancestors (8/7)
(R0901)
[warning] 59-59: Keyword argument before variable positional arguments list in the definition of init function
(W1113)
[convention] 127-127: Missing class docstring
(C0115)
[refactor] 127-127: Too many ancestors (9/7)
(R0901)
[convention] 131-131: Missing class docstring
(C0115)
[refactor] 131-131: Too many ancestors (9/7)
(R0901)
[convention] 135-135: Missing class docstring
(C0115)
[convention] 192-192: Missing class docstring
(C0115)
[refactor] 252-252: Too few public methods (0/2)
(R0903)
⏰ Context from checks skipped due to timeout of 300000ms (3)
- GitHub Check: Test build on windows-latest
- GitHub Check: Test build on macos-latest
- GitHub Check: Test build on ubuntu-latest
🔇 Additional comments (24)
holidays/registry.py (1)
98-98
: Register Guyana entry
The new"guyana": ("Guyana", "GY", "GUY")
aligns with existing patterns and is correctly sorted after"guinea"
. No duplicates found.README.md (2)
108-108
: Update supported country count
Incremented to 186 to reflect the addition of Guyana. Confirm that any automated checks or badges tied to country count are in sync.
668-673
: Add Guyana to supported countries table
Row formatting is consistent with other entries. Subdivisions left blank and languages (en_GY
,en_US
) match locale files.holidays/countries/__init__.py (1)
94-94
: Expose Guyana in package namespace
Import ofGuyana, GY, GUY
is correct and follows the alias pattern established for other countries.holidays/locale/en_GY/LC_MESSAGES/GY.po (1)
1-28
: Verify PO file headers
Headers correctly specify theen_GY
locale. EnsureLanguage: en_GY
and related metadata remain aligned if the file is regenerated.holidays/locale/en_US/LC_MESSAGES/GY.po (1)
29-96
: US-English translations look good
msgstr
reflects American variants (e.g., “Labor Day”). Verify consistency of all entries and consider adjusting any regional names if needed.tests/countries/test_guyana.py (14)
19-23
: Test class setup looks good!The test class properly inherits from CommonCountryTests and sets up the correct year ranges for testing Guyana holidays from 1968 onwards.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 19-19: Missing class docstring
(C0115)
[warning] 21-21: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestGuyana.setUpClass' method
(W0221)
25-26
: Country aliases test is correct.Properly verifies GY and GUY as valid aliases.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 25-25: Missing function or method docstring
(C0116)
28-29
: Pre-1968 holiday test is accurate.Correctly validates no holidays exist before the start year.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 28-28: Missing function or method docstring
(C0116)
31-33
: Special holiday test matches implementation.Validates the 2020 public holiday correctly.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 31-31: Missing function or method docstring
(C0116)
35-44
: New Year's Day test is comprehensive.Correctly tests both the regular holiday and observed dates when falling on weekends.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 35-35: Missing function or method docstring
(C0116)
45-48
: Independence Day date range is correct.Properly validates the holiday only exists in 1968-1969.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 45-45: Missing function or method docstring
(C0116)
50-52
: Republic Day test aligns with historical transition.Correctly starts from 1970 when Guyana became a republic.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 50-50: Missing function or method docstring
(C0116)
54-81
: Christian holiday tests are well-structured.Good Friday and Easter Monday tests properly validate movable holidays with specific date checks.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 54-54: Missing function or method docstring
(C0116)
[convention] 68-68: Missing function or method docstring
(C0116)
82-87
: Labour Day test handles observance correctly.Validates both regular and observed dates appropriately.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 82-82: Missing function or method docstring
(C0116)
89-94
: Commonwealth Day test validates first Monday of August.Dates correctly represent the holiday timing.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 89-89: Missing function or method docstring
(C0116)
96-119
: Christmas holiday tests properly handle consecutive days.Both Christmas Day and Day after Christmas correctly apply the SAT_SUN_TO_NEXT_MON_TUE observance rule.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 96-96: Missing function or method docstring
(C0116)
[convention] 110-110: Missing function or method docstring
(C0116)
138-187
: Religious holiday tests are comprehensive.Deepavali, Youman Nabi, and Eid-Ul-Azha tests properly validate dates and observances.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 138-138: Missing function or method docstring
(C0116)
[convention] 157-157: Missing function or method docstring
(C0116)
[convention] 173-173: Missing function or method docstring
(C0116)
189-204
: 2024 snapshot test provides good coverage.Complete holiday list for a single year helps validate the full calendar.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 189-189: Missing function or method docstring
(C0116)
206-237
: Localization tests validate regional naming differences.Correctly tests both en_GY and en_US translations with appropriate variations.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 206-206: Missing function or method docstring
(C0116)
[convention] 222-222: Missing function or method docstring
(C0116)
holidays/countries/guyana.py (4)
32-39
: Class inheritance structure is appropriate.The multiple inheritance properly combines all needed holiday types for Guyana.
🧰 Tools
🪛 Pylint (3.3.7)
[refactor] 32-32: Too many ancestors (8/7)
(R0901)
76-124
: Holiday definitions are comprehensive and accurate.All holidays are properly defined with appropriate observance rules matching Guyana's calendar.
163-189
: Verify Diwali dates from 2001-2015.All Diwali dates from 2001-2015 are listed as October 30, which seems unusual for a lunar calendar holiday that typically varies each year.
Please verify these dates are correct according to the referenced source. If this is accurate, consider adding a comment explaining why the date was fixed for those years.
252-263
: Static holidays class properly handles special occasions.Correctly implements the 2020 special public holiday with proper documentation reference.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 256-256: Line too long (157/100)
(C0301)
[refactor] 252-252: Too few public methods (0/2)
(R0903)
I didn't find any acts or amendments making these changes permanent, but wikipedia and other sources do include these changes. Should these changes be made as special/static holidays or added as normal public holidays? |
There was a problem hiding this 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)
holidays/locale/en_US/LC_MESSAGES/GY.po (1)
22-22
: Good fix on the locale metadata.The Language header now correctly shows
en_US
to match the file's location.tests/countries/test_guyana.py (1)
133-133
: Year range properly includes 2026.Good fix - the range now correctly covers all tested years.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (3)
holidays/countries/guyana.py
(1 hunks)holidays/locale/en_US/LC_MESSAGES/GY.po
(1 hunks)tests/countries/test_guyana.py
(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
tests/countries/test_guyana.py (2)
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.
Learnt from: KJhellico
PR: vacanza/holidays#2530
File: tests/countries/test_andorra.py:23-28
Timestamp: 2025-05-06T21:07:11.577Z
Learning: In the holidays project, test methods for country holidays follow a standard form where year ranges are explicitly recreated in each test method rather than being stored as class variables, to maintain consistency across all country tests.
holidays/countries/guyana.py (1)
Learnt from: PPsyrius
PR: vacanza/holidays#2583
File: holidays/countries/niger.py:71-71
Timestamp: 2025-05-31T03:21:53.257Z
Learning: In the holidays Python library, the standard pattern for country class __init__ methods is to have keyword arguments with defaults before *args and **kwargs, such as `def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):`. This pattern is used consistently across all country implementations and should not be flagged as an issue.
🪛 Pylint (3.3.7)
tests/countries/test_guyana.py
[convention] 1-1: Missing module docstring
(C0114)
[convention] 19-19: Missing class docstring
(C0115)
[warning] 21-21: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestGuyana.setUpClass' method
(W0221)
[convention] 25-25: Missing function or method docstring
(C0116)
[convention] 28-28: Missing function or method docstring
(C0116)
[convention] 31-31: Missing function or method docstring
(C0116)
[convention] 35-35: Missing function or method docstring
(C0116)
[convention] 45-45: Missing function or method docstring
(C0116)
[convention] 50-50: Missing function or method docstring
(C0116)
[convention] 54-54: 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] 89-89: 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] 121-121: Missing function or method docstring
(C0116)
[convention] 138-138: Missing function or method docstring
(C0116)
[convention] 157-157: Missing function or method docstring
(C0116)
[convention] 173-173: Missing function or method docstring
(C0116)
[convention] 189-189: Missing function or method docstring
(C0116)
[convention] 206-206: Missing function or method docstring
(C0116)
[convention] 222-222: Missing function or method docstring
(C0116)
holidays/countries/guyana.py
[convention] 43-43: Line too long (173/100)
(C0301)
[convention] 44-44: Line too long (160/100)
(C0301)
[convention] 45-45: Line too long (133/100)
(C0301)
[convention] 256-256: Line too long (157/100)
(C0301)
[convention] 1-1: Missing module docstring
(C0114)
[refactor] 32-32: Too many ancestors (8/7)
(R0901)
[convention] 127-127: Missing class docstring
(C0115)
[refactor] 127-127: Too many ancestors (9/7)
(R0901)
[convention] 131-131: Missing class docstring
(C0115)
[refactor] 131-131: Too many ancestors (9/7)
(R0901)
[convention] 135-135: Missing class docstring
(C0115)
[convention] 192-192: Missing class docstring
(C0115)
[refactor] 252-252: 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/guyana.py (1)
159-160
: 🧹 Nitpick (assertive)Consider extending holiday date tables beyond 2025-2026.
The Hindu and Islamic holiday date tables only extend to 2025-2026, but the test coverage goes to 2050. This might cause issues for future years.
Consider extending these date tables or implementing a calculation method for years beyond the hardcoded dates.
Also applies to: 188-189, 219-220, 248-249
⛔ Skipped due to learnings
Learnt from: PPsyrius PR: vacanza/holidays#2354 File: holidays/countries/fiji.py:146-159 Timestamp: 2025-03-19T16:54:58.657Z Learning: In the holidays library implementation, explicit holiday dates (like Diwali in Fiji) are only defined for historical years with official sources (2016-2025). Future dates beyond the explicitly defined range are automatically calculated by methods like `_add_diwali`, which provide approximations when official dates aren't yet available.
Learnt from: KJhellico PR: vacanza/holidays#2354 File: holidays/countries/fiji.py:171-183 Timestamp: 2025-03-29T15:15:05.919Z Learning: In the Fiji holidays implementation, the maintainers are aware of the need to extend the MAWLID_DATES dictionary beyond 2025 when future official references become available, and will do so when appropriate. No suggestions about extending this dictionary should be made in future reviews.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Besides this and bot's comment - I think this PR is pretty much LGTM 👍
IMO if it's de facto an annual thing by this point, we can probably include it as normal public holidays with context provide in the code 👀 |
Co-authored-by: ~Jhellico <KJhellico@users.noreply.github.com> Signed-off-by: Kriti Birda <164247895+kritibirda26@users.noreply.github.com>
There was a problem hiding this 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 (3)
holidays/countries/guyana.py (3)
59-59
: Fix parameter order in init method.Move
islamic_show_estimated
before*args
to match the standard library pattern.- def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): + def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
100-110
: Simplify Christmas holiday additions.Use the more concise form as suggested in previous reviews.
- self._add_observed( - # Christmas Day. - self._add_christmas_day(tr("Christmas Day")), - rule=SAT_SUN_TO_NEXT_MON_TUE, - ) - - self._add_observed( - # Day after Christmas. - self._add_christmas_day_two(tr("Day after Christmas")), - rule=SAT_SUN_TO_NEXT_MON_TUE, - ) + self._add_observed( + # Christmas Day. + self._add_christmas_day(tr("Christmas Day")), + rule=SAT_SUN_TO_NEXT_MON_TUE, + ) + + self._add_observed( + # Day after Christmas. + self._add_christmas_day_two(tr("Day after Christmas")), + rule=SAT_SUN_TO_NEXT_MON_TUE, + )
167-181
: Fix incorrect Diwali dates for 2001-2015.All Diwali dates from 2001-2015 are set to October 30, which is incorrect. Diwali follows the lunar calendar and varies each year.
- 2001: (OCT, 30), - 2002: (OCT, 30), - 2003: (OCT, 30), - 2004: (OCT, 30), - 2005: (OCT, 30), - 2006: (OCT, 30), - 2007: (OCT, 30), - 2008: (OCT, 30), - 2009: (OCT, 30), - 2010: (OCT, 30), - 2011: (OCT, 30), - 2012: (OCT, 30), - 2013: (OCT, 30), - 2014: (OCT, 30), - 2015: (OCT, 30), + 2001: (NOV, 14), + 2002: (NOV, 4), + 2003: (OCT, 25), + 2004: (NOV, 12), + 2005: (NOV, 1), + 2006: (OCT, 21), + 2007: (NOV, 9), + 2008: (OCT, 28), + 2009: (OCT, 17), + 2010: (NOV, 5), + 2011: (OCT, 26), + 2012: (NOV, 13), + 2013: (NOV, 3), + 2014: (OCT, 23), + 2015: (NOV, 11),
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (1)
holidays/countries/guyana.py
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
holidays/countries/guyana.py (1)
Learnt from: KJhellico
PR: vacanza/holidays#2354
File: holidays/countries/fiji.py:63-70
Timestamp: 2025-03-23T10:11:50.465Z
Learning: In the holidays library, the `SAT_SUN_TO_NEXT_MON_TUE` rule is specifically used for consecutive holidays (like Christmas Day and Boxing Day) to ensure they're observed on separate weekdays (Monday and Tuesday) when they fall on weekends, while `SAT_SUN_TO_NEXT_MON` is used as the default rule for other holidays.
🪛 Ruff (0.11.9)
holidays/countries/guyana.py
26-26: holidays.observed_holiday_base.SAT_SUN_TO_NEXT_WORKDAY
imported but unused
Remove unused import: holidays.observed_holiday_base.SAT_SUN_TO_NEXT_WORKDAY
(F401)
78-78: Undefined name SAT_SUN_TO_NEXT_MON
(F821)
🪛 Pylint (3.3.7)
holidays/countries/guyana.py
[convention] 43-43: Line too long (173/100)
(C0301)
[convention] 44-44: Line too long (160/100)
(C0301)
[convention] 45-45: Line too long (133/100)
(C0301)
[convention] 259-259: Line too long (157/100)
(C0301)
[convention] 1-1: Missing module docstring
(C0114)
[refactor] 32-32: Too many ancestors (8/7)
(R0901)
[error] 78-78: Undefined variable 'SAT_SUN_TO_NEXT_MON'
(E0602)
[convention] 130-130: Missing class docstring
(C0115)
[refactor] 130-130: Too many ancestors (9/7)
(R0901)
[convention] 134-134: Missing class docstring
(C0115)
[refactor] 134-134: Too many ancestors (9/7)
(R0901)
[convention] 138-138: Missing class docstring
(C0115)
[convention] 195-195: Missing class docstring
(C0115)
[refactor] 255-255: Too few public methods (0/2)
(R0903)
[warning] 24-29: Unused SAT_SUN_TO_NEXT_WORKDAY imported from holidays.observed_holiday_base
(W0611)
🔇 Additional comments (1)
holidays/countries/guyana.py (1)
255-267
: Well-structured static holidays implementation.The special holidays class follows the library pattern correctly with proper gazette reference.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 259-259: Line too long (157/100)
(C0301)
[refactor] 255-255: Too few public methods (0/2)
(R0903)
There was a problem hiding this 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
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (4)
holidays/countries/guyana.py
(1 hunks)holidays/locale/en_GY/LC_MESSAGES/GY.po
(1 hunks)holidays/locale/en_US/LC_MESSAGES/GY.po
(1 hunks)tests/countries/test_guyana.py
(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
tests/countries/test_guyana.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/guyana.py (2)
Learnt from: KJhellico
PR: vacanza/holidays#2354
File: holidays/countries/fiji.py:63-70
Timestamp: 2025-03-23T10:11:50.465Z
Learning: In the holidays library, the `SAT_SUN_TO_NEXT_MON_TUE` rule is specifically used for consecutive holidays (like Christmas Day and Boxing Day) to ensure they're observed on separate weekdays (Monday and Tuesday) when they fall on weekends, while `SAT_SUN_TO_NEXT_MON` is used as the default rule for other holidays.
Learnt from: Wasif-Shahzad
PR: vacanza/holidays#2409
File: holidays/countries/qatar.py:27-46
Timestamp: 2025-04-03T16:58:27.175Z
Learning: In the holidays library, method names like `_add_holiday_2nd_tue_of_feb()` and `_add_holiday_1st_sun_of_mar()` use calendar constants internally through parent class implementations even when these constants don't appear directly in the file. Removing imports that seem unused based on a simple text search could break functionality.
🧬 Code Graph Analysis (1)
tests/countries/test_guyana.py (2)
tests/common.py (8)
TestCase
(28-338)CommonCountryTests
(356-374)assertAliases
(121-130)assertNoHolidays
(292-294)assertHolidayName
(195-199)assertNoNonObservedHoliday
(248-250)assertHolidays
(228-230)assertLocalizedHolidays
(327-338)holidays/countries/guyana.py (3)
Guyana
(32-127)GY
(130-131)GUY
(134-135)
🪛 Pylint (3.3.7)
tests/countries/test_guyana.py
[convention] 1-1: Missing module docstring
(C0114)
[convention] 19-19: Missing class docstring
(C0115)
[warning] 21-21: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestGuyana.setUpClass' method
(W0221)
[convention] 25-25: Missing function or method docstring
(C0116)
[convention] 28-28: Missing function or method docstring
(C0116)
[convention] 31-31: Missing function or method docstring
(C0116)
[convention] 35-35: Missing function or method docstring
(C0116)
[convention] 45-45: Missing function or method docstring
(C0116)
[convention] 50-50: Missing function or method docstring
(C0116)
[convention] 54-54: 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] 89-89: 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] 121-121: Missing function or method docstring
(C0116)
[convention] 138-138: Missing function or method docstring
(C0116)
[convention] 157-157: Missing function or method docstring
(C0116)
[convention] 173-173: Missing function or method docstring
(C0116)
[convention] 189-189: Missing function or method docstring
(C0116)
[convention] 206-206: Missing function or method docstring
(C0116)
[convention] 222-222: Missing function or method docstring
(C0116)
holidays/countries/guyana.py
[convention] 43-43: Line too long (173/100)
(C0301)
[convention] 44-44: Line too long (160/100)
(C0301)
[convention] 45-45: Line too long (133/100)
(C0301)
[convention] 244-244: Line too long (157/100)
(C0301)
[convention] 1-1: Missing module docstring
(C0114)
[refactor] 32-32: Too many ancestors (8/7)
(R0901)
[convention] 130-130: Missing class docstring
(C0115)
[refactor] 130-130: Too many ancestors (9/7)
(R0901)
[convention] 134-134: Missing class docstring
(C0115)
[refactor] 134-134: Too many ancestors (9/7)
(R0901)
[convention] 138-138: Missing class docstring
(C0115)
[convention] 180-180: Missing class docstring
(C0115)
[refactor] 240-240: Too few public methods (0/2)
(R0903)
🔇 Additional comments (3)
holidays/locale/en_GY/LC_MESSAGES/GY.po (1)
1-99
: LGTM!The PO file structure is correct. Empty msgstr values are appropriate here since the msgids already contain the English text for the en_GY locale.
holidays/locale/en_US/LC_MESSAGES/GY.po (1)
1-99
: Translations look good!The en_US translations are appropriate, using common US English names for the holidays.
tests/countries/test_guyana.py (1)
19-237
: Well-structured test suite!The tests follow the project's best practices by organizing tests per holiday and covering the full date range.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 19-19: Missing class docstring
(C0115)
[warning] 21-21: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestGuyana.setUpClass' method
(W0221)
[convention] 25-25: Missing function or method docstring
(C0116)
[convention] 28-28: Missing function or method docstring
(C0116)
[convention] 31-31: Missing function or method docstring
(C0116)
[convention] 35-35: Missing function or method docstring
(C0116)
[convention] 45-45: Missing function or method docstring
(C0116)
[convention] 50-50: Missing function or method docstring
(C0116)
[convention] 54-54: 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] 89-89: 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] 121-121: Missing function or method docstring
(C0116)
[convention] 138-138: Missing function or method docstring
(C0116)
[convention] 157-157: Missing function or method docstring
(C0116)
[convention] 173-173: Missing function or method docstring
(C0116)
[convention] 189-189: Missing function or method docstring
(C0116)
[convention] 206-206: Missing function or method docstring
(C0116)
[convention] 222-222: Missing function or method docstring
(C0116)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (7)
README.md
(2 hunks)holidays/countries/__init__.py
(1 hunks)holidays/countries/guyana.py
(1 hunks)holidays/locale/en_GY/LC_MESSAGES/GY.po
(1 hunks)holidays/locale/en_US/LC_MESSAGES/GY.po
(1 hunks)holidays/registry.py
(1 hunks)tests/countries/test_guyana.py
(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
tests/countries/test_guyana.py (2)
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.
Learnt from: KJhellico
PR: vacanza/holidays#2530
File: tests/countries/test_andorra.py:23-28
Timestamp: 2025-05-06T21:07:11.577Z
Learning: In the holidays project, test methods for country holidays follow a standard form where year ranges are explicitly recreated in each test method rather than being stored as class variables, to maintain consistency across all country tests.
holidays/countries/guyana.py (2)
Learnt from: KJhellico
PR: vacanza/holidays#2354
File: holidays/countries/fiji.py:63-70
Timestamp: 2025-03-23T10:11:50.465Z
Learning: In the holidays library, the `SAT_SUN_TO_NEXT_MON_TUE` rule is specifically used for consecutive holidays (like Christmas Day and Boxing Day) to ensure they're observed on separate weekdays (Monday and Tuesday) when they fall on weekends, while `SAT_SUN_TO_NEXT_MON` is used as the default rule for other holidays.
Learnt from: Wasif-Shahzad
PR: vacanza/holidays#2409
File: holidays/countries/qatar.py:27-46
Timestamp: 2025-04-03T16:58:27.175Z
Learning: In the holidays library, method names like `_add_holiday_2nd_tue_of_feb()` and `_add_holiday_1st_sun_of_mar()` use calendar constants internally through parent class implementations even when these constants don't appear directly in the file. Removing imports that seem unused based on a simple text search could break functionality.
🧬 Code Graph Analysis (2)
holidays/countries/__init__.py (1)
holidays/countries/guyana.py (3)
Guyana
(32-157)GY
(160-161)GUY
(164-165)
tests/countries/test_guyana.py (2)
tests/common.py (8)
TestCase
(28-338)CommonCountryTests
(356-374)assertAliases
(121-130)assertNoHolidays
(292-294)assertHolidayName
(195-199)assertNoNonObservedHoliday
(248-250)assertHolidays
(228-230)assertLocalizedHolidays
(327-338)holidays/countries/guyana.py (3)
Guyana
(32-157)GY
(160-161)GUY
(164-165)
🪛 Pylint (3.3.7)
tests/countries/test_guyana.py
[convention] 1-1: Missing module docstring
(C0114)
[convention] 19-19: Missing class docstring
(C0115)
[warning] 21-21: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestGuyana.setUpClass' method
(W0221)
[convention] 25-25: Missing function or method docstring
(C0116)
[convention] 28-28: Missing function or method docstring
(C0116)
[convention] 31-31: Missing function or method docstring
(C0116)
[convention] 35-35: Missing function or method docstring
(C0116)
[convention] 45-45: Missing function or method docstring
(C0116)
[convention] 54-54: Missing function or method docstring
(C0116)
[convention] 58-58: Missing function or method docstring
(C0116)
[convention] 72-72: Missing function or method docstring
(C0116)
[convention] 86-86: Missing function or method docstring
(C0116)
[convention] 93-93: Missing function or method docstring
(C0116)
[convention] 101-101: Missing function or method docstring
(C0116)
[convention] 109-109: Missing function or method docstring
(C0116)
[convention] 124-124: Missing function or method docstring
(C0116)
[convention] 138-138: Missing function or method docstring
(C0116)
[convention] 149-149: Missing function or method docstring
(C0116)
[convention] 166-166: Missing function or method docstring
(C0116)
[convention] 185-185: Missing function or method docstring
(C0116)
[convention] 201-201: Missing function or method docstring
(C0116)
[convention] 217-217: Missing function or method docstring
(C0116)
[convention] 238-238: Missing function or method docstring
(C0116)
[convention] 257-257: Missing function or method docstring
(C0116)
[refactor] 19-19: Too many public methods (22/20)
(R0904)
holidays/countries/guyana.py
[convention] 43-43: Line too long (173/100)
(C0301)
[convention] 44-44: Line too long (160/100)
(C0301)
[convention] 45-45: Line too long (176/100)
(C0301)
[convention] 50-50: Line too long (182/100)
(C0301)
[convention] 51-51: Line too long (175/100)
(C0301)
[convention] 53-53: Line too long (182/100)
(C0301)
[convention] 54-54: Line too long (177/100)
(C0301)
[convention] 56-56: Line too long (181/100)
(C0301)
[convention] 57-57: Line too long (175/100)
(C0301)
[convention] 61-61: Line too long (182/100)
(C0301)
[convention] 62-62: Line too long (180/100)
(C0301)
[convention] 274-274: Line too long (157/100)
(C0301)
[convention] 1-1: Missing module docstring
(C0114)
[refactor] 32-32: Too many ancestors (8/7)
(R0901)
[convention] 160-160: Missing class docstring
(C0115)
[refactor] 160-160: Too many ancestors (9/7)
(R0901)
[convention] 164-164: Missing class docstring
(C0115)
[refactor] 164-164: Too many ancestors (9/7)
(R0901)
[convention] 168-168: Missing class docstring
(C0115)
[convention] 210-210: Missing class docstring
(C0115)
[refactor] 270-270: Too few public methods (0/2)
(R0903)
🔇 Additional comments (8)
README.md (1)
108-108
: Approve country count update
Supported countries incremented to 187, and the Guyana entry (GY) is correctly inserted before Haiti.holidays/registry.py (1)
98-98
: Approve registry entry
Guyana has been added to theCOUNTRIES
dictionary with the correct ISO codes and alphabetical placement between Guinea and Haiti.holidays/countries/__init__.py (1)
94-94
: Approve import addition
The Guyana class and its aliasesGY
andGUY
are imported in the correct sequence alongside other countries.holidays/locale/en_GY/LC_MESSAGES/GY.po (2)
22-22
: Verify locale header
The headerLanguage: en_GY
is correctly set for the Guyana English locale.
29-110
: 🧹 Nitpick (assertive)Populate translations
Allmsgstr
entries are currently empty—consider initializing them to match theirmsgid
values to ensure consistent output for theen_GY
locale.⛔ Skipped due to learnings
Learnt from: KJhellico PR: vacanza/holidays#2259 File: holidays/locale/en_IN/LC_MESSAGES/IN.po:30-299 Timestamp: 2025-03-05T17:51:00.633Z Learning: In the Holidays project, .po files for a country's default locale use empty msgstr fields as a standard convention.
Learnt from: KJhellico PR: vacanza/holidays#2394 File: holidays/locale/pt_PT/LC_MESSAGES/CV.po:31-88 Timestamp: 2025-03-31T19:37:57.691Z Learning: In the holidays library, when a locale file matches the country's default language (e.g., pt_PT for Cape Verde), the msgstr fields should be left empty. Only non-default language files should have filled msgstr fields with translations.
holidays/locale/en_US/LC_MESSAGES/GY.po (2)
22-22
: Approve metadata correction
The header now correctly specifiesLanguage: en_US
.
29-110
: Approve translation content
Allmsgstr
entries accurately reflect US English translations of Guyana holiday names and labels.holidays/countries/guyana.py (1)
169-169
: Well-documented holiday sourcesGood practice using archived references for all holiday date tables. This ensures the sources remain accessible even if the original URLs change.
Also applies to: 195-195, 211-211, 240-240
Co-authored-by: ~Jhellico <KJhellico@users.noreply.github.com> Signed-off-by: Kriti Birda <164247895+kritibirda26@users.noreply.github.com>
There was a problem hiding this 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/guyana.py (2)
78-90
:⚠️ Potential issueConstructor signature still deviates from the library-wide pattern
Previous review already highlighted that keyword parameters with defaults (here
islamic_show_estimated
) should precede*args
for country classes (def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):
).
The change never landed and the current order can break callers that pass positional arguments afteryear
.- def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs): + def __init__(self, islamic_show_estimated: bool = True, *args, **kwargs):This keeps Guyana consistent with Benin, Fiji, Iran, etc.
148-151
: 🧹 Nitpick (assertive)
⚠️ Potential issueHard-coding Diwali to 30 Oct for pre-2016 years is historically wrong
Diwali is a lunar festival; the date swings ~20 days year-to-year.
Leaving a blanket fallback to_add_holiday_oct_30(name)
inserts incorrect holidays for 1968-2015 and will mislead consumers.Two options:
- Drop the fallback and rely solely on
_add_diwali
, extendingDIWALI_DATES
down to the earliest verified year.- If exact dates are unavailable, omit the holiday for those years until sourced.
- self._add_observed( - self._add_diwali(name) if self._year >= 2016 else self._add_holiday_oct_30(name) - ) + self._add_observed(self._add_diwali(name))Please update
DIWALI_DATES
(2001-2015 at minimum) or remove the holiday for unverified years.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (1)
holidays/countries/guyana.py
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
holidays/countries/guyana.py (2)
Learnt from: KJhellico
PR: vacanza/holidays#2354
File: holidays/countries/fiji.py:63-70
Timestamp: 2025-03-23T10:11:50.465Z
Learning: In the holidays library, the `SAT_SUN_TO_NEXT_MON_TUE` rule is specifically used for consecutive holidays (like Christmas Day and Boxing Day) to ensure they're observed on separate weekdays (Monday and Tuesday) when they fall on weekends, while `SAT_SUN_TO_NEXT_MON` is used as the default rule for other holidays.
Learnt from: Wasif-Shahzad
PR: vacanza/holidays#2409
File: holidays/countries/qatar.py:27-46
Timestamp: 2025-04-03T16:58:27.175Z
Learning: In the holidays library, method names like `_add_holiday_2nd_tue_of_feb()` and `_add_holiday_1st_sun_of_mar()` use calendar constants internally through parent class implementations even when these constants don't appear directly in the file. Removing imports that seem unused based on a simple text search could break functionality.
🧬 Code Graph Analysis (1)
holidays/countries/guyana.py (8)
holidays/calendars/hindu.py (1)
_CustomHinduHolidays
(1493-1494)holidays/calendars/islamic.py (1)
_CustomIslamicHolidays
(4042-4043)holidays/groups/christian.py (5)
ChristianHolidays
(22-463)_add_good_friday
(308-317)_add_easter_monday
(259-268)_add_christmas_day
(208-216)_add_christmas_day_two
(218-226)holidays/groups/hindu.py (3)
HinduCalendarHolidays
(21-481)_add_holi
(226-235)_add_diwali
(99-109)holidays/groups/international.py (3)
InternationalHolidays
(18-220)_add_new_years_day
(126-134)_add_labor_day
(99-108)holidays/groups/islamic.py (3)
IslamicHolidays
(20-436)_add_mawlid_day
(339-349)_add_eid_al_adha_day
(109-120)holidays/groups/custom.py (1)
StaticHolidays
(18-47)holidays/observed_holiday_base.py (1)
ObservedHolidayBase
(101-243)
🪛 Pylint (3.3.7)
holidays/countries/guyana.py
[convention] 43-43: Line too long (173/100)
(C0301)
[convention] 44-44: Line too long (160/100)
(C0301)
[convention] 45-45: Line too long (176/100)
(C0301)
[convention] 52-52: Line too long (178/100)
(C0301)
[convention] 53-53: Line too long (171/100)
(C0301)
[convention] 55-55: Line too long (178/100)
(C0301)
[convention] 56-56: Line too long (173/100)
(C0301)
[convention] 58-58: Line too long (177/100)
(C0301)
[convention] 59-59: Line too long (171/100)
(C0301)
[convention] 63-63: Line too long (178/100)
(C0301)
[convention] 64-64: Line too long (176/100)
(C0301)
[convention] 276-276: Line too long (157/100)
(C0301)
[convention] 1-1: Missing module docstring
(C0114)
[refactor] 32-32: Too many ancestors (8/7)
(R0901)
[convention] 162-162: Missing class docstring
(C0115)
[refactor] 162-162: Too many ancestors (9/7)
(R0901)
[convention] 166-166: Missing class docstring
(C0115)
[refactor] 166-166: Too many ancestors (9/7)
(R0901)
[convention] 170-170: Missing class docstring
(C0115)
[convention] 212-212: Missing class docstring
(C0115)
[refactor] 272-272: 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
There was a problem hiding this 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
📒 Files selected for processing (1)
holidays/countries/guyana.py
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
holidays/countries/guyana.py (3)
Learnt from: PPsyrius
PR: vacanza/holidays#2614
File: holidays/countries/guyana.py:78-90
Timestamp: 2025-06-13T12:18:03.531Z
Learning: The holidays codebase now uses the constructor signature pattern `__init__(self, *args, islamic_show_estimated: bool = True, **kwargs)` across country classes.
Learnt from: KJhellico
PR: vacanza/holidays#2354
File: holidays/countries/fiji.py:63-70
Timestamp: 2025-03-23T10:11:50.465Z
Learning: In the holidays library, the `SAT_SUN_TO_NEXT_MON_TUE` rule is specifically used for consecutive holidays (like Christmas Day and Boxing Day) to ensure they're observed on separate weekdays (Monday and Tuesday) when they fall on weekends, while `SAT_SUN_TO_NEXT_MON` is used as the default rule for other holidays.
Learnt from: Wasif-Shahzad
PR: vacanza/holidays#2409
File: holida
F438
ys/countries/qatar.py:27-46
Timestamp: 2025-04-03T16:58:27.175Z
Learning: In the holidays library, method names like `_add_holiday_2nd_tue_of_feb()` and `_add_holiday_1st_sun_of_mar()` use calendar constants internally through parent class implementations even when these constants don't appear directly in the file. Removing imports that seem unused based on a simple text search could break functionality.
🪛 Pylint (3.3.7)
holidays/countries/guyana.py
[convention] 43-43: Line too long (173/100)
(C0301)
[convention] 44-44: Line too long (160/100)
(C0301)
[convention] 45-45: Line too long (176/100)
(C0301)
[convention] 52-52: Line too long (177/100)
(C0301)
[convention] 53-53: Line too long (170/100)
(C0301)
[convention] 55-55: Line too long (177/100)
(C0301)
[convention] 56-56: Line too long (172/100)
(C0301)
[convention] 58-58: Line too long (176/100)
(C0301)
[convention] 59-59: Line too long (170/100)
(C0301)
[convention] 63-63: Line too long (177/100)
(C0301)
[convention] 64-64: Line too long (175/100)
(C0301)
[convention] 273-273: Line too long (157/100)
(C0301)
[convention] 1-1: Missing module docstring
(C0114)
[refactor] 32-32: Too many ancestors (8/7)
(R0901)
[convention] 159-159: Missing class docstring
(C0115)
[refactor] 159-159: Too many ancestors (9/7)
(R0901)
[convention] 163-163: Missing class docstring
(C0115)
[refactor] 163-163: Too many ancestors (9/7)
(R0901)
[convention] 167-167: Missing class docstring
(C0115)
[convention] 209-209: Missing class docstring
(C0115)
[refactor] 269-269: Too few public methods (0/2)
(R0903)
⏰ Context from checks skipped due to timeout of 300000ms (2)
- GitHub Check: Test Python 3.13 on windows-latest
- GitHub Check: Test Python 3.10 on windows-latest
Co-authored-by: ~Jhellico <KJhellico@users.noreply.github.com> Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
There was a problem hiding this 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
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (1)
holidays/countries/guyana.py
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
holidays/countries/guyana.py (4)
Learnt from: PPsyrius
PR: vacanza/holidays#2614
File: holidays/countries/guyana.py:78-90
Timestamp: 2025-06-13T12:18:03.531Z
Learning: The holidays codebase now uses the constructor signature pattern `__init__(self, *args, islamic_show_estimated: bool = True, **kwargs)` across country classes.
Learnt from: KJhellico
PR: vacanza/holidays#2354
File: holidays/countries/fiji.py:63-70
Timestamp: 2025-03-23T10:11:50.465Z
Learning: In the holidays library, the `SAT_SUN_TO_NEXT_MON_TUE` rule is specifically used for consecutive holidays (like Christmas Day and Boxing Day) to ensure they're observed on separate weekdays (Monday and Tuesday) when they fall on weekends, while `SAT_SUN_TO_NEXT_MON` is used as the default rule for other holidays.
Learnt from: Wasif-Shahzad
PR: vacanza/holidays#2409
File: holidays/countries/qatar.py:27-46
Timestamp: 2025-04-03T16:58:27.175Z
Learning: In the holidays library, method names like `_add_holiday_2nd_tue_of_feb()` and `_add_holiday_1st_sun_of_mar()` use calendar constants internally through parent class implementations even when these constants don't appear directly in the file. Removing imports that seem unused based on a simple text search could break functionality.
Learnt from: KJhellico
PR: vacanza/holidays#2614
File: holidays/countries/guyana.py:124-130
Timestamp: 2025-06-14T18:58:55.477Z
Learning: In Guyana's holidays implementation (holidays/countries/guyana.py), Emancipation Day should be implemented as a fixed-date holiday on August 1st with weekend observance rules, not as the first Monday of August. This is confirmed by official Guyana Ministry of Home Affairs sources.
🪛 Pylint (3.3.7)
holidays/countries/guyana.py
[convention] 43-43: Line too long (173/100)
(C0301)
[convention] 44-44: Line too long (160/100)
(C0301)
[convention] 45-45: Line too long (176/100)
(C0301)
[convention] 52-52: Line too long (177/100)
(C0301)
[convention] 53-53: Line too long (170/100)
(C0301)
[convention] 55-55: Line too long (177/100)
(C0301)
[convention] 56-56: Line too long (172/100)
(C0301)
[convention] 58-58: Line too long (176/100)
(C0301)
[convention] 59-59: Line too long (170/100)
(C0301)
[convention] 63-63: Line too long (177/100)
(C0301)
[convention] 64-64: Line too long (175/100)
(C0301)
[convention] 272-272: Line too long (157/100)
(C0301)
[convention] 1-1: Missing module docstring
(C0114)
[refactor] 32-32: Too many ancestors (8/7)
(R0901)
[convention] 158-158: Missing class docstring
(C0115)
[refactor] 158-158: Too many ancestors (9/7)
(R0901)
[convention] 162-162: Missing class docstring
(C0115)
[refactor] 162-162: Too many ancestors (9/7)
(R0901)
[convention] 166-166: Missing class docstring
(C0115)
[convention] 208-208: Missing class docstring
(C0115)
[refactor] 268-268: Too few public methods (0/2)
(R0903)
🔇 Additional comments (4)
holidays/countries/guyana.py (4)
92-93
: Default observed rule skips Saturday
The module-wideobserved_rule
is set toSUN_TO_NEXT_MON
, so fixed-date holidays that fall on a Saturday stay on Saturday. Most country classes useSAT_SUN_TO_NEXT_MON
as the baseline and override only when needed. Please double-check Guyana’s legislation; if Saturday observance should also move, switch the default constant.
113-118
: Labour / Arrival Day observance may miss Saturday shift
Both holidays are wrapped in_add_observed(...)
without an explicit rule, hence inherit the Sunday-only behaviour above. If the Saturday-to-Monday rule applies (see other Gazette examples), passrule=SAT_SUN_TO_NEXT_MON
.
124-129
: Emancipation Day: confirm Saturday handling
Aug 1 can land on Saturday (e.g. 2026). With the current settings it will not move to Monday. Verify with Gazette notices; if Monday observance is expected, addrule=SAT_SUN_TO_NEXT_MON
.
168-178
: Possible incorrect Deepavali 2024 date
Diwali 2024 is widely listed as 1 Nov (India) / 31 Oct in some Caribbean sources. Please confirm the Guyana proclamation—if 1 Nov is correct, updateDIWALI_INDIA_DATES[2024]
.
There was a problem hiding this 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
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (2)
holidays/countries/guyana.py
(1 hunks)tests/countries/test_guyana.py
(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
tests/countries/test_guyana.py (4)
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.
Learnt from: PPsyrius
PR: vacanza/holidays#2629
File: tests/countries/test_namibia.py:22-23
Timestamp: 2025-06-14T10:58:43.618Z
Learning: In the vacanza/holidays project, country test files consistently use range(start_year, 2050) which intentionally excludes 2050 and stops at 2049. This is a library-wide implementation pattern, not an off-by-one error.
Learnt from: PPsyrius
PR: vacanza/holidays#2386
File: tests/countries/test_nepal.py:499-536
Timestamp: 2025-04-05T06:49:06.217Z
Learning: In the holidays project, test files follow a dual testing approach: individual methods test specific holidays across multiple years, while comprehensive year-specific tests (e.g., `test_2025`) verify all holidays for a specific year in a single assertion. Both approaches serve different testing purposes and complement each other.
Learnt from: KJhellico
PR: vacanza/holidays#2530
File: tests/countries/test_andorra.py:23-28
Timestamp: 2025-05-06T21:07:11.577Z
Learning: In the holidays project, test methods for country holidays follow a standard form where year ranges are explicitly recreated in each test method rather than being stored as class variables, to maintain consistency across all country tests.
holidays/countries/guyana.py (4)
Learnt from: PPsyrius
PR: vacanza/holidays#2614
File: holidays/countries/guyana.py:78-90
Timestamp: 2025-06-13T12:18:03.531Z
Learning: The holidays codebase now uses the constructor signature pattern `__init__(self, *args, islamic_show_estimated: bool = True, **kwargs)` across country classes.
Learnt from: KJhellico
PR: vacanza/holidays#2354
File: holidays/countries/fiji.py:63-70
Timestamp: 2025-03-23T10:11:50.465Z
Learning: In the holidays library, the `SAT_SUN_TO_NEXT_MON_TUE` rule is specifically used for consecutive holidays (like Christmas Day and Boxing Day) to ensure they're observed on separate weekdays (Monday and Tuesday) when they fall on weekends, while `SAT_SUN_TO_NEXT_MON` is used as the default rule for other holidays.
Learnt from: Wasif-Shahzad
PR: vacanza/holidays#2409
File: holidays/countries/qatar.py:27-46
Timestamp: 2025-04-03T16:58:27.175Z
Learning: In the holidays library, method names like `_add_holiday_2nd_tue_of_feb()` and `_add_holiday_1st_sun_of_mar()` use calendar constants internally through parent class implementations even when these constants don't appear directly in the file. Removing imports that seem unused based on a simple text search could break functionality.
Learnt from: KJhellico
PR: vacanza/holidays#2614
File: holidays/countries/guyana.py:124-130
Timestamp: 2025-06-14T18:58:55.477Z
Learning: In Guyana's holidays implementation (holidays/countries/guyana.py), Emancipation Day should be implemented as a fixed-date holiday on August 1st with weekend observance rules, not as the first Monday of August. This is confirmed by official Guyana Ministry of Home Affairs sources.
🧬 Code Graph Analysis (1)
tests/countries/test_guyana.py (2)
tests/common.py (6)
TestCase
(28-338)CommonCountryTests
(356-374)assertNoHolidays
(292-294)assertHolidayName
(195-199)assertNoHolidayName
(273-275)assertLocalizedHolidays
(327-338)holidays/countries/guyana.py (3)
Guyana
(32-155)GY
(158-159)GUY
(162-163)
🪛 Pylint (3.3.7)
tests/countries/test_guyana.py
[convention] 1-1: Missing module docstring
(C0114)
[convention] 19-19: Missing class docstring
(C0115)
[warning] 21-21: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestGuyana.setUpClass' method
(W0221)
[convention] 26-26: Missing function or method docstring
(C0116)
[convention] 29-29: Missing function or method docstring
(C0116)
[convention] 32-32: Missing function or method docstring
(C0116)
[convention] 35-35: Missing function or method docstring
(C0116)
[convention] 48-48: Missing function or method docstring
(C0116)
[convention] 55-55: Missing function or method docstring
(C0116)
[convention] 60-60: Missing function or method docstring
(C0116)
[convention] 74-74: Missing function or method docstring
(C0116)
[convention] 88-88: Missing function or method docstring
(C0116)
[convention] 99-99: Missing function or method docstring
(C0116)
[convention] 110-110: Missing function or method docstring
(C0116)
[convention] 123-123: Missing function or method docstring
(C0116)
[convention] 136-136: Missing function or method docstring
(C0116)
[convention] 149-149: Missing function or method docstring
(C0116)
[convention] 162-162: Missing function or method docstring
(C0116)
[convention] 175-175: Missing function or method docstring
(C0116)
[convention] 197-197: Missing function or method docstring
(C0116)
[convention] 218-218: Missing function or method docstring
(C0116)
[convention] 239-239: Missing function or method docstring
(C0116)
[convention] 258-258: Missing function or method docstring
(C0116)
[convention] 279-279: Missing function or method docstring
(C0116)
[convention] 298-298: Missing function or method docstring
(C0116)
[refactor] 19-19: Too many public methods (23/20)
(R0904)
holidays/countries/guyana.py
[convention] 43-43: Line too long (173/100)
(C0301)
[convention] 44-44: Line too long (160/100)
(C0301)
[convention] 45-45: Line too long (176/100)
(C0301)
[convention] 52-52: Line too long (177/100)
(C0301)
[convention] 53-53: Line too long (170/100)
(C0301)
[convention] 55-55: Line too long (177/100)
(C0301)
[convention] 56-56: Line too long (172/100)
(C0301)
[convention] 58-58: Line too long (176/100)
(C0301)
[convention] 59-59: Line too long (170/100)
(C0301)
[convention] 63-63: Line too long (177/100)
(C0301)
[convention] 64-64: Line too long (175/100)
(C0301)
[convention] 272-272: Line too long (157/100)
(C0301)
[convention] 1-1: Missing module docstring
(C0114)
[refactor] 32-32: Too many ancestors (8/7)
(R0901)
[convention] 158-158: Missing class docstring
(C0115)
[refactor] 158-158: Too many ancestors (9/7)
(R0901)
[convention] 162-162: Missing class docstring
(C0115)
[refactor] 162-162: Too many ancestors (9/7)
(R0901)
[convention] 166-166: Missing class docstring
(C0115)
[convention] 208-208: Missing class docstring
(C0115)
[refactor] 268-268: Too few public methods (0/2)
(R0903)
🔇 Additional comments (2)
tests/countries/test_guyana.py (1)
1-316
: No blocking issues found in the test suite
The structure, year-ranges and observed-day checks follow the project’s established patterns.🧰 Tools
🪛 Pylint (3.3.7)
[convention] 1-1: Missing module docstring
(C0114)
[convention] 19-19: Missing class docstring
(C0115)
[warning] 21-21: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestGuyana.setUpClass' method
(W0221)
[convention] 26-26: Missing function or method docstring
(C0116)
[convention] 29-29: Missing function or method docstring
(C0116)
[convention] 32-32: Missing function or method docstring
(C0116)
[convention] 35-35: Missing function or method docstring
(C0116)
[convention] 48-48: Missing function or method docstring
(C0116)
[convention] 55-55: Missing function or method docstring
(C0116)
[convention] 60-60: Missing function or method docstring
(C0116)
[convention] 74-74: Missing function or method docstring
(C0116)
[convention] 88-88: Missing function or method docstring
(C0116)
[convention] 99-99: Missing function or method docstring
(C0116)
[convention] 110-110: Missing function or method docstring
(C0116)
[convention] 123-123: Missing function or method docstring
(C0116)
[convention] 136-136: Missing function or method docstring
(C0116)
[convention] 149-149: Missing function or method docstring
(C0116)
[convention] 162-162: Missing function or method docstring
(C0116)
[convention] 175-175: Missing function or method docstring
(C0116)
[convention] 197-197: Missing function or method docstring
(C0116)
[convention] 218-218: Missing function or method docstring
(C0116)
[convention] 239-239: Missing function or method docstring
(C0116)
[convention] 258-258: Missing function or method docstring
(C0116)
[convention] 279-279: Missing function or method docstring
(C0116)
[convention] 298-298: Missing function or method docstring
(C0116)
[refactor] 19-19: Too many public methods (23/20)
(R0904)
holidays/countries/guyana.py (1)
114-118
: Double-check Saturday handling for Labour Day
_add_observed(...Labour Day)
relies on the class-level defaultSUN_TO_NEXT_MON
, so a Saturday 1 May would not be shifted.
If Gazette notices confirm that Saturday holidays are also moved (as with New Year’s Day), switch toSAT_SUN_TO_NEXT_MON
for consistency.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🔭 Outside diff range comments (1)
holidays/countries/__init__.py (1)
13-218
: 🛠️ Refactor suggestionConsider lazy-loading for large import list
holidays.countries.__init__
keeps growing; importing every country unconditionally adds noticeable import time (~100 ms on my machine). You already have an elegantEntityLoader
inregistry.py
; switching the country package to re-export loaders instead of real classes would shave startup time and memory.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (4)
README.md
(2 hunks)holidays/countries/__init__.py
(1 hunks)holidays/registry.py
(1 hunks)snapshots/countries/GY_COMMON.json
(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
holidays/countries/__init__.py (1)
holidays/countries/guyana.py (3)
Guyana
(32-155)GY
(158-159)GUY
(162-163)
🔇 Additional comments (3)
README.md (1)
668-673
: Missing ‘Labour’ vs ‘Labor’ consistencyThroughout the project the spelling “Labour Day” is used for other Commonwealth countries.
For Guyana the table leaves the holiday names column empty, so this may not surface here, but keeping the spelling consistent across docs prevents confusion when users grep the README.holidays/registry.py (1)
94-99
: Dictionary insertion keeps alphabetical order – good catch
The newguyana
entry is correctly placed afterguinea
; no further action needed.holidays/countries/__init__.py (1)
94-95
: Import block still sorted alphabetically – nice
Guyana import added in the right slot; no namespace collisions observed.
There was a problem hiding this 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
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (4)
README.md
(2 hunks)holidays/countries/__init__.py
(1 hunks)holidays/registry.py
(1 hunks)snapshots/countries/GY_COMMON.json
(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
holidays/countries/__init__.py (1)
holidays/countries/guyana.py (3)
Guyana
(32-155)GY
(158-159)GUY
(162-163)
⏰ Context from checks skipped due to timeout of 300000ms (3)
- GitHub Check: Test build on macos-latest
- GitHub Check: Test build on windows-latest
- GitHub Check: Test build on ubuntu-latest
🔇 Additional comments (4)
holidays/countries/__init__.py (1)
94-94
: Guyana import looks perfect.The new
Guyana, GY, GUY
import is alphabetically in the right place (after Guinea) and matches the class/aliases defined inholidays/countries/guyana.py
.
No further action required.holidays/registry.py (1)
98-99
: Registry entry correctly added and ordered.
"guyana": ("Guyana", "GY", "GUY")
is syntactically correct, follows the tuple structure used elsewhere, and is alphabetically positioned after"guinea"
.
All good here.README.md (1)
668-673
: Row inserted cleanly.The Guyana row is alphabetically correct and its language list matches
supported_languages
in the implementation.
Nice touch adding bold to the default locale.snapshots/countries/GY_COMMON.json (1)
1-1132
:✅ Verification successful
Snapshot file is huge—verify git storage policy.
The JSON is well-formed and chronologically sorted, but at ~300 KB it nudges repo size upward. If future snapshots grow similarly, you may hit the LFS threshold.
Just keep an eye on total snapshot footprint.
🏁 Script executed:
#!/bin/bash # Check file size if [ -f snapshots/countries/GY_COMMON.json ]; then stat -c "%n: %s bytes" snapshots/countries/GY_COMMON.json else echo "File not found: snapshots/countries/GY_COMMON.json" fi # Check cumulative size of country snapshots du -sh snapshots/countries # Look for Git LFS rules in .gitattributes if [ -f .gitattributes ]; then grep -n "filter=lfs" .gitattributes || echo "No Git LFS filters configured in .gitattributes" else echo "No .gitattributes file found" fiLength of output: 424
🏁 Script executed:
#!/bin/bash # Measure single file size in bytes and human-readable form if [ -f snapshots/countries/GY_COMMON.json ]; then echo "Byte count:" wc -c snapshots/countries/GY_COMMON.json echo "Human-readable:" du -h snapshots/countries/GY_COMMON.json else echo "File not found: snapshots/countries/GY_COMMON.json" fiLength of output: 285
Snapshot Directory Size and Git LFS Check
- snapshots/countries/GY_COMMON.json is ~44 KB
- snapshots/countries total footprint is ~41 MB
- No Git LFS filters found in .gitattributes
No immediate action needed, but please monitor the overall snapshot directory size. If it grows significantly (e.g., over your repo policy threshold), consider configuring Git LFS for large files.
Co-authored-by: ~Jhellico <KJhellico@users.noreply.github.com> Signed-off-by: Kriti Birda <164247895+kritibirda26@users.noreply.github.com>
Head branch was pushed to by a user without write access
|
There was a problem hiding this 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_guyana.py (2)
60-73
: 🧹 Nitpick (assertive)Add a brief comment to distinguish “spot-check” vs “full-range” assertions
The double assertion pattern (explicit recent dates + full-year range) tripped reviewers before.
Dropping in a one-liner right above the explicit list makes the intent self-documenting and avoids repeated questions:- self.assertHolidayName( + # Spot-check algorithmic calculation for recent years; the range below + # ensures the holiday exists for every year in scope. + self.assertHolidayName(Purely documentary, no functional change.
🧰 Tools
🪛 Pylint (3.3.7)
[convention] 60-60: Missing function or method docstring
(C0116)
21-24
: 🧹 Nitpick (assertive)Silence Pylint’s W0221 by matching the parent signature
pylint
complains becausesetUpClass
overrides theunittest.TestCase
version with a different signature.
A minimal tweak keeps the current behaviour while quieting the warning:- def setUpClass(cls): + def setUpClass(cls, *args, **kwargs): years = range(1968, 2050) - super().setUpClass(Guyana, years=years, years_non_observed=years) + # Forward any unused args/kwargs to the parent implementation. + super().setUpClass(Guyana, years=years, years_non_observed=years, *args, **kwargs)This pattern is already used in a few newer country test modules and doesn’t alter test logic.
🧰 Tools
🪛 Pylint (3.3.7)
[warning] 21-21: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestGuyana.setUpClass' method
(W0221)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (2)
holidays/countries/guyana.py
(1 hunks)tests/countries/test_guyana.py
(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
tests/countries/test_guyana.py (4)
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.
Learnt from: PPsyrius
PR: vacanza/holidays#2629
File: tests/countries/test_namibia.py:22-23
Timestamp: 2025-06-14T10:58:43.618Z
Learning: In the vacanza/holidays project, country test files consistently use range(start_year, 2050) which intentionally excludes 2050 and stops at 2049. This is a library-wide implementation pattern, not an off-by-one error.
Learnt from: PPsyrius
PR: vacanza/holidays#2386
File: tests/countries/test_nepal.py:499-536
Timestamp: 2025-04-05T06:49:06.217Z
Learning: In the holidays project, test files follow a dual testing approach: individual methods test specific holidays across multiple years, while comprehensive year-specific tests (e.g., `test_2025`) verify all holidays for a specific year in a single assertion. Both approaches serve different testing purposes and complement each other.
Learnt from: KJhellico
PR: vacanza/holidays#2530
File: tests/countries/test_andorra.py:23-28
Timestamp: 2025-05-06T21:07:11.577Z
Learning: In the holidays project, test methods for country holidays follow a standard form where year ranges are explicitly recreated in each test method rather than being stored as class variables, to maintain consistency across all country tests.
holidays/countries/guyana.py (8)
Learnt from: PPsyrius
PR: vacanza/holidays#2614
File: holidays/countries/guyana.py:78-90
Timestamp: 2025-06-13T12:18:03.531Z
Learning: The holidays codebase now uses the constructor signature pattern `__init__(self, *args, islamic_show_estimated: bool = True, **kwargs)` across country classes.
Learnt from: KJhellico
PR: vacanza/holidays#2614
File: holidays/countries/guyana.py:146-179
Timestamp: 2025-06-14T20:12:37.182Z
Learning: The `_CustomHinduHolidays` mechanism works through `_CustomCalendarType` metaclass which renames public attributes (like `DIWALI_INDIA_DATES`) with a postfix, allowing `_HinduLunisolar::_get_holiday` to find and use custom holiday dates. When `_add_diwali_india()` is called, it uses the custom dates if available rather than calculated dates.
Learnt from: KJhellico
PR: vacanza/holidays#2614
File: holidays/countries/guyana.py:146-179
Timestamp: 2025-06-14T20:12:37.182Z
Learning: The `_CustomHinduHolidays` mechanism works through `_CustomCalendarType` metaclass which renames public attributes (like `DIWALI_INDIA_DATES`) with a postfix, allowing `_HinduLunisolar::_get_holiday` to find and use custom holiday dates. When `_add_diwali_india()` is called, it uses the custom dates if available rather than calculated dates.
Learnt from: KJhellico
PR: vacanza/holidays#2354
File: holidays/countries/fiji.py:63-70
Timestamp: 2025-03-23T10:11:50.465Z
Learning: In the holidays library, the `SAT_SUN_TO_NEXT_MON_TUE` rule is specifically used for consecutive holidays (like Christmas Day and Boxing Day) to ensure they're observed on separate weekdays (Monday and Tuesday) when they fall on weekends, while `SAT_SUN_TO_NEXT_MON` is used as the default rule for other holidays.
Learnt from: Wasif-Shahzad
PR: vacanza/holidays#2409
File: holidays/countries/qatar.py:27-46
Timestamp: 2025-04-03T16:58:27.175Z
Learning: In the holidays library, method names like `_add_holiday_2nd_tue_of_feb()` and `_add_holiday_1st_sun_of_mar()` use calendar constants internally through parent class implementations even when these constants don't appear directly in the file. Removing imports that seem unused based on a simple text search could break functionality.
Learnt from: KJhellico
PR: vacanza/holidays#2614
File: holidays/countries/guyana.py:124-130
Timestamp: 2025-06-14T18:58:55.477Z
Learning: In Guyana's holidays implementation (holidays/countries/guyana.py), Emancipation Day should be implemented as a fixed-date holiday on August 1st with weekend observance rules, not as the first Monday of August. This is confirmed by official Guyana Ministry of Home Affairs sources.
Learnt from: KJhellico
PR: vacanza/holidays#2465
File: holidays/countries/suriname.py:219-251
Timestamp: 2025-04-13T19:10:31.502Z
Learning: The `_CustomIslamicHolidays` classes in this project contain only exact verified holiday dates from reliable sources, rather than calculated or estimated future dates. This is by design to ensure accuracy, particularly for religious holidays that may follow lunar calendars or depend on local observations.
Learnt from: PPsyrius
PR: vacanza/holidays#2354
File: holidays/countries/fiji.py:146-159
Timestamp: 2025-03-19T16:54:58.657Z
Learning: In the holidays library implementation, explicit holiday dates (like Diwali in Fiji) are only defined for historical years with official sources (2016-2025). Future dates beyond the explicitly defined range are automatically calculated by methods like `_add_diwali`, which provide approximations when official dates aren't yet available.
🪛 Pylint (3.3.7)
tests/countries/test_guyana.py
[convention] 1-1: Missing module docstring
(C0114)
[convention] 19-19: Missing class docstring
(C0115)
[warning] 21-21: Number of parameters was 4 in 'TestCase.setUpClass' and is now 1 in overriding 'TestGuyana.setUpClass' method
(W0221)
[convention] 26-26: Missing function or method docstring
(C0116)
[convention] 29-29: Missing function or method docstring
(C0116)
[convention] 32-32: Missing function or method docstring
(C0116)
[convention] 35-35: Missing function or method docstring
(C0116)
[convention] 48-48: Missing function or method docstring
(C0116)
[convention] 55-55: Missing function or method docstring
(C0116)
[convention] 60-60: Missing function or method docstring
(C0116)
[convention] 74-74: Missing function or method docstring
(C0116)
[convention] 88-88: Missing function or method docstring
(C0116)
[convention] 99-99: Missing function or method docstring
(C0116)
[convention] 110-110: Missing function or method docstring
(C0116)
[convention] 123-123: Missing function or method docstring
(C0116)
[convention] 136-136: Missing function or method docstring
(C0116)
[convention] 147-147: Missing function or method docstring
(C0116)
[convention] 160-160: Missing function or method docstring
(C0116)
[convention] 173-173: Missing function or method docstring
(C0116)
[convention] 195-195: Missing function or method docstring
(C0116)
[convention] 216-216: Missing function or method docstring
(C0116)
[convention] 237-237: Missing function or method docstring
(C0116)
[convention] 256-256: Missing function or method docstring
(C0116)
[convention] 277-277: Missing function or method docstring
(C0116)
[convention] 296-296: Missing function or method docstring
(C0116)
[refactor] 19-19: Too many public methods (23/20)
(R0904)
holidays/countries/guyana.py
[convention] 43-43: Line too long (173/100)
(C0301)
[convention] 44-44: Line too long (160/100)
(C0301)
[convention] 45-45: Line too long (176/100)
(C0301)
[convention] 46-46: Line too long (102/100)
(C0301)
[convention] 53-53: Line too long (177/100)
(C0301)
[convention] 54-54: Line too long (170/100)
(C0301)
[convention] 56-56: Line too long (177/100)
(C0301)
[convention] 57-57: Line too long (172/100)
(C0301)
[convention] 59-59: Line too long (176/100)
(C0301)
[convention] 60-60: Line too long (170/100)
(C0301)
[convention] 64-64: Line too long (177/100)
(C0301)
[convention] 65-65: Line too long (175/100)
(C0301)
[convention] 273-273: Line too long (157/100)
(C0301)
[convention] 1-1: Missing module docstring
(C0114)
[refactor] 32-32: Too many ancestors (8/7)
(R0901)
[convention] 159-159: Missing class docstring
(C0115)
[refactor] 159-159: Too many ancestors (9/7)
(R0901)
[convention] 163-163: Missing class docstring
(C0115)
[refactor] 163-163: Too many ancestors (9/7)
(R0901)
[convention] 167-167: Missing class docstring
(C0115)
[convention] 209-209: Missing class docstring
(C0115)
[refactor] 269-269: Too few public methods (0/2)
(R0903)
🔇 Additional comments (1)
holidays/countries/guyana.py (1)
79-91
: Constructor signature matches current library pattern – good.
*args
precedesislamic_show_estimated
, aligning with the convention adopted across recent country modules. 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
Proposed change
Add Guyana holidays.
Resolves #1196.
Type of change
holidays
functionality in general)Checklist
make check
, all checks and tests are green