diff --git a/loglens/formatters/table_formatter.py b/loglens/formatters/table_formatter.py index 2ac4cab..70097d8 100644 --- a/loglens/formatters/table_formatter.py +++ b/loglens/formatters/table_formatter.py @@ -1,21 +1,20 @@ -"""Table formatter using Rich library.""" +'''Table formatter using Rich library.''' -from datetime import datetime -from typing import Any, Dict, List, Optional +from typing import Any, Optional + +from rich import box from rich.console import Console +from rich.style import Style from rich.table import Table from rich.text import Text -from rich import box -from rich.style import Style from loglens.analyzers.analyzer import AnalysisResult -from loglens.analyzers.severity import SeverityLevel -from loglens.parsers.base import ParsedLogEntry from loglens.formatters.base import OutputFormatter +from loglens.parsers.base import ParsedLogEntry class TableFormatter(OutputFormatter): - """Formats output as rich tables.""" + '''Formats output as rich tables.''' SEVERITY_STYLES = { "critical": Style(color="red", bold=True), @@ -26,15 +25,19 @@ class TableFormatter(OutputFormatter): "unknown": Style(color="white"), } - def __init__(self, console: Console = None, show_timestamps: bool = True, - max_entries: int = 100): + def __init__( + self, + console: Optional[Console] = None, + show_timestamps: bool = True, + max_entries: int = 100, + ): super().__init__() self.console = console or Console() self.show_timestamps = show_timestamps self.max_entries = max_entries def format(self, data: Any) -> str: - """Format data as table.""" + '''Format data as table.''' if isinstance(data, AnalysisResult): return self._format_analysis_result(data) elif isinstance(data, list): @@ -43,9 +46,7 @@ class TableFormatter(OutputFormatter): return str(data) def _format_analysis_result(self, result: AnalysisResult) -> str: - """Format analysis result as summary table.""" - output = [] - + '''Format analysis result as summary table.''' summary_table = Table(title="Log Analysis Summary", box=box.ROUNDED) summary_table.add_column("Metric", style="cyan") summary_table.add_column("Value", style="magenta") @@ -69,11 +70,7 @@ class TableFormatter(OutputFormatter): for level in ["critical", "error", "warning", "info", "debug"]: count = getattr(result, f"{level}_count", 0) pct = (count / total) * 100 - severity_table.add_row( - level.upper(), - str(count), - f"{pct:.1f}%" - ) + severity_table.add_row(level.upper(), str(count), f"{pct:.1f}%") self.console.print(severity_table) @@ -98,8 +95,8 @@ class TableFormatter(OutputFormatter): return "" - def _format_entries(self, entries: List[ParsedLogEntry]) -> str: - """Format log entries as table.""" + def _format_entries(self, entries: list[ParsedLogEntry]) -> str: + '''Format log entries as table.''' table = Table(title="Log Entries", box=box.ROUNDED) table.add_column("#", justify="right", style="dim") if self.show_timestamps: @@ -107,7 +104,7 @@ class TableFormatter(OutputFormatter): table.add_column("Severity", style="bold") table.add_column("Message", overflow="fold") - displayed = entries[:self.max_entries] + displayed = entries[: self.max_entries] for entry in displayed: row = [str(entry.line_number)] @@ -125,25 +122,21 @@ class TableFormatter(OutputFormatter): table.add_row(*row) if len(entries) > self.max_entries: - table.add_row( - f"... and {len(entries) - self.max_entries} more", - "", "", "" - ) + table.add_row(f"... and {len(entries) - self.max_entries} more", "", "", "") self.console.print(table) return "" - def format_entries_detailed(self, entries: List[ParsedLogEntry]) -> str: - """Format entries with full details.""" - for entry in entries[:self.max_entries]: + def format_entries_detailed(self, entries: list[ParsedLogEntry]) -> str: + '''Format entries with full details.''' + for entry in entries[: self.max_entries]: self._print_entry_detailed(entry) return "" def _print_entry_detailed(self, entry: ParsedLogEntry) -> None: - """Print a single entry with full details.""" + '''Print a single entry with full details.''' from rich.panel import Panel - from rich.columns import Columns severity = entry.severity or "unknown" style = self.SEVERITY_STYLES.get(severity, self.SEVERITY_STYLES["unknown"]) @@ -174,10 +167,7 @@ class TableFormatter(OutputFormatter): content.append(f" {key}: {value}") panel = Panel( - "\n".join(content), - title=f"Entry #{entry.line_number}", - style=style, - box=box.SIMPLE + "\n".join(content), title=f"Entry #{entry.line_number}", style=style, box=box.SIMPLE ) self.console.print(panel)