test_test / trackio /cli_helpers.py
abidlabs's picture
abidlabs HF Staff
Upload folder using huggingface_hub
1834e19 verified
import json
import sys
from typing import Any
def format_json(data: Any) -> str:
"""Format data as JSON."""
return json.dumps(data, indent=2)
def format_list(items: list[str], title: str | None = None) -> str:
"""Format a list of items in human-readable format."""
if not items:
return f"No {title.lower() if title else 'items'} found."
output = []
if title:
output.append(f"{title}:")
for item in items:
output.append(f" - {item}")
return "\n".join(output)
def format_project_summary(summary: dict) -> str:
"""Format project summary in human-readable format."""
output = [f"Project: {summary['project']}"]
output.append(f"Number of runs: {summary['num_runs']}")
if summary["runs"]:
output.append("\nRuns:")
for run in summary["runs"]:
output.append(f" - {run}")
else:
output.append("\nNo runs found.")
if summary.get("last_activity"):
output.append(f"\nLast activity (max step): {summary['last_activity']}")
return "\n".join(output)
def format_run_summary(summary: dict) -> str:
"""Format run summary in human-readable format."""
output = [f"Project: {summary['project']}"]
output.append(f"Run: {summary['run']}")
output.append(f"Number of logs: {summary['num_logs']}")
if summary.get("last_step") is not None:
output.append(f"Last step: {summary['last_step']}")
if summary.get("metrics"):
output.append("\nMetrics:")
for metric in summary["metrics"]:
output.append(f" - {metric}")
else:
output.append("\nNo metrics found.")
config = summary.get("config")
if config:
output.append("\nConfig:")
config_display = {k: v for k, v in config.items() if not k.startswith("_")}
if config_display:
for key, value in config_display.items():
output.append(f" {key}: {value}")
else:
output.append(" (no config)")
else:
output.append("\nConfig: (no config)")
return "\n".join(output)
def format_metric_values(values: list[dict]) -> str:
"""Format metric values in human-readable format."""
if not values:
return "No metric values found."
output = [f"Found {len(values)} value(s):\n"]
output.append("Step | Timestamp | Value")
output.append("-" * 50)
for value in values:
step = value.get("step", "N/A")
timestamp = value.get("timestamp", "N/A")
val = value.get("value", "N/A")
output.append(f"{step} | {timestamp} | {val}")
return "\n".join(output)
def format_system_metrics(metrics: list[dict]) -> str:
"""Format system metrics in human-readable format."""
if not metrics:
return "No system metrics found."
output = [f"Found {len(metrics)} system metric entry/entries:\n"]
for i, entry in enumerate(metrics):
timestamp = entry.get("timestamp", "N/A")
output.append(f"\nEntry {i + 1} (Timestamp: {timestamp}):")
for key, value in entry.items():
if key != "timestamp":
output.append(f" {key}: {value}")
return "\n".join(output)
def format_system_metric_names(names: list[str]) -> str:
"""Format system metric names in human-readable format."""
return format_list(names, "System Metrics")
def error_exit(message: str, code: int = 1) -> None:
"""Print error message and exit."""
print(f"Error: {message}", file=sys.stderr)
sys.exit(code)