def __rrshift__(self, iterable): etafmt = '(eta: {:d}:{:02d}:{:02d})' endfmt = '(took: {:d}:{:02d}:{:02d})' start_time = time.clock() up_time = time.clock() for i, e in enumerate(iterable): if (time.clock() - up_time) >= self.every_sec: up_time = time.clock() per_done = 100 * i / self.n sec_consumed = int(time.clock() - start_time) eta = sec_consumed * (self.n / float(i) - 1) if i else 0 tstr = timestr(eta, etafmt) text = '\rprogress: {}% {}'.format(per_done, tstr) console(text, end='') yield e duration = int(time.clock() - start_time) text = '\rprogress: 100% {}'.format(timestr(duration, endfmt)) console(text)
def test_timestr(): assert timestr('') == '' assert timestr('80') == '0:01:20'