code: def progressbar(total, pos, msg=""):
      
      width = get_terminal_size()[0] - 40
      rel_pos = int(float(pos) / total * width)
      bar = ''.join(["=" * rel_pos, "." * (width - rel_pos)])
  
      # Determine how many digits in total (base 10)
      digits_total = len(str(total))
      fmt_width = "%0" + str(digits_total) + "d"
      fmt = "\r[" + fmt_width + "/" + fmt_width + "][%s] %s"
  
      progress_stream.write(fmt % (pos, total, bar, msg))
docs: Given a total and a progress position, output a progress bar
      to stderr. It is important to not output anything else while
      using this, as it relies soley on the behavior of carriage
      return (\\r).
  
      Can also take an optioal message to add after the
      progressbar. It must not contain newlines.
  
      The progress bar will look something like this:
  
      [099/500][=========...............................] ETA: 13:36:59
  
      Of course, the ETA part should be supplied be the calling
      function.