| 146 | |
| 147 | |
| 148 | def display(self, inTot=None, inSz=None, outSz=None, start_time=None): |
| 149 | try: |
| 150 | a = self.lastupdate |
| 151 | except AttributeError: |
| 152 | self.lastupdate = (time.time() - 5) |
| 153 | |
| 154 | if inTot: |
| 155 | remain = (inTot - outSz) |
| 156 | percent = (float(outSz) / float(inTot)) |
| 157 | elapsed = (time.time() - start_time) |
| 158 | speed = (float(outSz) / float(elapsed)) |
| 159 | eta = int(remain / speed) |
| 160 | |
| 161 | # now build out the majority of the display string |
| 162 | linest = '%s in %s @ %s/sec [' % ( |
| 163 | self.size(outSz), |
| 164 | self.time(elapsed), |
| 165 | self.size(speed) |
| 166 | ) |
| 167 | lineend = '] %3d%% eta %s' % ( |
| 168 | int(percent * 100), |
| 169 | self.time(eta) |
| 170 | ) |
| 171 | |
| 172 | # now figure out how many hashmarks we need |
| 173 | curlen = (len(linest)+len(lineend)) |
| 174 | hashlen = (self.max_x - curlen) |
| 175 | hashes = int(hashlen * percent) |
| 176 | padding = (hashlen - hashes) |
| 177 | |
| 178 | # and put the line together |
| 179 | line = '%s%s%s%s' % ( |
| 180 | linest, |
| 181 | '#'*hashes, |
| 182 | ' '*padding, |
| 183 | lineend |
| 184 | ) |
| 185 | |
| 186 | else: |
| 187 | line = '%s in %s @ %s/sec' % ( |
| 188 | self.size(outSz), |
| 189 | self.time(time.time() - start_time), |
| 190 | self.size((outSz / (time.time() - start_time))) |
| 191 | ) |
| 192 | |
| 193 | if (time.time() - self.lastupdate) >= 1 and not self.quiet: |
| 194 | sys.stderr.write('%s\r' % line) |
| 195 | sys.stderr.flush() |
| 196 | self.lastupdate = time.time() |
| 197 | |
| 198 | ################ |
| 199 | ## I/O classes |