""" reader.py Safe file reading utilities """ from __future__ import annotations from concurrent.futures import ThreadPoolExecutor from pathlib import Path from typing import Iterable from config import MAX_WORKERS def read_file_safe(path: Path) -> str: """ Read text file using utf-8 then latin-1 fallback. """ try: return path.read_text(encoding="utf-8") except UnicodeDecodeError: try: return path.read_text(encoding="latin-1") except Exception: return "" except Exception: return "" def load_files(paths: Iterable[Path]) -> list[tuple[Path, str]]: """ Read many files concurrently. """ paths = list(paths) with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor: contents = list(executor.map(read_file_safe, paths)) return list(zip(paths, contents))