diff --git a/src/psygnal/containers/_evented_set.py b/src/psygnal/containers/_evented_set.py index 74a78a3b..85e22e29 100644 --- a/src/psygnal/containers/_evented_set.py +++ b/src/psygnal/containers/_evented_set.py @@ -228,6 +228,10 @@ def __repr__(self) -> str: inner = ", ".join(str(x) for x in self._data) return f"{self.__class__.__name__}(({inner}))" + def __reversed__(self) -> Iterator[_T]: + """Implement reversed(self).""" + return reversed(self._data.keys()) + class SetEvents(SignalGroup): """Events available on [EventedSet][psygnal.containers.EventedSet]. diff --git a/tests/containers/test_evented_set.py b/tests/containers/test_evented_set.py index 16a0ddf9..e9bf9739 100644 --- a/tests/containers/test_evented_set.py +++ b/tests/containers/test_evented_set.py @@ -121,6 +121,16 @@ def test_ordering(): assert tuple(os_tup) == (24, 16, 4, 5, 6, 8) +def test_iterator(): + tup = (24, 16, 8, 4, 5, 6) + os_tup = OrderedSet(tup) + es_tup = EventedOrderedSet(tup) + assert tuple(iter(os_tup)) == tup + assert tuple(reversed(os_tup)) == tuple(reversed(tup)) + assert tuple(iter(es_tup)) == tup + assert tuple(reversed(es_tup)) == tuple(reversed(tup)) + + def test_copy(test_set): from copy import copy