Skip to content

Conversation

@pareshjoshij
Copy link
Contributor

Proposed change

This PR adds support for the merged Union Territory of Dadra and Nagar Haveli and Daman and Diu (ISO code DH).

Changes included:

  • Added _populate_subdiv_dh_public_holidays to the India class.
  • Added the following specific holidays:
    • August 2: Dadra and Nagar Haveli Liberation Day.
    • December 19: Daman and Diu Liberation Day.
  • Added DD (Daman and Diu) as a deprecated alias pointing to DH.
  • Added comprehensive tests for the year 2018 (verifying dates and localized names).
  • Updated hi (Hindi) and gu (Gujarati) translation files (.po) and regenerated .mo files to support the new localized holiday names.

Note: make check flagged issues in unrelated files (sweden.py, south_korea.py), but all India-specific tests passed successfully.

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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 18, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Summary by CodeRabbit

  • New Features
    • Added public holidays for Dadra and Nagar Haveli and Daman and Diu in India: Ambedkar Jayanti (Apr 14), Dadra and Nagar Haveli Liberation Day (Aug 2), Daman and Diu Liberation Day (Dec 19).
  • Localization
    • Updated translation catalogs across en_IN, en_US, gu, and hi for the new holidays; adjusted related holiday labels.
  • Tests
    • Added/updated tests to cover the new subdivision and localized entries.

✏️ Tip: You can customize this high-level summary in your review settings.

Walkthrough

Adds DH (Dadra and Nagar Haveli and Daman and Diu) subdivision holidays to India: new DH-specific population method, a DDDH subdivision alias, localization entries for two liberation days across locales, and corresponding tests updated/added.

Changes

Cohort / File(s) Summary
Core logic
holidays/countries/india.py
Adds _populate_subdiv_dh_public_holidays() to populate DH subdivision holidays; adds subdivision alias mapping "DD": "DH" for backwards compatibility.
Localization
holidays/locale/en_IN/LC_MESSAGES/IN.po, holidays/locale/en_US/LC_MESSAGES/IN.po, holidays/locale/gu/LC_MESSAGES/IN.po, holidays/locale/hi/LC_MESSAGES/IN.po
Bumps Project-Id-Version to 0.88 and adds msgids for "Dadra and Nagar Haveli Liberation Day" and "Daman and Diu Liberation Day"; Hindi locale also inserts/adjusts "Uttarayan" entry.
Tests
tests/countries/test_india.py
Adds DH subdivision test cases (2018-04-14 Ambedkar Jayanti, 2018-08-02 DH Liberation Day, 2018-12-19 Daman and Diu Liberation Day) and updates 2018-12-19 combined label with Goa across locales.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–30 minutes

  • New method is small but requires review for correctness and integration with subdivision dispatch.
  • Multiple locale files and test changes mean review of localization strings and test expectations.
  • Pay attention to heterogeneous changes across logic, locales, and tests.

Areas to review closely:

  • The new _populate_subdiv_dh_public_holidays() logic and whether it aligns with existing subdivision handlers.
  • The "DD": "DH" alias—ensure it’s applied consistently where subdivision codes are resolved.
  • The Hindi locale change (Makar Sankranti → "Uttarayan") and the combined label for 2018-12-19 across locales.

Possibly related PRs

Suggested reviewers

  • arkid15r
  • KJhellico
  • PPsyrius

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: adding support for Dadra and Nagar Haveli and Daman and Diu (DH) holidays to the India implementation.
Description check ✅ Passed The description is well-related to the changeset, providing clear context about the new subdivision support, specific holidays added, deprecated alias handling, tests, and localization updates.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between aac0608 and 776282c.

📒 Files selected for processing (6)
  • holidays/countries/india.py (3 hunks)
  • holidays/locale/en_IN/LC_MESSAGES/IN.po (2 hunks)
  • holidays/locale/en_US/LC_MESSAGES/IN.po (2 hunks)
  • holidays/locale/gu/LC_MESSAGES/IN.po (2 hunks)
  • holidays/locale/hi/LC_MESSAGES/IN.po (2 hunks)
  • tests/countries/test_india.py (9 hunks)
