'''Base formatter class.''' from abc import ABC, abstractmethod from typing import Any, Optional, TextIO class OutputFormatter(ABC): '''Abstract base class for output formatters.''' def __init__(self, output: Optional[TextIO] = None): self.output = output @abstractmethod def format(self, data: Any) -> str: '''Format data for output.''' pass def write(self, text: str) -> None: '''Write to output stream.''' if self.output: self.output.write(text) else: print(text, end="") def flush(self) -> None: '''Flush output stream.''' if self.output: self.output.flush()