def METHOD_NAME(header_list, rows):
    column_lengths = [len(header_item) for header_item in header_list]
    for row in rows:
        for index, column in enumerate(row):
            column = str(column)
            cell_length = len(column)
            try:
                if column_lengths[index] < cell_length:
                    column_lengths[index] = cell_length
            except IndexError:
                pass
    # spaces in between columns + total column length
    max_line_length = ((len(column_lengths) - 1) * 4) + sum(column_lengths)
    # Got maximum column widths
    result = ''
    for index, header_item in enumerate(header_list):
        pad = ' ' * (column_lengths[index] - len(header_item))
        result += '{0}{1}    '.format(header_item, pad)
    # Remove trailing space, add newline
    result += (' ' * (max_line_length - len(result))) + '\n'
    # Add ----- separator and newline
    result += ('-' * max_line_length) + '\n'
    for row in rows:
        line = ''
        for index, column in enumerate(row):
            column = str(column)
            pad = ' ' * (column_lengths[index] - len(column))
            line += '{0}{1}    '.format(column, pad)
        line += (' ' * (max_line_length - len(line))) + '\n'
        result += line
    print(result)