Current Dir: /snap/core22/2955/usr/lib/python3/dist-packages/importlib_metadata/
[DIR] __pycache__ [ delete | rename ]
[FILE] py.typed [ edit | delete | rename ]
[FILE] _adapters.py [ edit | delete | rename ]
[FILE] _collections.py [ edit | delete | rename ]
[FILE] _compat.py [ edit | delete | rename ]
[FILE] _functools.py [ edit | delete | rename ]
[FILE] _itertools.py [ edit | delete | rename ]
[FILE] _meta.py [ edit | delete | rename ]
[FILE] _text.py [ edit | delete | rename ]
[FILE] __init__.py [ edit | delete | rename ]
Viewing: /snap/core22/2955/usr/lib/python3/dist-packages/importlib_metadata/_itertools.py
from itertools import filterfalse
def unique_everseen(iterable, key=None):
"List unique elements, preserving order. Remember all elements ever seen."
# unique_everseen('AAAABBBCCDAABBB') --> A B C D
# unique_everseen('ABBCcAD', str.lower) --> A B C D
seen = set()
seen_add = seen.add
if key is None:
for element in filterfalse(seen.__contains__, iterable):
seen_add(element)
yield element
else:
for element in iterable:
k = key(element)
if k not in seen:
seen_add(k)
yield element