diff --git a/fiftyone/server/lightning.py b/fiftyone/server/lightning.py index 6119da36ff3..9eeed0acb4b 100644 --- a/fiftyone/server/lightning.py +++ b/fiftyone/server/lightning.py @@ -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 = [] @@ -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) diff --git a/fiftyone/server/view.py b/fiftyone/server/view.py index 9dbae98af9e..414386f7317 100644 --- a/fiftyone/server/view.py +++ b/fiftyone/server/view.py @@ -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( @@ -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: