docs: def _compute_cols_width(self):
          """Return an array with the width of each column
  
          If a specific width has been specified, exit. If the total of the
          columns width exceed the table desired width, another width will be
          computed to fit, and cells will be wrapped.
          """
  
          if hasattr(self, "_width"):
              return
          maxi = []
          if self._header:
              maxi = [ self._len_cell(x) for x in self._header ]
          for row in self._rows:
              for cell,i in zip(row, range(len(row))):
                  try:
                      maxi[i] = max(maxi[i], self._len_cell(cell))
                  except (TypeError, IndexError):
                      maxi.append(self._len_cell(cell))
          items = len(maxi)
          length = reduce(lambda x,y: x+y, maxi)
          if self._max_width and length + items*3 + 1 > self._max_width:
              maxi = [(self._max_width - items*3 -1) / items \
                  for n in range(items)]
          self._width = maxi