11# SPDX-FileCopyrightText: 2022-present deepset GmbH <[email protected] > 22#
33# SPDX-License-Identifier: Apache-2.0
4- import copy
54import sys
65import typing
7- from typing import List , Dict
6+ from typing import Any , List , Dict , Set , Tuple
87
98import pytest
109
1413
1514def test_output_type_serialization ():
1615 assert serialize_type (str ) == "str"
16+ assert serialize_type (int ) == "int"
17+ assert serialize_type (dict ) == "dict"
18+ assert serialize_type (float ) == "float"
19+ assert serialize_type (bool ) == "bool"
20+
21+
22+ def test_output_type_serialization_typing ():
23+ assert serialize_type (Any ) == "typing.Any"
24+ assert serialize_type (List ) == "typing.List"
25+ assert serialize_type (Dict ) == "typing.Dict"
26+ assert serialize_type (Set ) == "typing.Set"
27+ assert serialize_type (Tuple ) == "typing.Tuple"
28+
29+
30+ def test_output_type_serialization_typing_and_type ():
31+ # List
32+ assert serialize_type (List [str ]) == "typing.List[str]"
1733 assert serialize_type (List [int ]) == "typing.List[int]"
34+ assert serialize_type (List [dict ]) == "typing.List[dict]"
35+ assert serialize_type (List [float ]) == "typing.List[float]"
36+ assert serialize_type (List [bool ]) == "typing.List[bool]"
37+ # Dict
38+ assert serialize_type (Dict [str , str ]) == "typing.Dict[str, str]"
39+ assert serialize_type (Dict [int , int ]) == "typing.Dict[int, int]"
40+ assert serialize_type (Dict [dict , dict ]) == "typing.Dict[dict, dict]"
41+ assert serialize_type (Dict [float , float ]) == "typing.Dict[float, float]"
42+ assert serialize_type (Dict [bool , bool ]) == "typing.Dict[bool, bool]"
43+ # Set
44+ assert serialize_type (Set [str ]) == "typing.Set[str]"
45+ assert serialize_type (Set [int ]) == "typing.Set[int]"
46+ assert serialize_type (Set [dict ]) == "typing.Set[dict]"
47+ assert serialize_type (Set [float ]) == "typing.Set[float]"
48+ assert serialize_type (Set [bool ]) == "typing.Set[bool]"
49+ # Tuple
50+ assert serialize_type (Tuple [str ]) == "typing.Tuple[str]"
51+ assert serialize_type (Tuple [int ]) == "typing.Tuple[int]"
52+ assert serialize_type (Tuple [dict ]) == "typing.Tuple[dict]"
53+ assert serialize_type (Tuple [float ]) == "typing.Tuple[float]"
54+ assert serialize_type (Tuple [bool ]) == "typing.Tuple[bool]"
55+
56+
57+ def test_output_type_serialization_nested ():
1858 assert serialize_type (List [Dict [str , int ]]) == "typing.List[typing.Dict[str, int]]"
19- assert serialize_type (ChatMessage ) == "haystack.dataclasses.chat_message.ChatMessage"
2059 assert serialize_type (typing .List [Dict [str , int ]]) == "typing.List[typing.Dict[str, int]]"
60+
61+
62+ def test_output_type_serialization_haystack_dataclasses ():
63+ assert serialize_type (ChatMessage ) == "haystack.dataclasses.chat_message.ChatMessage"
2164 assert serialize_type (List [ChatMessage ]) == "typing.List[haystack.dataclasses.chat_message.ChatMessage]"
2265 assert (
2366 serialize_type (typing .Dict [int , ChatMessage ])
2467 == "typing.Dict[int, haystack.dataclasses.chat_message.ChatMessage]"
2568 )
26- assert serialize_type (int ) == "int"
2769 assert serialize_type (ChatMessage .from_user ("ciao" )) == "haystack.dataclasses.chat_message.ChatMessage"
2870
2971
@@ -41,18 +83,35 @@ def test_output_type_serialization_pep585():
4183
4284def test_output_type_deserialization ():
4385 assert deserialize_type ("str" ) == str
86+ assert deserialize_type ("int" ) == int
87+ assert deserialize_type ("dict" ) == dict
88+ assert deserialize_type ("float" ) == float
89+ assert deserialize_type ("bool" ) == bool
90+
91+
92+ def test_output_type_deserialization_typing ():
93+ assert deserialize_type ("typing.Any" ) == Any
94+ assert deserialize_type ("typing.List" ) == List
95+ assert deserialize_type ("typing.Dict" ) == Dict
96+ assert deserialize_type ("typing.Set" ) == Set
97+ assert deserialize_type ("typing.Tuple" ) == Tuple
98+
99+
100+ def test_output_type_deserialization_typing_and_type ():
44101 assert deserialize_type ("typing.List[int]" ) == typing .List [int ]
45- assert deserialize_type ("typing.List[typing.Dict[str, int]]" ) == typing .List [Dict [str , int ]]
46102 assert deserialize_type ("typing.Dict[str, int]" ) == Dict [str , int ]
103+ assert deserialize_type ("typing.List[typing.Dict[str, int]]" ) == typing .List [Dict [str , int ]]
47104 assert deserialize_type ("typing.Dict[str, typing.List[int]]" ) == Dict [str , List [int ]]
48105 assert deserialize_type ("typing.List[typing.Dict[str, typing.List[int]]]" ) == List [Dict [str , List [int ]]]
106+
107+
108+ def test_output_type_deserialization_haystack_dataclasses ():
49109 assert deserialize_type ("typing.List[haystack.dataclasses.chat_message.ChatMessage]" ) == typing .List [ChatMessage ]
50110 assert (
51111 deserialize_type ("typing.Dict[int, haystack.dataclasses.chat_message.ChatMessage]" )
52112 == typing .Dict [int , ChatMessage ]
53113 )
54114 assert deserialize_type ("haystack.dataclasses.chat_message.ChatMessage" ) == ChatMessage
55- assert deserialize_type ("int" ) == int
56115
57116
58117def test_output_type_deserialization_pep585 ():
0 commit comments