import gzip
import json
import pathlib
import holidays
Y0, Y1 = 1980, 2100
OUT = pathlib.Path(__file__).with_name("holidays.json.gz")
def main() -> None:
codes = sorted(c for c in holidays.list_supported_countries() if len(c) == 2)
data: dict[str, dict[str, str]] = {}
for code in codes:
try:
h = holidays.country_holidays(code, years=range(Y0, Y1 + 1))
except Exception: continue
by_date = {d.isoformat(): name for d, name in h.items()}
if by_date:
data[code] = dict(sorted(by_date.items()))
raw = json.dumps(data, ensure_ascii=False, sort_keys=True, separators=(",", ":"))
OUT.write_bytes(gzip.compress(raw.encode("utf-8"), 9))
entries = sum(len(v) for v in data.values())
print(f"holidays {holidays.__version__}: {len(data)} countries, "
f"{entries} dates, {OUT.stat().st_size} bytes -> {OUT}")
if __name__ == "__main__":
main()