diff --git a/test/collection/test_queries.py b/test/collection/test_queries.py index 513764a17..b49a9e4d4 100644 --- a/test/collection/test_queries.py +++ b/test/collection/test_queries.py @@ -2,9 +2,11 @@ import pytest +from weaviate.collections.collection import CollectionAsync from weaviate.collections.query import _QueryCollectionAsync from weaviate.connect import ConnectionV4 from weaviate.exceptions import WeaviateInvalidInputError +from weaviate.util import _ServerVersion # TODO: re-enable tests once string syntax is re-enabled in the API @@ -130,3 +132,14 @@ async def test_bad_query_inputs(connection: ConnectionV4) -> None: # near image await _test_query(lambda: query.near_image(42)) + + +def test_async_collection_query_uses_current_connection_version(connection: ConnectionV4) -> None: + collection = CollectionAsync(connection, "dummy", True) + + connection._weaviate_version = _ServerVersion.from_string("1.32.5") + + request = collection.query._query.get() + + assert request.uses_125_api + assert request.uses_127_api diff --git a/weaviate/collections/grpc/query.py b/weaviate/collections/grpc/query.py index 69f6ef8ff..153018670 100644 --- a/weaviate/collections/grpc/query.py +++ b/weaviate/collections/grpc/query.py @@ -82,15 +82,17 @@ def __init__( tenant: Optional[str], consistency_level: Optional[ConsistencyLevel], validate_arguments: bool, - uses_125_api: bool, - uses_127_api: bool, ): super().__init__(weaviate_version, consistency_level, validate_arguments) self._name: str = name self._tenant = tenant self._validate_arguments = validate_arguments - self.__uses_125_api = uses_125_api - self.__uses_127_api = uses_127_api + self._use_weaviate_version(weaviate_version) + + def _use_weaviate_version(self, weaviate_version: _ServerVersion) -> None: + self._weaviate_version = weaviate_version + self.__uses_125_api = weaviate_version.is_at_least(1, 25, 0) + self.__uses_127_api = weaviate_version.is_at_least(1, 27, 0) def __parse_near_options( self, diff --git a/weaviate/collections/queries/base_executor.py b/weaviate/collections/queries/base_executor.py index f3eb36399..af83bf6cf 100644 --- a/weaviate/collections/queries/base_executor.py +++ b/weaviate/collections/queries/base_executor.py @@ -86,18 +86,23 @@ def __init__( self._references = references self._validate_arguments = validate_arguments - self.__uses_125_api = connection._weaviate_version.is_at_least(1, 25, 0) - self.__uses_127_api = connection._weaviate_version.is_at_least(1, 27, 0) - self._query = _QueryGRPC( + self.__query = _QueryGRPC( connection._weaviate_version, self._name, self.__tenant, self.__consistency_level, validate_arguments=self._validate_arguments, - uses_125_api=self.__uses_125_api, - uses_127_api=self.__uses_127_api, ) + @property + def _query(self) -> _QueryGRPC: + self.__query._use_weaviate_version(self._connection._weaviate_version) + return self.__query + + @property + def __uses_127_api(self) -> bool: + return self._connection._weaviate_version.is_at_least(1, 27, 0) + def __retrieve_timestamp( self, timestamp: int,