From 78a4bef1968dd28ba2fc435704905a9743f920f6 Mon Sep 17 00:00:00 2001 From: Vits <vittorio.mayellaro.dev@gmail.com> Date: Thu, 18 Jul 2024 00:40:33 +0200 Subject: [PATCH] Fixing PyTest errors --- semantic_router/index/pinecone.py | 33 +++++++++---------------------- semantic_router/layer.py | 6 +----- 2 files changed, 10 insertions(+), 29 deletions(-) diff --git a/semantic_router/index/pinecone.py b/semantic_router/index/pinecone.py index 64312b3f..f4fa0b80 100644 --- a/semantic_router/index/pinecone.py +++ b/semantic_router/index/pinecone.py @@ -204,27 +204,6 @@ class PineconeIndex(BaseIndex): def _sync_index(self, local_routes: dict): remote_routes = self.get_routes() - if not local_routes["routes"]: - if self.sync != "remote": - raise ValueError( - "Local routes must be provided to sync the index if the sync setting is not 'remote'." - ) - else: - if not remote_routes: - raise ValueError("No routes found in the index.") - if ( - (self.sync in ["remote", "merge-force-remote"] and not remote_routes) - or ( - self.sync in ["error", "local", "merge-force-local"] - and not local_routes["routes"] - ) - or ( - self.sync == "merge" - and not remote_routes - and not local_routes["routes"] - ) - ): - raise ValueError("No routes found in the index.") remote_dict: dict = {route: set() for route, _ in remote_routes} for route, utterance in remote_routes: @@ -244,13 +223,17 @@ class PineconeIndex(BaseIndex): local_utterances = local_dict.get(route, set()) remote_utterances = remote_dict.get(route, set()) + if not local_utterances and not remote_utterances: + continue + if self.sync == "error": if local_utterances != remote_utterances: raise ValueError( f"Synchronization error: Differences found in route '{route}'" ) utterances_to_include: set = set() - layer_routes[route] = list(local_utterances) + if local_utterances: + layer_routes[route] = list(local_utterances) elif self.sync == "remote": utterances_to_include = set() if remote_utterances: @@ -264,7 +247,8 @@ class PineconeIndex(BaseIndex): if utterance not in local_utterances ] ) - layer_routes[route] = list(local_utterances) + if local_utterances: + layer_routes[route] = list(local_utterances) elif self.sync == "merge-force-remote": if route in local_dict and route not in remote_dict: utterances_to_include = local_utterances @@ -292,7 +276,8 @@ class PineconeIndex(BaseIndex): layer_routes[route] = list(remote_utterances) elif self.sync == "merge": utterances_to_include = local_utterances - remote_utterances - layer_routes[route] = list(remote_utterances.union(local_utterances)) + if local_utterances or remote_utterances: + layer_routes[route] = list(remote_utterances.union(local_utterances)) else: raise ValueError("Invalid sync mode specified") diff --git a/semantic_router/layer.py b/semantic_router/layer.py index 20a325b7..f4042b6c 100644 --- a/semantic_router/layer.py +++ b/semantic_router/layer.py @@ -220,7 +220,7 @@ class RouteLayer: if len(self.routes) > 0: # initialize index now self._add_routes(routes=self.routes) - elif self.index.sync in ["merge", "remote", "merge-force-remote"]: + elif self.index.sync: dummy_embedding = self.encoder(["dummy"]) layer_routes = self.index._add_and_sync( @@ -229,10 +229,6 @@ class RouteLayer: utterances=[], ) self._set_layer_routes(layer_routes) - else: - raise ValueError( - "No routes provided for RouteLayer. Please provide routes or set sync to 'remote' if you want to use only remote routes." - ) def check_for_matching_routes(self, top_class: str) -> Optional[Route]: matching_routes = [route for route in self.routes if route.name == top_class] -- GitLab