Returns a subsequence from given tuple, omitting specified indices.

    :param indices: Iterable of indices to exclude
    :param strict: Whether ``indices`` are required to exist in the tuple

    :return: Tuple without elements of specified indices

    :raise IndexError: If ``strict`` is True and one of ``indices``
                       is out of range.

    .. versionadded:: 0.0.3

def omit(indices, from_, strict=False):
    """Returns a subsequence from given tuple, omitting specified indices.

    :param indices: Iterable of indices to exclude
    :param strict: Whether ``indices`` are required to exist in the tuple

    :return: Tuple without elements of specified indices

    :raise IndexError: If ``strict`` is True and one of ``indices``
                       is out of range.

    .. versionadded:: 0.0.3
    """
    from taipan.collections.sets import remove_subset

    ensure_iterable(indices)
    ensure_sequence(from_)

    if strict:
        remaining_indices = set(xrange(len(from_)))
        try:
            remove_subset(remaining_indices, indices)
        except KeyError as e:
            raise IndexError(int(str(e)))
    else:
        remaining_indices = set(xrange(len(from_))) - set(indices)

    return from_.__class__(from_[index] for index in remaining_indices)