🧰 Additional context used
🧠 Learnings (55)
📓 Common learnings
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2881
File: holidays/countries/south_africa.py:69-75
Timestamp: 2025-09-14T07:26:25.431Z
Learning: When reviewing historical holiday implementations in the vacanza/holidays repository, trust the maintainers' research and implementation decisions for specific historical edge cases, especially when they can provide sources like Wikipedia or other historical documentation that supports unusual or complex date calculation rules during specific time periods.
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2881
File: tests/countries/test_french_polynesia.py:19-22
Timestamp: 2025-11-08T05:09:56.159Z
Learning: In the vacanza/holidays project's test framework (PR #2881 onwards), the base class CommonCountryTests provides a default test_no_holidays implementation that automatically tests years=start_year - 1 for standard PUBLIC category cases. Individual country test files should only override test_no_holidays when the country supports additional non-PUBLIC categories (GOVERNMENT, WORKDAY, OPTIONAL, etc.) with different start years requiring separate validation.
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2833
File: holidays/countries/uganda.py:50-56
Timestamp: 2025-08-25T09:57:22.291Z
Learning: In the holidays package, when adding comments for year-restricted holidays in Uganda and similar country modules, include specific legal or historical context such as the actual laws, parliamentary acts, or government decisions that established the holidays, rather than just generic "since YEAR" information. For example, reference the specific Parliament act, decree, or historical event that created the holiday.
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2642
File: holidays/countries/french_southern_territories.py:41-44
Timestamp: 2025-06-18T10:07:58.780Z
Learning: Territorial holiday classes that inherit from parent countries (like HolidaysAX from Finland, HolidaysSJ from Norway, HolidaysTF from France) follow a standard pattern of silently overriding self.subdiv in their _populate_public_holidays() method without validation, as this ensures they always use the correct subdivision code for their territory regardless of user input.
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2642
File: holidays/countries/france.py:184-206
Timestamp: 2025-06-18T10:58:28.058Z
Learning: In the holidays library France implementation, creating shared private methods between subdivision-specific holiday population methods (like _populate_subdiv_57_public_holidays and _populate_subdiv_6ae_public_holidays) is not supported by the current framework architecture, so duplicate code between functionally identical subdivision methods should be left as-is.
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2642
File: holidays/countries/france.py:178-182
Timestamp: 2025-06-18T10:18:59.447Z
Learning: In the France holidays implementation, deprecated subdivision names like "Alsace-Moselle" and "Saint-Barthélémy" are handled through explicit conditionals in _populate_public_holidays() that map them to their corresponding new subdivision-specific holiday population methods, providing backward compatibility while users transition to the new ISO codes.
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2638
File: holidays/countries/svalbard_and_jan_mayen.py:26-32
Timestamp: 2025-06-16T11:46:35.303Z
Learning: When creating country holiday aliases that inherit from parent countries (like Svalbard and Jan Mayen from Norway, or Åland from Finland), it's standard practice to hardcode a specific subdivision code in the _populate methods since the subdivision codes for the parent country yield identical results. The Åland Islands implementation serves as the reference pattern for this approach.
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2651
File: tests/countries/test_bonaire_sint_eustatius_and_saba.py:225-306
Timestamp: 2025-07-02T10:22:33.053Z
Learning: The `assertLocalizedHolidays` method in the vacanza/holidays project requires a complete list of all holidays from all subdivisions, not just subdivision-specific holidays. This is a framework requirement for proper localization testing.
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2881
File: tests/countries/test_saint_helena_ascension_and_tristan_da_cunha.py:209-209
Timestamp: 2025-09-14T17:17:14.387Z
Learning: In tests/countries/test_saint_helena_ascension_and_tristan_da_cunha.py, the explicit loop iteration pattern for subdivision-specific holiday checks (like Anniversary Day for TA subdivision) is intentionally preferred over using assertSubdivTa helper methods, as confirmed by PPsyrius.
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2642
File: holidays/countries/france.py:178-180
Timestamp: 2025-06-18T10:26:50.180Z
Learning: In the France holidays implementation, the _populate_subdiv_57_public_holidays() (Moselle) and _populate_subdiv_6ae_public_holidays() (Alsace) methods are functionally identical, both adding Good Friday (≥1893) and Saint Stephen's Day (≥1892) with the same legal references from August 16th, 1892. Therefore, for the deprecated "Alsace-Moselle" subdivision, calling either method produces the same result.
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2638
File: holidays/countries/svalbard_and_jan_mayen.py:26-32
Timestamp: 2025-06-16T11:46:35.303Z
Learning: In the holidays library, Norwegian subdivisions all yield the same holiday results regardless of the subdivision code used. This is similar to how Åland is implemented as a simple alias of Finland holidays with just a country code override.
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2638
File: holidays/countries/svalbard_and_jan_mayen.py:26-32
Timestamp: 2025-06-16T11:46:35.303Z
Learning: In the holidays library, Norwegian subdivisions all yield the same holiday results regardless of the subdivision code used. This is similar to how Åland is implemented as a simple alias of Finland holidays with just a country code override.
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2638
File: holidays/countries/svalbard_and_jan_mayen.py:26-32
Timestamp: 2025-06-16T11:46:35.303Z
Learning: In the holidays library, Norwegian subdivisions all yield the same holiday results regardless of the subdivision code used. This is similar to how Åland is implemented as a simple alias of Finland holidays with just a country code override.
📚 Learning: 2025-03-08T11:28:48.652Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2259
File: holidays/locale/en_IN/LC_MESSAGES/IN.po:285-299
Timestamp: 2025-03-08T11:28:48.652Z
Learning: In the holidays project, message IDs (msgids) in locale files use region-specific naming conventions (e.g., "Muharram", "Id-ul-Fitr" in en_IN locale for India), while translator comments use internationally recognized names from the project's default locale (en_US) such as "Ashura", "Eid al-Fitr". This difference is intentional for proper localization.

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
  • holidays/locale/gu/LC_MESSAGES/IN.po
  • holidays/locale/en_IN/LC_MESSAGES/IN.po
  • holidays/locale/hi/LC_MESSAGES/IN.po
