def drop_empty_rows(rows):
    """Takes a list of rows and returns a new list without any blank rows.

    autom8 considers a row to be blank if it's totally empty, or if each item
    in the row is None, the empty string, or a string that only contain spaces.

    >>> drop_empty_rows([])
    []

    >>> drop_empty_rows([[], [1, 2, 3], [], [4, 5, 6], []])
    [[1, 2, 3], [4, 5, 6]]

    >>> drop_empty_rows([[9, 8, 7], [' ', '\t', ''], [6, 5, 4], [None, ' ']])
    [[9, 8, 7], [6, 5, 4]]
    """

    def _is_blank(obj):
        if isinstance(obj, str):
            return obj == '' or obj.isspace()
        else:
            return obj is None

    return [row for row in rows if any(not _is_blank(i) for i in row)]