1234567891011121314151617181920212223 |
- from setuptools.extern.more_itertools import consume # noqa: F401
- # copied from jaraco.itertools 6.1
- def ensure_unique(iterable, key=lambda x: x):
- """
- Wrap an iterable to raise a ValueError if non-unique values are encountered.
- >>> list(ensure_unique('abc'))
- ['a', 'b', 'c']
- >>> consume(ensure_unique('abca'))
- Traceback (most recent call last):
- ...
- ValueError: Duplicate element 'a' encountered.
- """
- seen = set()
- seen_add = seen.add
- for element in iterable:
- k = key(element)
- if k in seen:
- raise ValueError(f"Duplicate element {element!r} encountered.")
- seen_add(k)
- yield element
|