From d035cc2dce0681caedbce201257b8d50783e54fc Mon Sep 17 00:00:00 2001 From: Andrei <16517508+anvacaru@users.noreply.github.com> Date: Mon, 9 Mar 2026 13:07:15 +0200 Subject: [PATCH 1/2] track time spent in package installation --- src/kup/__main__.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/kup/__main__.py b/src/kup/__main__.py index ea3edab..46077d7 100644 --- a/src/kup/__main__.py +++ b/src/kup/__main__.py @@ -7,6 +7,7 @@ import subprocess import sys import textwrap +import time from argparse import ArgumentParser, RawDescriptionHelpFormatter, _HelpAction from typing import TYPE_CHECKING @@ -318,6 +319,16 @@ def highlight_row(condition: bool, xs: list[str]) -> list[str]: return xs +def _format_duration(seconds: float) -> str: + if seconds < 60: + return f'{seconds}s' + minutes, secs = divmod(seconds, 60) + if minutes < 60: + return f'{int(minutes)}m {secs:.0f}s' + hours, mins = divmod(minutes, 60) + return f'{int(hours)}h {int(mins)}m' + + def list_package( package_name: str, show_inputs: bool, @@ -496,6 +507,7 @@ def install_package( 'has_overrides': len(package_overrides) > 0 if package_overrides else False, }, ) + install_start_time = time.monotonic() if not overrides and package.uri in pinned_package_cache: rich.print(f" ⌛ Fetching cached version of '[green]{package_name.pretty_name}[/]' ...") @@ -541,6 +553,7 @@ def install_package( display_version = None display_version = f' ({display_version})' if display_version is not None else '' + duration_seconds = round(time.monotonic() - install_start_time, 1) emit_event( 'kup_install_complete', { @@ -548,12 +561,14 @@ def install_package( 'version': package_version or 'latest', 'was_update': verb == 'updated', 'from_cache': package.uri in pinned_package_cache and not overrides, + 'duration_seconds': duration_seconds, }, ) rich.print( f" ✅ Successfully {verb} '[green]{package_name.base}[/]' version [blue]{package.uri}{display_version}[/]." ) + rich.print(f' ⏱️ Elapsed time [green]{_format_duration(duration_seconds)}[/].') def uninstall_package(package_name: str) -> None: From 753aa6ef990aa6b87603e3406b15476bfd51a5bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20V=C4=83caru?= <16517508+anvacaru@users.noreply.github.com> Date: Tue, 10 Mar 2026 12:23:20 +0200 Subject: [PATCH 2/2] Apply suggestion from @anvacaru --- src/kup/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kup/__main__.py b/src/kup/__main__.py index 46077d7..93fe8ce 100644 --- a/src/kup/__main__.py +++ b/src/kup/__main__.py @@ -568,7 +568,7 @@ def install_package( rich.print( f" ✅ Successfully {verb} '[green]{package_name.base}[/]' version [blue]{package.uri}{display_version}[/]." ) - rich.print(f' ⏱️ Elapsed time [green]{_format_duration(duration_seconds)}[/].') + rich.print(f' ⏱️ Elapsed time [green]{_format_duration(duration_seconds)}[/].') def uninstall_package(package_name: str) -> None: