Coverage for haystack/utils/deserialization.py: 94%
18 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 13:53 +0000
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 13:53 +0000
1# SPDX-FileCopyrightText: 2022-present deepset GmbH <info@deepset.ai>
2#
3# SPDX-License-Identifier: Apache-2.0
5from typing import Any
7from haystack.core.errors import DeserializationError
8from haystack.core.serialization import component_from_dict, import_class_by_name
11def deserialize_chatgenerator_inplace(data: dict[str, Any], key: str = "chat_generator") -> None:
12 """
13 Deserialize a ChatGenerator in a dictionary inplace.
15 :param data:
16 The dictionary with the serialized data.
17 :param key:
18 The key in the dictionary where the ChatGenerator is stored.
20 :raises DeserializationError:
21 If the key is missing in the serialized data, the value is not a dictionary,
22 the type key is missing, the class cannot be imported, or the class lacks a 'from_dict' method.
23 """
24 deserialize_component_inplace(data, key=key)
27def deserialize_component_inplace(data: dict[str, Any], key: str = "chat_generator") -> None:
28 """
29 Deserialize a Component in a dictionary inplace.
31 :param data:
32 The dictionary with the serialized data.
33 :param key:
34 The key in the dictionary where the Component is stored. Default is "chat_generator".
36 :raises DeserializationError:
37 If the key is missing in the serialized data, the value is not a dictionary,
38 the type key is missing, the class cannot be imported, or the class lacks a 'from_dict' method.
39 """
40 if key not in data:
41 raise DeserializationError(f"Missing '{key}' in serialization data")
43 serialized_component = data[key]
45 if not isinstance(serialized_component, dict):
46 raise DeserializationError(f"The value of '{key}' is not a dictionary")
48 if "type" not in serialized_component:
49 raise DeserializationError(f"Missing 'type' in {key} serialization data")
51 try:
52 component_class = import_class_by_name(serialized_component["type"])
53 except ImportError as e:
54 raise DeserializationError(f"Class '{serialized_component['type']}' not correctly imported") from e
56 data[key] = component_from_dict(cls=component_class, data=serialized_component, name=key)