@@ -1235,6 +1235,7 @@ def test_dict_struct_encoding() -> None:
12351235 # Test encoding dict as struct - this should only happen in type-aware context
12361236 # For generic encoding, dict is passed through as-is
12371237 from cocoindex .convert import encode_engine_value
1238+
12381239 dict_value = {"name" : "Alice" , "age" : 30 , "city" : "New York" }
12391240 result = encode_engine_value (dict_value )
12401241 assert result == {"name" : "Alice" , "age" : 30 , "city" : "New York" } # Dict preserved
@@ -1244,13 +1245,13 @@ def test_dict_struct_decoding() -> None:
12441245 # Test decoding to dict as struct
12451246 from cocoindex .convert import _make_engine_struct_value_decoder
12461247 from typing import Dict , Any
1247-
1248+
12481249 src_fields = [
12491250 {"name" : "name" , "type" : {"kind" : "Str" }},
12501251 {"name" : "age" , "type" : {"kind" : "Int64" }},
12511252 {"name" : "city" , "type" : {"kind" : "Str" }},
12521253 ]
1253-
1254+
12541255 decoder = _make_engine_struct_value_decoder ([], src_fields , Dict [str , Any ])
12551256 result = decoder (["Alice" , 30 , "New York" ])
12561257 assert result == {"name" : "Alice" , "age" : 30 , "city" : "New York" }
@@ -1259,13 +1260,13 @@ def test_dict_struct_decoding() -> None:
12591260def test_dict_untyped_struct_decoding () -> None :
12601261 # Test decoding to untyped dict as struct
12611262 from cocoindex .convert import _make_engine_struct_value_decoder
1262-
1263+
12631264 src_fields = [
12641265 {"name" : "name" , "type" : {"kind" : "Str" }},
12651266 {"name" : "age" , "type" : {"kind" : "Int64" }},
12661267 {"name" : "city" , "type" : {"kind" : "Str" }},
12671268 ]
1268-
1269+
12691270 decoder = _make_engine_struct_value_decoder ([], src_fields , dict )
12701271 result = decoder (["Alice" , 30 , "New York" ])
12711272 assert result == {"name" : "Alice" , "age" : 30 , "city" : "New York" }
@@ -1274,19 +1275,19 @@ def test_dict_untyped_struct_decoding() -> None:
12741275def test_dict_struct_vs_ktable () -> None :
12751276 # Test that dict-as-struct and dict-as-KTable are handled differently
12761277 from cocoindex .convert import encode_engine_value , _is_ktable_dict
1277-
1278+
12781279 # Dict as struct (simple values) - should be passed through in generic encoding
12791280 dict_struct = {"name" : "Alice" , "age" : 30 }
12801281 assert not _is_ktable_dict (dict_struct )
12811282 struct_result = encode_engine_value (dict_struct )
12821283 assert struct_result == {"name" : "Alice" , "age" : 30 } # Preserved as dict
1283-
1284+
12841285 # Dict as KTable (struct values)
12851286 @dataclass
12861287 class Person :
12871288 name : str
12881289 age : int
1289-
1290+
12901291 dict_ktable = {"p1" : Person ("Alice" , 30 ), "p2" : Person ("Bob" , 25 )}
12911292 assert _is_ktable_dict (dict_ktable )
12921293 ktable_result = encode_engine_value (dict_ktable )
@@ -1297,15 +1298,15 @@ def test_dict_to_struct_conversion() -> None:
12971298 # Test dict to struct conversion with existing struct types
12981299 from cocoindex .convert import encode_engine_value_with_type
12991300 from dataclasses import dataclass
1300-
1301+
13011302 @dataclass
13021303 class Person :
13031304 name : str
13041305 age : int
13051306 city : str
1306-
1307+
13071308 dict_value = {"name" : "Alice" , "age" : 30 , "city" : "New York" }
1308-
1309+
13091310 # Test encoding dict as struct
13101311 result = encode_engine_value_with_type (dict_value , Person )
13111312 assert result == ["Alice" , 30 , "New York" ]
@@ -1316,24 +1317,24 @@ def test_struct_to_dict_conversion() -> None:
13161317 from cocoindex .convert import _make_engine_struct_value_decoder
13171318 from dataclasses import dataclass
13181319 from typing import Dict , Any
1319-
1320+
13201321 @dataclass
13211322 class Person :
13221323 name : str
13231324 age : int
13241325 city : str
1325-
1326+
13261327 src_fields = [
13271328 {"name" : "name" , "type" : {"kind" : "Str" }},
1328- {"name" : "age" , "type" : {"kind" : "Int64" }},
1329+ {"name" : "age" , "type" : {"kind" : "Int64" }},
13291330 {"name" : "city" , "type" : {"kind" : "Str" }},
13301331 ]
1331-
1332+
13321333 # Test decoding struct to dict
13331334 decoder = _make_engine_struct_value_decoder ([], src_fields , Dict [str , Any ])
13341335 result = decoder (["Alice" , 30 , "New York" ])
13351336 assert result == {"name" : "Alice" , "age" : 30 , "city" : "New York" }
1336-
1337+
13371338 # Test decoding struct to untyped dict
13381339 decoder = _make_engine_struct_value_decoder ([], src_fields , dict )
13391340 result = decoder (["Alice" , 30 , "New York" ])
0 commit comments