Source code for pankus.taurus.utils
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = 'Maciej Kamiński Politechnika Wrocławska'
import progressbar
[docs]class TaurusLongTask:
def __init__(self,iterable,**kwargs):
self.iterator=iter(iterable)
self.if_progressbar=kwargs.get('progressbar',True)
if hasattr(iterable, '__len__'):
self.max_value=len(iterable)
else:
self.max_value=kwargs.get('max_value',progressbar.UnknownLength)
self.additional_text=kwargs.get('additional_text','')
self.bar_widgets=kwargs.get('progressbar_widgets',\
[ \
self.additional_text+' [', progressbar.Timer(), '] ', \
progressbar.Bar(), \
' (', progressbar.ETA(), ') ', \
]\
)
def __iter__(self):
if self.if_progressbar:
self.bar=progressbar.ProgressBar(\
max_value=self.max_value,\
widgets=self.bar_widgets,\
)
return self
return self.iterator
def __next__(self):
try:
element = self.iterator.__next__()
self.bar.update(self.bar.value+1)
return element
except Exception as error:
self.bar.finish()
raise error