from __future__ import annotations from collections import defaultdict from dataclasses import dataclass, replace from datetime import date, datetime, timedelta import os import re from pathlib import Path import tempfile from typing import Iterable SUBJECTS = ["数学", "语文", "英语", "物理", "化学", "生物", "历史", "地理", "政治", "道法"] SUBJECT_ALIASES = { "数": "数学", "语": "语文", "英": "英语", "物": "物理", "化": "化学", "生": "生物", "史": "历史", "地": "地理", "政": "政治", } FALLBACK_ALIASES = { "施亿涵": "施忆涵", "施凯其": "施凯萁", "宇浩": "黄宇澔", "肖恒罄": "肖恒馨", } CLASSNOTE_RE = re.compile( r"^(?P\d{4}\.\d{2}\.\d{2})-" r"(?P星期[一二三四五六日])-" r"(?P