1 from itertools import filterfalse
13 # Type and type variable definitions
19 iterable: Iterable[_T], key: Optional[Callable[[_T], _U]] = None
21 "List unique elements, preserving order. Remember all elements ever seen."
22 # unique_everseen('AAAABBBCCDAABBB') --> A B C D
23 # unique_everseen('ABBCcAD', str.lower) --> A B C D
24 seen: Set[Union[_T, _U]] = set()
27 for element in filterfalse(seen.__contains__, iterable):
31 for element in iterable: