def Union(items, **kargs):
    """    An item selector (a generator) returning an iterator over each element of
    the union of all iterable input items, leaving out those elements which
    are not hashable.

    Example:

    ..
        >>> non_hashable = {'foo': 'bar'}

    >>> list(Union([(1, 2, 1), (2, 3, non_hashable), -1, (4, 5)]))
    [1, 2, 3, 4, 5]
    """
    data = set()
    for item in items:
        try:
            for value in item:
                try:
                    if value not in data:
                        data.add(value)
                        yield value
                except TypeError:
                    pass
        except TypeError:
            pass
