docs: def start(self):
          '''Starts measuring time, and prints the bar at 0%.
  
          It returns self so you can use it like this:
  
          >>> pbar = ProgressBar().start()
          >>> for i in range(100):
          ...    # do something
          ...    pbar.update(i+1)
          ...
          >>> pbar.finish()
          '''
  
          if self.redirect_stderr:
              self._stderr = sys.stderr
              sys.stderr = StringIO()
  
          if self.redirect_stdout:
              self._stdout = sys.stdout
              sys.stdout = StringIO()
  
          if self.maxval is None:
              self.maxval = self._DEFAULT_MAXVAL
  
          self.num_intervals = max(100, self.term_width)
          self.next_update = 0
  
          if self.maxval is not UnknownLength:
              if self.maxval < 0:
                  raise ValueError('Value out of range')
              self.update_interval = self.maxval / self.num_intervals
  
          self.start_time = self.last_update_time = time.time()
          self.update(0)
  
          return self