AXLR / Catalog / administration

holiday_table

Public holidays of a country and year (2024 to 2032) from a bundled dated table computed from each holiday's legal rule: Spain, Portugal, France, Germany (nationwide), Italy, England and Wales (bank holidays with substitute days) and the US (federal, with observed days). Each row gives the date, the observed day off, local and English names, national or regional scope and the legal source; regional, local and one-off holidays must be added.

Install

/tools install holiday_table
/tools install holiday_table@1.0.0

In a console session, or let the model find it in normal mode: axlr_catalog describes it and axlr_install_tool asks for the same install card. The card reads catalog axlr · holiday_table 1.0.0 · verified once the index signature, the manifest digest and every file digest check out. Then the model runs it with axlr_run_tool holiday_table; each run is approved as a local_exec.

Arguments

One JSON object on stdin, validated against the schema before the program starts.

nametyperequireddefaultmeaning
countrystringnoGB-ENG covers England and Wales. one of "ES", "PT", "FR", "DE", "IT", "GB-ENG", "US"
yearintegerno≥ 2024; ≤ 2032
regionstringnoISO 3166-2 code, e.g. FR-67; filters regional rows
include_regionalbooleannotrue
list_countriesbooleanno
Input schema (JSON)
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "country": {
      "type": "string",
      "enum": [
        "ES",
        "PT",
        "FR",
        "DE",
        "IT",
        "GB-ENG",
        "US"
      ],
      "description": "GB-ENG covers England and Wales"
    },
    "year": {
      "type": "integer",
      "minimum": 2024,
      "maximum": 2032
    },
    "region": {
      "type": "string",
      "description": "ISO 3166-2 code, e.g. FR-67; filters regional rows"
    },
    "include_regional": {
      "type": "boolean",
      "default": true
    },
    "list_countries": {
      "type": "boolean"
    }
  }
}

Example

Input

{
  "country": "GB-ENG",
  "year": 2026
}

Output (stdout)

{
  "count": 8,
  "days_off": [
    "2026-01-01",
    "2026-04-03",
    "2026-04-06",
    "2026-05-04",
    "2026-05-25",
    "2026-08-31",
    "2026-12-25",
    "2026-12-28"
  ]
}

Files

The command the install card registers is python3 holiday_table.py, run in the workspace with PATH and HOME as its only environment. Each file's SHA-256 is in the signed index; the console checks them before showing the card and again before writing.

holiday_table.py · sha256 18f4f06e8058e20875600c47d5d8b28be1cf630bf1e63157b6944495de327b7c
#!/usr/bin/env python3
"""Public holidays of a country and year from the bundled table holidays.json (computed from
each holiday's legal rule by tools/catalog/data/holiday_table.py, with its source and date).

Input (JSON on stdin):
  country          "ES" | "PT" | "FR" | "DE" | "IT" | "GB-ENG" | "US"
  year             integer within the table's years
  region           optional ISO 3166-2 code (e.g. "FR-67"): keeps regional rows of that region
                   and the regional rows whose regions vary by year
  include_regional optional, default true; false keeps national rows only
  list_countries   true: only list the bundled countries and years

A row is listed for a year when its legal date or its observed (substitute) date falls in it,
so a US New Year's Day observed on 31 December appears in both years.
"""
import datetime as dt
import json
import pathlib
import sys

WEEKDAYS = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
NOTE = ("Regional and local holidays, and one-off changes made after the table's date (a new law, a royal "
        "proclamation, a moved holiday), are not all included and must be added from the official calendar.")


def fail(message):
    print(json.dumps({"error": message}))
    sys.exit(2)


def load():
    return json.loads((pathlib.Path(__file__).parent / "holidays.json").read_text(encoding="utf-8"))


def main():
    try:
        request = json.load(sys.stdin)
    except ValueError as error:
        fail(f"stdin is not JSON: {error}")
    if not isinstance(request, dict):
        fail("input must be a JSON object")
    known = {"country", "year", "region", "include_regional", "list_countries"}
    extra = sorted(set(request) - known)
    if extra:
        fail(f"unknown field(s): {', '.join(extra)}")
    table = load()
    first, last = table["years"]
    countries = table["countries"]
    if request.get("list_countries") is True:
        print(json.dumps({"countries": {code: c["name"] for code, c in countries.items()}, "years": [first, last],
                          "generated": table["generated"], "generator": table["generator"]}, ensure_ascii=False))
        return
    country = request.get("country")
    if not isinstance(country, str) or country.upper() not in countries:
        fail(f"country must be one of {', '.join(countries)}")
    country = country.upper()
    year = request.get("year")
    if not isinstance(year, int) or isinstance(year, bool):
        fail("year must be an integer")
    if not first <= year <= last:
        fail(f"year must be between {first} and {last} (the table's range)")
    region = request.get("region")
    if region is not None:
        if not isinstance(region, str) or not region.strip():
            fail("region must be an ISO 3166-2 code such as FR-67")
        region = region.strip().upper()
        if not region.startswith(country.split("-")[0] + "-"):
            fail(f"region {region} is not a subdivision of {country}")
    include_regional = request.get("include_regional", True)
    if not isinstance(include_regional, bool):
        fail("include_regional must be true or false")

    data = countries[country]
    rows = []
    for y in (year - 1, year, year + 1):
        for date, observed, rule_id in data["years"].get(str(y), []):
            legal = dt.date.fromisoformat(date)
            moved = dt.date.fromisoformat(observed) if observed else None
            if legal.year != year and (moved is None or moved.year != year):
                continue
            rule = data["rules"][rule_id]
            if rule["scope"] == "regional":
                if not include_regional:
                    continue
                if region is not None and rule["regions"] is not None and region not in rule["regions"]:
                    continue
            effective = moved or legal
            row = {"date": date, "weekday": WEEKDAYS[legal.weekday()], "observed": observed,
                   "day_off": effective.isoformat(), "day_off_weekday": WEEKDAYS[effective.weekday()],
                   "name": rule["name"], "name_en": rule["name_en"], "scope": rule["scope"], "rule": rule_id}
            if rule["scope"] == "regional":
                row["regions"] = rule["regions"]
                if rule["regions"] is None:
                    row["regions_note"] = "regions vary by year: check the official regional calendar"
            row["source"] = rule["source"]
            rows.append(row)
    rows.sort(key=lambda r: (r["day_off"], r["date"]))
    result = {
        "country": country, "country_name": data["name"], "year": year, "region": region,
        "count": len(rows),
        "holidays": rows,
        "days_off": [r["day_off"] for r in rows if r["day_off"][:4] == str(year)],
        "by_date": {r["day_off"]: r["name_en"] for r in rows},
        "observed_rule": data["observed_rule"],
        "country_note": data["note"],
        "note": NOTE,
        "table": {"generated": table["generated"], "generator": table["generator"], "method": table["method"]},
    }
    print(json.dumps(result, ensure_ascii=False))


if __name__ == "__main__":
    main()
