Cleanup and (if leave=False) close the progressbar.
(self)
| 1263 | return True |
| 1264 | |
| 1265 | def close(self): |
| 1266 | """Cleanup and (if leave=False) close the progressbar.""" |
| 1267 | if self.disable: |
| 1268 | return |
| 1269 | |
| 1270 | # Prevent multiple closures |
| 1271 | self.disable = True |
| 1272 | |
| 1273 | # decrement instance pos and remove from internal set |
| 1274 | pos = abs(self.pos) |
| 1275 | self._decr_instances(self) |
| 1276 | |
| 1277 | if self.last_print_t < self.start_t + self.delay: |
| 1278 | # haven't ever displayed; nothing to clear |
| 1279 | return |
| 1280 | |
| 1281 | # GUI mode |
| 1282 | if getattr(self, 'sp', None) is None: |
| 1283 | return |
| 1284 | |
| 1285 | # annoyingly, _supports_unicode isn't good enough |
| 1286 | def fp_write(s): |
| 1287 | self.fp.write(str(s)) |
| 1288 | |
| 1289 | try: |
| 1290 | fp_write('') |
| 1291 | except ValueError as e: |
| 1292 | if 'closed' in str(e): |
| 1293 | return |
| 1294 | raise # pragma: no cover |
| 1295 | |
| 1296 | leave = pos == 0 if self.leave is None else self.leave |
| 1297 | |
| 1298 | with self._lock: |
| 1299 | if leave: |
| 1300 | # stats for overall rate (no weighted average) |
| 1301 | self._ema_dt = lambda: None |
| 1302 | self.display(pos=0) |
| 1303 | fp_write('\n') |
| 1304 | else: |
| 1305 | # clear previous display |
| 1306 | if self.display(msg='', pos=pos) and not pos: |
| 1307 | fp_write('\r') |
| 1308 | |
| 1309 | def clear(self, nolock=False): |
| 1310 | """Clear current bar display.""" |