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
34 self.stderr.write('.')
35 self.stderr.flush()
36
40
43
45 """an invisible indicator that does nothing..."""
48
49 - def show(self, verbosemessage):
50 """show nothing for progress :-)"""
51 pass
52
55
57 """a plain progress bar that doesn't know very much about output..."""
58 - def __init__(self, minValue = 0, maxValue = 100, totalWidth=50):
59 self.progBar = "[]"
60 self.min = minValue
61 self.max = maxValue
62 self.span = maxValue - minValue
63 self.width = totalWidth
64 self.amount = 0
65
67 """produces the string representing the progress bar"""
68 if self.amount < self.min:
69 self.amount = self.min
70 if self.amount > self.max:
71 self.amount = self.max
72
73
74 diffFromMin = float(self.amount - self.min)
75 percentDone = (diffFromMin / float(self.span)) * 100.0
76 percentDone = round(percentDone)
77 percentDone = int(percentDone)
78
79
80 allFull = self.width - 7
81 numHashes = (percentDone / 100.0) * allFull
82 numHashes = int(round(numHashes))
83
84
85 self.progBar = "[%s%s] %3d%%" % ('#'*numHashes, ' '*(allFull-numHashes), percentDone)
86 return str(self.progBar)
87
88 - def show(self, verbosemessage):
89 """displays the progress bar"""
90
91 print self
92
94 """a ProgressBar that just writes out the messages without any progress display"""
99
100 - def show(self, verbosemessage):
101 self.sys.stderr.write(verbosemessage + '\n')
102 self.sys.stderr.flush()
103
105 """a ProgressBar which knows how to go back to the beginning of the line..."""
110
111 - def show(self, verbosemessage):
112 self.sys.stderr.write(str(self) + '\r')
113 self.sys.stderr.flush()
114
116 self.sys.stderr.write('\n')
117 self.sys.stderr.flush()
118
121
126
127 - def show(self, verbosemessage):
128 output = str(self)
129 self.sys.stderr.write('\r' + ' '*self.lastwidth)
130 self.sys.stderr.write('\r' + verbosemessage + '\n')
131 self.lastwidth = len(output)
132 self.sys.stderr.write('\r' + output)
133 self.sys.stderr.flush()
134
135 -def test(progressbar):
141
142 if __name__ == '__main__':
143 p = HashProgressBar(0, 100, 50)
144 test(p)
145