code: def calculate_max_cols_length(table, size):
      
      max_cols_lengths = {}
  
      for row in table:
          col_index = 0
          for idx, widget in enumerate(row.widgets):
              l = widget.pack((size[0], ))[0]
              max_cols_lengths[idx] = max(max_cols_lengths.get(idx, 0), l)
              col_index += 1
  
      max_cols_lengths.setdefault(0, 1)  # in case table is empty
      return max_cols_lengths
docs: :param table: list of lists:
  
      [["row 1 column 1", "row 1 column 2"],
       ["row 2 column 1", "row 2 column 2"]]
  
      each item consists of instance of urwid.Text
  
      :returns dict, {index: width}