Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,13 @@ concurrency:
cancel-in-progress: true

env:
WEAVIATE_125: 1.25.34
WEAVIATE_126: 1.26.17
WEAVIATE_127: 1.27.27
WEAVIATE_128: 1.28.16
WEAVIATE_129: 1.29.9
WEAVIATE_130: 1.30.12
WEAVIATE_131: 1.31.5
WEAVIATE_132: 1.32.0-rc.1-098c594
WEAVIATE_133: preview-remove-support-for-old-clients-a52a482.amd64

jobs:
lint-and-format:
Expand Down Expand Up @@ -278,14 +277,13 @@ jobs:
fail-fast: false
matrix:
version: [
{ extra: "1.62.0", server: $WEAVIATE_125},
{ extra: "1.66.2", server: $WEAVIATE_126},
{ extra: "1.70.0", server: $WEAVIATE_127},
{ extra: "1.59.5", server: $WEAVIATE_128},
{ extra: "1.62.0", server: $WEAVIATE_129},
{ extra: "1.69.0", server: $WEAVIATE_130},
{ extra: "1.70.0", server: $WEAVIATE_131},
{ extra: "1.71.0", server: $WEAVIATE_132}
{ extra: "1.71.0", server: $WEAVIATE_132},
{ extra: "1.72.2", server: $WEAVIATE_133}
]
steps:
- name: Checkout
Expand Down
5 changes: 4 additions & 1 deletion integration/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,10 @@ def test_client_cluster_without_lazy_shard_loading(
assert len(nodes[0].shards) == 1
assert nodes[0].shards[0].collection == collection.name
assert nodes[0].shards[0].object_count == 0
assert nodes[0].shards[0].vector_indexing_status == "READY"
if collection._connection._weaviate_version.is_lower_than(1, 33, 0):
assert nodes[0].shards[0].vector_indexing_status == "READY"
else:
assert nodes[0].shards[0].vector_indexing_status == "LAZY_LOADING"
assert nodes[0].shards[0].vector_queue_length == 0
assert nodes[0].shards[0].compressed is False
if collection._connection._weaviate_version.is_lower_than(1, 25, 0):
Expand Down
4 changes: 2 additions & 2 deletions mock_tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,15 @@ def ready_mock(httpserver: HTTPServer):

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

yield ready_mock


@pytest.fixture(scope="function")
def weaviate_no_auth_mock(weaviate_mock: HTTPServer):
weaviate_mock.expect_request("/v1/meta").respond_with_json({"version": "1.25"})
weaviate_mock.expect_request("/v1/meta").respond_with_json({"version": "1.33"})
weaviate_mock.expect_request("/v1/.well-known/openid-configuration").respond_with_response(
Response(json.dumps({}), status=404)
)
Expand Down
2 changes: 1 addition & 1 deletion mock_tests/test_collection.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ def test_node_with_timeout(
httpserver: HTTPServer, start_grpc_server: grpc.Server, output: Literal["minimal", "verbose"]
) -> None:
httpserver.expect_request("/v1/.well-known/ready").respond_with_json({})
httpserver.expect_request("/v1/meta").respond_with_json({"version": "1.24"})
httpserver.expect_request("/v1/meta").respond_with_json({"version": "1.33"})

httpserver.expect_request("/v1/nodes").respond_with_json(
status=200,
Expand Down
2 changes: 1 addition & 1 deletion weaviate/collections/classes/cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class Shard:
name: str
node: str
object_count: int
vector_indexing_status: Literal["READONLY", "INDEXING", "READY"]
vector_indexing_status: Literal["READONLY", "INDEXING", "READY", "LAZY_LOADING"]
vector_queue_length: int
compressed: bool
loaded: Optional[bool] # not present in <1.24.x
Expand Down
50 changes: 16 additions & 34 deletions weaviate/collections/classes/grpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -417,42 +417,24 @@ def to_grpc_target_vector(self, version: _ServerVersion) -> base_search_pb2.Targ
assert combination == _MultiTargetVectorJoinEnum.MINIMUM
combination_grpc = base_search_pb2.COMBINATION_METHOD_TYPE_MIN

if version.is_lower_than(1, 27, 0):
if self.weights is not None and any(isinstance(w, list) for w in self.weights.values()):
raise ValueError(
"Multiple weights per target are not supported in this Weaviate version. Please upgrade to at least Weaviate 1.27.0."
)
# mypy does not seem to understand the type narrowing right above
weights_typed = cast(Optional[Dict[str, float]], self.weights)

return base_search_pb2.Targets(
target_vectors=self.target_vectors,
weights=weights_typed,
combination=combination_grpc,
)
else:
weights: List[base_search_pb2.WeightsForTarget] = []
target_vectors: List[str] = self.target_vectors
if self.weights is not None:
target_vectors = []
for target, weight in self.weights.items():
if isinstance(weight, list):
for w in weight:
weights.append(
base_search_pb2.WeightsForTarget(target=target, weight=w)
)
target_vectors.append(target)
else:
weights.append(
base_search_pb2.WeightsForTarget(target=target, weight=weight)
)
weights: List[base_search_pb2.WeightsForTarget] = []
target_vectors: List[str] = self.target_vectors
if self.weights is not None:
target_vectors = []
for target, weight in self.weights.items():
if isinstance(weight, list):
for w in weight:
weights.append(base_search_pb2.WeightsForTarget(target=target, weight=w))
target_vectors.append(target)
else:
weights.append(base_search_pb2.WeightsForTarget(target=target, weight=weight))
target_vectors.append(target)

return base_search_pb2.Targets(
target_vectors=target_vectors,
weights_for_targets=weights,
combination=combination_grpc,
)
return base_search_pb2.Targets(
target_vectors=target_vectors,
weights_for_targets=weights,
combination=combination_grpc,
)


TargetVectorJoinType = Union[str, List[str], _MultiTargetVectorJoin]
Expand Down
12 changes: 2 additions & 10 deletions weaviate/collections/queries/base_executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -263,16 +263,12 @@ def __deserialize_list_value_prop_125(
_Warnings.unknown_type_encountered(value.WhichOneof("value"))
return None

def __deserialize_list_value_prop_123(self, value: properties_pb2.ListValue) -> List[Any]:
return [self.__deserialize_non_ref_prop(val) for val in value.values]

def __deserialize_non_ref_prop(self, value: properties_pb2.Value) -> Any:
if value.HasField("uuid_value"):
return uuid_lib.UUID(value.uuid_value)
if value.HasField("date_value"):
return _datetime_from_weaviate_str(value.date_value)
if value.HasField("string_value"):
return str(value.string_value)

if value.HasField("text_value"):
return str(value.text_value)
if value.HasField("int_value"):
Expand All @@ -282,11 +278,7 @@ def __deserialize_non_ref_prop(self, value: properties_pb2.Value) -> Any:
if value.HasField("bool_value"):
return bool(value.bool_value)
if value.HasField("list_value"):
return (
self.__deserialize_list_value_prop_125(value.list_value)
if self._connection._weaviate_version.is_at_least(1, 25, 0)
else self.__deserialize_list_value_prop_123(value.list_value)
)
return self.__deserialize_list_value_prop_125(value.list_value)
if value.HasField("object_value"):
return self.__parse_nonref_properties_result(value.object_value)
if value.HasField("geo_value"):
Expand Down
4 changes: 2 additions & 2 deletions weaviate/connect/v4.py
Original file line number Diff line number Diff line change
Expand Up @@ -945,10 +945,10 @@ def connect(self) -> None:
raise e

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

if not self._skip_init_checks:
Expand Down
Loading