Add option to disable progress bar. Should fix GH-1

This commit is contained in:
Hadrien Mary 2015-06-18 19:37:44 +02:00
parent d16381a911
commit 0679775478
3 changed files with 24 additions and 11 deletions

View File

@ -33,7 +33,7 @@ pip install -e git+https://github.com/tqdm/tqdm.git#egg=master
```python
def tqdm(iterable, desc=None, total=None, leave=False, file=sys.stderr,
ncols=None, mininterval=0.1, miniters=None):
ncols=None, mininterval=0.1, miniters=None, disable=False):
"""
Decorate an iterable object, returning an iterator which acts exactly
like the orignal iterable, but prints a dynamically updating
@ -63,6 +63,8 @@ def tqdm(iterable, desc=None, total=None, leave=False, file=sys.stderr,
Minimum progress update interval, in seconds [default: 0.1].
miniters : int, optional
Minimum progress update interval, in iterations [default: None].
disable : bool
Disable the progress bar if True [default: False].
Returns
-------

21
tqdm/_tqdm.py Executable file → Normal file
View File

@ -52,9 +52,9 @@ def format_meter(n, total, elapsed, ncols=None, prefix=''):
N_BARS = max(1, ncols - len(l_bar) - len(r_bar)) if ncols else 10
bar_length, frac_bar_length = divmod(int(frac * N_BARS * 8), 8)
try:
try: # pragma: no cover
unich = unichr
except NameError:
except NameError: # pragma: no cover
unich = chr
bar = unich(0x2588)*bar_length
@ -83,7 +83,7 @@ class StatusPrinter(object):
def tqdm(iterable, desc=None, total=None, leave=False, file=sys.stderr,
ncols=None, mininterval=0.1, miniters=None):
ncols=None, mininterval=0.1, miniters=None, disable=False):
"""
Decorate an iterable object, returning an iterator which acts exactly
like the orignal iterable, but prints a dynamically updating
@ -113,19 +113,24 @@ def tqdm(iterable, desc=None, total=None, leave=False, file=sys.stderr,
Minimum progress update interval, in seconds [default: 0.1].
miniters : int, optional
Minimum progress update interval, in iterations [default: None].
disable : bool
Disable the progress bar if True [default: False].
Returns
-------
out : decorated iterator.
"""
if disable:
for obj in iterable:
yield obj
return
if total is None:
try:
total = len(iterable)
except (TypeError, AttributeError):
total = None
# not good for slow iterators
# elif not miniters:
# miniters = int(total/100)
if miniters is None:
miniters = 0
@ -151,10 +156,8 @@ def tqdm(iterable, desc=None, total=None, leave=False, file=sys.stderr,
if cur_t - last_print_t >= mininterval:
sp.print_status(format_meter(
n, total, cur_t-start_t, ncols, prefix))
if dynamic_miniters:
miniters = max(miniters, n - last_print_n + 1)
last_print_n = n
last_print_t = cur_t
@ -176,7 +179,7 @@ def trange(*args, **kwargs):
"""
try:
f = xrange
except NameError:
except NameError: # pragma: no cover
f = range
return tqdm(f(*args), **kwargs)

View File

@ -50,7 +50,7 @@ def test_iterate_over_csv_rows():
test_csv_file = StringIO()
writer = csv.writer(test_csv_file)
for i in range(3):
writer.writerow(['test']*3)
writer.writerow(['test'] * 3)
test_csv_file.seek(0)
# Test that nothing fails if we iterate over rows
@ -118,3 +118,11 @@ def test_min_iters():
our_file.write('blank\n')
our_file.seek(0)
assert '\nblank\nblank\n' in our_file.read()
def test_disable():
our_file = StringIO()
for i in tqdm(range(3), file=our_file, disable=True):
pass
our_file.seek(0)
assert our_file.read() == ""