Files
EvoScientist-Multi/EvoScientist/cli/widgets/usage_widget.py
T
Wiktor Cupiał a4c9c779c9 feat: status and elapsed time indicator (#218)
* feat: status and elapsed time indicator

* test: add tests for tui-status

* fix: move to enum+switch, change phase calculation

* feat: remove 'done' phase
2026-05-13 14:15:39 +01:00

37 lines
1.0 KiB
Python

"""Token usage statistics widget."""
from __future__ import annotations
from rich.text import Text
from textual.widgets import Static
class UsageWidget(Static):
"""Displays token usage stats, right-aligned with styled numbers."""
DEFAULT_CSS = """
UsageWidget {
height: auto;
text-align: right;
}
"""
def __init__(
self,
input_tokens: int,
output_tokens: int,
elapsed: str | None = None,
) -> None:
stats = Text(justify="right")
stats.append("[", style="dim italic")
stats.append("Usage: ", style="dim italic")
stats.append(f"{input_tokens:,}", style="cyan italic")
stats.append(" in · ", style="dim italic")
stats.append(f"{output_tokens:,}", style="green italic")
stats.append(" out", style="dim italic")
if elapsed:
stats.append(" · ", style="dim italic")
stats.append(f"Elapsed: {elapsed}", style="dim italic")
stats.append("]", style="dim italic")
super().__init__(stats)