docs: def _progress_bar(self, width, percent, left="", right="", fill="|"):
          """ Get the green/yellow/red pieces of a text + bar display """
          text = left + (width - len(left) - len(right)) * " " + right
          cutoff = int(round(percent * width))
          text = text[:cutoff].replace(" ", fill) + text[cutoff:]
          low_cutoff = int(round(0.7 * width))
          med_cutoff = int(round(0.9 * width))
          if percent < 0.7:
              yield 2, text[:cutoff]
              yield 0, text[cutoff:]
          elif percent < 0.9:
              yield 2, text[:low_cutoff]
              yield 3, text[low_cutoff:cutoff]
              yield 0, text[cutoff:]
          else:
              yield 2, text[:low_cutoff]
              yield 3, text[low_cutoff:med_cutoff]
              yield 4, text[med_cutoff:cutoff]
              yield 0, text[cutoff:]