Skip to content

Commit 65191bb

Browse files
committed
Merge branch 'dev/1.33'
2 parents 99bdcb5 + 223eb22 commit 65191bb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+1486
-1716
lines changed

.github/workflows/main.yaml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,13 @@ concurrency:
1818
cancel-in-progress: true
1919

2020
env:
21-
WEAVIATE_125: 1.25.34
22-
WEAVIATE_126: 1.26.17
2321
WEAVIATE_127: 1.27.27
2422
WEAVIATE_128: 1.28.16
2523
WEAVIATE_129: 1.29.9
2624
WEAVIATE_130: 1.30.12
2725
WEAVIATE_131: 1.31.5
2826
WEAVIATE_132: 1.32.5
27+
WEAVIATE_133: 1.33.0-rc.1
2928

3029
jobs:
3130
lint-and-format:
@@ -297,14 +296,13 @@ jobs:
297296
fail-fast: false
298297
matrix:
299298
version: [
300-
$WEAVIATE_125,
301-
$WEAVIATE_126,
302299
$WEAVIATE_127,
303300
$WEAVIATE_128,
304301
$WEAVIATE_129,
305302
$WEAVIATE_130,
306303
$WEAVIATE_131,
307-
$WEAVIATE_132
304+
$WEAVIATE_132,
305+
$WEAVIATE_133
308306
]
309307
steps:
310308
- name: Checkout

