from __future__ import annotations import json from datetime import date from pathlib import Path def is_workday(selected_date: date, calendar_path: Path) -> bool: if not calendar_path.exists(): return selected_date.weekday() < 5 calendar = json.loads(calendar_path.read_text(encoding="utf-8")) day = selected_date.isoformat() holidays = set(calendar.get("holidays", [])) makeup_workdays = set(calendar.get("makeup_workdays", [])) if day in makeup_workdays: return True if day in holidays: return False return selected_date.weekday() < 5