From bc609d3b27aa86db8357871241f3cebcae4c2030 Mon Sep 17 00:00:00 2001 From: g1mn <16727837+g1mn@users.noreply.github.com> Date: Sun, 26 Jul 2026 12:18:02 +0000 Subject: [PATCH] fix(US): Mardi Gras is a Louisiana state holiday, not New Orleans only US.yaml carried Mardi Gras (easter -47) under LA.regions.NO, so US-LA missed it entirely. Louisiana state employees do not work Mardi Gras Day (R.S. 1:55 B(1)(a)), and it is a legal holiday in the 29 parishes listed in R.S. 1:55 A(3) once the parish declares it by ordinance, plus in all municipalities - state level is the closest fit for this library's granularity. The NO region keeps its name so getRegions('US', 'LA') still returns it and US-LA-NO queries keep resolving; Mardi Gras now reaches them by inheritance. Lundi Gras is left out: the issue guessed at it, but R.S. 1:55 does not mention the Monday before. Fixtures regenerated with `mocha test/all.mocha.js --writetests --countries US`. Closes #638 --- data/countries/US.yaml | 13 ++++++++----- test/fixtures/US-LA-2015.json | 9 +++++++++ test/fixtures/US-LA-2016.json | 9 +++++++++ test/fixtures/US-LA-2017.json | 9 +++++++++ test/fixtures/US-LA-2018.json | 9 +++++++++ test/fixtures/US-LA-2019.json | 9 +++++++++ test/fixtures/US-LA-2020.json | 9 +++++++++ test/fixtures/US-LA-2021.json | 9 +++++++++ test/fixtures/US-LA-2022.json | 9 +++++++++ test/fixtures/US-LA-2023.json | 9 +++++++++ test/fixtures/US-LA-2024.json | 9 +++++++++ test/fixtures/US-LA-2025.json | 9 +++++++++ test/fixtures/US-LA-2026.json | 9 +++++++++ test/fixtures/US-LA-2027.json | 9 +++++++++ test/fixtures/US-LA-2028.json | 9 +++++++++ test/fixtures/US-LA-2029.json | 9 +++++++++ 16 files changed, 143 insertions(+), 5 deletions(-) diff --git a/data/countries/US.yaml b/data/countries/US.yaml index d2c1b42e3..4963cbbbf 100644 --- a/data/countries/US.yaml +++ b/data/countries/US.yaml @@ -496,6 +496,14 @@ holidays: zones: - America/Chicago days: + # Mardi Gras is state-wide, not just New Orleans: state employees do not + # work it (R.S. 1:55 B(1)(a)) and it is a legal holiday in the parishes + # listed in R.S. 1:55 A(3) once declared by ordinance, plus in all + # municipalities. https://legis.la.gov/Legis/Law.aspx?d=74097 + easter -47: + _name: easter -47 + name: + en: Mardi Gras easter -2: _name: easter -2 tuesday after 1st monday in November in even years: @@ -504,11 +512,6 @@ holidays: regions: NO: name: New Orleans - days: - easter -47: - _name: easter -47 - name: - en: Mardi Gras ME: name: Maine zones: diff --git a/test/fixtures/US-LA-2015.json b/test/fixtures/US-LA-2015.json index 0810c23c1..c91b8182d 100644 --- a/test/fixtures/US-LA-2015.json +++ b/test/fixtures/US-LA-2015.json @@ -35,6 +35,15 @@ "rule": "3rd monday in February", "_weekday": "Mon" }, + { + "date": "2015-02-17 00:00:00", + "start": "2015-02-17T06:00:00.000Z", + "end": "2015-02-18T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2015-03-17 00:00:00", "start": "2015-03-17T05:00:00.000Z", diff --git a/test/fixtures/US-LA-2016.json b/test/fixtures/US-LA-2016.json index 23743efbf..8337ef44d 100644 --- a/test/fixtures/US-LA-2016.json +++ b/test/fixtures/US-LA-2016.json @@ -17,6 +17,15 @@ "rule": "3rd monday in January", "_weekday": "Mon" }, + { + "date": "2016-02-09 00:00:00", + "start": "2016-02-09T06:00:00.000Z", + "end": "2016-02-10T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2016-02-14 00:00:00", "start": "2016-02-14T06:00:00.000Z", diff --git a/test/fixtures/US-LA-2017.json b/test/fixtures/US-LA-2017.json index a05160759..373b1960c 100644 --- a/test/fixtures/US-LA-2017.json +++ b/test/fixtures/US-LA-2017.json @@ -45,6 +45,15 @@ "rule": "3rd monday in February", "_weekday": "Mon" }, + { + "date": "2017-02-28 00:00:00", + "start": "2017-02-28T06:00:00.000Z", + "end": "2017-03-01T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2017-03-17 00:00:00", "start": "2017-03-17T05:00:00.000Z", diff --git a/test/fixtures/US-LA-2018.json b/test/fixtures/US-LA-2018.json index d67f3abb7..416fdad65 100644 --- a/test/fixtures/US-LA-2018.json +++ b/test/fixtures/US-LA-2018.json @@ -17,6 +17,15 @@ "rule": "3rd monday in January", "_weekday": "Mon" }, + { + "date": "2018-02-13 00:00:00", + "start": "2018-02-13T06:00:00.000Z", + "end": "2018-02-14T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2018-02-14 00:00:00", "start": "2018-02-14T06:00:00.000Z", diff --git a/test/fixtures/US-LA-2019.json b/test/fixtures/US-LA-2019.json index 8a2be63aa..adb19b92a 100644 --- a/test/fixtures/US-LA-2019.json +++ b/test/fixtures/US-LA-2019.json @@ -35,6 +35,15 @@ "rule": "3rd monday in February", "_weekday": "Mon" }, + { + "date": "2019-03-05 00:00:00", + "start": "2019-03-05T06:00:00.000Z", + "end": "2019-03-06T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2019-03-17 00:00:00", "start": "2019-03-17T05:00:00.000Z", diff --git a/test/fixtures/US-LA-2020.json b/test/fixtures/US-LA-2020.json index 82299ee10..ad8eb3e91 100644 --- a/test/fixtures/US-LA-2020.json +++ b/test/fixtures/US-LA-2020.json @@ -35,6 +35,15 @@ "rule": "3rd monday in February", "_weekday": "Mon" }, + { + "date": "2020-02-25 00:00:00", + "start": "2020-02-25T06:00:00.000Z", + "end": "2020-02-26T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2020-03-17 00:00:00", "start": "2020-03-17T05:00:00.000Z", diff --git a/test/fixtures/US-LA-2021.json b/test/fixtures/US-LA-2021.json index 337481a26..cbd7cf5c4 100644 --- a/test/fixtures/US-LA-2021.json +++ b/test/fixtures/US-LA-2021.json @@ -35,6 +35,15 @@ "rule": "3rd monday in February", "_weekday": "Mon" }, + { + "date": "2021-02-16 00:00:00", + "start": "2021-02-16T06:00:00.000Z", + "end": "2021-02-17T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2021-03-17 00:00:00", "start": "2021-03-17T05:00:00.000Z", diff --git a/test/fixtures/US-LA-2022.json b/test/fixtures/US-LA-2022.json index 9cb3b3d1c..57f603de2 100644 --- a/test/fixtures/US-LA-2022.json +++ b/test/fixtures/US-LA-2022.json @@ -35,6 +35,15 @@ "rule": "3rd monday in February", "_weekday": "Mon" }, + { + "date": "2022-03-01 00:00:00", + "start": "2022-03-01T06:00:00.000Z", + "end": "2022-03-02T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2022-03-17 00:00:00", "start": "2022-03-17T05:00:00.000Z", diff --git a/test/fixtures/US-LA-2023.json b/test/fixtures/US-LA-2023.json index 56cc15916..7272cf463 100644 --- a/test/fixtures/US-LA-2023.json +++ b/test/fixtures/US-LA-2023.json @@ -45,6 +45,15 @@ "rule": "3rd monday in February", "_weekday": "Mon" }, + { + "date": "2023-02-21 00:00:00", + "start": "2023-02-21T06:00:00.000Z", + "end": "2023-02-22T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2023-03-17 00:00:00", "start": "2023-03-17T05:00:00.000Z", diff --git a/test/fixtures/US-LA-2024.json b/test/fixtures/US-LA-2024.json index a4c955090..b78250dd3 100644 --- a/test/fixtures/US-LA-2024.json +++ b/test/fixtures/US-LA-2024.json @@ -17,6 +17,15 @@ "rule": "3rd monday in January", "_weekday": "Mon" }, + { + "date": "2024-02-13 00:00:00", + "start": "2024-02-13T06:00:00.000Z", + "end": "2024-02-14T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2024-02-14 00:00:00", "start": "2024-02-14T06:00:00.000Z", diff --git a/test/fixtures/US-LA-2025.json b/test/fixtures/US-LA-2025.json index 9d61fbb1d..49ae66579 100644 --- a/test/fixtures/US-LA-2025.json +++ b/test/fixtures/US-LA-2025.json @@ -35,6 +35,15 @@ "rule": "3rd monday in February", "_weekday": "Mon" }, + { + "date": "2025-03-04 00:00:00", + "start": "2025-03-04T06:00:00.000Z", + "end": "2025-03-05T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2025-03-17 00:00:00", "start": "2025-03-17T05:00:00.000Z", diff --git a/test/fixtures/US-LA-2026.json b/test/fixtures/US-LA-2026.json index d4d981be6..5d0cb7da3 100644 --- a/test/fixtures/US-LA-2026.json +++ b/test/fixtures/US-LA-2026.json @@ -35,6 +35,15 @@ "rule": "3rd monday in February", "_weekday": "Mon" }, + { + "date": "2026-02-17 00:00:00", + "start": "2026-02-17T06:00:00.000Z", + "end": "2026-02-18T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2026-03-17 00:00:00", "start": "2026-03-17T05:00:00.000Z", diff --git a/test/fixtures/US-LA-2027.json b/test/fixtures/US-LA-2027.json index 981507d08..9d6e8febd 100644 --- a/test/fixtures/US-LA-2027.json +++ b/test/fixtures/US-LA-2027.json @@ -17,6 +17,15 @@ "rule": "3rd monday in January", "_weekday": "Mon" }, + { + "date": "2027-02-09 00:00:00", + "start": "2027-02-09T06:00:00.000Z", + "end": "2027-02-10T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2027-02-14 00:00:00", "start": "2027-02-14T06:00:00.000Z", diff --git a/test/fixtures/US-LA-2028.json b/test/fixtures/US-LA-2028.json index 3eb714b56..3f62a2b41 100644 --- a/test/fixtures/US-LA-2028.json +++ b/test/fixtures/US-LA-2028.json @@ -35,6 +35,15 @@ "rule": "3rd monday in February", "_weekday": "Mon" }, + { + "date": "2028-02-29 00:00:00", + "start": "2028-02-29T06:00:00.000Z", + "end": "2028-03-01T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2028-03-17 00:00:00", "start": "2028-03-17T05:00:00.000Z", diff --git a/test/fixtures/US-LA-2029.json b/test/fixtures/US-LA-2029.json index baeca63d3..f94c2259c 100644 --- a/test/fixtures/US-LA-2029.json +++ b/test/fixtures/US-LA-2029.json @@ -17,6 +17,15 @@ "rule": "3rd monday in January", "_weekday": "Mon" }, + { + "date": "2029-02-13 00:00:00", + "start": "2029-02-13T06:00:00.000Z", + "end": "2029-02-14T06:00:00.000Z", + "name": "Mardi Gras", + "type": "public", + "rule": "easter -47", + "_weekday": "Tue" + }, { "date": "2029-02-14 00:00:00", "start": "2029-02-14T06:00:00.000Z",