from abc import ABC, abstractmethod from typing import List from ..types import ReportRow class Formatter(ABC): """ Абстрактный базовый класс для всех форматтеров. Определяет общий интерфейс для форматирования отчета. """ @abstractmethod def format(self, rows: List[ReportRow]) -> str: """ Форматирует список строк отчета в нужный формат. Возвращает строковое представление отчета. """ pass @abstractmethod def save(self, rows: List[ReportRow], output_path: str) -> None: """ Сохраняет отформатированный отчет в файл по указанному пути. Для форматтеров, которые не поддерживают сохранение (например, консольные), можно вызывать `format` и записывать результат вручную. """ pass