@@ -262,6 +262,80 @@ async def test_vsim_with_scores(d_client):
262262 assert 0 <= vsim ["elem1" ] <= 1
263263
264264
265+ @skip_if_server_version_lt ("8.2.0" )
266+ async def test_vsim_with_attribs_attribs_set (d_client ):
267+ elements_count = 5
268+ vector_dim = 10
269+ attrs_dict = {"key1" : "value1" , "key2" : "value2" }
270+ for i in range (elements_count ):
271+ float_array = [random .uniform (0 , 5 ) for x in range (vector_dim )]
272+ await d_client .vset ().vadd (
273+ "myset" ,
274+ float_array ,
275+ f"elem{ i } " ,
276+ numlinks = 64 ,
277+ attributes = attrs_dict if i % 2 == 0 else None ,
278+ )
279+
280+ vsim = await d_client .vset ().vsim ("myset" , input = "elem1" , with_attribs = True )
281+ assert len (vsim ) == 5
282+ assert isinstance (vsim , dict )
283+ assert vsim ["elem1" ] is None
284+ assert vsim ["elem2" ] == attrs_dict
285+
286+
287+ @skip_if_server_version_lt ("8.2.0" )
288+ async def test_vsim_with_scores_and_attribs_attribs_set (d_client ):
289+ elements_count = 5
290+ vector_dim = 10
291+ attrs_dict = {"key1" : "value1" , "key2" : "value2" }
292+ for i in range (elements_count ):
293+ float_array = [random .uniform (0 , 5 ) for x in range (vector_dim )]
294+ await d_client .vset ().vadd (
295+ "myset" ,
296+ float_array ,
297+ f"elem{ i } " ,
298+ numlinks = 64 ,
299+ attributes = attrs_dict if i % 2 == 0 else None ,
300+ )
301+
302+ vsim = await d_client .vset ().vsim (
303+ "myset" , input = "elem1" , with_scores = True , with_attribs = True
304+ )
305+ assert len (vsim ) == 5
306+ assert isinstance (vsim , dict )
307+ assert isinstance (vsim ["elem1" ], dict )
308+ assert "score" in vsim ["elem1" ]
309+ assert "attributes" in vsim ["elem1" ]
310+ assert isinstance (vsim ["elem1" ]["score" ], float )
311+ assert vsim ["elem1" ]["attributes" ] is None
312+
313+ assert isinstance (vsim ["elem2" ], dict )
314+ assert "score" in vsim ["elem2" ]
315+ assert "attributes" in vsim ["elem2" ]
316+ assert isinstance (vsim ["elem2" ]["score" ], float )
317+ assert vsim ["elem2" ]["attributes" ] == attrs_dict
318+
319+
320+ @skip_if_server_version_lt ("8.2.0" )
321+ async def test_vsim_with_attribs_attribs_not_set (d_client ):
322+ elements_count = 20
323+ vector_dim = 50
324+ for i in range (elements_count ):
325+ float_array = [random .uniform (0 , 10 ) for x in range (vector_dim )]
326+ await d_client .vset ().vadd (
327+ "myset" ,
328+ float_array ,
329+ f"elem{ i } " ,
330+ numlinks = 64 ,
331+ )
332+
333+ vsim = await d_client .vset ().vsim ("myset" , input = "elem1" , with_attribs = True )
334+ assert len (vsim ) == 10
335+ assert isinstance (vsim , dict )
336+ assert vsim ["elem1" ] is None
337+
338+
265339@skip_if_server_version_lt ("7.9.0" )
266340async def test_vsim_with_different_vector_input_types (d_client ):
267341 elements_count = 10
@@ -785,13 +859,51 @@ async def test_vrandmember(d_client):
785859 assert members_list == []
786860
787861
862+ @skip_if_server_version_lt ("8.2.0" )
863+ async def test_8_2_new_vset_features_without_decoding_responces (client ):
864+ # test vadd
865+ elements = ["elem1" , "elem2" , "elem3" ]
866+ attrs_dict = {"key1" : "value1" , "key2" : "value2" }
867+ for elem in elements :
868+ float_array = [random .uniform (0.5 , 10 ) for x in range (0 , 8 )]
869+ resp = await client .vset ().vadd (
870+ "myset" , float_array , element = elem , attributes = attrs_dict
871+ )
872+ assert resp == 1
873+
874+ # test vsim with attributes
875+ vsim_with_attribs = await client .vset ().vsim (
876+ "myset" , input = "elem1" , with_attribs = True
877+ )
878+ assert len (vsim_with_attribs ) == 3
879+ assert isinstance (vsim_with_attribs , dict )
880+ assert isinstance (vsim_with_attribs [b"elem1" ], dict )
881+ assert vsim_with_attribs [b"elem1" ] == attrs_dict
882+
883+ # test vsim with score and attributes
884+ vsim_with_scores_and_attribs = await client .vset ().vsim (
885+ "myset" , input = "elem1" , with_scores = True , with_attribs = True
886+ )
887+ assert len (vsim_with_scores_and_attribs ) == 3
888+ assert isinstance (vsim_with_scores_and_attribs , dict )
889+ assert isinstance (vsim_with_scores_and_attribs [b"elem1" ], dict )
890+ assert "score" in vsim_with_scores_and_attribs [b"elem1" ]
891+ assert "attributes" in vsim_with_scores_and_attribs [b"elem1" ]
892+ assert isinstance (vsim_with_scores_and_attribs [b"elem1" ]["score" ], float )
893+ assert isinstance (vsim_with_scores_and_attribs [b"elem1" ]["attributes" ], dict )
894+ assert vsim_with_scores_and_attribs [b"elem1" ]["attributes" ] == attrs_dict
895+
896+
788897@skip_if_server_version_lt ("7.9.0" )
789898async def test_vset_commands_without_decoding_responces (client ):
790899 # test vadd
791900 elements = ["elem1" , "elem2" , "elem3" ]
901+ attrs_dict = {"key1" : "value1" , "key2" : "value2" }
792902 for elem in elements :
793903 float_array = [random .uniform (0.5 , 10 ) for x in range (0 , 8 )]
794- resp = await client .vset ().vadd ("myset" , float_array , element = elem )
904+ resp = await client .vset ().vadd (
905+ "myset" , float_array , element = elem , attributes = attrs_dict
906+ )
795907 assert resp == 1
796908
797909 # test vemb
0 commit comments