📚 Learning: 2025-05-06T15:25:44.333Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2530
File: holidays/locale/ca/LC_MESSAGES/AD.po:31-40
Timestamp: 2025-05-06T15:25:44.333Z
Learning: In the Holidays project, msgid fields in localization files contain strings in the entity's default language (as defined by default_language attribute), not English source strings as in standard gettext implementations.

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
  • holidays/locale/gu/LC_MESSAGES/IN.po
  • holidays/locale/en_IN/LC_MESSAGES/IN.po
  • holidays/locale/hi/LC_MESSAGES/IN.po
📚 Learning: 2025-06-28T10:39:19.185Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2684
File: holidays/locale/it/LC_MESSAGES/SM.po:13-13
Timestamp: 2025-06-28T10:39:19.185Z
Learning: In the holidays project, .po file header comments use the format "# [Country] holidays." for default language files (without trailing hash) and "# [Country] holidays [locale] localization." for non-default language files (also without trailing hash).

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
  • holidays/locale/gu/LC_MESSAGES/IN.po
  • holidays/locale/en_IN/LC_MESSAGES/IN.po
  • holidays/locale/hi/LC_MESSAGES/IN.po
📚 Learning: 2025-06-26T15:34:35.476Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2676
File: holidays/locale/en_US/LC_MESSAGES/TN.po:17-28
Timestamp: 2025-06-26T15:34:35.476Z
Learning: In the holidays project, .po file header metadata updates (version numbers, revision dates, translator information) are legitimate changes when part of localization work and don't require `make l10n` regeneration. The `make l10n` command is primarily for formatting fixes and missing translator comments, not for intentional metadata updates.

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
  • holidays/locale/gu/LC_MESSAGES/IN.po
  • holidays/locale/en_IN/LC_MESSAGES/IN.po
  • holidays/locale/hi/LC_MESSAGES/IN.po
📚 Learning: 2025-03-05T17:51:00.633Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 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.

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
  • holidays/locale/gu/LC_MESSAGES/IN.po
  • holidays/locale/en_IN/LC_MESSAGES/IN.po
  • holidays/locale/hi/LC_MESSAGES/IN.po
