def get_widths(rows, start_counts=None):
    """
    Return an list of integers of widest values for each column in ``rows``.

    If ``start_counts`` is not given, the return value is initialized to all
    zeroes.

    :param rows: Sequence of sequences representing rows
    :param list start_counts: Optional start counts for each column
    """
    rv = start_counts
    if rv is None:
        rv = [0] * len(rows[0])
    for row in rows:
        for i, cell in enumerate(row):
            n = len(str(cell))
            if n > rv[i]:
                rv[i] = n
    return rv