mirror of
https://github.com/verigak/progress.git
synced 2025-12-10 04:05:35 +00:00
Remove logic from update of base classes, so subclasses don't have to call super
This commit is contained in:
@@ -46,17 +46,19 @@ class Infinite(object):
|
|||||||
w = self.avg_window
|
w = self.avg_window
|
||||||
self.avg = dt if self.avg is None else (dt + w * self.avg) / (w + 1)
|
self.avg = dt if self.avg is None else (dt + w * self.avg) / (w + 1)
|
||||||
|
|
||||||
def update(self):
|
|
||||||
self.update_stats()
|
|
||||||
kv = [(key, val) for key, val in self.__dict__.items()
|
kv = [(key, val) for key, val in self.__dict__.items()
|
||||||
if not key.startswith('_')]
|
if not key.startswith('_')]
|
||||||
self.ctx.update(kv)
|
self.ctx.update(kv)
|
||||||
|
|
||||||
|
def update(self):
|
||||||
|
pass
|
||||||
|
|
||||||
def finish(self):
|
def finish(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def next(self):
|
def next(self):
|
||||||
self.index = self.index + 1
|
self.index = self.index + 1
|
||||||
|
self.update_stats()
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
def iter(self, it):
|
def iter(self, it):
|
||||||
@@ -75,9 +77,6 @@ class Progress(Infinite):
|
|||||||
self.eta = None
|
self.eta = None
|
||||||
|
|
||||||
def update_stats(self):
|
def update_stats(self):
|
||||||
if self.delta <= 0:
|
|
||||||
return
|
|
||||||
|
|
||||||
# Calculate moving average
|
# Calculate moving average
|
||||||
now = time()
|
now = time()
|
||||||
dt = (now - self._ts) / self.delta
|
dt = (now - self._ts) / self.delta
|
||||||
@@ -90,10 +89,16 @@ class Progress(Infinite):
|
|||||||
self.remaining = self.max - self.index
|
self.remaining = self.max - self.index
|
||||||
self.eta = int(ceil(self.avg * self.remaining))
|
self.eta = int(ceil(self.avg * self.remaining))
|
||||||
|
|
||||||
|
kv = [(key, val) for key, val in self.__dict__.items()
|
||||||
|
if not key.startswith('_')]
|
||||||
|
self.ctx.update(kv)
|
||||||
|
|
||||||
def next(self):
|
def next(self):
|
||||||
prev = self.index
|
prev = self.index
|
||||||
self.index = min(self.index + 1, self.max)
|
self.index = min(self.index + 1, self.max)
|
||||||
self.delta = self.index - prev
|
self.delta = self.index - prev
|
||||||
|
if self.delta > 0:
|
||||||
|
self.update_stats()
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
def goto(self, index):
|
def goto(self, index):
|
||||||
@@ -104,6 +109,8 @@ class Progress(Infinite):
|
|||||||
|
|
||||||
self.index = index
|
self.index = index
|
||||||
self.delta = delta
|
self.delta = delta
|
||||||
|
if delta > 0:
|
||||||
|
self.update_stats()
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
def iter(self, it):
|
def iter(self, it):
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ class Bar(WritelnMixin, Progress):
|
|||||||
fill = '#'
|
fill = '#'
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
super(Bar, self).update()
|
|
||||||
filled_length = int(self.width * self.progress)
|
filled_length = int(self.width * self.progress)
|
||||||
empty_length = self.width - filled_length
|
empty_length = self.width - filled_length
|
||||||
|
|
||||||
@@ -63,8 +62,6 @@ class IncrementalBar(Bar):
|
|||||||
phases = (u' ', u'▏', u'▎', u'▍', u'▌', u'▋', u'▊', u'▉', u'█')
|
phases = (u' ', u'▏', u'▎', u'▍', u'▌', u'▋', u'▊', u'▉', u'█')
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
super(IncrementalBar, self).update()
|
|
||||||
|
|
||||||
nphases = len(self.phases)
|
nphases = len(self.phases)
|
||||||
expanded_length = int(nphases * self.width * self.progress)
|
expanded_length = int(nphases * self.width * self.progress)
|
||||||
filled_length = int(self.width * self.progress)
|
filled_length = int(self.width * self.progress)
|
||||||
|
|||||||
@@ -22,13 +22,11 @@ class Counter(WriteMixin, Infinite):
|
|||||||
message = ''
|
message = ''
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
super(Counter, self).update()
|
|
||||||
self.write(str(self.index))
|
self.write(str(self.index))
|
||||||
|
|
||||||
|
|
||||||
class Countdown(WriteMixin, Progress):
|
class Countdown(WriteMixin, Progress):
|
||||||
def update(self):
|
def update(self):
|
||||||
super(Countdown, self).update()
|
|
||||||
self.write(str(self.remaining))
|
self.write(str(self.remaining))
|
||||||
|
|
||||||
|
|
||||||
@@ -36,7 +34,6 @@ class Stack(WriteMixin, Progress):
|
|||||||
phases = (u' ', u'▁', u'▂', u'▃', u'▄', u'▅', u'▆', u'▇', u'█')
|
phases = (u' ', u'▁', u'▂', u'▃', u'▄', u'▅', u'▆', u'▇', u'█')
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
super(Stack, self).update()
|
|
||||||
nphases = len(self.phases)
|
nphases = len(self.phases)
|
||||||
i = min(nphases - 1, int(self.progress * nphases))
|
i = min(nphases - 1, int(self.progress * nphases))
|
||||||
self.write(self.phases[i])
|
self.write(self.phases[i])
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ class Spinner(WriteMixin, Infinite):
|
|||||||
phases = ('-', '\\', '|', '/')
|
phases = ('-', '\\', '|', '/')
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
super(Spinner, self).update()
|
|
||||||
i = self.index % len(self.phases)
|
i = self.index % len(self.phases)
|
||||||
self.write(self.phases[i])
|
self.write(self.phases[i])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user