From c149b7587434c12cbe772e0696cda2f39b06e30f Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sun, 9 Feb 2025 19:44:22 +0000 Subject: [PATCH] fix: Update metadata type handling in KnowledgeStorage Co-Authored-By: Joe Moura --- .../knowledge/storage/knowledge_storage.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/crewai/knowledge/storage/knowledge_storage.py b/src/crewai/knowledge/storage/knowledge_storage.py index c3b9d7e2b..fad988414 100644 --- a/src/crewai/knowledge/storage/knowledge_storage.py +++ b/src/crewai/knowledge/storage/knowledge_storage.py @@ -154,13 +154,15 @@ class KnowledgeStorage(BaseKnowledgeStorage): filtered_ids.append(doc_id) # If we have no metadata at all, set it to None - final_metadata: Optional[List[Dict[str, Union[str, int, float, bool]]]] = ( - None if all(m is None for m in filtered_metadata) else [ - {k: v for k, v in m.items() if isinstance(v, (str, int, float, bool))} - if m is not None else None - for m in filtered_metadata - ] - ) + final_metadata: Optional[List[Dict[str, Union[str, int, float, bool]]]] = None + if not all(m is None for m in filtered_metadata): + final_metadata = [] + for m in filtered_metadata: + if m is not None: + filtered_m = {k: v for k, v in m.items() if isinstance(v, (str, int, float, bool))} + final_metadata.append(filtered_m) + else: + final_metadata.append({"empty": True}) self.collection.upsert( documents=filtered_docs,