Formatters factory

This commit is contained in:
Артём Кокос
2026-01-25 11:01:34 +07:00
parent f858618a13
commit 8278864b01
11 changed files with 342 additions and 231 deletions

View File

@@ -0,0 +1,27 @@
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