From 4a46c8ec88c47ec4c79f600c4ad956c911b9e6a9 Mon Sep 17 00:00:00 2001 From: James Briggs <james.briggs@hotmail.com> Date: Fri, 15 Nov 2024 18:52:41 +0100 Subject: [PATCH] fix: pinecone delete index --- semantic_router/index/base.py | 6 ++++++ semantic_router/index/pinecone.py | 1 + tests/unit/test_layer.py | 20 +++++++++++--------- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/semantic_router/index/base.py b/semantic_router/index/base.py index 24fd337b..4893987a 100644 --- a/semantic_router/index/base.py +++ b/semantic_router/index/base.py @@ -47,6 +47,9 @@ class BaseIndex(BaseModel): schema and additional metadata. :rtype: List[Tuple] """ + if self.index is None: + logger.warning("Index is None, could not retrieve utterances.") + return [] _, metadata = self._get_all(include_metadata=True) route_tuples = parse_route_info(metadata=metadata) return [Utterance.from_tuple(x) for x in route_tuples] @@ -212,6 +215,9 @@ class BaseIndex(BaseModel): schema and additional metadata. :rtype: List[Tuple] """ + if self.index is None: + logger.warning("Index is None, could not retrieve route info.") + return [] _, metadata = await self._async_get_all(include_metadata=True) route_info = parse_route_info(metadata=metadata) return route_info # type: ignore diff --git a/semantic_router/index/pinecone.py b/semantic_router/index/pinecone.py index 5b2cdcd8..11e33885 100644 --- a/semantic_router/index/pinecone.py +++ b/semantic_router/index/pinecone.py @@ -492,6 +492,7 @@ class PineconeIndex(BaseIndex): def delete_index(self): self.client.delete_index(self.index_name) + self.index = None # __ASYNC CLIENT METHODS__ async def _async_query( diff --git a/tests/unit/test_layer.py b/tests/unit/test_layer.py index 1cb35be8..67102f7c 100644 --- a/tests/unit/test_layer.py +++ b/tests/unit/test_layer.py @@ -232,24 +232,26 @@ class TestIndexEncoders: route_layer_none = RouteLayer(encoder=None) assert route_layer_none.score_threshold == openai_encoder.score_threshold + +@pytest.mark.parametrize("index_cls", get_test_indexes()) +class TestRouteLayer: def test_initialization_dynamic_route( - self, encoder_cls, dynamic_routes, index_cls + self, dynamic_routes, index_cls ): index = init_index(index_cls) - encoder = encoder_cls() route_layer = RouteLayer( - encoder=encoder, routes=dynamic_routes, index=index, - auto_sync="local" if index_cls is PineconeIndex else None, + encoder=openai_encoder, routes=dynamic_routes, index=index, + auto_sync="local", ) - assert route_layer.score_threshold == encoder.score_threshold - + assert route_layer.score_threshold == openai_encoder.score_threshold -@pytest.mark.parametrize("index_cls", get_test_indexes()) -class TestRouteLayer: def test_delete_index(self, openai_encoder, routes, index_cls): # TODO merge .delete_index() and .delete_all() and get working index = init_index(index_cls) - route_layer = RouteLayer(encoder=openai_encoder, routes=routes, index=index) + route_layer = RouteLayer( + encoder=openai_encoder, routes=routes, index=index, + auto_sync="local", + ) if index_cls is PineconeIndex: time.sleep(PINECONE_SLEEP) # allow for index to be populated route_layer.index.delete_index() -- GitLab