77
88import weaviate
99from integration .conftest import CollectionFactory
10- from weaviate .collections .classes .config import (
11- Configure ,
12- DataType ,
13- Property ,
14- ReferenceProperty ,
15- )
10+ from weaviate .collections .classes .config import Configure , DataType , Property , ReferenceProperty
1611from weaviate .collections .classes .data import DataObject
17- from weaviate .collections .classes .filters import (
18- Filter ,
19- _Filters ,
20- _FilterValue ,
21- )
12+ from weaviate .collections .classes .filters import Filter , _Filters , _FilterValue
2213from weaviate .collections .classes .grpc import MetadataQuery , QueryReference , Sort
2314from weaviate .collections .classes .internal import ReferenceToMulti
2415from weaviate .types import UUID
3021UUID1 = uuid .uuid4 ()
3122UUID2 = uuid .uuid4 ()
3223UUID3 = uuid .uuid4 ()
24+ UUID4 = uuid .uuid4 ()
3325
3426
3527@pytest .mark .parametrize (
@@ -246,48 +238,50 @@ def test_filters_comparison(
246238
247239
248240@pytest .mark .parametrize (
249- "weaviate_filter,results" ,
241+ "weaviate_filter,results,require_version " ,
250242 [
251- (Filter .by_property ("ints" ).contains_any ([1 , 4 ]), [0 , 3 ]),
252- (Filter .by_property ("ints" ).contains_any ([1.0 , 4 ]), [0 , 3 ]),
253- (Filter .by_property ("ints" ).contains_any ([10 ]), []),
254- (Filter .by_property ("int" ).contains_any ([1 ]), [0 , 1 ]),
255- (Filter .by_property ("text" ).contains_any (["test" ]), [0 , 1 ]),
256- (Filter .by_property ("text" ).contains_any (["real" , "deal" ]), [1 , 2 , 3 ]),
257- (Filter .by_property ("texts" ).contains_any (["test" ]), [0 , 1 ]),
258- (Filter .by_property ("texts" ).contains_any (["real" , "deal" ]), [1 , 2 , 3 ]),
259- (Filter .by_property ("float" ).contains_any ([2.0 ]), []),
260- (Filter .by_property ("float" ).contains_any ([2 ]), []),
261- (Filter .by_property ("float" ).contains_any ([8 ]), [3 ]),
262- (Filter .by_property ("float" ).contains_any ([8.0 ]), [3 ]),
263- (Filter .by_property ("floats" ).contains_any ([2.0 ]), [0 , 1 ]),
264- (Filter .by_property ("floats" ).contains_any ([0.4 , 0.7 ]), [0 , 1 , 3 ]),
265- (Filter .by_property ("floats" ).contains_any ([2 ]), [0 , 1 ]),
266- (Filter .by_property ("bools" ).contains_any ([True , False ]), [0 , 1 , 3 ]),
267- (Filter .by_property ("bools" ).contains_any ([False ]), [0 , 1 ]),
268- (Filter .by_property ("bool" ).contains_any ([True ]), [0 , 1 , 3 ]),
269- (Filter .by_property ("ints" ).contains_all ([1 , 4 ]), [0 ]),
270- (Filter .by_property ("text" ).contains_all (["real" , "test" ]), [1 ]),
271- (Filter .by_property ("texts" ).contains_all (["real" , "test" ]), [1 ]),
272- (Filter .by_property ("floats" ).contains_all ([0.7 , 2 ]), [1 ]),
273- (Filter .by_property ("bools" ).contains_all ([True , False ]), [0 ]),
274- (Filter .by_property ("bool" ).contains_all ([True , False ]), []),
275- (Filter .by_property ("bool" ).contains_all ([True ]), [0 , 1 , 3 ]),
276- (Filter .by_property ("dates" ).contains_any ([NOW , MUCH_LATER ]), [0 , 1 , 3 ]),
277- (Filter .by_property ("dates" ).contains_any ([NOW ]), [0 , 1 ]),
278- (Filter .by_property ("date" ).equal (NOW ), [0 ]),
279- (Filter .by_property ("date" ).greater_than (NOW ), [1 , 3 ]),
280- (Filter .by_property ("uuids" ).contains_all ([UUID2 , UUID1 ]), [0 , 3 ]),
281- (Filter .by_property ("uuids" ).contains_any ([UUID2 , UUID1 ]), [0 , 1 , 3 ]),
282- (Filter .by_property ("uuid" ).contains_any ([UUID3 ]), []),
283- (Filter .by_property ("uuid" ).contains_any ([UUID1 ]), [0 ]),
284- (Filter .by_property ("_id" ).contains_any ([UUID1 , UUID3 ]), [0 , 2 ]),
243+ (Filter .by_property ("ints" ).contains_any ([1 , 4 ]), [0 , 3 ], None ),
244+ (Filter .by_property ("ints" ).contains_any ([1.0 , 4 ]), [0 , 3 ], None ),
245+ (Filter .by_property ("ints" ).contains_any ([10 ]), [], None ),
246+ (Filter .by_property ("int" ).contains_any ([1 ]), [0 , 1 ], None ),
247+ (Filter .by_property ("text" ).contains_any (["test" ]), [0 , 1 ], None ),
248+ (Filter .by_property ("text" ).contains_any (["real" , "deal" ]), [1 , 2 , 3 ], None ),
249+ (Filter .by_property ("texts" ).contains_any (["test" ]), [0 , 1 ], None ),
250+ (Filter .by_property ("texts" ).contains_any (["real" , "deal" ]), [1 , 2 , 3 ], None ),
251+ (Filter .by_property ("float" ).contains_any ([2.0 ]), [], None ),
252+ (Filter .by_property ("float" ).contains_any ([2 ]), [], None ),
253+ (Filter .by_property ("float" ).contains_any ([8 ]), [3 ], None ),
254+ (Filter .by_property ("float" ).contains_any ([8.0 ]), [3 ], None ),
255+ (Filter .by_property ("floats" ).contains_any ([2.0 ]), [0 , 1 ], None ),
256+ (Filter .by_property ("floats" ).contains_any ([0.4 , 0.7 ]), [0 , 1 , 3 ], None ),
257+ (Filter .by_property ("floats" ).contains_any ([2 ]), [0 , 1 ], None ),
258+ (Filter .by_property ("bools" ).contains_any ([True , False ]), [0 , 1 , 3 ], None ),
259+ (Filter .by_property ("bools" ).contains_any ([False ]), [0 , 1 ], None ),
260+ (Filter .by_property ("bool" ).contains_any ([True ]), [0 , 1 , 3 ], None ),
261+ (Filter .by_property ("ints" ).contains_all ([1 , 4 ]), [0 ], None ),
262+ (Filter .by_property ("text" ).contains_all (["real" , "test" ]), [1 ], None ),
263+ (Filter .by_property ("texts" ).contains_all (["real" , "test" ]), [1 ], None ),
264+ (Filter .by_property ("floats" ).contains_all ([0.7 , 2 ]), [1 ], None ),
265+ (Filter .by_property ("bools" ).contains_all ([True , False ]), [0 ], None ),
266+ (Filter .by_property ("bool" ).contains_all ([True , False ]), [], None ),
267+ (Filter .by_property ("bool" ).contains_all ([True ]), [0 , 1 , 3 ], None ),
268+ (Filter .by_property ("dates" ).contains_any ([NOW , MUCH_LATER ]), [0 , 1 , 3 ], None ),
269+ (Filter .by_property ("dates" ).contains_any ([NOW ]), [0 , 1 ], None ),
270+ (Filter .by_property ("date" ).equal (NOW ), [0 ], None ),
271+ (Filter .by_property ("date" ).greater_than (NOW ), [1 , 3 ], None ),
272+ (Filter .by_property ("uuids" ).contains_all ([UUID2 , UUID1 ]), [0 , 3 ], None ),
273+ (Filter .by_property ("uuids" ).contains_any ([UUID2 , UUID1 ]), [0 , 1 , 3 ], None ),
274+ (Filter .by_property ("uuid" ).contains_any ([UUID3 ]), [], None ),
275+ (Filter .by_property ("uuid" ).contains_any ([UUID1 ]), [0 ], None ),
276+ (Filter .by_property ("_id" ).contains_any ([UUID1 , UUID3 ]), [0 , 2 ], None ),
277+ (Filter .by_property ("_id" ).contains_none ([UUID1 , UUID2 , UUID3 , UUID4 ]), [], (1 , 33 , 0 )),
285278 ],
286279)
287280def test_filters_contains (
288281 collection_factory : CollectionFactory ,
289282 weaviate_filter : _FilterValue ,
290283 results : List [int ],
284+ require_version : Optional [tuple [int , int , int ]],
291285) -> None :
292286 collection = collection_factory (
293287 vectorizer_config = Configure .Vectorizer .none (),
@@ -307,6 +301,11 @@ def test_filters_contains(
307301 ],
308302 )
309303
304+ if require_version and collection ._connection ._weaviate_version .is_lower_than (* require_version ):
305+ pytest .skip (
306+ f"{ weaviate_filter } is not supported in v{ '.' .join (str (_ ) for _ in require_version )} "
307+ )
308+
310309 uuids = [
311310 collection .data .insert (
312311 {
@@ -370,7 +369,8 @@ def test_filters_contains(
370369 "date" : MUCH_LATER ,
371370 "uuids" : [UUID1 , UUID2 ],
372371 "uuid" : UUID2 ,
373- }
372+ },
373+ uuid = UUID4 ,
374374 ),
375375 ]
376376
0 commit comments