Given a string like "1 23 4-8 32 1", return a unique list of those integers in the string and
    the integers in the ranges in the string.
    Non-numbers ignored. Not necessarily sorted

def parse_int_string(int_string: str) -> List[int]:
    """
    Given a string like "1 23 4-8 32 1", return a unique list of those integers in the string and
    the integers in the ranges in the string.
    Non-numbers ignored. Not necessarily sorted
    """
    cleaned = " ".join(int_string.strip().split())
    cleaned = cleaned.replace(" - ", "-")
    cleaned = cleaned.replace(",", " ")

    tokens = cleaned.split(" ")
    indices: Set[int] = set()
    for token in tokens:
        if "-" in token:
            endpoints = token.split("-")
            if len(endpoints) != 2:
                LOG.info(f"Dropping '{token}' as invalid - weird range.")
                continue

            start = int(endpoints[0])
            end = int(endpoints[1]) + 1

            indices = indices.union(indices, set(range(start, end)))

        else:
            try:
                indices.add(int(token))
            except ValueError:
                LOG.info(f"Dropping '{token}' as invalid - not an int.")

    return list(indices)