Skip to content

Commit

Permalink
always use distinct for embedded lists
Browse files Browse the repository at this point in the history
  • Loading branch information
benjaminpkane committed Dec 2, 2024
1 parent f478784 commit f085b74
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 13 deletions.
12 changes: 6 additions & 6 deletions fiftyone/server/lightning.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,11 +140,11 @@ async def lightning_resolver(
for item in sublist
]

filter = (
{f"{dataset.group_field}.name": input.slice}
if dataset.group_field and input.slice
else None
)
if dataset.group_field and input.slice:
filter = {f"{dataset.group_field}.name": input.slice}
dataset.group_slice = input.slice
else:
filter = {}
result = await _do_async_pooled_queries(dataset, flattened, filter)

results = []
Expand Down Expand Up @@ -317,7 +317,7 @@ async def _do_async_query(
filter: t.Optional[t.Mapping[str, str]],
):
if isinstance(query, DistinctQuery):
if query.has_list and not query.filters:
if query.has_list:
return await _do_distinct_query(collection, query, filter)

return await _do_distinct_pipeline(dataset, collection, query, filter)
Expand Down
17 changes: 10 additions & 7 deletions fiftyone/server/view.py
Original file line number Diff line number Diff line change
Expand Up @@ -614,8 +614,9 @@ def _make_range_query(path: str, field: fof.Field, args):
def _make_scalar_expression(f, args, field, list_field=None, is_label=False):
expr = None
if _is_support(field):
mn, mx = args["range"]
expr = (f[0] >= mn) & (f[1] <= mx)
if "range" in args:
mn, mx = args["range"]
expr = (f[0] >= mn) & (f[1] <= mx)
elif isinstance(field, fof.ListField):
if isinstance(list_field, str):
return f.filter(
Expand All @@ -640,12 +641,14 @@ def _make_scalar_expression(f, args, field, list_field=None, is_label=False):
if not true and not false:
expr = (f != True) & (f != False)
elif _is_datetime(field):
mn, mx = args["range"]
p = fou.timestamp_to_datetime
expr = (f >= p(mn)) & (f <= p(mx))
if "range" in args:
mn, mx = args["range"]
p = fou.timestamp_to_datetime
expr = (f >= p(mn)) & (f <= p(mx))
elif isinstance(field, (fof.FloatField, fof.IntField)):
mn, mx = args["range"]
expr = (f >= mn) & (f <= mx)
if "range" in args:
mn, mx = args["range"]
expr = (f >= mn) & (f <= mx)
else:
values = args["values"]
if not values:
Expand Down

0 comments on commit f085b74

Please sign in to comment.