from dataclasses import replace from typing import List, Sequence from .todo_item import Todo from .todo_list_add_todo import require_utc_now from .todo_list_toggle_todo import complete_todo, require_today def toggle_all(todos: Sequence[Todo], now: str, today: str) -> List[Todo]: """Complete every open todo as toggle_todo would, or reopen all once none is open.""" require_utc_now(now) require_today(today) if any(not t.done for t in todos): return [t if t.done else complete_todo(t, now, today) for t in todos] return [replace(t, done=False, completed_at=None) for t in todos]