Skip to content

Commit 7c479c9

Browse files
authored
Merge pull request #1792 from weaviate/deprecate_old_weaviate
Remove support for old weaviate versions <1.27.0
2 parents 4bef4b8 + 72f1d14 commit 7c479c9

32 files changed

+619
-797
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.0-rc.1-098c594
27+
WEAVIATE_133: preview-remove-support-for-old-clients-a52a482.amd64
2928

3029
jobs:
3130
lint-and-format:
@@ -278,14 +277,13 @@ jobs:
278277
fail-fast: false
279278
matrix:
280279
version: [
281-
{ extra: "1.62.0", server: $WEAVIATE_125},
282-
{ extra: "1.66.2", server: $WEAVIATE_126},
283280
{ extra: "1.70.0", server: $WEAVIATE_127},
284281
{ extra: "1.59.5", server: $WEAVIATE_128},
285282
{ extra: "1.62.0", server: $WEAVIATE_129},
286283
{ extra: "1.69.0", server: $WEAVIATE_130},
287284
{ extra: "1.70.0", server: $WEAVIATE_131},
288-
{ extra: "1.71.0", server: $WEAVIATE_132}
285+
{ extra: "1.71.0", server: $WEAVIATE_132},
286+
{ extra: "1.72.2", server: $WEAVIATE_133}
289287
]
290288
steps:
291289
- name: Checkout

integration/test_client.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,10 @@ def test_client_cluster_without_lazy_shard_loading(
367367
assert len(nodes[0].shards) == 1
368368
assert nodes[0].shards[0].collection == collection.name
369369
assert nodes[0].shards[0].object_count == 0
370-
assert nodes[0].shards[0].vector_indexing_status == "READY"
370+
if collection._connection._weaviate_version.is_lower_than(1, 33, 0):
371+
assert nodes[0].shards[0].vector_indexing_status == "READY"
372+
else:
373+
assert nodes[0].shards[0].vector_indexing_status == "LAZY_LOADING"
371374
assert nodes[0].shards[0].vector_queue_length == 0
372375
assert nodes[0].shards[0].compressed is False
373376
if collection._connection._weaviate_version.is_lower_than(1, 25, 0):

mock_tests/conftest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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,

weaviate/collections/classes/cluster.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class Shard:
1313
name: str
1414
node: str
1515
object_count: int
16-
vector_indexing_status: Literal["READONLY", "INDEXING", "READY"]
16+
vector_indexing_status: Literal["READONLY", "INDEXING", "READY", "LAZY_LOADING"]
1717
vector_queue_length: int
1818
compressed: bool
1919
loaded: Optional[bool] # not present in <1.24.x

weaviate/collections/classes/grpc.py

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -417,42 +417,24 @@ def to_grpc_target_vector(self, version: _ServerVersion) -> base_search_pb2.Targ
417417
assert combination == _MultiTargetVectorJoinEnum.MINIMUM
418418
combination_grpc = base_search_pb2.COMBINATION_METHOD_TYPE_MIN
419419

420-
if version.is_lower_than(1, 27, 0):
421-
if self.weights is not None and any(isinstance(w, list) for w in self.weights.values()):
422-
raise ValueError(
423-
"Multiple weights per target are not supported in this Weaviate version. Please upgrade to at least Weaviate 1.27.0."
424-
)
425-
# mypy does not seem to understand the type narrowing right above
426-
weights_typed = cast(Optional[Dict[str, float]], self.weights)
427-
428-
return base_search_pb2.Targets(
429-
target_vectors=self.target_vectors,
430-
weights=weights_typed,
431-
combination=combination_grpc,
432-
)
433-
else:
434-
weights: List[base_search_pb2.WeightsForTarget] = []
435-
target_vectors: List[str] = self.target_vectors
436-
if self.weights is not None:
437-
target_vectors = []
438-
for target, weight in self.weights.items():
439-
if isinstance(weight, list):
440-
for w in weight:
441-
weights.append(
442-
base_search_pb2.WeightsForTarget(target=target, weight=w)
443-
)
444-
target_vectors.append(target)
445-
else:
446-
weights.append(
447-
base_search_pb2.WeightsForTarget(target=target, weight=weight)
448-
)
420+
weights: List[base_search_pb2.WeightsForTarget] = []
421+
target_vectors: List[str] = self.target_vectors
422+
if self.weights is not None:
423+
target_vectors = []
424+
for target, weight in self.weights.items():
425+
if isinstance(weight, list):
426+
for w in weight:
427+
weights.append(base_search_pb2.WeightsForTarget(target=target, weight=w))
449428
target_vectors.append(target)
429+
else:
430+
weights.append(base_search_pb2.WeightsForTarget(target=target, weight=weight))
431+
target_vectors.append(target)
450432

451-
return base_search_pb2.Targets(
452-
target_vectors=target_vectors,
453-
weights_for_targets=weights,
454-
combination=combination_grpc,
455-
)
433+
return base_search_pb2.Targets(
434+
target_vectors=target_vectors,
435+
weights_for_targets=weights,
436+
combination=combination_grpc,
437+
)
456438

457439

458440
TargetVectorJoinType = Union[str, List[str], _MultiTargetVectorJoin]

weaviate/collections/queries/base_executor.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -263,16 +263,12 @@ def __deserialize_list_value_prop_125(
263263
_Warnings.unknown_type_encountered(value.WhichOneof("value"))
264264
return None
265265

266-
def __deserialize_list_value_prop_123(self, value: properties_pb2.ListValue) -> List[Any]:
267-
return [self.__deserialize_non_ref_prop(val) for val in value.values]
268-
269266
def __deserialize_non_ref_prop(self, value: properties_pb2.Value) -> Any:
270267
if value.HasField("uuid_value"):
271268
return uuid_lib.UUID(value.uuid_value)
272269
if value.HasField("date_value"):
273270
return _datetime_from_weaviate_str(value.date_value)
274-
if value.HasField("string_value"):
275-
return str(value.string_value)
271+
276272
if value.HasField("text_value"):
277273
return str(value.text_value)
278274
if value.HasField("int_value"):
@@ -282,11 +278,7 @@ def __deserialize_non_ref_prop(self, value: properties_pb2.Value) -> Any:
282278
if value.HasField("bool_value"):
283279
return bool(value.bool_value)
284280
if value.HasField("list_value"):
285-
return (
286-
self.__deserialize_list_value_prop_125(value.list_value)
287-
if self._connection._weaviate_version.is_at_least(1, 25, 0)
288-
else self.__deserialize_list_value_prop_123(value.list_value)
289-
)
281+
return self.__deserialize_list_value_prop_125(value.list_value)
290282
if value.HasField("object_value"):
291283
return self.__parse_nonref_properties_result(value.object_value)
292284
if value.HasField("geo_value"):

weaviate/connect/v4.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -945,10 +945,10 @@ def connect(self) -> None:
945945
raise e
946946

947947
# do it after all other init checks so as not to break all the tests
948-
if self._weaviate_version.is_lower_than(1, 23, 7):
948+
if self._weaviate_version.is_lower_than(1, 27, patch=0):
949949
self._connected = False
950950
raise WeaviateStartUpError(
951-
f"Weaviate version {self._weaviate_version} is not supported. Please use Weaviate version 1.23.7 or higher."
951+
f"Weaviate version {self._weaviate_version} is not supported. Please use Weaviate version 1.27.0 or higher."
952952
)
953953

954954
if not self._skip_init_checks:

0 commit comments

Comments
 (0)