integration/test_client.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ def test_create_export_and_recreate(client: weaviate.WeaviateClient, request: Su
226226
vectorizer_config=Configure.Vectorizer.text2vec_contextionary(
227227
vectorize_collection_name=False
228228
),
229-
generative_config=Configure.Generative.cohere(model="something", k=10),
229+
generative_config=Configure.Generative.cohere(model="command-r-plus", k=10),
230230
properties=[
231231
Property(
232232
name="name",
@@ -270,7 +270,7 @@ def test_create_export_and_recreate(client: weaviate.WeaviateClient, request: Su
270270

271271
assert export.generative_config is not None
272272
assert export.generative_config.generative == GenerativeSearches.COHERE
273-
assert export.generative_config.model["model"] == "something"
273+
assert export.generative_config.model["model"] == "command-r-plus"
274274
assert export.generative_config.model["kProperty"] == 10
275275

276276
client.collections.delete([name1, name2])
@@ -363,11 +363,6 @@ def test_client_cluster_without_lazy_shard_loading(
363363
#
364364
# We also accept LOADING/READY because it may vary
365365
# based on the machine running the tests.
366-
expect_status = (
367-
["LAZY_LOADING"]
368-
if client._connection._weaviate_version.is_at_least(1, 32, 4)
369-
else ["LOADING", "READY"]
370-
)
371366

372367
try:
373368
collection = client.collections.create(
@@ -379,7 +374,10 @@ def test_client_cluster_without_lazy_shard_loading(
379374
assert len(nodes[0].shards) == 1
380375
assert nodes[0].shards[0].collection == collection.name
381376
assert nodes[0].shards[0].object_count == 0
382-
assert nodes[0].shards[0].vector_indexing_status in expect_status
377+
if collection._connection._weaviate_version.is_lower_than(1, 32, 0):
378+
assert nodes[0].shards[0].vector_indexing_status == "READY"
379+
else:
380+
assert nodes[0].shards[0].vector_indexing_status == "LAZY_LOADING"
383381
assert nodes[0].shards[0].vector_queue_length == 0
384382
assert nodes[0].shards[0].compressed is False
385383
if collection._connection._weaviate_version.is_lower_than(1, 25, 0):

integration/test_collection.py

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,8 @@
77

88
import pytest
99

10-
from integration.conftest import (
11-
CollectionFactory,
12-
CollectionFactoryGet,
13-
_sanitize_collection_name,
14-
)
10+
import weaviate.classes as wvc
11+
from integration.conftest import CollectionFactory, CollectionFactoryGet, _sanitize_collection_name
1512
from integration.constants import WEAVIATE_LOGO_NEW_ENCODED, WEAVIATE_LOGO_OLD_ENCODED
1613
from weaviate.collections.classes.batch import ErrorObject
1714
from weaviate.collections.classes.config import (
@@ -23,9 +20,7 @@
2320
Tokenization,
2421
Vectorizers,
2522
)
26-
from weaviate.collections.classes.data import (
27-
DataObject,
28-
)
23+
from weaviate.collections.classes.data import DataObject
2924
from weaviate.collections.classes.grpc import (
3025
PROPERTIES,
3126
PROPERTY,
@@ -39,16 +34,8 @@
3934
Sort,
4035
_Sorting,
4136
)
42-
from weaviate.collections.classes.internal import (
43-
Object,
44-
ReferenceToMulti,
45-
_CrossReference,
46-
)
47-
from weaviate.collections.classes.types import (
48-
PhoneNumber,
49-
WeaviateProperties,
50-
_PhoneNumber,
51-
)
37+
from weaviate.collections.classes.internal import Object, ReferenceToMulti, _CrossReference
38+
from weaviate.collections.classes.types import PhoneNumber, WeaviateProperties, _PhoneNumber
5239
from weaviate.exceptions import (
5340
UnexpectedStatusCodeError,
5441
WeaviateInsertInvalidPropertyError,
@@ -59,8 +46,6 @@
5946
)
6047
from weaviate.types import UUID, UUIDS
6148

62-
import weaviate.classes as wvc
63-
6449
UUID1 = uuid.UUID("806827e0-2b31-43ca-9269-24fa95a221f9")
6550
UUID2 = uuid.UUID("8ad0d33c-8db1-4437-87f3-72161ca2a51a")
6651
UUID3 = uuid.UUID("83d99755-9deb-4b16-8431-d1dff4ab0a75")

integration/test_collection_filter.py

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,9 @@
77

88
import weaviate
99
from 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
1611
from 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
2213
from weaviate.collections.classes.grpc import MetadataQuery, QueryReference, Sort
2314
from weaviate.collections.classes.internal import ReferenceToMulti
2415
from weaviate.types import UUID
@@ -30,6 +21,7 @@
3021
UUID1 = uuid.uuid4()
3122
UUID2 = uuid.uuid4()
3223
UUID3 = 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
)
287280
def 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

integration/test_rbac.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,30 @@
337337
),
338338
32,
339339
),
340+
(
341+
Permissions.alias(alias="", collection="*", read=True, delete=True),
342+
Role(
343+
name="AlliasRole2",
344+
alias_permissions=[
345+
AliasPermissionOutput(
346+
alias="*",
347+
collection="*",
348+
actions={Actions.Alias.READ, Actions.Alias.DELETE},
349+
)
350+
],
351+
cluster_permissions=[],
352+
users_permissions=[],
353+
collections_permissions=[],
354+
roles_permissions=[],
355+
data_permissions=[],
356+
backups_permissions=[],
357+
nodes_permissions=[],
358+
tenants_permissions=[],
359+
replicate_permissions=[],
360+
groups_permissions=[],
361+
),
362+
32, # Minimum version for alias permissions
363+
),
340364
(
341365
Permissions.alias(alias="*", collection="*", read=True, delete=True),
342366
Role(

mock_tests/conftest.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
from weaviate.proto.v1 import (
1616
batch_delete_pb2,
1717
batch_pb2,
18-
health_pb2,
19-
health_pb2_grpc,
2018
properties_pb2,
2119
search_get_pb2,
2220
tenants_pb2,
2321
weaviate_pb2_grpc,
2422
)
2523

24+
from grpc_health.v1 import health_pb2, health_pb2_grpc
25+
2626
MOCK_IP = "127.0.0.1"
2727
MOCK_PORT = 23536
2828
MOCK_PORT_GRPC = 23537
@@ -55,15 +55,15 @@ def ready_mock(httpserver: HTTPServer):
5555

5656
@pytest.fixture(scope="function")
5757
def weaviate_mock(ready_mock: HTTPServer):
58-
ready_mock.expect_request("/v1/meta").respond_with_json({"version": "1.25"})
58+
ready_mock.expect_request("/v1/meta").respond_with_json({"version": "1.33"})
5959
ready_mock.expect_request("/v1/nodes").respond_with_json({"nodes": [{"gitHash": "ABC"}]})
6060

6161
yield ready_mock
6262

6363

6464
@pytest.fixture(scope="function")
6565
def weaviate_no_auth_mock(weaviate_mock: HTTPServer):
66-
weaviate_mock.expect_request("/v1/meta").respond_with_json({"version": "1.25"})
66+
weaviate_mock.expect_request("/v1/meta").respond_with_json({"version": "1.33"})
6767
weaviate_mock.expect_request("/v1/.well-known/openid-configuration").respond_with_response(
6868
Response(json.dumps({}), status=404)
6969
)

mock_tests/test_collection.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ def test_node_with_timeout(
295295
httpserver: HTTPServer, start_grpc_server: grpc.Server, output: Literal["minimal", "verbose"]
296296
) -> None:
297297
httpserver.expect_request("/v1/.well-known/ready").respond_with_json({})
298-
httpserver.expect_request("/v1/meta").respond_with_json({"version": "1.24"})
298+
httpserver.expect_request("/v1/meta").respond_with_json({"version": "1.33"})
299299

300300
httpserver.expect_request("/v1/nodes").respond_with_json(
301301
status=200,

requirements-devel.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ validators==0.34.0
33
authlib==1.6.4
44
grpcio==1.66.2
55
grpcio-tools==1.66.2
6+
grpcio-health-checking==1.66.2
67
pydantic==2.8.0
78
deprecation==2.1.0
89

test/collection/test_config.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2084,7 +2084,7 @@ def test_config_with_named_vectors(
20842084
(
20852085
[
20862086
Configure.Vectors.text2vec_aws(
2087-
name="test", region="us-east-1", source_properties=["prop"]
2087+
name="test", region="us-east-1", source_properties=["prop"], model="model"
20882088
)
20892089
],
20902090
{
@@ -2095,6 +2095,7 @@ def test_config_with_named_vectors(
20952095
"vectorizeClassName": True,
20962096
"region": "us-east-1",
20972097
"service": "bedrock",
2098+
"model": "model",
20982099
}
20992100
},
21002101
"vectorIndexType": "hnsw",

0 commit comments

Comments
 (0)