def list_update(list1, list2):
    """update a list with another.

    In the returned list each element is unique and it is sorted.

    May raise:
        TypeError if the arguments are not lists.
    """
    if not isinstance(list1, list):
        raise TypeError('not a list: %s' % repr(list1))
    if not isinstance(list2, list):
        raise TypeError('not a list: %s' % repr(list2))
    if not list1:
        return sorted(list2)
    s = set(list1)
    s.update(list2)
    return sorted(s)
