From 465fb2ba5d3f1d3421be920f6c109efa120ceccc Mon Sep 17 00:00:00 2001 From: xenofem Date: Mon, 22 Nov 2021 20:10:58 -0500 Subject: [PATCH] don't crash on stalls --- impatient | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/impatient b/impatient index eeaea7f..c5f3bf6 100755 --- a/impatient +++ b/impatient @@ -3,6 +3,7 @@ import argparse import datetime import subprocess +import sys import time WINDOW_SIZE = 100 @@ -72,18 +73,19 @@ while True: rate = (current - samples[0])/((len(samples)-1)*args.interval) print('\033[2K\r', end='') - print('{} - {}/s'.format(display_value(current), display_value(rate)), end='', flush=True) + print('{} - {}/s'.format(display_value(current), display_value(rate)), end='') if final: fraction = current / final value_remaining = final - current - time_remaining = datetime.timedelta(seconds=(value_remaining / rate)) - eta = datetime.datetime.now() + time_remaining - print(' - {} total - {:.1f}% complete - {} remaining - ETA {}'.format( - display_value(final), - 100*fraction, - display_timedelta(time_remaining), - eta.isoformat(sep=' ', timespec='minutes'), - ), end='', flush=True) + print(' - {} total - {:.1f}% complete'.format(display_value(final), 100*fraction), end='') + if rate > 0: + time_remaining = datetime.timedelta(seconds=(value_remaining / rate)) + eta = datetime.datetime.now() + time_remaining + print(' - {} remaining - ETA {}'.format( + display_timedelta(time_remaining), + eta.isoformat(sep=' ', timespec='minutes'), + ), end='') + sys.stdout.flush() if final and current >= final: print()