Fixing the eta logic

This commit is contained in:
Shawn Siefkas
2012-08-26 13:52:04 -05:00
parent 153733662f
commit 22dcfc24a7

View File

@@ -24,7 +24,6 @@ __version__ = '1.0.2'
class Infinite(object): class Infinite(object):
file = stderr file = stderr
avg_window = 10
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.ctx = {} self.ctx = {}
@@ -42,8 +41,7 @@ class Infinite(object):
# Calculate moving average # Calculate moving average
now = time() now = time()
dt = now - self._ts dt = now - self._ts
w = self.avg_window self.avg = (dt + self.index * self.avg) / (self.index + 1) if self.avg else dt
self.avg = dt if self.avg else (dt + w * self.avg) / (w + 1)
self._ts = now self._ts = now
kv = [(key, val) for key, val in self.__dict__.items() kv = [(key, val) for key, val in self.__dict__.items()
@@ -88,8 +86,7 @@ class Progress(Infinite):
now = time() now = time()
if self.delta: if self.delta:
dt = (now - self._ts) / self.delta dt = (now - self._ts) / self.delta
w = self.avg_window self.avg = (dt + self.index * self.avg) / (self.index + 1) if self.avg else dt
self.avg = dt if self.avg else (dt + w * self.avg) / (w + 1)
self.eta = int(ceil(self.avg * self.remaining)) self.eta = int(ceil(self.avg * self.remaining))
self._ts = now self._ts = now