Skip to content

Commit

Permalink
support catalog endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
ebrehault committed Feb 19, 2025
1 parent 8137116 commit 6834480
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 5 deletions.
5 changes: 3 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# Changelog

## 4.5.3 (unreleased)
## 4.6.0 (unreleased)


- Nothing changed yet.
- Rename `add_labelset` to `set_labelset`
- Support `/catalog` endpoint


## 4.5.2 (2025-02-17)
Expand Down
69 changes: 69 additions & 0 deletions nuclia/sdk/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from nucliadb_models.search import (
AskRequest,
AskResponseItem,
CatalogRequest,
Filter,
FindRequest,
KnowledgeboxFindResults,
Expand Down Expand Up @@ -139,6 +140,40 @@ def find(

return ndb.ndb.find(req, kbid=ndb.kbid)

@kb
@pretty
def catalog(
self,
*,
query: Union[str, FindRequest] = "",
filters: Optional[Union[List[str], List[Filter]]] = None,
**kwargs,
):
"""
Perform a catalog query.
See https://docs.nuclia.dev/docs/api#tag/Search/operation/catalog_post_kb__kbid__catalog_post
"""
ndb: NucliaDBClient = kwargs["ndb"]
if isinstance(query, str):
req = CatalogRequest(
query=query,
filters=filters or [], # type: ignore
**kwargs,
)
elif isinstance(query, CatalogRequest):
req = query
elif isinstance(query, dict):
try:
req = CatalogRequest.model_validate(query)
except ValidationError:
logger.exception("Error validating query")
raise
else:
raise Exception("Invalid Query either str or FindRequest")

return ndb.ndb.catalog(req, kbid=ndb.kbid)

@kb
def ask(
self,
Expand Down Expand Up @@ -379,6 +414,40 @@ async def find(

return await ndb.ndb.find(req, kbid=ndb.kbid)

@kb
@pretty
async def catalog(
self,
*,
query: Union[str, FindRequest] = "",
filters: Optional[Union[List[str], List[Filter]]] = None,
**kwargs,
):
"""
Perform a catalog query.
See https://docs.nuclia.dev/docs/api#tag/Search/operation/catalog_post_kb__kbid__catalog_post
"""
ndb: AsyncNucliaDBClient = kwargs["ndb"]
if isinstance(query, str):
req = CatalogRequest(
query=query,
filters=filters or [], # type: ignore
**kwargs,
)
elif isinstance(query, CatalogRequest):
req = query
elif isinstance(query, dict):
try:
req = CatalogRequest.model_validate(query)
except ValidationError:
logger.exception("Error validating query")
raise
else:
raise Exception("Invalid Query either str or FindRequest")

return await ndb.ndb.catalog(req, kbid=ndb.kbid)

@kb
async def ask(
self,
Expand Down
6 changes: 6 additions & 0 deletions nuclia/tests/test_kb/test_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,12 @@ def test_search(testing_config):
assert "Lamarr Lesson plan.pdf" in titles


def test_catalog(testing_config):
search = NucliaSearch()
results = search.catalog()
assert len(results.resources.keys()) == 2


def test_search_object(testing_config):
search = NucliaSearch()
results = search.search(query={"query": "Who is hedy Lamarr?"})
Expand Down
6 changes: 3 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ requests
httpx
httpcore>=1.0.0
prompt_toolkit
nucliadb_sdk>=6.2.1.post2864,<7
nucliadb_models>=6.2.1.post2864,<7
nucliadb_protos>=6.2.1.post2864,<7
nucliadb_sdk>=6.2.1.post3247,<7
nucliadb_models>=6.2.1.post3247,<7
nucliadb_protos>=6.2.1.post3247,<7
nuclia-models>=0.25.0
tqdm
aiofiles
Expand Down

0 comments on commit 6834480

Please sign in to comment.