Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow hiding progressbar until some time interval has elapsed. #836

Merged
merged 3 commits into from Feb 25, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
15 changes: 15 additions & 0 deletions tests/tests_tqdm.py
Expand Up @@ -622,6 +622,21 @@ def test_max_interval():
t2.close()


def test_delay():
"""Test delay"""
timer = DiscreteTimer()
with closing(StringIO()) as our_file:
t = tqdm(total=2, file=our_file, leave=True, delay=3)
cpu_timify(t, timer)
timer.sleep(2)
t.update(1)
assert not our_file.getvalue()
timer.sleep(2)
t.update(1)
assert our_file.getvalue()
t.close()


def test_min_iters():
"""Test miniters"""
with closing(StringIO()) as our_file:
Expand Down
23 changes: 17 additions & 6 deletions tqdm/std.py
Expand Up @@ -844,7 +844,8 @@ def __init__(self, iterable=None, desc=None, total=None, leave=True, file=None,
ascii=None, disable=False, unit='it', unit_scale=False,
dynamic_ncols=False, smoothing=0.3, bar_format=None, initial=0,
position=None, postfix=None, unit_divisor=1000, write_bytes=None,
lock_args=None, nrows=None, colour=None, gui=False, **kwargs):
lock_args=None, nrows=None, colour=None, delay=0, gui=False,
**kwargs):
"""
Parameters
----------
Expand Down Expand Up @@ -951,6 +952,8 @@ def __init__(self, iterable=None, desc=None, total=None, leave=True, file=None,
The fallback is 20.
colour : str, optional
Bar colour (e.g. 'green', '#00ff00').
delay : float, optional
Don't display until [default: 0] seconds have elapsed.
gui : bool, optional
WARNING: internal parameter - do not use.
Use tqdm.gui.tqdm(...) instead. If set, will attempt to use
Expand Down Expand Up @@ -1068,6 +1071,7 @@ def __init__(self, iterable=None, desc=None, total=None, leave=True, file=None,
self.unit_divisor = unit_divisor
self.initial = initial
self.lock_args = lock_args
self.delay = delay
self.gui = gui
self.dynamic_ncols = dynamic_ncols
self.smoothing = smoothing
Expand Down Expand Up @@ -1099,7 +1103,8 @@ def __init__(self, iterable=None, desc=None, total=None, leave=True, file=None,
if not gui:
# Initialize the screen printer
self.sp = self.status_printer(self.fp)
self.refresh(lock_args=self.lock_args)
if delay <= 0:
self.refresh(lock_args=self.lock_args)

# Init the time counter
self.last_print_t = self._time()
Expand Down Expand Up @@ -1163,6 +1168,7 @@ def __iter__(self):
mininterval = self.mininterval
last_print_t = self.last_print_t
last_print_n = self.last_print_n
min_start_t = self.start_t + self.delay
n = self.n
time = self._time

Expand All @@ -1174,8 +1180,9 @@ def __iter__(self):
n += 1

if n - last_print_n >= self.miniters:
dt = time() - last_print_t
if dt >= mininterval:
cur_t = time()
dt = cur_t - last_print_t
if dt >= mininterval and cur_t >= min_start_t:
self.update(n - last_print_n)
last_print_n = self.last_print_n
last_print_t = self.last_print_t
Expand Down Expand Up @@ -1218,8 +1225,9 @@ def update(self, n=1):

# check counter first to reduce calls to time()
if self.n - self.last_print_n >= self.miniters:
dt = self._time() - self.last_print_t
if dt >= self.mininterval:
cur_t = self._time()
dt = cur_t - self.last_print_t
if dt >= self.mininterval and cur_t >= self.start_t + self.delay:
cur_t = self._time()
dn = self.n - self.last_print_n # >= n
if self.smoothing and dt and dn:
Expand Down Expand Up @@ -1279,6 +1287,9 @@ def fp_write(s):
leave = pos == 0 if self.leave is None else self.leave

with self._lock:
if self.last_print_t < self.start_t + self.delay:
# haven't ever displayed; nothing to clear
return
if leave:
# stats for overall rate (no weighted average)
self._ema_dt = lambda: None
Expand Down