Files
Argenta/metrics/handlers.py
T
2026-01-19 00:29:24 +03:00

42 lines
1.8 KiB
Python

from rich.console import Console
from argenta.command import Flag, PossibleValues
from argenta.command.models import Command
from argenta.response import Response
from argenta.router import Router
from .benchmarks.core.models import BenchmarkGroupResult
from .benchmarks.entity import benchmarks as registered_benchmarks
from .services.report_generator import ReportGenerator
from .services.system_info_reader import get_system_info
console = Console()
router = Router(title="Metrics commands:")
@router.command(
Command(
"all-print",
description="Print all benchmarks results",
flags=Flag('without-gc', possible_values=PossibleValues.NEITHER)
)
)
def all_print_handler(_: Response) -> None:
report_generator = ReportGenerator(get_system_info())
console.print(report_generator.generate_system_info_header())
console.print(report_generator.generate_system_info_table())
is_gc_disabled = _.input_flags.get_flag_by_name("without-gc")
type_grouped_benchmarks: list[BenchmarkGroupResult] = registered_benchmarks.run_benchmarks_grouped_by_type(is_gc_disabled=is_gc_disabled)
for benchmark_group_result in type_grouped_benchmarks:
console.print(report_generator.generate_benchmark_table_header(benchmark_group_result))
console.print(report_generator.generate_benchmark_report_table(benchmark_group_result))
@router.command(Command("release-generate", description="Generate release report"))
def release_generate_handler(_: Response) -> None:
console.print("[yellow]Release report generation not implemented yet[/yellow]")
@router.command(Command("diagrams-generate", description="Generate diagrams"))
def diagrams_generate_handler(_: Response) -> None:
console.print("[yellow]Diagrams generation not implemented yet[/yellow]")