code: def wrap_row(self, widths, row, width_default=None):
          
          lines = []
          longest = 0 # longest wrapped column in row
  
          if not width_default:
              width_default = self.width_default
  
          # Wrap column contents
          for i in range(0, len(row)):
              w=width_default # column width
  
              # Only set column width dynamicaly for non-rogue rows
              if i < len(widths):
                w = widths[i]
  
              tw = textwrap.TextWrapper(width=w, break_on_hyphens=False)
              # Wrap and left-justify
              row[i] = tw.wrap(textwrap.dedent(row[i]))
              # Pad with spaces up to to fixed column width
              for l in range(0, len(row[i])):
                      row[i][l] += (w - len(row[i][l])) * ' '
              if len(row[i]) > longest:
                  longest = len(row[i])
  
          # Pad all columns to have the same number of lines
          for i in range(0, len(row)):
              w=width_default # column width
  
              # Only set column width dynamicaly for non-rogue rows
              if i < len(widths):
                  w = widths[i]
  
              if len(row[i]) < longest:
                  for j in range(len(row[i]), longest):
                      row[i].append(w * ' ')
  
          for l in range(0,longest):
              line = []
              for c in range(len(row)):
                  line.append(row[c][l])
              line = '| ' + ' | '.join(line) + ' |'
              lines.append(line)
  
          return lines
docs: Wraps a single line table row into a fixed width, multi-line table.