""" Runner asíncrono para cálculos pesados usando QThreadPool. Evita congelar la UI durante cálculos largos (>200ms). Stub — Implementación en Sprint 2. """ from __future__ import annotations from typing import Callable, Any class AsyncRunner: """ Stub. Implementación en Sprint 2. Ejecutará tareas en QThreadPool y emitirá señales Qt con el resultado. """ def run(self, func: Callable, *args: Any, callback: Callable | None = None) -> None: raise NotImplementedError("AsyncRunner — Implementación en Sprint 2")