Skip to content

Commit 077402e

Browse files
committed
Use queryish start/stop properties
1 parent 095454a commit 077402e

File tree

6 files changed

+734
-603
lines changed

6 files changed

+734
-603
lines changed

src/django_ai_core/contrib/index/query.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ class SourceResultMixin(BaseResultMixin):
5959
Mixin for source search - returns unique source objects with over-fetching.
6060
6161
This mixin overrides run_query() to implement over-fetching
62-
and deduplication. By the time run_query() is called, self.limit and
63-
self.offset have been set by slicing operations.
62+
and deduplication. By the time run_query() is called, self.start and
63+
self.stop have been set by slicing operations.
6464
"""
6565

6666
overfetch_multiplier: int = 3
@@ -80,8 +80,8 @@ def run_query(self):
8080
"""
8181
Execute query with over-fetching and deduplication.
8282
"""
83-
requested_limit = getattr(self, "limit", None) or 20
84-
requested_offset = getattr(self, "offset", None) or 0
83+
requested_limit = self.limit
84+
requested_offset = self.offset or 0
8585

8686
yield from self._overfetch(requested_offset, requested_limit)
8787

@@ -126,7 +126,7 @@ def _fetch_batch(self, limit: int):
126126
This method calls the parent class's (storage provider's) run_query()
127127
with specific offset and limit.
128128
"""
129-
temp_qs = self.clone(limit=limit) # type: ignore
129+
temp_qs = self.clone(start=0, stop=limit) # type: ignore
130130

131131
# Skip SourceResultMixin in the MRO of temp_qs to resolve
132132
# run_query to the method on the storage provided queryish object

src/django_ai_core/contrib/index/storage/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class BaseStorageQuerySet(Queryish, Generic[StorageProviderType]):
2121

2222
def __init__(self, *args, **kwargs):
2323
super().__init__(*args, **kwargs)
24-
self.limit = 20
24+
self.stop = 20
2525

2626
def run_query(self) -> Iterator["BaseStorageDocument"]:
2727
"""Execute the query and return the results."""

src/django_ai_core/contrib/index/storage/inmemory.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ def run_query(self):
1111
storage_provider = self.storage_provider
1212
filter_map = {filter[0]: filter[1] for filter in self.filters}
1313

14-
limit = self.limit or 10
15-
1614
embedding = filter_map.pop("embedding", None)
1715
if embedding is None:
1816
raise ValueError("embedding filter is required")
@@ -31,7 +29,7 @@ def run_query(self):
3129
similarities, key=lambda pair: pair[0], reverse=True
3230
)
3331
for document in [pair[1] for pair in sorted_similarities][
34-
self.offset : self.offset + limit
32+
self.start : self.stop
3533
]:
3634
yield document
3735

src/django_ai_core/contrib/index/storage/pgvector/provider.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def run_query(self) -> Generator[BaseStorageDocument, None, None]:
4848
for key, value in filter_map.items():
4949
queryset = queryset.filter(**{f"metadata__{key}": value})
5050

51-
queryset = queryset[self.offset : self.limit]
51+
queryset = queryset[self.start : self.stop]
5252

5353
for instance in queryset:
5454
yield self.get_instance(instance)

tests/unit/contrib/index/test_query_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def __init__(self, documents=None):
101101

102102
def run_query(self):
103103
"""Mock run_query that returns documents with respect to limit."""
104-
limit = self.limit or len(self._documents)
104+
limit = self.stop or len(self._documents)
105105
yield from self._documents[:limit]
106106

107107

0 commit comments

Comments
 (0)