From 095fee8232c9968aa8f8629fb3f32b3ce574b6bf Mon Sep 17 00:00:00 2001 From: Rohit Malhotra Date: Mon, 27 Jan 2025 17:53:16 -0500 Subject: [PATCH] Feat: Filter matching events in reverse order (#6485) --- openhands/events/stream.py | 4 +++- tests/unit/test_event_stream.py | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/openhands/events/stream.py b/openhands/events/stream.py index c1df06335d01..177a921e4ea4 100644 --- a/openhands/events/stream.py +++ b/openhands/events/stream.py @@ -367,6 +367,7 @@ def get_matching_events( end_date: str | None = None, start_id: int = 0, limit: int = 100, + reverse: bool = False, ) -> list: """Get matching events from the event stream based on filters. @@ -378,6 +379,7 @@ def get_matching_events( end_date: Filter events before this date (ISO format) start_id: Starting ID in the event stream. Defaults to 0 limit: Maximum number of events to return. Must be between 1 and 100. Defaults to 100 + reverse: Whether to retrieve events in reverse order. Defaults to False. Returns: list: List of matching events (as dicts) @@ -390,7 +392,7 @@ def get_matching_events( matching_events: list = [] - for event in self.get_events(start_id=start_id): + for event in self.get_events(start_id=start_id, reverse=reverse): if self._should_filter_event( event, query, event_types, source, start_date, end_date ): diff --git a/tests/unit/test_event_stream.py b/tests/unit/test_event_stream.py index e666340a54e1..f414bc6e2994 100644 --- a/tests/unit/test_event_stream.py +++ b/tests/unit/test_event_stream.py @@ -89,6 +89,10 @@ def test_get_matching_events_type_filter(temp_dir: str): events = event_stream.get_matching_events(event_types=(NullAction, MessageAction)) assert len(events) == 3 + # Filter in reverse + events = event_stream.get_matching_events(reverse=True, limit=1) + assert events[0]['message'] == 'test' + def test_get_matching_events_query_search(temp_dir: str): file_store = get_file_store('local', temp_dir)