@@ -262,6 +262,80 @@ async def test_vsim_with_scores(d_client):
262
262
assert 0 <= vsim ["elem1" ] <= 1
263
263
264
264
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
+
265
339
@skip_if_server_version_lt ("7.9.0" )
266
340
async def test_vsim_with_different_vector_input_types (d_client ):
267
341
elements_count = 10
@@ -785,13 +859,51 @@ async def test_vrandmember(d_client):
785
859
assert members_list == []
786
860
787
861
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
+
788
897
@skip_if_server_version_lt ("7.9.0" )
789
898
async def test_vset_commands_without_decoding_responces (client ):
790
899
# test vadd
791
900
elements = ["elem1" , "elem2" , "elem3" ]
901
+ attrs_dict = {"key1" : "value1" , "key2" : "value2" }
792
902
for elem in elements :
793
903
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
+ )
795
907
assert resp == 1
796
908
797
909
# test vemb
0 commit comments