docs: def _column_width(self, index=None, name=None, max_width=300, **kwargs):
          """
          :param index: int of the column index
          :param name: str of the name of the column
          :param max_width: int of the max size of characters in the width
          :return: int of the width of this column
          """
          assert name is not None or index is not None
          if name and name not in self._column_index:
              return min(max_width, name)
  
          if index is not None:
              name = self.columns[index]
          else:
              index = self._column_index[name]
  
          values_width = [len(name)]
          if isinstance(self._parameters.get(name, None), list):
              values_width += [len(self._safe_str(p, **kwargs))
                               for p in self._parameters[name]]
  
          values_width += [len(self._safe_str(row[index], **kwargs))
                           for row in self.table]
  
          ret = max(values_width)
          return min(max_width, ret) if max_width else ret