28 lines
1.1 KiB
Python
28 lines
1.1 KiB
Python
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
|