holidays.json · sha256 99b449e9c4335a1ab6c43866ac8d24887a9ca06c3942df9df289895ee30b6629
{
 "generated": "2026-10-18",
 "generator": "tools/catalog/data/holiday_table.py",
 "method": "computed from each rule: fixed dates, Easter offsets (anonymous Gregorian algorithm), nth weekdays and the US and UK substitution rules",
 "years": [2024, 2032],
 "entry": ["date", "observed (substitute day, or null)", "rule"],
 "countries": {
  "ES": {
   "name": "Spain",
   "language": "es",
   "note": "National holidays common to all of Spain. Each autonomous community may replace some of them (RD 2001/1983 art. 45.3), adds its own and moves a holiday falling on Sunday to Monday; two local holidays per municipality. Check the yearly BOE resolution and the regional and municipal calendars.",
   "observed_rule": null,
   "rules": {
    "anio_nuevo": {"name": "Año Nuevo", "name_en": "New Year's Day", "scope": "national", "regions": null, "source": "Estatuto de los Trabajadores (RDLeg 2/2015) art. 37.2 and Real Decreto 2001/1983 art. 45; the yearly list is the BOE resolution of the Dirección General de Trabajo: https://www.boe.es/buscar/act.php?id=BOE-A-2015-11430"},
    "epifania": {"name": "Epifanía del Señor", "name_en": "Epiphany", "scope": "national", "regions": null, "source": "Estatuto de los Trabajadores (RDLeg 2/2015) art. 37.2 and Real Decreto 2001/1983 art. 45; the yearly list is the BOE resolution of the Dirección General de Trabajo: https://www.boe.es/buscar/act.php?id=BOE-A-2015-11430"},
    "jueves_santo": {"name": "Jueves Santo", "name_en": "Holy Thursday", "scope": "regional", "regions": null, "source": "Estatuto de los Trabajadores (RDLeg 2/2015) art. 37.2 and Real Decreto 2001/1983 art. 45; the yearly list is the BOE resolution of the Dirección General de Trabajo: https://www.boe.es/buscar/act.php?id=BOE-A-2015-11430 (Holy Thursday is a holiday in most communities; the list varies each year)"},
    "viernes_santo": {"name": "Viernes Santo", "name_en": "Good Friday", "scope": "national", "regions": null, "source": "Estatuto de los Trabajadores (RDLeg 2/2015) art. 37.2 and Real Decreto 2001/1983 art. 45; the yearly list is the BOE resolution of the Dirección General de Trabajo: https://www.boe.es/buscar/act.php?id=BOE-A-2015-11430"},
    "lunes_pascua": {"name": "Lunes de Pascua", "name_en": "Easter Monday", "scope": "regional", "regions": null, "source": "Estatuto de los Trabajadores (RDLeg 2/2015) art. 37.2 and Real Decreto 2001/1983 art. 45; the yearly list is the BOE resolution of the Dirección General de Trabajo: https://www.boe.es/buscar/act.php?id=BOE-A-2015-11430 (Easter Monday is a holiday in a few communities; the list varies each year)"},
    "trabajo": {"name": "Fiesta del Trabajo", "name_en": "Labour Day", "scope": "national", "regions": null, "source": "Estatuto de los Trabajadores (RDLeg 2/2015) art. 37.2 and Real Decreto 2001/1983 art. 45; the yearly list is the BOE resolution of the Dirección General de Trabajo: https://www.boe.es/buscar/act.php?id=BOE-A-2015-11430"},
    "asuncion": {"name": "Asunción de la Virgen", "name_en": "Assumption Day", "scope": "national", "regions": null, "source": "Estatuto de los Trabajadores (RDLeg 2/2015) art. 37.2 and Real Decreto 2001/1983 art. 45; the yearly list is the BOE resolution of the Dirección General de Trabajo: https://www.boe.es/buscar/act.php?id=BOE-A-2015-11430"},
    "fiesta_nacional": {"name": "Fiesta Nacional de España", "name_en": "National Day of Spain", "scope": "national", "regions": null, "source": "Estatuto de los Trabajadores (RDLeg 2/2015) art. 37.2 and Real Decreto 2001/1983 art. 45; the yearly list is the BOE resolution of the Dirección General de Trabajo: https://www.boe.es/buscar/act.php?id=BOE-A-2015-11430"},
    "todos_santos": {"name": "Todos los Santos", "name_en": "All Saints' Day", "scope": "national", "regions": null, "source": "Estatuto de los Trabajadores (RDLeg 2/2015) art. 37.2 and Real Decreto 2001/1983 art. 45; the yearly list is the BOE resolution of the Dirección General de Trabajo: https://www.boe.es/buscar/act.php?id=BOE-A-2015-11430"},
    "constitucion": {"name": "Día de la Constitución Española", "name_en": "Constitution Day", "scope": "national", "regions": null, "source": "Estatuto de los Trabajadores (RDLeg 2/2015) art. 37.2 and Real Decreto 2001/1983 art. 45; the yearly list is the BOE resolution of the Dirección General de Trabajo: https://www.boe.es/buscar/act.php?id=BOE-A-2015-11430"},
    "inmaculada": {"name": "Inmaculada Concepción", "name_en": "Immaculate Conception", "scope": "national", "regions": null, "source": "Estatuto de los Trabajadores (RDLeg 2/2015) art. 37.2 and Real Decreto 2001/1983 art. 45; the yearly list is the BOE resolution of the Dirección General de Trabajo: https://www.boe.es/buscar/act.php?id=BOE-A-2015-11430"},
    "navidad": {"name": "Natividad del Señor", "name_en": "Christmas Day", "scope": "national", "regions": null, "source": "Estatuto de los Trabajadores (RDLeg 2/2015) art. 37.2 and Real Decreto 2001/1983 art. 45; the yearly list is the BOE resolution of the Dirección General de Trabajo: https://www.boe.es/buscar/act.php?id=BOE-A-2015-11430"}
   },
   "years": {
    "2023": [
     ["2023-01-01", null, "anio_nuevo"],
     ["2023-01-06", null, "epifania"],
     ["2023-04-06", null, "jueves_santo"],
     ["2023-04-07", null, "viernes_santo"],
     ["2023-04-10", null, "lunes_pascua"],
     ["2023-05-01", null, "trabajo"],
     ["2023-08-15", null, "asuncion"],
     ["2023-10-12", null, "fiesta_nacional"],
     ["2023-11-01", null, "todos_santos"],
     ["2023-12-06", null, "constitucion"],
     ["2023-12-08", null, "inmaculada"],
     ["2023-12-25", null, "navidad"]
    ],
    "2024": [
     ["2024-01-01", null, "anio_nuevo"],
     ["2024-01-06", null, "epifania"],
     ["2024-03-28", null, "jueves_santo"],
     ["2024-03-29", null, "viernes_santo"],
     ["2024-04-01", null, "lunes_pascua"],
     ["2024-05-01", null, "trabajo"],
     ["2024-08-15", null, "asuncion"],
     ["2024-10-12", null, "fiesta_nacional"],
     ["2024-11-01", null, "todos_santos"],
     ["2024-12-06", null, "constitucion"],
     ["2024-12-08", null, "inmaculada"],
     ["2024-12-25", null, "navidad"]
    ],
    "2025": [
     ["2025-01-01", null, "anio_nuevo"],
     ["2025-01-06", null, "epifania"],
     ["2025-04-17", null, "jueves_santo"],
     ["2025-04-18", null, "viernes_santo"],
     ["2025-04-21", null, "lunes_pascua"],
     ["2025-05-01", null, "trabajo"],
     ["2025-08-15", null, "asuncion"],
     ["2025-10-12", null, "fiesta_nacional"],
     ["2025-11-01", null, "todos_santos"],
     ["2025-12-06", null, "constitucion"],
     ["2025-12-08", null, "inmaculada"],
     ["2025-12-25", null, "navidad"]
    ],
    "2026": [
     ["2026-01-01", null, "anio_nuevo"],
     ["2026-01-06", null, "epifania"],
     ["2026-04-02", null, "jueves_santo"],
     ["2026-04-03", null, "viernes_santo"],
     ["2026-04-06", null, "lunes_pascua"],
     ["2026-05-01", null, "trabajo"],
     ["2026-08-15", null, "asuncion"],
     ["2026-10-12", null, "fiesta_nacional"],
     ["2026-11-01", null, "todos_santos"],
     ["2026-12-06", null, "constitucion"],
     ["2026-12-08", null, "inmaculada"],
     ["2026-12-25", null, "navidad"]
    ],
    "2027": [
     ["2027-01-01", null, "anio_nuevo"],
     ["2027-01-06", null, "epifania"],
     ["2027-03-25", null, "jueves_santo"],
     ["2027-03-26", null, "viernes_santo"],
     ["2027-03-29", null, "lunes_pascua"],
     ["2027-05-01", null, "trabajo"],
     ["2027-08-15", null, "asuncion"],
     ["2027-10-12", null, "fiesta_nacional"],
     ["2027-11-01", null, "todos_santos"],
     ["2027-12-06", null, "constitucion"],
     ["2027-12-08", null, "inmaculada"],
     ["2027-12-25", null, "navidad"]
    ],
    "2028": [
     ["2028-01-01", null, "anio_nuevo"],
     ["2028-01-06", null, "epifania"],
     ["2028-04-13", null, "jueves_santo"],
     ["2028-04-14", null, "viernes_santo"],
     ["2028-04-17", null, "lunes_pascua"],
     ["2028-05-01", null, "trabajo"],
     ["2028-08-15", null, "asuncion"],
     ["2028-10-12", null, "fiesta_nacional"],
     ["2028-11-01", null, "todos_santos"],
     ["2028-12-06", null, "constitucion"],
     ["2028-12-08", null, "inmaculada"],
     ["2028-12-25", null, "navidad"]
    ],
    "2029": [
     ["2029-01-01", null, "anio_nuevo"],
     ["2029-01-06", null, "epifania"],
     ["2029-03-29", null, "jueves_santo"],
     ["2029-03-30", null, "viernes_santo"],
     ["2029-04-02", null, "lunes_pascua"],
     ["2029-05-01", null, "trabajo"],
     ["2029-08-15", null, "asuncion"],
     ["2029-10-12", null, "fiesta_nacional"],
     ["2029-11-01", null, "todos_santos"],
     ["2029-12-06", null, "constitucion"],
     ["2029-12-08", null, "inmaculada"],
     ["2029-12-25", null, "navidad"]
    ],
    "2030": [
     ["2030-01-01", null, "anio_nuevo"],
     ["2030-01-06", null, "epifania"],
     ["2030-04-18", null, "jueves_santo"],
     ["2030-04-19", null, "viernes_santo"],
     ["2030-04-22", null, "lunes_pascua"],
     ["2030-05-01", null, "trabajo"],
     ["2030-08-15", null, "asuncion"],
     ["2030-10-12", null, "fiesta_nacional"],
     ["2030-11-01", null, "todos_santos"],
     ["2030-12-06", null, "constitucion"],
     ["2030-12-08", null, "inmaculada"],
     ["2030-12-25", null, "navidad"]
    ],
    "2031": [
     ["2031-01-01", null, "anio_nuevo"],
     ["2031-01-06", null, "epifania"],
     ["2031-04-10", null, "jueves_santo"],
     ["2031-04-11", null, "viernes_santo"],
     ["2031-04-14", null, "lunes_pascua"],
     ["2031-05-01", null, "trabajo"],
     ["2031-08-15", null, "asuncion"],
     ["2031-10-12", null, "fiesta_nacional"],
     ["2031-11-01", null, "todos_santos"],
     ["2031-12-06", null, "constitucion"],
     ["2031-12-08", null, "inmaculada"],
     ["2031-12-25", null, "navidad"]
    ],
    "2032": [
     ["2032-01-01", null, "anio_nuevo"],
     ["2032-01-06", null, "epifania"],
     ["2032-03-25", null, "jueves_santo"],
     ["2032-03-26", null, "viernes_santo"],
     ["2032-03-29", null, "lunes_pascua"],
     ["2032-05-01", null, "trabajo"],
     ["2032-08-15", null, "asuncion"],
     ["2032-10-12", null, "fiesta_nacional"],
     ["2032-11-01", null, "todos_santos"],
     ["2032-12-06", null, "constitucion"],
     ["2032-12-08", null, "inmaculada"],
     ["2032-12-25", null, "navidad"]
    ],
    "2033": [
     ["2033-01-01", null, "anio_nuevo"],
     ["2033-01-06", null, "epifania"],
     ["2033-04-14", null, "jueves_santo"],
     ["2033-04-15", null, "viernes_santo"],
     ["2033-04-18", null, "lunes_pascua"],
     ["2033-05-01", null, "trabajo"],
     ["2033-08-15", null, "asuncion"],
     ["2033-10-12", null, "fiesta_nacional"],
     ["2033-11-01", null, "todos_santos"],
     ["2033-12-06", null, "constitucion"],
     ["2033-12-08", null, "inmaculada"],
     ["2033-12-25", null, "navidad"]
    ]
   }
  },
  "PT": {
   "name": "Portugal",
   "language": "pt",
   "note": "Mandatory national holidays. Carnival (Easter minus 47 days) is optional (Código do Trabalho art. 235) and each municipality has its own holiday; the autonomous regions of the Azores and Madeira add theirs.",
   "observed_rule": null,
   "rules": {
    "ano_novo": {"name": "Dia de Ano Novo", "name_en": "New Year's Day", "scope": "national", "regions": null, "source": "Código do Trabalho (Lei 7/2009) art. 234, as amended by Lei 8/2016 (restored Corpus Christi, 5 Oct, 1 Nov, 1 Dec)"},
    "sexta_santa": {"name": "Sexta-Feira Santa", "name_en": "Good Friday", "scope": "national", "regions": null, "source": "Código do Trabalho (Lei 7/2009) art. 234, as amended by Lei 8/2016 (restored Corpus Christi, 5 Oct, 1 Nov, 1 Dec)"},
    "pascoa": {"name": "Domingo de Páscoa", "name_en": "Easter Sunday", "scope": "national", "regions": null, "source": "Código do Trabalho (Lei 7/2009) art. 234, as amended by Lei 8/2016 (restored Corpus Christi, 5 Oct, 1 Nov, 1 Dec)"},
    "liberdade": {"name": "Dia da Liberdade", "name_en": "Freedom Day", "scope": "national", "regions": null, "source": "Código do Trabalho (Lei 7/2009) art. 234, as amended by Lei 8/2016 (restored Corpus Christi, 5 Oct, 1 Nov, 1 Dec)"},
    "trabalhador": {"name": "Dia do Trabalhador", "name_en": "Labour Day", "scope": "national", "regions": null, "source": "Código do Trabalho (Lei 7/2009) art. 234, as amended by Lei 8/2016 (restored Corpus Christi, 5 Oct, 1 Nov, 1 Dec)"},
    "corpo_deus": {"name": "Corpo de Deus", "name_en": "Corpus Christi", "scope": "national", "regions": null, "source": "Código do Trabalho (Lei 7/2009) art. 234, as amended by Lei 8/2016 (restored Corpus Christi, 5 Oct, 1 Nov, 1 Dec)"},
    "portugal": {"name": "Dia de Portugal, de Camões e das Comunidades Portuguesas", "name_en": "Portugal Day", "scope": "national", "regions": null, "source": "Código do Trabalho (Lei 7/2009) art. 234, as amended by Lei 8/2016 (restored Corpus Christi, 5 Oct, 1 Nov, 1 Dec)"},
    "assuncao": {"name": "Assunção de Nossa Senhora", "name_en": "Assumption Day", "scope": "national", "regions": null, "source": "Código do Trabalho (Lei 7/2009) art. 234, as amended by Lei 8/2016 (restored Corpus Christi, 5 Oct, 1 Nov, 1 Dec)"},
    "republica": {"name": "Implantação da República", "name_en": "Republic Day", "scope": "national", "regions": null, "source": "Código do Trabalho (Lei 7/2009) art. 234, as amended by Lei 8/2016 (restored Corpus Christi, 5 Oct, 1 Nov, 1 Dec)"},
    "todos_santos": {"name": "Dia de Todos os Santos", "name_en": "All Saints' Day", "scope": "national", "regions": null, "source": "Código do Trabalho (Lei 7/2009) art. 234, as amended by Lei 8/2016 (restored Corpus Christi, 5 Oct, 1 Nov, 1 Dec)"},
    "independencia": {"name": "Restauração da Independência", "name_en": "Restoration of Independence", "scope": "national", "regions": null, "source": "Código do Trabalho (Lei 7/2009) art. 234, as amended by Lei 8/2016 (restored Corpus Christi, 5 Oct, 1 Nov, 1 Dec)"},
    "imaculada": {"name": "Imaculada Conceição", "name_en": "Immaculate Conception", "scope": "national", "regions": null, "source": "Código do Trabalho (Lei 7/2009) art. 234, as amended by Lei 8/2016 (restored Corpus Christi, 5 Oct, 1 Nov, 1 Dec)"},
    "natal": {"name": "Natal", "name_en": "Christmas Day", "scope": "national", "regions": null, "source": "Código do Trabalho (Lei 7/2009) art. 234, as amended by Lei 8/2016 (restored Corpus Christi, 5 Oct, 1 Nov, 1 Dec)"}
   },
   "years": {
    "2023": [
     ["2023-01-01", null, "ano_novo"],
     ["2023-04-07", null, "sexta_santa"],
     ["2023-04-09", null, "pascoa"],
     ["2023-04-25", null, "liberdade"],
     ["2023-05-01", null, "trabalhador"],
     ["2023-06-08", null, "corpo_deus"],
     ["2023-06-10", null, "portugal"],
     ["2023-08-15", null, "assuncao"],
     ["2023-10-05", null, "republica"],
     ["2023-11-01", null, "todos_santos"],
     ["2023-12-01", null, "independencia"],
     ["2023-12-08", null, "imaculada"],
     ["2023-12-25", null, "natal"]
    ],
    "2024": [
     ["2024-01-01", null, "ano_novo"],
     ["2024-03-29", null, "sexta_santa"],
     ["2024-03-31", null, "pascoa"],
     ["2024-04-25", null, "liberdade"],
     ["2024-05-01", null, "trabalhador"],
     ["2024-05-30", null, "corpo_deus"],
     ["2024-06-10", null, "portugal"],
     ["2024-08-15", null, "assuncao"],
     ["2024-10-05", null, "republica"],
     ["2024-11-01", null, "todos_santos"],
     ["2024-12-01", null, "independencia"],
     ["2024-12-08", null, "imaculada"],
     ["2024-12-25", null, "natal"]
    ],
    "2025": [
     ["2025-01-01", null, "ano_novo"],
     ["2025-04-18", null, "sexta_santa"],
     ["2025-04-20", null, "pascoa"],
     ["2025-04-25", null, "liberdade"],
     ["2025-05-01", null, "trabalhador"],
     ["2025-06-10", null, "portugal"],
     ["2025-06-19", null, "corpo_deus"],
     ["2025-08-15", null, "assuncao"],
     ["2025-10-05", null, "republica"],
     ["2025-11-01", null, "todos_santos"],
     ["2025-12-01", null, "independencia"],
     ["2025-12-08", null, "imaculada"],
     ["2025-12-25", null, "natal"]
    ],
    "2026": [
     ["2026-01-01", null, "ano_novo"],
     ["2026-04-03", null, "sexta_santa"],
     ["2026-04-05", null, "pascoa"],
     ["2026-04-25", null, "liberdade"],
     ["2026-05-01", null, "trabalhador"],
     ["2026-06-04", null, "corpo_deus"],
     ["2026-06-10", null, "portugal"],
     ["2026-08-15", null, "assuncao"],
     ["2026-10-05", null, "republica"],
     ["2026-11-01", null, "todos_santos"],
     ["2026-12-01", null, "independencia"],
     ["2026-12-08", null, "imaculada"],
     ["2026-12-25", null, "natal"]
    ],
    "2027": [
     ["2027-01-01", null, "ano_novo"],
     ["2027-03-26", null, "sexta_santa"],
     ["2027-03-28", null, "pascoa"],
     ["2027-04-25", null, "liberdade"],
     ["2027-05-01", null, "trabalhador"],
     ["2027-05-27", null, "corpo_deus"],
     ["2027-06-10", null, "portugal"],
     ["2027-08-15", null, "assuncao"],
     ["2027-10-05", null, "republica"],
     ["2027-11-01", null, "todos_santos"],
     ["2027-12-01", null, "independencia"],
     ["2027-12-08", null, "imaculada"],
     ["2027-12-25", null, "natal"]
    ],
    "2028": [
     ["2028-01-01", null, "ano_novo"],
     ["2028-04-14", null, "sexta_santa"],
     ["2028-04-16", null, "pascoa"],
     ["2028-04-25", null, "liberdade"],
     ["2028-05-01", null, "trabalhador"],
     ["2028-06-10", null, "portugal"],
     ["2028-06-15", null, "corpo_deus"],
     ["2028-08-15", null, "assuncao"],
     ["2028-10-05", null, "republica"],
     ["2028-11-01", null, "todos_santos"],
     ["2028-12-01", null, "independencia"],
     ["2028-12-08", null, "imaculada"],
     ["2028-12-25", null, "natal"]
    ],
    "2029": [
     ["2029-01-01", null, "ano_novo"],
     ["2029-03-30", null, "sexta_santa"],
     ["2029-04-01", null, "pascoa"],
     ["2029-04-25", null, "liberdade"],
     ["2029-05-01", null, "trabalhador"],
     ["2029-05-31", null, "corpo_deus"],
     ["2029-06-10", null, "portugal"],
     ["2029-08-15", null, "assuncao"],
     ["2029-10-05", null, "republica"],
     ["2029-11-01", null, "todos_santos"],
     ["2029-12-01", null, "independencia"],
     ["2029-12-08", null, "imaculada"],
     ["2029-12-25", null, "natal"]
    ],
    "2030": [
     ["2030-01-01", null, "ano_novo"],
     ["2030-04-19", null, "sexta_santa"],
     ["2030-04-21", null, "pascoa"],
     ["2030-04-25", null, "liberdade"],
     ["2030-05-01", null, "trabalhador"],
     ["2030-06-10", null, "portugal"],
     ["2030-06-20", null, "corpo_deus"],
     ["2030-08-15", null, "assuncao"],
     ["2030-10-05", null, "republica"],
     ["2030-11-01", null, "todos_santos"],
     ["2030-12-01", null, "independencia"],
     ["2030-12-08", null, "imaculada"],
     ["2030-12-25", null, "natal"]
    ],
    "2031": [
     ["2031-01-01", null, "ano_novo"],
     ["2031-04-11", null, "sexta_santa"],
     ["2031-04-13", null, "pascoa"],
     ["2031-04-25", null, "liberdade"],
     ["2031-05-01", null, "trabalhador"],
     ["2031-06-10", null, "portugal"],
     ["2031-06-12", null, "corpo_deus"],
     ["2031-08-15", null, "assuncao"],
     ["2031-10-05", null, "republica"],
     ["2031-11-01", null, "todos_santos"],
     ["2031-12-01", null, "independencia"],
     ["2031-12-08", null, "imaculada"],
     ["2031-12-25", null, "natal"]
    ],
    "2032": [
     ["2032-01-01", null, "ano_novo"],
     ["2032-03-26", null, "sexta_santa"],
     ["2032-03-28", null, "pascoa"],
     ["2032-04-25", null, "liberdade"],
     ["2032-05-01", null, "trabalhador"],
     ["2032-05-27", null, "corpo_deus"],
     ["2032-06-10", null, "portugal"],
     ["2032-08-15", null, "assuncao"],
     ["2032-10-05", null, "republica"],
     ["2032-11-01", null, "todos_santos"],
     ["2032-12-01", null, "independencia"],
     ["2032-12-08", null, "imaculada"],
     ["2032-12-25", null, "natal"]
    ],
    "2033": [
     ["2033-01-01", null, "ano_novo"],
     ["2033-04-15", null, "sexta_santa"],
     ["2033-04-17", null, "pascoa"],
     ["2033-04-25", null, "liberdade"],
     ["2033-05-01", null, "trabalhador"],
     ["2033-06-10", null, "portugal"],
     ["2033-06-16", null, "corpo_deus"],
     ["2033-08-15", null, "assuncao"],
     ["2033-10-05", null, "republica"],
     ["2033-11-01", null, "todos_santos"],
     ["2033-12-01", null, "independencia"],
     ["2033-12-08", null, "imaculada"],
     ["2033-12-25", null, "natal"]
    ]
   }
  },
  "FR": {
   "name": "France",
   "language": "fr",
   "note": "Jours fériés of the Code du travail. Only 1 May is a paid day off by law for every employee; others depend on the collective agreement. Whit Monday may be the journée de solidarité. Overseas departments add the abolition of slavery day; Alsace-Moselle (FR-57, FR-67, FR-68) adds Good Friday and 26 December.",
   "observed_rule": null,
   "rules": {
    "jour_an": {"name": "Jour de l'an", "name_en": "New Year's Day", "scope": "national", "regions": null, "source": "Code du travail art. L3133-1: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000033020517"},
    "vendredi_saint": {"name": "Vendredi saint", "name_en": "Good Friday", "scope": "regional", "regions": ["FR-57", "FR-67", "FR-68"], "source": "Code du travail art. L3134-13 (Alsace-Moselle local law)"},
    "lundi_paques": {"name": "Lundi de Pâques", "name_en": "Easter Monday", "scope": "national", "regions": null, "source": "Code du travail art. L3133-1: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000033020517"},
    "fete_travail": {"name": "Fête du Travail", "name_en": "Labour Day", "scope": "national", "regions": null, "source": "Code du travail art. L3133-1: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000033020517"},
    "victoire_1945": {"name": "Victoire 1945", "name_en": "Victory in Europe Day", "scope": "national", "regions": null, "source": "Code du travail art. L3133-1: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000033020517"},
    "ascension": {"name": "Ascension", "name_en": "Ascension Day", "scope": "national", "regions": null, "source": "Code du travail art. L3133-1: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000033020517"},
    "lundi_pentecote": {"name": "Lundi de Pentecôte", "name_en": "Whit Monday", "scope": "national", "regions": null, "source": "Code du travail art. L3133-1: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000033020517"},
    "fete_nationale": {"name": "Fête nationale", "name_en": "Bastille Day", "scope": "national", "regions": null, "source": "Code du travail art. L3133-1: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000033020517"},
    "assomption": {"name": "Assomption", "name_en": "Assumption Day", "scope": "national", "regions": null, "source": "Code du travail art. L3133-1: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000033020517"},
    "toussaint": {"name": "Toussaint", "name_en": "All Saints' Day", "scope": "national", "regions": null, "source": "Code du travail art. L3133-1: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000033020517"},
    "armistice": {"name": "Armistice 1918", "name_en": "Armistice Day", "scope": "national", "regions": null, "source": "Code du travail art. L3133-1: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000033020517"},
    "noel": {"name": "Noël", "name_en": "Christmas Day", "scope": "national", "regions": null, "source": "Code du travail art. L3133-1: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000033020517"},
    "saint_etienne": {"name": "Saint-Étienne", "name_en": "St Stephen's Day", "scope": "regional", "regions": ["FR-57", "FR-67", "FR-68"], "source": "Code du travail art. L3134-13 (Alsace-Moselle local law)"}
   },
   "years": {
    "2023": [
     ["2023-01-01", null, "jour_an"],
     ["2023-04-07", null, "vendredi_saint"],
     ["2023-04-10", null, "lundi_paques"],
     ["2023-05-01", null, "fete_travail"],
     ["2023-05-08", null, "victoire_1945"],
     ["2023-05-18", null, "ascension"],
     ["2023-05-29", null, "lundi_pentecote"],
     ["2023-07-14", null, "fete_nationale"],
     ["2023-08-15", null, "assomption"],
     ["2023-11-01", null, "toussaint"],
     ["2023-11-11", null, "armistice"],
     ["2023-12-25", null, "noel"],
     ["2023-12-26", null, "saint_etienne"]
    ],
    "2024": [
     ["2024-01-01", null, "jour_an"],
     ["2024-03-29", null, "vendredi_saint"],
     ["2024-04-01", null, "lundi_paques"],
     ["2024-05-01", null, "fete_travail"],
     ["2024-05-08", null, "victoire_1945"],
     ["2024-05-09", null, "ascension"],
     ["2024-05-20", null, "lundi_pentecote"],
     ["2024-07-14", null, "fete_nationale"],
     ["2024-08-15", null, "assomption"],
     ["2024-11-01", null, "toussaint"],
     ["2024-11-11", null, "armistice"],
     ["2024-12-25", null, "noel"],
     ["2024-12-26", null, "saint_etienne"]
    ],
    "2025": [
     ["2025-01-01", null, "jour_an"],
     ["2025-04-18", null, "vendredi_saint"],
     ["2025-04-21", null, "lundi_paques"],
     ["2025-05-01", null, "fete_travail"],
     ["2025-05-08", null, "victoire_1945"],
     ["2025-05-29", null, "ascension"],
     ["2025-06-09", null, "lundi_pentecote"],
     ["2025-07-14", null, "fete_nationale"],
     ["2025-08-15", null, "assomption"],
     ["2025-11-01", null, "toussaint"],
     ["2025-11-11", null, "armistice"],
     ["2025-12-25", null, "noel"],
     ["2025-12-26", null, "saint_etienne"]
    ],
    "2026": [
     ["2026-01-01", null, "jour_an"],
     ["2026-04-03", null, "vendredi_saint"],
     ["2026-04-06", null, "lundi_paques"],
     ["2026-05-01", null, "fete_travail"],
     ["2026-05-08", null, "victoire_1945"],
     ["2026-05-14", null, "ascension"],
     ["2026-05-25", null, "lundi_pentecote"],
     ["2026-07-14", null, "fete_nationale"],
     ["2026-08-15", null, "assomption"],
     ["2026-11-01", null, "toussaint"],
     ["2026-11-11", null, "armistice"],
     ["2026-12-25", null, "noel"],
     ["2026-12-26", null, "saint_etienne"]
    ],
    "2027": [
     ["2027-01-01", null, "jour_an"],
     ["2027-03-26", null, "vendredi_saint"],
     ["2027-03-29", null, "lundi_paques"],
     ["2027-05-01", null, "fete_travail"],
     ["2027-05-06", null, "ascension"],
     ["2027-05-08", null, "victoire_1945"],
     ["2027-05-17", null, "lundi_pentecote"],
     ["2027-07-14", null, "fete_nationale"],
     ["2027-08-15", null, "assomption"],
     ["2027-11-01", null, "toussaint"],
     ["2027-11-11", null, "armistice"],
     ["2027-12-25", null, "noel"],
     ["2027-12-26", null, "saint_etienne"]
    ],
    "2028": [
     ["2028-01-01", null, "jour_an"],
     ["2028-04-14", null, "vendredi_saint"],
     ["2028-04-17", null, "lundi_paques"],
     ["2028-05-01", null, "fete_travail"],
     ["2028-05-08", null, "victoire_1945"],
     ["2028-05-25", null, "ascension"],
     ["2028-06-05", null, "lundi_pentecote"],
     ["2028-07-14", null, "fete_nationale"],
     ["2028-08-15", null, "assomption"],
     ["2028-11-01", null, "toussaint"],
     ["2028-11-11", null, "armistice"],
     ["2028-12-25", null, "noel"],
     ["2028-12-26", null, "saint_etienne"]
    ],
    "2029": [
     ["2029-01-01", null, "jour_an"],
     ["2029-03-30", null, "vendredi_saint"],
     ["2029-04-02", null, "lundi_paques"],
     ["2029-05-01", null, "fete_travail"],
     ["2029-05-08", null, "victoire_1945"],
     ["2029-05-10", null, "ascension"],
     ["2029-05-21", null, "lundi_pentecote"],
     ["2029-07-14", null, "fete_nationale"],
     ["2029-08-15", null, "assomption"],
     ["2029-11-01", null, "toussaint"],
     ["2029-11-11", null, "armistice"],
     ["2029-12-25", null, "noel"],
     ["2029-12-26", null, "saint_etienne"]
    ],
    "2030": [
     ["2030-01-01", null, "jour_an"],
     ["2030-04-19", null, "vendredi_saint"],
     ["2030-04-22", null, "lundi_paques"],
     ["2030-05-01", null, "fete_travail"],
     ["2030-05-08", null, "victoire_1945"],
     ["2030-05-30", null, "ascension"],
     ["2030-06-10", null, "lundi_pentecote"],
     ["2030-07-14", null, "fete_nationale"],
     ["2030-08-15", null, "assomption"],
     ["2030-11-01", null, "toussaint"],
     ["2030-11-11", null, "armistice"],
     ["2030-12-25", null, "noel"],
     ["2030-12-26", null, "saint_etienne"]
    ],
    "2031": [
     ["2031-01-01", null, "jour_an"],
     ["2031-04-11", null, "vendredi_saint"],
     ["2031-04-14", null, "lundi_paques"],
     ["2031-05-01", null, "fete_travail"],
     ["2031-05-08", null, "victoire_1945"],
     ["2031-05-22", null, "ascension"],
     ["2031-06-02", null, "lundi_pentecote"],
     ["2031-07-14", null, "fete_nationale"],
     ["2031-08-15", null, "assomption"],
     ["2031-11-01", null, "toussaint"],
     ["2031-11-11", null, "armistice"],
     ["2031-12-25", null, "noel"],
     ["2031-12-26", null, "saint_etienne"]
    ],
    "2032": [
     ["2032-01-01", null, "jour_an"],
     ["2032-03-26", null, "vendredi_saint"],
     ["2032-03-29", null, "lundi_paques"],
     ["2032-05-01", null, "fete_travail"],
     ["2032-05-06", null, "ascension"],
     ["2032-05-08", null, "victoire_1945"],
     ["2032-05-17", null, "lundi_pentecote"],
     ["2032-07-14", null, "fete_nationale"],
     ["2032-08-15", null, "assomption"],
     ["2032-11-01", null, "toussaint"],
     ["2032-11-11", null, "armistice"],
     ["2032-12-25", null, "noel"],
     ["2032-12-26", null, "saint_etienne"]
    ],
    "2033": [
     ["2033-01-01", null, "jour_an"],
     ["2033-04-15", null, "vendredi_saint"],
     ["2033-04-18", null, "lundi_paques"],
     ["2033-05-01", null, "fete_travail"],
     ["2033-05-08", null, "victoire_1945"],
     ["2033-05-26", null, "ascension"],
     ["2033-06-06", null, "lundi_pentecote"],
     ["2033-07-14", null, "fete_nationale"],
     ["2033-08-15", null, "assomption"],
     ["2033-11-01", null, "toussaint"],
     ["2033-11-11", null, "armistice"],
     ["2033-12-25", null, "noel"],
     ["2033-12-26", null, "saint_etienne"]
    ]
   }
  },
  "DE": {
   "name": "Germany",
   "language": "de",
   "note": "Only the nine holidays observed in every Land. Each Land adds its own (Epiphany, Corpus Christi, Reformation Day, All Saints' Day, Women's Day, Repentance Day and others) and some local ones; those are not in this table.",
   "observed_rule": null,
   "rules": {
    "neujahr": {"name": "Neujahr", "name_en": "New Year's Day", "scope": "national", "regions": null, "source": "Feiertagsgesetze of all 16 Länder (holiday law is state law)"},
    "karfreitag": {"name": "Karfreitag", "name_en": "Good Friday", "scope": "national", "regions": null, "source": "Feiertagsgesetze of all 16 Länder (holiday law is state law)"},
    "ostermontag": {"name": "Ostermontag", "name_en": "Easter Monday", "scope": "national", "regions": null, "source": "Feiertagsgesetze of all 16 Länder (holiday law is state law)"},
    "tag_der_arbeit": {"name": "Tag der Arbeit", "name_en": "Labour Day", "scope": "national", "regions": null, "source": "Feiertagsgesetze of all 16 Länder (holiday law is state law)"},
    "himmelfahrt": {"name": "Christi Himmelfahrt", "name_en": "Ascension Day", "scope": "national", "regions": null, "source": "Feiertagsgesetze of all 16 Länder (holiday law is state law)"},
    "pfingstmontag": {"name": "Pfingstmontag", "name_en": "Whit Monday", "scope": "national", "regions": null, "source": "Feiertagsgesetze of all 16 Länder (holiday law is state law)"},
    "einheit": {"name": "Tag der Deutschen Einheit", "name_en": "Day of German Unity", "scope": "national", "regions": null, "source": "Einigungsvertrag art. 2(2) (federal law): 3 October is the Day of German Unity"},
    "weihnachten_1": {"name": "1. Weihnachtstag", "name_en": "Christmas Day", "scope": "national", "regions": null, "source": "Feiertagsgesetze of all 16 Länder (holiday law is state law)"},
    "weihnachten_2": {"name": "2. Weihnachtstag", "name_en": "St Stephen's Day", "scope": "national", "regions": null, "source": "Feiertagsgesetze of all 16 Länder (holiday law is state law)"}
   },
   "years": {
    "2023": [
     ["2023-01-01", null, "neujahr"],
     ["2023-04-07", null, "karfreitag"],
     ["2023-04-10", null, "ostermontag"],
     ["2023-05-01", null, "tag_der_arbeit"],
     ["2023-05-18", null, "himmelfahrt"],
     ["2023-05-29", null, "pfingstmontag"],
     ["2023-10-03", null, "einheit"],
     ["2023-12-25", null, "weihnachten_1"],
     ["2023-12-26", null, "weihnachten_2"]
    ],
    "2024": [
     ["2024-01-01", null, "neujahr"],
     ["2024-03-29", null, "karfreitag"],
     ["2024-04-01", null, "ostermontag"],
     ["2024-05-01", null, "tag_der_arbeit"],
     ["2024-05-09", null, "himmelfahrt"],
     ["2024-05-20", null, "pfingstmontag"],
     ["2024-10-03", null, "einheit"],
     ["2024-12-25", null, "weihnachten_1"],
     ["2024-12-26", null, "weihnachten_2"]
    ],
    "2025": [
     ["2025-01-01", null, "neujahr"],
     ["2025-04-18", null, "karfreitag"],
     ["2025-04-21", null, "ostermontag"],
     ["2025-05-01", null, "tag_der_arbeit"],
     ["2025-05-29", null, "himmelfahrt"],
     ["2025-06-09", null, "pfingstmontag"],
     ["2025-10-03", null, "einheit"],
     ["2025-12-25", null, "weihnachten_1"],
     ["2025-12-26", null, "weihnachten_2"]
    ],
    "2026": [
     ["2026-01-01", null, "neujahr"],
     ["2026-04-03", null, "karfreitag"],
     ["2026-04-06", null, "ostermontag"],
     ["2026-05-01", null, "tag_der_arbeit"],
     ["2026-05-14", null, "himmelfahrt"],
     ["2026-05-25", null, "pfingstmontag"],
     ["2026-10-03", null, "einheit"],
     ["2026-12-25", null, "weihnachten_1"],
     ["2026-12-26", null, "weihnachten_2"]
    ],
    "2027": [
     ["2027-01-01", null, "neujahr"],
     ["2027-03-26", null, "karfreitag"],
     ["2027-03-29", null, "ostermontag"],
     ["2027-05-01", null, "tag_der_arbeit"],
     ["2027-05-06", null, "himmelfahrt"],
     ["2027-05-17", null, "pfingstmontag"],
     ["2027-10-03", null, "einheit"],
     ["2027-12-25", null, "weihnachten_1"],
     ["2027-12-26", null, "weihnachten_2"]
    ],
    "2028": [
     ["2028-01-01", null, "neujahr"],
     ["2028-04-14", null, "karfreitag"],
     ["2028-04-17", null, "ostermontag"],
     ["2028-05-01", null, "tag_der_arbeit"],
     ["2028-05-25", null, "himmelfahrt"],
     ["2028-06-05", null, "pfingstmontag"],
     ["2028-10-03", null, "einheit"],
     ["2028-12-25", null, "weihnachten_1"],
     ["2028-12-26", null, "weihnachten_2"]
    ],
    "2029": [
     ["2029-01-01", null, "neujahr"],
     ["2029-03-30", null, "karfreitag"],
     ["2029-04-02", null, "ostermontag"],
     ["2029-05-01", null, "tag_der_arbeit"],
     ["2029-05-10", null, "himmelfahrt"],
     ["2029-05-21", null, "pfingstmontag"],
     ["2029-10-03", null, "einheit"],
     ["2029-12-25", null, "weihnachten_1"],
     ["2029-12-26", null, "weihnachten_2"]
    ],
    "2030": [
     ["2030-01-01", null, "neujahr"],
     ["2030-04-19", null, "karfreitag"],
     ["2030-04-22", null, "ostermontag"],
     ["2030-05-01", null, "tag_der_arbeit"],
     ["2030-05-30", null, "himmelfahrt"],
     ["2030-06-10", null, "pfingstmontag"],
     ["2030-10-03", null, "einheit"],
     ["2030-12-25", null, "weihnachten_1"],
     ["2030-12-26", null, "weihnachten_2"]
    ],
    "2031": [
     ["2031-01-01", null, "neujahr"],
     ["2031-04-11", null, "karfreitag"],
     ["2031-04-14", null, "ostermontag"],
     ["2031-05-01", null, "tag_der_arbeit"],
     ["2031-05-22", null, "himmelfahrt"],
     ["2031-06-02", null, "pfingstmontag"],
     ["2031-10-03", null, "einheit"],
     ["2031-12-25", null, "weihnachten_1"],
     ["2031-12-26", null, "weihnachten_2"]
    ],
    "2032": [
     ["2032-01-01", null, "neujahr"],
     ["2032-03-26", null, "karfreitag"],
     ["2032-03-29", null, "ostermontag"],
     ["2032-05-01", null, "tag_der_arbeit"],
     ["2032-05-06", null, "himmelfahrt"],
     ["2032-05-17", null, "pfingstmontag"],
     ["2032-10-03", null, "einheit"],
     ["2032-12-25", null, "weihnachten_1"],
     ["2032-12-26", null, "weihnachten_2"]
    ],
    "2033": [
     ["2033-01-01", null, "neujahr"],
     ["2033-04-15", null, "karfreitag"],
     ["2033-04-18", null, "ostermontag"],
     ["2033-05-01", null, "tag_der_arbeit"],
     ["2033-05-26", null, "himmelfahrt"],
     ["2033-06-06", null, "pfingstmontag"],
     ["2033-10-03", null, "einheit"],
     ["2033-12-25", null, "weihnachten_1"],
     ["2033-12-26", null, "weihnachten_2"]
    ]
   }
  },
  "IT": {
   "name": "Italy",
   "language": "it",
   "note": "National holidays. Each comune adds its patron saint's day (e.g. Rome 29 June, Milan 7 December); Bolzano adds Whit Monday.",
   "observed_rule": null,
   "rules": {
    "capodanno": {"name": "Capodanno", "name_en": "New Year's Day", "scope": "national", "regions": null, "source": "Legge 27 maggio 1949 n. 260 as amended by Legge 54/1977 and DPR 792/1985"},
    "epifania": {"name": "Epifania", "name_en": "Epiphany", "scope": "national", "regions": null, "source": "Legge 27 maggio 1949 n. 260 as amended by Legge 54/1977 and DPR 792/1985"},
    "pasqua": {"name": "Pasqua", "name_en": "Easter Sunday", "scope": "national", "regions": null, "source": "Legge 27 maggio 1949 n. 260 as amended by Legge 54/1977 and DPR 792/1985"},
    "pasquetta": {"name": "Lunedì dell'Angelo", "name_en": "Easter Monday", "scope": "national", "regions": null, "source": "Legge 27 maggio 1949 n. 260 as amended by Legge 54/1977 and DPR 792/1985"},
    "liberazione": {"name": "Festa della Liberazione", "name_en": "Liberation Day", "scope": "national", "regions": null, "source": "Legge 27 maggio 1949 n. 260 as amended by Legge 54/1977 and DPR 792/1985"},
    "lavoro": {"name": "Festa del Lavoro", "name_en": "Labour Day", "scope": "national", "regions": null, "source": "Legge 27 maggio 1949 n. 260 as amended by Legge 54/1977 and DPR 792/1985"},
    "repubblica": {"name": "Festa della Repubblica", "name_en": "Republic Day", "scope": "national", "regions": null, "source": "Legge 27 maggio 1949 n. 260 as amended by Legge 54/1977 and DPR 792/1985"},
    "ferragosto": {"name": "Ferragosto", "name_en": "Assumption Day", "scope": "national", "regions": null, "source": "Legge 27 maggio 1949 n. 260 as amended by Legge 54/1977 and DPR 792/1985"},
    "san_francesco": {"name": "San Francesco d'Assisi e Santa Caterina da Siena", "name_en": "St Francis of Assisi", "scope": "national", "regions": null, "source": "Legge 8 ottobre 2025 n. 151 (GU n. 236 of 10 Oct 2025), amending Legge 260/1949, in force from 2026", "from_year": 2026},
    "ognissanti": {"name": "Ognissanti", "name_en": "All Saints' Day", "scope": "national", "regions": null, "source": "Legge 27 maggio 1949 n. 260 as amended by Legge 54/1977 and DPR 792/1985"},
    "immacolata": {"name": "Immacolata Concezione", "name_en": "Immaculate Conception", "scope": "national", "regions": null, "source": "Legge 27 maggio 1949 n. 260 as amended by Legge 54/1977 and DPR 792/1985"},
    "natale": {"name": "Natale", "name_en": "Christmas Day", "scope": "national", "regions": null, "source": "Legge 27 maggio 1949 n. 260 as amended by Legge 54/1977 and DPR 792/1985"},
    "santo_stefano": {"name": "Santo Stefano", "name_en": "St Stephen's Day", "scope": "national", "regions": null, "source": "Legge 27 maggio 1949 n. 260 as amended by Legge 54/1977 and DPR 792/1985"}
   },
   "years": {
    "2023": [
     ["2023-01-01", null, "capodanno"],
     ["2023-01-06", null, "epifania"],
     ["2023-04-09", null, "pasqua"],
     ["2023-04-10", null, "pasquetta"],
     ["2023-04-25", null, "liberazione"],
     ["2023-05-01", null, "lavoro"],
     ["2023-06-02", null, "repubblica"],
     ["2023-08-15", null, "ferragosto"],
     ["2023-11-01", null, "ognissanti"],
     ["2023-12-08", null, "immacolata"],
     ["2023-12-25", null, "natale"],
     ["2023-12-26", null, "santo_stefano"]
    ],
    "2024": [
     ["2024-01-01", null, "capodanno"],
     ["2024-01-06", null, "epifania"],
     ["2024-03-31", null, "pasqua"],
     ["2024-04-01", null, "pasquetta"],
     ["2024-04-25", null, "liberazione"],
     ["2024-05-01", null, "lavoro"],
     ["2024-06-02", null, "repubblica"],
     ["2024-08-15", null, "ferragosto"],
     ["2024-11-01", null, "ognissanti"],
     ["2024-12-08", null, "immacolata"],
     ["2024-12-25", null, "natale"],
     ["2024-12-26", null, "santo_stefano"]
    ],
    "2025": [
     ["2025-01-01", null, "capodanno"],
     ["2025-01-06", null, "epifania"],
     ["2025-04-20", null, "pasqua"],
     ["2025-04-21", null, "pasquetta"],
     ["2025-04-25", null, "liberazione"],
     ["2025-05-01", null, "lavoro"],
     ["2025-06-02", null, "repubblica"],
     ["2025-08-15", null, "ferragosto"],
     ["2025-11-01", null, "ognissanti"],
     ["2025-12-08", null, "immacolata"],
     ["2025-12-25", null, "natale"],
     ["2025-12-26", null, "santo_stefano"]
    ],
    "2026": [
     ["2026-01-01", null, "capodanno"],
     ["2026-01-06", null, "epifania"],
     ["2026-04-05", null, "pasqua"],
     ["2026-04-06", null, "pasquetta"],
     ["2026-04-25", null, "liberazione"],
     ["2026-05-01", null, "lavoro"],
     ["2026-06-02", null, "repubblica"],
     ["2026-08-15", null, "ferragosto"],
     ["2026-10-04", null, "san_francesco"],
     ["2026-11-01", null, "ognissanti"],
     ["2026-12-08", null, "immacolata"],
     ["2026-12-25", null, "natale"],
     ["2026-12-26", null, "santo_stefano"]
    ],
    "2027": [
     ["2027-01-01", null, "capodanno"],
     ["2027-01-06", null, "epifania"],
     ["2027-03-28", null, "pasqua"],
     ["2027-03-29", null, "pasquetta"],
     ["2027-04-25", null, "liberazione"],
     ["2027-05-01", null, "lavoro"],
     ["2027-06-02", null, "repubblica"],
     ["2027-08-15", null, "ferragosto"],
     ["2027-10-04", null, "san_francesco"],
     ["2027-11-01", null, "ognissanti"],
     ["2027-12-08", null, "immacolata"],
     ["2027-12-25", null, "natale"],
     ["2027-12-26", null, "santo_stefano"]
    ],
    "2028": [
     ["2028-01-01", null, "capodanno"],
     ["2028-01-06", null, "epifania"],
     ["2028-04-16", null, "pasqua"],
     ["2028-04-17", null, "pasquetta"],
     ["2028-04-25", null, "liberazione"],
     ["2028-05-01", null, "lavoro"],
     ["2028-06-02", null, "repubblica"],
     ["2028-08-15", null, "ferragosto"],
     ["2028-10-04", null, "san_francesco"],
     ["2028-11-01", null, "ognissanti"],
     ["2028-12-08", null, "immacolata"],
     ["2028-12-25", null, "natale"],
     ["2028-12-26", null, "santo_stefano"]
    ],
    "2029": [
     ["2029-01-01", null, "capodanno"],
     ["2029-01-06", null, "epifania"],
     ["2029-04-01", null, "pasqua"],
     ["2029-04-02", null, "pasquetta"],
     ["2029-04-25", null, "liberazione"],
     ["2029-05-01", null, "lavoro"],
     ["2029-06-02", null, "repubblica"],
     ["2029-08-15", null, "ferragosto"],
     ["2029-10-04", null, "san_francesco"],
     ["2029-11-01", null, "ognissanti"],
     ["2029-12-08", null, "immacolata"],
     ["2029-12-25", null, "natale"],
     ["2029-12-26", null, "santo_stefano"]
    ],
    "2030": [
     ["2030-01-01", null, "capodanno"],
     ["2030-01-06", null, "epifania"],
     ["2030-04-21", null, "pasqua"],
     ["2030-04-22", null, "pasquetta"],
     ["2030-04-25", null, "liberazione"],
     ["2030-05-01", null, "lavoro"],
     ["2030-06-02", null, "repubblica"],
     ["2030-08-15", null, "ferragosto"],
     ["2030-10-04", null, "san_francesco"],
     ["2030-11-01", null, "ognissanti"],
     ["2030-12-08", null, "immacolata"],
     ["2030-12-25", null, "natale"],
     ["2030-12-26", null, "santo_stefano"]
    ],
    "2031": [
     ["2031-01-01", null, "capodanno"],
     ["2031-01-06", null, "epifania"],
     ["2031-04-13", null, "pasqua"],
     ["2031-04-14", null, "pasquetta"],
     ["2031-04-25", null, "liberazione"],
     ["2031-05-01", null, "lavoro"],
     ["2031-06-02", null, "repubblica"],
     ["2031-08-15", null, "ferragosto"],
     ["2031-10-04", null, "san_francesco"],
     ["2031-11-01", null, "ognissanti"],
     ["2031-12-08", null, "immacolata"],
     ["2031-12-25", null, "natale"],
     ["2031-12-26", null, "santo_stefano"]
    ],
    "2032": [
     ["2032-01-01", null, "capodanno"],
     ["2032-01-06", null, "epifania"],
     ["2032-03-28", null, "pasqua"],
     ["2032-03-29", null, "pasquetta"],
     ["2032-04-25", null, "liberazione"],
     ["2032-05-01", null, "lavoro"],
     ["2032-06-02", null, "repubblica"],
     ["2032-08-15", null, "ferragosto"],
     ["2032-10-04", null, "san_francesco"],
     ["2032-11-01", null, "ognissanti"],
     ["2032-12-08", null, "immacolata"],
     ["2032-12-25", null, "natale"],
     ["2032-12-26", null, "santo_stefano"]
    ],
    "2033": [
     ["2033-01-01", null, "capodanno"],
     ["2033-01-06", null, "epifania"],
     ["2033-04-17", null, "pasqua"],
     ["2033-04-18", null, "pasquetta"],
     ["2033-04-25", null, "liberazione"],
     ["2033-05-01", null, "lavoro"],
     ["2033-06-02", null, "repubblica"],
     ["2033-08-15", null, "ferragosto"],
     ["2033-10-04", null, "san_francesco"],
     ["2033-11-01", null, "ognissanti"],
     ["2033-12-08", null, "immacolata"],
     ["2033-12-25", null, "natale"],
     ["2033-12-26", null, "santo_stefano"]
    ]
   }
  },
  "GB-ENG": {
   "name": "United Kingdom: England and Wales",
   "language": "en",
   "note": "Bank holidays of England and Wales with substitute days. Scotland and Northern Ireland have different lists. One-off bank holidays (coronations, jubilees, a moved Early May bank holiday) are made by royal proclamation and must be added.",
   "observed_rule": "substitute day: the next weekday that is not already a bank holiday, Banking and Financial Dealings Act 1971, Schedule 1, para 1 (England and Wales); substitute days and any one-off change by royal proclamation: https://www.gov.uk/bank-holidays",
   "rules": {
    "new_year": {"name": "New Year's Day", "name_en": "New Year's Day", "scope": "national", "regions": null, "source": "Banking and Financial Dealings Act 1971, Schedule 1, para 1 (England and Wales); substitute days and any one-off change by royal proclamation: https://www.gov.uk/bank-holidays"},
    "good_friday": {"name": "Good Friday", "name_en": "Good Friday", "scope": "national", "regions": null, "source": "Banking and Financial Dealings Act 1971, Schedule 1, para 1 (England and Wales); substitute days and any one-off change by royal proclamation: https://www.gov.uk/bank-holidays (Good Friday is a common-law holiday)"},
    "easter_monday": {"name": "Easter Monday", "name_en": "Easter Monday", "scope": "national", "regions": null, "source": "Banking and Financial Dealings Act 1971, Schedule 1, para 1 (England and Wales); substitute days and any one-off change by royal proclamation: https://www.gov.uk/bank-holidays"},
    "early_may": {"name": "Early May bank holiday", "name_en": "Early May bank holiday", "scope": "national", "regions": null, "source": "Banking and Financial Dealings Act 1971, Schedule 1, para 1 (England and Wales); substitute days and any one-off change by royal proclamation: https://www.gov.uk/bank-holidays"},
    "spring": {"name": "Spring bank holiday", "name_en": "Spring bank holiday", "scope": "national", "regions": null, "source": "Banking and Financial Dealings Act 1971, Schedule 1, para 1 (England and Wales); substitute days and any one-off change by royal proclamation: https://www.gov.uk/bank-holidays"},
    "summer": {"name": "Summer bank holiday", "name_en": "Summer bank holiday", "scope": "national", "regions": null, "source": "Banking and Financial Dealings Act 1971, Schedule 1, para 1 (England and Wales); substitute days and any one-off change by royal proclamation: https://www.gov.uk/bank-holidays"},
    "christmas": {"name": "Christmas Day", "name_en": "Christmas Day", "scope": "national", "regions": null, "source": "Banking and Financial Dealings Act 1971, Schedule 1, para 1 (England and Wales); substitute days and any one-off change by royal proclamation: https://www.gov.uk/bank-holidays (Christmas Day is a common-law holiday)"},
    "boxing_day": {"name": "Boxing Day", "name_en": "Boxing Day", "scope": "national", "regions": null, "source": "Banking and Financial Dealings Act 1971, Schedule 1, para 1 (England and Wales); substitute days and any one-off change by royal proclamation: https://www.gov.uk/bank-holidays"}
   },
   "years": {
    "2023": [
     ["2023-01-01", "2023-01-02", "new_year"],
     ["2023-04-07", null, "good_friday"],
     ["2023-04-10", null, "easter_monday"],
     ["2023-05-01", null, "early_may"],
     ["2023-05-29", null, "spring"],
     ["2023-08-28", null, "summer"],
     ["2023-12-25", null, "christmas"],
     ["2023-12-26", null, "boxing_day"]
    ],
    "2024": [
     ["2024-01-01", null, "new_year"],
     ["2024-03-29", null, "good_friday"],
     ["2024-04-01", null, "easter_monday"],
     ["2024-05-06", null, "early_may"],
     ["2024-05-27", null, "spring"],
     ["2024-08-26", null, "summer"],
     ["2024-12-25", null, "christmas"],
     ["2024-12-26", null, "boxing_day"]
    ],
    "2025": [
     ["2025-01-01", null, "new_year"],
     ["2025-04-18", null, "good_friday"],
     ["2025-04-21", null, "easter_monday"],
     ["2025-05-05", null, "early_may"],
     ["2025-05-26", null, "spring"],
     ["2025-08-25", null, "summer"],
     ["2025-12-25", null, "christmas"],
     ["2025-12-26", null, "boxing_day"]
    ],
    "2026": [
     ["2026-01-01", null, "new_year"],
     ["2026-04-03", null, "good_friday"],
     ["2026-04-06", null, "easter_monday"],
     ["2026-05-04", null, "early_may"],
     ["2026-05-25", null, "spring"],
     ["2026-08-31", null, "summer"],
     ["2026-12-25", null, "christmas"],
     ["2026-12-26", "2026-12-28", "boxing_day"]
    ],
    "2027": [
     ["2027-01-01", null, "new_year"],
     ["2027-03-26", null, "good_friday"],
     ["2027-03-29", null, "easter_monday"],
     ["2027-05-03", null, "early_may"],
     ["2027-05-31", null, "spring"],
     ["2027-08-30", null, "summer"],
     ["2027-12-25", "2027-12-27", "christmas"],
     ["2027-12-26", "2027-12-28", "boxing_day"]
    ],
    "2028": [
     ["2028-01-01", "2028-01-03", "new_year"],
     ["2028-04-14", null, "good_friday"],
     ["2028-04-17", null, "easter_monday"],
     ["2028-05-01", null, "early_may"],
     ["2028-05-29", null, "spring"],
     ["2028-08-28", null, "summer"],
     ["2028-12-25", null, "christmas"],
     ["2028-12-26", null, "boxing_day"]
    ],
    "2029": [
     ["2029-01-01", null, "new_year"],
     ["2029-03-30", null, "good_friday"],
     ["2029-04-02", null, "easter_monday"],
     ["2029-05-07", null, "early_may"],
     ["2029-05-28", null, "spring"],
     ["2029-08-27", null, "summer"],
     ["2029-12-25", null, "christmas"],
     ["2029-12-26", null, "boxing_day"]
    ],
    "2030": [
     ["2030-01-01", null, "new_year"],
     ["2030-04-19", null, "good_friday"],
     ["2030-04-22", null, "easter_monday"],
     ["2030-05-06", null, "early_may"],
     ["2030-05-27", null, "spring"],
     ["2030-08-26", null, "summer"],
     ["2030-12-25", null, "christmas"],
     ["2030-12-26", null, "boxing_day"]
    ],
    "2031": [
     ["2031-01-01", null, "new_year"],
     ["2031-04-11", null, "good_friday"],
     ["2031-04-14", null, "easter_monday"],
     ["2031-05-05", null, "early_may"],
     ["2031-05-26", null, "spring"],
     ["2031-08-25", null, "summer"],
     ["2031-12-25", null, "christmas"],
     ["2031-12-26", null, "boxing_day"]
    ],
    "2032": [
     ["2032-01-01", null, "new_year"],
     ["2032-03-26", null, "good_friday"],
     ["2032-03-29", null, "easter_monday"],
     ["2032-05-03", null, "early_may"],
     ["2032-05-31", null, "spring"],
     ["2032-08-30", null, "summer"],
     ["2032-12-25", "2032-12-27", "christmas"],
     ["2032-12-26", "2032-12-28", "boxing_day"]
    ],
    "2033": [
     ["2033-01-01", "2033-01-03", "new_year"],
     ["2033-04-15", null, "good_friday"],
     ["2033-04-18", null, "easter_monday"],
     ["2033-05-02", null, "early_may"],
     ["2033-05-30", null, "spring"],
     ["2033-08-29", null, "summer"],
     ["2033-12-25", "2033-12-27", "christmas"],
     ["2033-12-26", null, "boxing_day"]
    ]
   }
  },
  "US": {
   "name": "United States (federal)",
   "language": "en",
   "note": "Federal holidays for federal employees, with the observed day when the holiday falls on a weekend. States, cities and private employers set their own lists; Inauguration Day (Washington DC area, every four years) is not included.",
   "observed_rule": "observed day: 5 U.S.C. 6103(b) and Executive Order 11582 (Saturday to the preceding Friday, Sunday to the following Monday): https://www.opm.gov/policy-data-oversight/pay-leave/federal-holidays/",
   "rules": {
    "new_year": {"name": "New Year's Day", "name_en": "New Year's Day", "scope": "national", "regions": null, "source": "5 U.S.C. 6103(a): https://www.law.cornell.edu/uscode/text/5/6103"},
    "mlk": {"name": "Birthday of Martin Luther King, Jr.", "name_en": "Birthday of Martin Luther King, Jr.", "scope": "national", "regions": null, "source": "5 U.S.C. 6103(a): https://www.law.cornell.edu/uscode/text/5/6103 (third Monday in January)"},
    "washington": {"name": "Washington's Birthday", "name_en": "Washington's Birthday", "scope": "national", "regions": null, "source": "5 U.S.C. 6103(a): https://www.law.cornell.edu/uscode/text/5/6103 (third Monday in February)"},
    "memorial": {"name": "Memorial Day", "name_en": "Memorial Day", "scope": "national", "regions": null, "source": "5 U.S.C. 6103(a): https://www.law.cornell.edu/uscode/text/5/6103 (last Monday in May)"},
    "juneteenth": {"name": "Juneteenth National Independence Day", "name_en": "Juneteenth National Independence Day", "scope": "national", "regions": null, "source": "5 U.S.C. 6103(a): https://www.law.cornell.edu/uscode/text/5/6103"},
    "independence": {"name": "Independence Day", "name_en": "Independence Day", "scope": "national", "regions": null, "source": "5 U.S.C. 6103(a): https://www.law.cornell.edu/uscode/text/5/6103"},
    "labor": {"name": "Labor Day", "name_en": "Labor Day", "scope": "national", "regions": null, "source": "5 U.S.C. 6103(a): https://www.law.cornell.edu/uscode/text/5/6103 (first Monday in September)"},
    "columbus": {"name": "Columbus Day", "name_en": "Columbus Day", "scope": "national", "regions": null, "source": "5 U.S.C. 6103(a): https://www.law.cornell.edu/uscode/text/5/6103 (second Monday in October)"},
    "veterans": {"name": "Veterans Day", "name_en": "Veterans Day", "scope": "national", "regions": null, "source": "5 U.S.C. 6103(a): https://www.law.cornell.edu/uscode/text/5/6103"},
    "thanksgiving": {"name": "Thanksgiving Day", "name_en": "Thanksgiving Day", "scope": "national", "regions": null, "source": "5 U.S.C. 6103(a): https://www.law.cornell.edu/uscode/text/5/6103 (fourth Thursday in November)"},
    "christmas": {"name": "Christmas Day", "name_en": "Christmas Day", "scope": "national", "regions": null, "source": "5 U.S.C. 6103(a): https://www.law.cornell.edu/uscode/text/5/6103"}
   },
   "years": {
    "2023": [
     ["2023-01-01", "2023-01-02", "new_year"],
     ["2023-01-16", null, "mlk"],
     ["2023-02-20", null, "washington"],
     ["2023-05-29", null, "memorial"],
     ["2023-06-19", null, "juneteenth"],
     ["2023-07-04", null, "independence"],
     ["2023-09-04", null, "labor"],
     ["2023-10-09", null, "columbus"],
     ["2023-11-11", "2023-11-10", "veterans"],
     ["2023-11-23", null, "thanksgiving"],
     ["2023-12-25", null, "christmas"]
    ],
    "2024": [
     ["2024-01-01", null, "new_year"],
     ["2024-01-15", null, "mlk"],
     ["2024-02-19", null, "washington"],
     ["2024-05-27", null, "memorial"],
     ["2024-06-19", null, "juneteenth"],
     ["2024-07-04", null, "independence"],
     ["2024-09-02", null, "labor"],
     ["2024-10-14", null, "columbus"],
     ["2024-11-11", null, "veterans"],
     ["2024-11-28", null, "thanksgiving"],
     ["2024-12-25", null, "christmas"]
    ],
    "2025": [
     ["2025-01-01", null, "new_year"],
     ["2025-01-20", null, "mlk"],
     ["2025-02-17", null, "washington"],
     ["2025-05-26", null, "memorial"],
     ["2025-06-19", null, "juneteenth"],
     ["2025-07-04", null, "independence"],
     ["2025-09-01", null, "labor"],
     ["2025-10-13", null, "columbus"],
     ["2025-11-11", null, "veterans"],
     ["2025-11-27", null, "thanksgiving"],
     ["2025-12-25", null, "christmas"]
    ],
    "2026": [
     ["2026-01-01", null, "new_year"],
     ["2026-01-19", null, "mlk"],
     ["2026-02-16", null, "washington"],
     ["2026-05-25", null, "memorial"],
     ["2026-06-19", null, "juneteenth"],
     ["2026-07-04", "2026-07-03", "independence"],
     ["2026-09-07", null, "labor"],
     ["2026-10-12", null, "columbus"],
     ["2026-11-11", null, "veterans"],
     ["2026-11-26", null, "thanksgiving"],
     ["2026-12-25", null, "christmas"]
    ],
    "2027": [
     ["2027-01-01", null, "new_year"],
     ["2027-01-18", null, "mlk"],
     ["2027-02-15", null, "washington"],
     ["2027-05-31", null, "memorial"],
     ["2027-06-19", "2027-06-18", "juneteenth"],
     ["2027-07-04", "2027-07-05", "independence"],
     ["2027-09-06", null, "labor"],
     ["2027-10-11", null, "columbus"],
     ["2027-11-11", null, "veterans"],
     ["2027-11-25", null, "thanksgiving"],
     ["2027-12-25", "2027-12-24", "christmas"]
    ],
    "2028": [
     ["2028-01-01", "2027-12-31", "new_year"],
     ["2028-01-17", null, "mlk"],
     ["2028-02-21", null, "washington"],
     ["2028-05-29", null, "memorial"],
     ["2028-06-19", null, "juneteenth"],
     ["2028-07-04", null, "independence"],
     ["2028-09-04", null, "labor"],
     ["2028-10-09", null, "columbus"],
     ["2028-11-11", "2028-11-10", "veterans"],
     ["2028-11-23", null, "thanksgiving"],
     ["2028-12-25", null, "christmas"]
    ],
    "2029": [
     ["2029-01-01", null, "new_year"],
     ["2029-01-15", null, "mlk"],
     ["2029-02-19", null, "washington"],
     ["2029-05-28", null, "memorial"],
     ["2029-06-19", null, "juneteenth"],
     ["2029-07-04", null, "independence"],
     ["2029-09-03", null, "labor"],
     ["2029-10-08", null, "columbus"],
     ["2029-11-11", "2029-11-12", "veterans"],
     ["2029-11-22", null, "thanksgiving"],
     ["2029-12-25", null, "christmas"]
    ],
    "2030": [
     ["2030-01-01", null, "new_year"],
     ["2030-01-21", null, "mlk"],
     ["2030-02-18", null, "washington"],
     ["2030-05-27", null, "memorial"],
     ["2030-06-19", null, "juneteenth"],
     ["2030-07-04", null, "independence"],
     ["2030-09-02", null, "labor"],
     ["2030-10-14", null, "columbus"],
     ["2030-11-11", null, "veterans"],
     ["2030-11-28", null, "thanksgiving"],
     ["2030-12-25", null, "christmas"]
    ],
    "2031": [
     ["2031-01-01", null, "new_year"],
     ["2031-01-20", null, "mlk"],
     ["2031-02-17", null, "washington"],
     ["2031-05-26", null, "memorial"],
     ["2031-06-19", null, "juneteenth"],
     ["2031-07-04", null, "independence"],
     ["2031-09-01", null, "labor"],
     ["2031-10-13", null, "columbus"],
     ["2031-11-11", null, "veterans"],
     ["2031-11-27", null, "thanksgiving"],
     ["2031-12-25", null, "christmas"]
    ],
    "2032": [
     ["2032-01-01", null, "new_year"],
     ["2032-01-19", null, "mlk"],
     ["2032-02-16", null, "washington"],
     ["2032-05-31", null, "memorial"],
     ["2032-06-19", "2032-06-18", "juneteenth"],
     ["2032-07-04", "2032-07-05", "independence"],
     ["2032-09-06", null, "labor"],
     ["2032-10-11", null, "columbus"],
     ["2032-11-11", null, "veterans"],
     ["2032-11-25", null, "thanksgiving"],
     ["2032-12-25", "2032-12-24", "christmas"]
    ],
    "2033": [
     ["2033-01-01", "2032-12-31", "new_year"],
     ["2033-01-17", null, "mlk"],
     ["2033-02-21", null, "washington"],
     ["2033-05-30", null, "memorial"],
     ["2033-06-19", "2033-06-20", "juneteenth"],
     ["2033-07-04", null, "independence"],
     ["2033-09-05", null, "labor"],
     ["2033-10-10", null, "columbus"],
     ["2033-11-11", null, "veterans"],
     ["2033-11-24", null, "thanksgiving"],
     ["2033-12-25", "2033-12-26", "christmas"]
    ]
   }
  }
 }
}

Where it is served

The registry serves only AXLR clients, so a browser gets 403; fetch with a User-Agent that starts with axlr:

curl -A axlr-docs/1.0 -O https://registry.underpassai.com/tools/holiday_table/1.0.0/manifest.json
curl -A axlr-docs/1.0 -O https://registry.underpassai.com/tools/holiday_table/1.0.0/holiday_table.py
curl -A axlr-docs/1.0 -O https://registry.underpassai.com/tools/holiday_table/1.0.0/holidays.json