📚 Learning: 2025-09-26T13:58:49.363Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2960
File: holidays/locale/ca/LC_MESSAGES/ES.po:148-151
Timestamp: 2025-09-26T13:58:49.363Z
Learning: In the holidays project, when translating holiday names in .po files, the msgstr should be a faithful translation of the original msgid (in the country's default language), not influenced by English commentary or common en_US names. For example, "Día de la Pascua Granada" (Spanish) correctly translates to "Dia de la Pasqua Granada" (Catalan), even though the English comment refers to it as "Whit Monday".

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
  • holidays/locale/gu/LC_MESSAGES/IN.po
  • holidays/locale/en_IN/LC_MESSAGES/IN.po
  • holidays/locale/hi/LC_MESSAGES/IN.po
📚 Learning: 2025-03-30T18:25:07.087Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2388
File: holidays/locale/en_CI/LC_MESSAGES/CI.po:88-88
Timestamp: 2025-03-30T18:25:07.087Z
Learning: In the holidays library, localization files have a specific structure: message comments are in standard English (en_US) describing the holiday, while actual translations (msgstr) should use the locale-specific terminology (e.g., en_CI for Ivory Coast English). For example, "Night of Power" in standard English is translated as "Lailatou-Kadr" in Ivory Coast English.

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
  • holidays/locale/gu/LC_MESSAGES/IN.po
  • holidays/locale/en_IN/LC_MESSAGES/IN.po
  • holidays/locale/hi/LC_MESSAGES/IN.po
📚 Learning: 2025-03-30T13:33:31.598Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2388
File: holidays/locale/fr/LC_MESSAGES/CI.po:28-101
Timestamp: 2025-03-30T13:33:31.598Z
Learning: In the holidays library, for localization files of the default language (like French for Ivory Coast in fr/LC_MESSAGES/CI.po), the best practice is to leave the message strings (msgstr) empty to avoid possible typos, since the message IDs (msgid) are already in the target language.

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
  • holidays/locale/gu/LC_MESSAGES/IN.po
  • holidays/locale/en_IN/LC_MESSAGES/IN.po
  • holidays/locale/hi/LC_MESSAGES/IN.po
📚 Learning: 2025-09-26T13:44:12.652Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2960
File: holidays/locale/ca/LC_MESSAGES/ES.po:97-100
Timestamp: 2025-09-26T13:44:12.652Z
Learning: When fixing localization issues in the holidays project, corrections should be made in both the Python source code comments and the en_US .po file msgstr entries, then all other language .po files should be regenerated to pick up the corrected en_US comments.

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
  • holidays/locale/en_IN/LC_MESSAGES/IN.po
📚 Learning: 2025-06-11T18:32:25.595Z
Learnt from: ankushhKapoor
Repo: vacanza/holidays PR: 2601
File: holidays/locale/en_MN/LC_MESSAGES/MN.po:13-14
Timestamp: 2025-06-11T18:32:25.595Z
Learning: For non-default locale `.po` files, the header comment format is:
`# <Country> holidays <locale> localization.` (no trailing hash).

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
  • holidays/locale/gu/LC_MESSAGES/IN.po
  • holidays/locale/en_IN/LC_MESSAGES/IN.po
  • holidays/locale/hi/LC_MESSAGES/IN.po
📚 Learning: 2025-06-25T10:09:29.029Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2676
File: holidays/locale/ar/LC_MESSAGES/EG.po:0-0
Timestamp: 2025-06-25T10:09:29.029Z
Learning: In the holidays library, msgstr fields can be left empty for source/default_language files when using Lingva, the localization tool used by the project.

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
  • holidays/locale/gu/LC_MESSAGES/IN.po
  • holidays/locale/en_IN/LC_MESSAGES/IN.po
  • holidays/locale/hi/LC_MESSAGES/IN.po
📚 Learning: 2025-04-17T17:08:48.082Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2438
File: holidays/locale/ar_IQ/LC_MESSAGES/IQ.po:35-81
Timestamp: 2025-04-17T17:08:48.082Z
Learning: In holiday PO files, when the file represents the default language of an entity (e.g., ar_IQ for Iraq), no translations in `msgstr` are required as the `msgid` values are already in the target language.

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
  • holidays/locale/gu/LC_MESSAGES/IN.po
  • holidays/locale/en_IN/LC_MESSAGES/IN.po
  • holidays/locale/hi/LC_MESSAGES/IN.po
📚 Learning: 2025-06-10T12:17:58.880Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2608
File: holidays/locale/en_VC/LC_MESSAGES/VC.po:1-14
Timestamp: 2025-06-10T12:17:58.880Z
Learning: In the holidays project, .po files should use the full multi-line header format including the project description, authors, website, and license information, rather than a single-line comment format.

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
  • holidays/locale/gu/LC_MESSAGES/IN.po
  • holidays/locale/en_IN/LC_MESSAGES/IN.po
  • holidays/locale/hi/LC_MESSAGES/IN.po
📚 Learning: 2025-12-17T14:46:04.977Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 3138
File: holidays/locale/en_US/LC_MESSAGES/SE.po:99-99
Timestamp: 2025-12-17T14:46:04.977Z
Learning: Enforce that message comments in PO files under holidays/locale/en_US/LC_MESSAGES/*.po end with a period. For example, change '# Midsummer Eve' to '# Midsummer Eve.' to maintain consistency with other holiday comments. During reviews, scan for trailing punctuation in comments and ensure uniformity across all locale entries.

Applied to files:

  • holidays/locale/en_US/LC_MESSAGES/IN.po
📚 Learning: 2025-06-14T20:12:37.212Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2614
File: holidays/countries/guyana.py:146-179
Timestamp: 2025-06-14T20:12:37.212Z
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.

Applied to files:

  • holidays/countries/india.py
  • tests/countries/test_india.py
📚 Learning: 2025-06-19T02:34:18.382Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2643
File: holidays/countries/mauritius.py:144-169
Timestamp: 2025-06-19T02:34:18.382Z
Learning: Custom holiday classes that extend _CustomHinduHolidays, _CustomIslamicHolidays, _CustomBuddhistHolidays, etc. in the holidays library do not use docstrings. They follow a pattern of using only inline comments above date dictionaries, as seen in Malaysia, Singapore, UAE, and other country implementations.

Applied to files:

  • holidays/countries/india.py
  • tests/countries/test_india.py
📚 Learning: 2025-10-28T17:26:45.090Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 3026
File: holidays/countries/spain.py:189-189
Timestamp: 2025-10-28T17:26:45.090Z
Learning: In the vacanza/holidays codebase, `_populate` methods (such as `_populate_public_holidays`, `_populate_subdiv_holidays`, and subdivision-specific methods like `_populate_subdiv_XX_public_holidays`) intentionally do not include return type annotations like `-> None`. This is a consistent pattern across country implementations (e.g., Germany, United States, Spain) and should not be changed even when static analysis tools like Ruff suggest adding them.
<!-- </add_learning>

Applied to files:

  • holidays/countries/india.py
📚 Learning: 2025-06-18T10:07:58.780Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2642
File: holidays/countries/french_southern_territories.py:41-44
Timestamp: 2025-06-18T10:07:58.780Z
Learning: Territorial holiday classes that inherit from parent countries (like HolidaysAX from Finland, HolidaysSJ from Norway, HolidaysTF from France) follow a standard pattern of silently overriding self.subdiv in their _populate_public_holidays() method without validation, as this ensures they always use the correct subdivision code for their territory regardless of user input.

Applied to files:

  • holidays/countries/india.py
📚 Learning: 2025-06-18T10:58:28.058Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2642
File: holidays/countries/france.py:184-206
Timestamp: 2025-06-18T10:58:28.058Z
Learning: In the holidays library France implementation, creating shared private methods between subdivision-specific holiday population methods (like _populate_subdiv_57_public_holidays and _populate_subdiv_6ae_public_holidays) is not supported by the current framework architecture, so duplicate code between functionally identical subdivision methods should be left as-is.

Applied to files:

  • holidays/countries/india.py
📚 Learning: 2025-06-18T10:18:59.447Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2642
File: holidays/countries/france.py:178-182
Timestamp: 2025-06-18T10:18:59.447Z
Learning: In the France holidays implementation, deprecated subdivision names like "Alsace-Moselle" and "Saint-Barthélémy" are handled through explicit conditionals in _populate_public_holidays() that map them to their corresponding new subdivision-specific holiday population methods, providing backward compatibility while users transition to the new ISO codes.

Applied to files:

  • holidays/countries/india.py
📚 Learning: 2025-06-18T10:26:50.180Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2642
File: holidays/countries/france.py:178-180
Timestamp: 2025-06-18T10:26:50.180Z
Learning: In the France holidays implementation, the _populate_subdiv_57_public_holidays() (Moselle) and _populate_subdiv_6ae_public_holidays() (Alsace) methods are functionally identical, both adding Good Friday (≥1893) and Saint Stephen's Day (≥1892) with the same legal references from August 16th, 1892. Therefore, for the deprecated "Alsace-Moselle" subdivision, calling either method produces the same result.

Applied to files:

  • holidays/countries/india.py
📚 Learning: 2025-03-19T16:54:58.657Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 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.

Applied to files:

  • holidays/countries/india.py
  • tests/countries/test_india.py
📚 Learning: 2025-06-19T02:34:14.456Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2643
File: holidays/countries/mauritius.py:171-184
Timestamp: 2025-06-19T02:34:14.456Z
Learning: In the holidays library, `_CustomIslamicHolidays` subclasses follow a consistent pattern of NOT having docstrings. They go directly to defining date dictionaries, as evidenced by Malaysia, Singapore, UAE, and dozens of other country implementations.

Applied to files:

  • holidays/countries/india.py
📚 Learning: 2025-09-03T17:53:29.103Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2881
File: holidays/countries/algeria.py:33-40
Timestamp: 2025-09-03T17:53:29.103Z
Learning: For Algeria's holidays implementation, the Google Drive links in the legal references are the official government sources redirected from https://portailjuridique.esi.dz/français/fêtes-et-congés-légales. These should be kept as-is when properly archived via Wayback Machine, as they represent the actual official documents served by the Algerian government portal.

Applied to files:

  • holidays/countries/india.py
📚 Learning: 2025-03-30T20:18:46.006Z
Learnt from: KJhellico
Repo: vacanza/holidays 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.

Applied to files:

  • holidays/countries/india.py
📚 Learning: 2025-12-15T22:50:33.654Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 3135
File: holidays/countries/united_states.py:1175-1178
Timestamp: 2025-12-15T22:50:33.654Z
Learning: In the holidays library (vacanza/holidays), for Puerto Rico and potentially other US territories, maintain the documented separation: place Spanish holiday name comments on one line, followed by a blank line, and then the English localization comment. Do not remove the blank line separator, as it documents the Spanish name (e.g., 'Día de la Abolición de la Esclavitud') while the English name below (e.g., 'Emancipation Day') is the actual localization.

Applied to files:

  • holidays/countries/india.py
📚 Learning: 2025-09-28T05:42:12.777Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2881
File: tests/countries/test_indonesia.py:221-223
Timestamp: 2025-09-28T05:42:12.777Z
Learning: In tests/countries/test_indonesia.py, the manual set inclusion checks using get_named and years_found for Lunar New Year (test_lunar_new_year) and Vesak Day (test_vesak_day) are intentional and should remain until both holidays get their own `{insert}_no_estimated` flags implemented, rather than using standard harness assertions like assertHolidayName/assertNoHolidayName.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-11-08T05:09:56.159Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2881
File: tests/countries/test_french_polynesia.py:19-22
Timestamp: 2025-11-08T05:09:56.159Z
Learning: In the vacanza/holidays project's test framework (PR #2881 onwards), the base class CommonCountryTests provides a default test_no_holidays implementation that automatically tests years=start_year - 1 for standard PUBLIC category cases. Individual country test files should only override test_no_holidays when the country supports additional non-PUBLIC categories (GOVERNMENT, WORKDAY, OPTIONAL, etc.) with different start years requiring separate validation.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-09-14T17:17:14.387Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2881
File: tests/countries/test_saint_helena_ascension_and_tristan_da_cunha.py:209-209
Timestamp: 2025-09-14T17:17:14.387Z
Learning: In tests/countries/test_saint_helena_ascension_and_tristan_da_cunha.py, the explicit loop iteration pattern for subdivision-specific holiday checks (like Anniversary Day for TA subdivision) is intentionally preferred over using assertSubdivTa helper methods, as confirmed by PPsyrius.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-05-06T21:07:11.577Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 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.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-07-02T10:22:33.053Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2651
File: tests/countries/test_bonaire_sint_eustatius_and_saba.py:225-306
Timestamp: 2025-07-02T10:22:33.053Z
Learning: The `assertLocalizedHolidays` method in the vacanza/holidays project requires a complete list of all holidays from all subdivisions, not just subdivision-specific holidays. This is a framework requirement for proper localization testing.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-08-08T14:37:03.045Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2774
File: tests/countries/test_liberia.py:15-16
Timestamp: 2025-08-08T14:37:03.045Z
Learning: When adding a new country in vacanza/holidays, also re-export it in holidays/countries/__init__.py (e.g., from .liberia import Liberia, LR, LBR) so tests and users can import from holidays.countries consistently.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-09-18T03:19:23.722Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2881
File: tests/countries/test_algeria.py:28-30
Timestamp: 2025-09-18T03:19:23.722Z
Learning: In the vacanza/holidays project, tests now use self.start_year and self.end_year from the TestCase class instead of country-specific aliases (like DZ.start_year) for start_year and end_year references. This approach provides the test framework with better control over test year ranges rather than being tied to specific country start years.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-04-02T18:38:35.164Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2398
File: tests/countries/test_guinea.py:237-239
Timestamp: 2025-04-02T18:38:35.164Z
Learning: In the vacanza/holidays project, the method assertLocalizedHolidays in country test files should be called with positional parameters rather than named parameters to maintain consistency with the rest of the codebase.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-08-25T22:19:01.342Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2854
File: holidays/locale/en_US/LC_MESSAGES/SD.po:38-42
Timestamp: 2025-08-25T22:19:01.342Z
Learning: In the holidays library, translator comments and translations should consistently use the "observed, estimated" order pattern. Guinea-Bissau (GW.po) was identified as having an inconsistent "estimated, observed" comment that needs to be fixed to match the established convention.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-11-27T13:47:31.850Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 3088
File: tests/countries/test_dr_congo.py:55-65
Timestamp: 2025-11-27T13:47:31.850Z
Learning: In DR Congo's holiday implementation (tests/countries/test_dr_congo.py), the test_national_hero_patrice_emery_lumumba_day method cannot use assertNoNonObservedHoliday because when Jan 17 is observed on Jan 16 (in years 2016, 2021), that date already has another holiday: "Journée du héros national Laurent Désiré Kabila" (Jan 16). The observed holiday overlaps with an existing non-observed holiday, making the standard non-observed holiday check inappropriate.
<!--

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-07-24T15:21:31.632Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2750
File: tests/countries/test_germany.py:46-46
Timestamp: 2025-07-24T15:21:31.632Z
Learning: In the holidays project test files, the standard method name for testing the absence of holidays is `test_no_holidays`, not more descriptive names like `test_no_holidays_before_1990`. This is a consistent naming convention across country test files like France and Germany.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-08-11T10:14:28.517Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2794
File: holidays/groups/christian.py:328-343
Timestamp: 2025-08-11T10:14:28.517Z
Learning: For Ethiopian holidays in the `holidays/groups/christian.py` file, docstring wording should maintain source-accurate phrasing (e.g., "in coincidence of" for Ethiopian New Year/Enkutatash), even when it might read awkwardly in English, to ensure consistency with official Ethiopian documentation.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-09-03T17:10:35.672Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2881
File: holidays/locale/fr/LC_MESSAGES/DZ.po:37-41
Timestamp: 2025-09-03T17:10:35.672Z
Learning: In Algerian French localization (holidays/locale/fr/LC_MESSAGES/DZ.po), capitalization should follow Algerian source-accurate conventions rather than standard French orthographic rules. For example, "Jour de l'An Grégorien" with capital "G" is correct for Algerian usage, even though standard French would typically use lowercase "grégorien".

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-07-02T18:21:59.302Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2608
File: tests/countries/test_saint_vincent_and_the_grenadines.py:162-178
Timestamp: 2025-07-02T18:21:59.302Z
Learning: In the Saint Vincent and the Grenadines holiday tests, for holidays without observed rules that only require a single assertHolidayName call, pass the holiday name directly as a string literal rather than storing it in a variable first for cleaner, more concise code.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-12-15T22:50:33.654Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 3135
File: holidays/countries/united_states.py:1175-1178
Timestamp: 2025-12-15T22:50:33.654Z
Learning: In the holidays library Puerto Rico implementation (and potentially other US territories), Spanish holiday name comments are intentionally separated from English localization comments by a blank line. The Spanish name provides documentation context (e.g., "Día de la Abolición de la Esclavitud") while the English name below is the actual localization comment (e.g., "Emancipation Day"). This blank line separator should not be removed.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-05-01T19:19:42.346Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2386
File: tests/countries/test_nepal.py:551-554
Timestamp: 2025-05-01T19:19:42.346Z
Learning: In the holidays library, multiple holidays on the same date are sorted alphabetically internally, so the order in which holidays are added does not affect the resulting holiday name string when multiple holidays occur on the same date.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-05-01T19:19:42.346Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2386
File: tests/countries/test_nepal.py:551-554
Timestamp: 2025-05-01T19:19:42.346Z
Learning: In the holidays library, when multiple holidays fall on the same date, their names are always sorted alphabetically (in __setitem__ of HolidayBase), so the order of addition does not affect the resulting string.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-07-26T13:30:58.728Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2757
File: README.md:1592-1597
Timestamp: 2025-07-26T13:30:58.728Z
Learning: In the holidays project README.md, supported languages in the country table are always arranged in alphabetical order, with the default language marked in bold but maintaining its alphabetical position rather than being moved to a special position.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-09-16T04:11:33.513Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2928
File: holidays/countries/algeria.py:16-22
Timestamp: 2025-09-16T04:11:33.513Z
Learning: In the holidays library, country class base inheritance follows alphabetical ordering after HolidayBase. For example, Algeria correctly uses: HolidayBase, ChristianHolidays, HebrewCalendarHolidays, InternationalHolidays, IslamicHolidays (alphabetical after the required HolidayBase first position).

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-06-06T14:40:31.932Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2593
File: holidays/countries/senegal.py:66-110
Timestamp: 2025-06-06T14:40:31.932Z
Learning: In the holidays library, within the _populate_public_holidays method, holidays should be arranged by calendar type (Islamic holidays first, then Gregorian holidays) without additional type grouping comments. The organization by calendar type is sufficient and follows the project's established conventions.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-08-30T22:55:34.525Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2874
File: holidays/countries/nigeria.py:31-44
Timestamp: 2025-08-30T22:55:34.525Z
Learning: For Nigeria holiday implementation reference ordering: The current ordering with Wikipedia first, followed by official sources, follows the newer standard for the holidays library and should not be changed to put legal sources first.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-09-03T18:17:24.626Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2881
File: holidays/countries/algeria.py:46-49
Timestamp: 2025-09-03T18:17:24.626Z
Learning: In the holidays library, supported_categories tuples are ordered alphabetically rather than having PUBLIC listed first. For example, in Algeria's implementation, (CHRISTIAN, HEBREW, PUBLIC) follows alphabetical order and should not be reordered to put PUBLIC first.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-06-29T10:36:06.138Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2671
File: holidays/countries/libya.py:51-108
Timestamp: 2025-06-29T10:36:06.138Z
Learning: There is no project-wide convention in the holidays library to organize holidays by calendar type (Islamic holidays first, then Gregorian holidays). Countries organize holidays in various ways - often chronologically, by importance, or by logical grouping - and Islamic holidays are frequently placed at the end of the _populate_public_holidays method rather than at the beginning.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-03-19T16:53:00.375Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2354
File: holidays/countries/fiji.py:185-188
Timestamp: 2025-03-19T16:53:00.375Z
Learning: In the Fiji holidays implementation, the `special_public_holidays_observed` dictionary in `FijiStaticHolidays` is only used for exceptions to the normal observance rules, not for documenting all holidays. Only 2019's Constitution Day needed a special entry as it didn't follow the standard patterns.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-09-18T07:01:12.236Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2942
File: holidays/countries/south_africa.py:91-98
Timestamp: 2025-09-18T07:01:12.236Z
Learning: In the holidays library South Africa implementation, inline ternary operators for holiday name selection (like "Republic Day" if self._year >= 1961 else "Union Day") are intentionally kept inline rather than extracted to separate variables, as this structure is designed in preparation for future localization (l10n) support where the contextual relationship between conditions and translatable strings needs to be preserved.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-09-17T15:16:16.192Z
Learnt from: KJhellico
Repo: vacanza/holidays PR: 2944
File: holidays/countries/myanmar.py:183-191
Timestamp: 2025-09-17T15:16:16.192Z
Learning: The special_public_holidays formatting pattern in the holidays codebase follows a consistent convention: single entries per year use flat tuple format like `2024: (MONTH, DAY, name)`, while multiple entries per year use tuple-of-tuples format like `2024: ((MONTH, DAY, name), (MONTH, DAY, name))`. This pattern is used consistently across all countries.

Applied to files:

  • tests/countries/test_india.py
📚 Learning: 2025-05-10T04:32:15.760Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2537
File: holidays/countries/finland.py:0-0
Timestamp: 2025-05-10T04:32:15.760Z
Learning: In the holidays package, detailed historical context and additional information should be added as comments at the method level or above conditional blocks, while comments directly above tr() function calls should only contain the holiday name itself (e.g., "# Independence Day.").

Applied to files:

  • holidays/locale/hi/LC_MESSAGES/IN.po
📚 Learning: 2025-06-10T05:08:07.939Z
Learnt from: PPsyrius
Repo: vacanza/holidays PR: 2608
File: holidays/locale/en_US/LC_MESSAGES/VC.po:76-76
Timestamp: 2025-06-10T05:08:07.939Z
Learning: For the holidays project, localization file formatting issues (like missing terminal periods in .po files) should be automatically fixed by running `make l10n` command (which is included in `make check`). Authors should be directed to use this automated tooling instead of manual formatting fixes.

Applied to files:

  • holidays/locale/hi/LC_MESSAGES/IN.po
🪛 Ruff (0.14.8)
holidays/countries/india.py

326-326: Missing return type annotation for private function _populate_subdiv_dh_public_holidays

Add return type annotation: None

(ANN202)

🔇 Additional comments (12)
holidays/locale/en_US/LC_MESSAGES/IN.po (1)

17-17: LGTM! Localization entries properly formatted.

The version bump and new liberation day entries follow the correct format with proper translator comments ending in periods and empty msgstr fields for en_US locale.

Also applies to: 179-186

holidays/locale/en_IN/LC_MESSAGES/IN.po (1)

17-17: LGTM! Default locale entries follow standard convention.

The entries correctly use empty msgstr fields for the default en_IN locale, as is standard practice in this project.

Also applies to: 179-186

holidays/locale/gu/LC_MESSAGES/IN.po (1)

17-17: LGTM! Gujarati translations properly added.

The localization entries include appropriate Gujarati translations that are consistent with existing patterns in the file.

Also applies to: 179-186

holidays/locale/hi/LC_MESSAGES/IN.po (1)

17-17: LGTM! Hindi translations properly added.

The localization entries include appropriate Hindi translations consistent with existing patterns in the file.

Also applies to: 179-186

tests/countries/test_india.py (5)

75-79: LGTM! DH subdivision test data properly added.

The test data correctly covers all three holidays for the DH subdivision with clear inline comments identifying each holiday.


560-560: LGTM! Default locale test entries correctly added.

The test properly includes the new Aug 2 liberation day and the combined Dec 19 entry showing both Daman and Diu and Goa liberation days in alphabetical order.

Also applies to: 594-594


625-625: LGTM! Gujarati and Hindi locale tests correctly handle alphabetical ordering.

The tests properly reflect the library's automatic alphabetical sorting behavior. On Dec 19, Goa appears first in Gujarati and Hindi because the respective scripts' character for Goa comes before Daman alphabetically.

Also applies to: 657-657, 688-688, 720-720


754-754: LGTM! English US locale tests properly added.

The en_US locale tests correctly include both new dates with proper alphabetical ordering.

Also applies to: 788-788


792-795: LGTM! Deprecated alias test properly validates DD → DH mapping.

The test correctly verifies that the deprecated DD subdivision code produces identical holiday dates as the new DH code.

holidays/countries/india.py (3)

64-64: LGTM! Subdivision declarations properly updated.

The DH subdivision is correctly added to the subdivisions tuple, and the deprecated DD alias is properly mapped to DH along with full name aliases.

Also applies to: 106-108


154-156: LGTM! Deprecated subdivision properly listed.

DD is correctly included in the deprecated subdivisions list, ensuring users receive deprecation warnings when using the old code.


325-334: LGTM! DH subdivision holiday method properly implemented.

The method correctly adds all three holidays for the Dadra and Nagar Haveli and Daman and Diu subdivision following the established pattern. The Ruff warning about missing return annotation can be ignored as _populate methods intentionally omit return type annotations per project conventions.


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

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds holiday support for the merged Union Territory of Dadra and Nagar Haveli and Daman and Diu (ISO code DH) in India, including two liberation day holidays and comprehensive localization support across Hindi, Gujarati, and English.

  • Added DH subdivision with three holidays: Dr. B. R. Ambedkar's Jayanti (Apr 14), Dadra and Nagar Haveli Liberation Day (Aug 2), and Daman and Diu Liberation Day (Dec 19)
  • Added DD as a deprecated alias for backward compatibility
  • Updated Hindi and Gujarati translations with localized holiday names

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
holidays/countries/india.py Added _populate_subdiv_dh_public_holidays method with three public holidays and added DD deprecated alias mapping
tests/countries/test_india.py Added DH subdivision test data and updated all localization tests to include the new holidays
holidays/locale/hi/LC_MESSAGES/IN.po Added Hindi translations for the two new liberation day holidays
holidays/locale/gu/LC_MESSAGES/IN.po Added Gujarati translations for the two new liberation day holidays
holidays/locale/en_US/LC_MESSAGES/IN.po Added English (US) entries for the two new liberation day holidays
holidays/locale/en_IN/LC_MESSAGES/IN.po Added English (IN) entries for the two new liberation day holidays

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@sonarqubecloud
Copy link

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

* <https://web.archive.org/web/20250413193633/https://www.calendarlabs.com/holidays/india/2021>
* <https://web.archive.org/web/20231118175007/http://slusi.dacnet.nic.in/watershedatlas/list_of_state_abbreviation.htm>
* <https://web.archive.org/web/20231008063930/https://vahan.parivahan.gov.in/vahan4dashboard/>
* Dadra and Nagar Haveli and Daman and Diu :
Copy link

Copilot AI Dec 18, 2025

Choose a reason for hiding this comment

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

There is an extra space before the colon. It should be "Daman and Diu:" instead of "Daman and Diu :".

Suggested change
* Dadra and Nagar Haveli and Daman and Diu :
* Dadra and Nagar Haveli and Daman and Diu:

Copilot uses AI. Check for mistakes.
@KJhellico
Copy link
Collaborator

Are these holidays official? DH govenment lists (2022, 2024) don't include them.

@pareshjoshij
Copy link
Contributor Author

pareshjoshij commented Dec 18, 2025

Are these holidays official? DH govenment lists (2022, 2024) don't include them.

Oh my bad, you're absolutely right! I got confused and thought they were official. Should I update this PR to remove those two and just keep Ambedkar Jayanti (Apr 14) along with the structural fixes (DH class & aliases)?

@KJhellico
Copy link
Collaborator

Should I update this PR to remove those two and just keep Ambedkar Jayanti (Apr 14

Yes, if there are no more specific holidays there.

@pareshjoshij pareshjoshij marked this pull request as draft December 24, 2025 05:30
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.

2 participants