from __future__ import annotations import re from datetime import date from pathlib import Path def parse_dates_text(text: str) -> list[date]: dates: list[date] = [] for line in text.splitlines(): line = line.strip() if not line or line.startswith("#"): continue for token in re.split(r"[\s,;]+", line): token = token.strip() if token: dates.append(date.fromisoformat(token)) return sorted(set(dates)) def parse_dates_file(path: str | Path) -> list[date]: content = Path(path).read_text(encoding="utf-8") dates = parse_dates_text(content) if not dates: raise ValueError(f"No dates found in {path}") return dates