| 52 | self._finished = False # Flag to track if get() was called |
| 53 | |
| 54 | def get_unique(self, items): |
| 55 | single_item = False |
| 56 | if not isinstance(items, list): |
| 57 | items = [items] |
| 58 | single_item = True |
| 59 | |
| 60 | new_items = [] |
| 61 | |
| 62 | for item in items: |
| 63 | if isinstance(item, dict): |
| 64 | item_repr = frozenset(item.items()) |
| 65 | elif isinstance(item, list): |
| 66 | item_repr = tuple(item) |
| 67 | elif isinstance(item, set): |
| 68 | item_repr = frozenset(item) |
| 69 | else: |
| 70 | item_repr = item |
| 71 | |
| 72 | if item_repr not in self._seen_items: |
| 73 | new_items.append(item) |
| 74 | self._seen_items.add(item_repr) |
| 75 | |
| 76 | return new_items[0] if single_item and new_items else new_items |
| 77 | |
| 78 | def put(self, *args, **kwargs): |
| 79 | if self._finished: |