1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 """progress bar utilities for reporting feedback on progress of application..."""
23
25 """an ultra-simple progress indicator that just writes a dot for each action"""
27 import sys
28 self.stderr = sys.stderr
29 self.amount = 0
30
31 - def show(self, verbosemessage):
32 """show a dot for progress :-)"""
33 self.stderr.write('.')
34 self.stderr.flush()
35
39
42
44 """an invisible indicator that does nothing..."""
47
48 - def show(self, verbosemessage):
49 """show nothing for progress :-)"""
50 pass
51
54
56 """a plain progress bar that doesn't know very much about output..."""
57 - def __init__(self, minValue = 0, maxValue = 100, totalWidth=50):
58 self.progBar = "[]"
59 self.min = minValue
60 self.max = maxValue
61 self.span = maxValue - minValue
62 self.width = totalWidth
63 self.amount = 0
64
66 """produces the string representing the progress bar"""
67 if self.amount < self.min: self.amount = self.min
68 if self.amount > self.max: self.amount = self.max
69
70
71 diffFromMin = float(self.amount - self.min)
72 percentDone = (diffFromMin / float(self.span)) * 100.0
73 percentDone = round(percentDone)
74 percentDone = int(percentDone)
75
76
77 allFull = self.width - 7
78 numHashes = (percentDone / 100.0) * allFull
79 numHashes = int(round(numHashes))
80
81
82 self.progBar = "[%s%s] %3d%%" % ('#'*numHashes, ' '*(allFull-numHashes), percentDone)
83 return str(self.progBar)
84
85 - def show(self, verbosemessage):
86 """displays the progress bar"""
87 print self
88
90 """a ProgressBar that just writes out the messages without any progress display"""
95
96 - def show(self, verbosemessage):
97 self.sys.stderr.write(verbosemessage + '\n')
98 self.sys.stderr.flush()
99
101 """a ProgressBar which knows how to go back to the beginning of the line..."""
106
107 - def show(self, verbosemessage):
108 self.sys.stderr.write(str(self) + '\r')
109 self.sys.stderr.flush()
110
112 self.sys.stderr.write('\n')
113 self.sys.stderr.flush()
114
117
122
123 - def show(self, verbosemessage):
124 output = str(self)
125 self.sys.stderr.write('\r' + ' '*self.lastwidth)
126 self.sys.stderr.write('\r' + verbosemessage + '\n')
127 self.lastwidth = len(output)
128 self.sys.stderr.write('\r' + output)
129 self.sys.stderr.flush()
130
131 -def test(progressbar):
137
138 if __name__ == '__main__':
139 p = HashProgressBar(0,100,50)
140 test(p)
141