mirror of
https://github.com/deepset-ai/haystack.git
synced 2025-12-24 13:38:53 +00:00
fix: deserialize Document Stores using specific from_dict class methods (#8207)
* use from_dict * unused import * improve logic * improve reno
This commit is contained in:
parent
5ac56ebdaf
commit
109e98aa44
@ -82,7 +82,10 @@ class CacheChecker:
|
||||
doc_store_class = import_class_by_name(doc_store_data["type"])
|
||||
except ImportError as e:
|
||||
raise DeserializationError(f"Class '{doc_store_data['type']}' not correctly imported") from e
|
||||
data["init_parameters"]["document_store"] = default_from_dict(doc_store_class, doc_store_data)
|
||||
if hasattr(doc_store_class, "from_dict"):
|
||||
data["init_parameters"]["document_store"] = doc_store_class.from_dict(doc_store_data)
|
||||
else:
|
||||
data["init_parameters"]["document_store"] = default_from_dict(doc_store_class, doc_store_data)
|
||||
|
||||
return default_from_dict(cls, data)
|
||||
|
||||
|
||||
@ -88,7 +88,10 @@ class FilterRetriever:
|
||||
doc_store_class = import_class_by_name(doc_store_data["type"])
|
||||
except ImportError as e:
|
||||
raise DeserializationError(f"Class '{doc_store_data['type']}' not correctly imported") from e
|
||||
data["init_parameters"]["document_store"] = default_from_dict(doc_store_class, doc_store_data)
|
||||
if hasattr(doc_store_class, "from_dict"):
|
||||
data["init_parameters"]["document_store"] = doc_store_class.from_dict(doc_store_data)
|
||||
else:
|
||||
data["init_parameters"]["document_store"] = default_from_dict(doc_store_class, doc_store_data)
|
||||
|
||||
return default_from_dict(cls, data)
|
||||
|
||||
|
||||
@ -131,7 +131,10 @@ class SentenceWindowRetriever:
|
||||
except ImportError as e:
|
||||
raise DeserializationError(f"Class '{doc_store_data['type']}' not correctly imported") from e
|
||||
|
||||
data["init_parameters"]["document_store"] = default_from_dict(doc_store_class, doc_store_data)
|
||||
if hasattr(doc_store_class, "from_dict"):
|
||||
data["init_parameters"]["document_store"] = doc_store_class.from_dict(doc_store_data)
|
||||
else:
|
||||
data["init_parameters"]["document_store"] = default_from_dict(doc_store_class, doc_store_data)
|
||||
|
||||
# deserialize the component
|
||||
return default_from_dict(cls, data)
|
||||
|
||||
@ -84,7 +84,10 @@ class DocumentWriter:
|
||||
doc_store_class = import_class_by_name(doc_store_data["type"])
|
||||
except ImportError as e:
|
||||
raise DeserializationError(f"Class '{doc_store_data['type']}' not correctly imported") from e
|
||||
data["init_parameters"]["document_store"] = default_from_dict(doc_store_class, doc_store_data)
|
||||
if hasattr(doc_store_class, "from_dict"):
|
||||
data["init_parameters"]["document_store"] = doc_store_class.from_dict(doc_store_data)
|
||||
else:
|
||||
data["init_parameters"]["document_store"] = default_from_dict(doc_store_class, doc_store_data)
|
||||
data["init_parameters"]["policy"] = DuplicatePolicy[data["init_parameters"]["policy"]]
|
||||
|
||||
return default_from_dict(cls, data)
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
For components that support multiple Document Stores, prioritize using the specific `from_dict` class method
|
||||
for deserialization when available. Otherwise, fall back to the generic `default_from_dict` method.
|
||||
This impacts the following generic components: `CacheChecker`, `DocumentWriter`, `FilterRetriever`, and
|
||||
`SentenceWindowRetriever`.
|
||||
Loading…
x
Reference in New Issue
Block a user