Skip to content

Commit 98c7579

Browse files
nicHochsamaloney
andauthored
fix empty result filter for latest_version error when serach result is empty (#160)
* Fix bug in filter_for_latest_version if response was empty --------- Co-authored-by: Shane Maloney <shane.maloney@dias.ie>
1 parent b8fe13f commit 98c7579

File tree

3 files changed

+31
-14
lines changed

3 files changed

+31
-14
lines changed

changelog/160.bugfix.rst

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix error in `~stixpy.net.client.StixQueryResponse.filter_for_latest_version` if the result table was empty.

stixpy/net/client.py

+24-14
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,30 @@
1717

1818
class StixQueryResponse(QueryResponse):
1919
def filter_for_latest_version(self, allow_uncompleted=False):
20-
self["tidx"] = range(len(self))
21-
grouped_res = self.group_by(
22-
["Start Time", "End Time", "Instrument", "Level", "DataType", "DataProduct", "Request ID"]
23-
)
24-
keep = np.zeros(len(self), dtype=bool)
25-
for key, group in zip(grouped_res.groups.keys, grouped_res.groups):
26-
group.sort("Ver")
27-
if not allow_uncompleted:
28-
incomplete = np.char.endswith(group["Ver"].data, "U")
29-
keep[group[~incomplete][-1]["tidx"]] = True
30-
else:
31-
keep[group[-1]["tidx"]] = True
32-
self.remove_column("tidx")
33-
self.remove_rows(np.where(~keep))
20+
r"""
21+
Filter the response to only include the most recent versions of results.
22+
23+
Parameters
24+
----------
25+
allow_uncompleted
26+
Include incomplete version (e.g. V02U)
27+
28+
"""
29+
if len(self) > 0 and "Start Time" in self.columns:
30+
self["_tidx"] = range(len(self))
31+
grouped_res = self.group_by(
32+
["Start Time", "End Time", "Instrument", "Level", "DataType", "DataProduct", "Request ID"]
33+
)
34+
keep = np.zeros(len(self), dtype=bool)
35+
for key, group in zip(grouped_res.groups.keys, grouped_res.groups):
36+
group.sort("Ver")
37+
if not allow_uncompleted:
38+
incomplete = np.char.endswith(group["Ver"].data, "U")
39+
keep[group[~incomplete][-1]["_tidx"]] = True
40+
else:
41+
keep[group[-1]["_tidx"]] = True
42+
self.remove_column("_tidx")
43+
self.remove_rows(np.where(~keep))
3444

3545

3646
class STIXClient(GenericClient):

stixpy/net/tests/test_client.py

+6
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,12 @@ def test_search_version_and(clientlocal):
161161
assert len(res) == 5
162162

163163

164+
def test_search_latest_version_empty(clientlocal):
165+
res = clientlocal.search(a.Time("2023-01-01T00:00", "2023-01-01T23:59"), a.Instrument.stix)
166+
res.filter_for_latest_version()
167+
assert len(res) == 0
168+
169+
164170
def test_search_latest_version(clientlocal):
165171
res = clientlocal.search(a.Time("2022-01-01T00:00", "2022-01-01T23:59"), a.Instrument.stix)
166172
res.filter_for_latest_version(allow_uncompleted=True)

0 commit comments

Comments
 (0)