From f4a2a11d4bb29426fe5ab5c65feb82d093093078 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Thu, 11 Jan 2024 17:47:48 +0000 Subject: [PATCH 1/7] update protos --- weaviate/collections/classes/filters.py | 30 ++-- weaviate/collections/filters.py | 34 ++--- weaviate/proto/v1/base_pb2.py | 28 +++- weaviate/proto/v1/base_pb2.pyi | 169 +++++++++++++++++++++ weaviate/proto/v1/batch_delete_pb2.py | 34 +++++ weaviate/proto/v1/batch_delete_pb2.pyi | 70 +++++++++ weaviate/proto/v1/batch_delete_pb2_grpc.py | 3 + weaviate/proto/v1/search_get_pb2.py | 108 ++++++------- weaviate/proto/v1/search_get_pb2.pyi | 133 +--------------- weaviate/proto/v1/weaviate_pb2.py | 7 +- weaviate/proto/v1/weaviate_pb2.pyi | 1 + weaviate/proto/v1/weaviate_pb2_grpc.py | 46 ++++++ 12 files changed, 437 insertions(+), 226 deletions(-) create mode 100644 weaviate/proto/v1/batch_delete_pb2.py create mode 100644 weaviate/proto/v1/batch_delete_pb2.pyi create mode 100644 weaviate/proto/v1/batch_delete_pb2_grpc.py diff --git a/weaviate/collections/classes/filters.py b/weaviate/collections/classes/filters.py index b41700ee9..27f68483c 100644 --- a/weaviate/collections/classes/filters.py +++ b/weaviate/collections/classes/filters.py @@ -8,7 +8,7 @@ from weaviate.collections.classes.types import _WeaviateInput from weaviate.types import UUID -from weaviate.proto.v1 import search_get_pb2 +from weaviate.proto.v1 import base_pb2 from weaviate.util import get_valid_uuid @@ -27,33 +27,33 @@ class _Operator(str, Enum): AND = "And" OR = "Or" - def _to_grpc(self) -> search_get_pb2.Filters.Operator: + def _to_grpc(self) -> base_pb2.Filters.Operator: if self == _Operator.EQUAL: - return search_get_pb2.Filters.OPERATOR_EQUAL + return base_pb2.Filters.OPERATOR_EQUAL elif self == _Operator.NOT_EQUAL: - return search_get_pb2.Filters.OPERATOR_NOT_EQUAL + return base_pb2.Filters.OPERATOR_NOT_EQUAL elif self == _Operator.LESS_THAN: - return search_get_pb2.Filters.OPERATOR_LESS_THAN + return base_pb2.Filters.OPERATOR_LESS_THAN elif self == _Operator.LESS_THAN_EQUAL: - return search_get_pb2.Filters.OPERATOR_LESS_THAN_EQUAL + return base_pb2.Filters.OPERATOR_LESS_THAN_EQUAL elif self == _Operator.GREATER_THAN: - return search_get_pb2.Filters.OPERATOR_GREATER_THAN + return base_pb2.Filters.OPERATOR_GREATER_THAN elif self == _Operator.GREATER_THAN_EQUAL: - return search_get_pb2.Filters.OPERATOR_GREATER_THAN_EQUAL + return base_pb2.Filters.OPERATOR_GREATER_THAN_EQUAL elif self == _Operator.LIKE: - return search_get_pb2.Filters.OPERATOR_LIKE + return base_pb2.Filters.OPERATOR_LIKE elif self == _Operator.IS_NULL: - return search_get_pb2.Filters.OPERATOR_IS_NULL + return base_pb2.Filters.OPERATOR_IS_NULL elif self == _Operator.CONTAINS_ANY: - return search_get_pb2.Filters.OPERATOR_CONTAINS_ANY + return base_pb2.Filters.OPERATOR_CONTAINS_ANY elif self == _Operator.CONTAINS_ALL: - return search_get_pb2.Filters.OPERATOR_CONTAINS_ALL + return base_pb2.Filters.OPERATOR_CONTAINS_ALL elif self == _Operator.WITHIN_GEO_RANGE: - return search_get_pb2.Filters.OPERATOR_WITHIN_GEO_RANGE + return base_pb2.Filters.OPERATOR_WITHIN_GEO_RANGE elif self == _Operator.AND: - return search_get_pb2.Filters.OPERATOR_AND + return base_pb2.Filters.OPERATOR_AND elif self == _Operator.OR: - return search_get_pb2.Filters.OPERATOR_OR + return base_pb2.Filters.OPERATOR_OR else: raise ValueError(f"Unknown operator {self}") diff --git a/weaviate/collections/filters.py b/weaviate/collections/filters.py index 8462a6340..35c89e565 100644 --- a/weaviate/collections/filters.py +++ b/weaviate/collections/filters.py @@ -11,7 +11,7 @@ ) from weaviate.util import _datetime_to_string from weaviate.types import TIME -from weaviate.proto.v1 import search_get_pb2 +from weaviate.proto.v1 import base_pb2 class _FilterToGRPC: @@ -22,11 +22,11 @@ def convert(weav_filter: Literal[None]) -> None: @overload @staticmethod - def convert(weav_filter: _Filters) -> search_get_pb2.Filters: + def convert(weav_filter: _Filters) -> base_pb2.Filters: ... @staticmethod - def convert(weav_filter: Optional[_Filters]) -> Optional[search_get_pb2.Filters]: + def convert(weav_filter: Optional[_Filters]) -> Optional[base_pb2.Filters]: if weav_filter is None: return None if isinstance(weav_filter, _FilterValue): @@ -35,8 +35,8 @@ def convert(weav_filter: Optional[_Filters]) -> Optional[search_get_pb2.Filters] return _FilterToGRPC.__and_or_filter(weav_filter) @staticmethod - def __value_filter(weav_filter: _FilterValue) -> search_get_pb2.Filters: - return search_get_pb2.Filters( + def __value_filter(weav_filter: _FilterValue) -> base_pb2.Filters: + return base_pb2.Filters( operator=weav_filter.operator._to_grpc(), value_text=_FilterToGRPC.__filter_to_text(weav_filter.value), value_int=weav_filter.value if isinstance(weav_filter.value, int) else None, @@ -51,11 +51,11 @@ def __value_filter(weav_filter: _FilterValue) -> search_get_pb2.Filters: ) @staticmethod - def __filter_to_geo(value: FilterValues) -> Optional[search_get_pb2.GeoCoordinatesFilter]: + def __filter_to_geo(value: FilterValues) -> Optional[base_pb2.GeoCoordinatesFilter]: if not (isinstance(value, _GeoCoordinateFilter)): return None - return search_get_pb2.GeoCoordinatesFilter( + return base_pb2.GeoCoordinatesFilter( latitude=value.latitude, longitude=value.longitude, distance=value.distance ) @@ -75,7 +75,7 @@ def __filter_to_text(value: FilterValues) -> Optional[str]: return _datetime_to_string(value) @staticmethod - def __filter_to_text_list(value: FilterValues) -> Optional[search_get_pb2.TextArray]: + def __filter_to_text_list(value: FilterValues) -> Optional[base_pb2.TextArray]: if not isinstance(value, list) or not ( isinstance(value[0], TIME) or isinstance(value[0], str) @@ -91,33 +91,33 @@ def __filter_to_text_list(value: FilterValues) -> Optional[search_get_pb2.TextAr dates = cast(List[TIME], value) value_list = [_datetime_to_string(date) for date in dates] - return search_get_pb2.TextArray(values=cast(List[str], value_list)) + return base_pb2.TextArray(values=cast(List[str], value_list)) @staticmethod - def __filter_to_bool_list(value: FilterValues) -> Optional[search_get_pb2.BooleanArray]: + def __filter_to_bool_list(value: FilterValues) -> Optional[base_pb2.BooleanArray]: if not isinstance(value, list) or not isinstance(value[0], bool): return None - return search_get_pb2.BooleanArray(values=cast(List[bool], value)) + return base_pb2.BooleanArray(values=cast(List[bool], value)) @staticmethod - def __filter_to_float_list(value: FilterValues) -> Optional[search_get_pb2.NumberArray]: + def __filter_to_float_list(value: FilterValues) -> Optional[base_pb2.NumberArray]: if not isinstance(value, list) or not isinstance(value[0], float): return None - return search_get_pb2.NumberArray(values=cast(List[float], value)) + return base_pb2.NumberArray(values=cast(List[float], value)) @staticmethod - def __filter_to_int_list(value: FilterValues) -> Optional[search_get_pb2.IntArray]: + def __filter_to_int_list(value: FilterValues) -> Optional[base_pb2.IntArray]: if not isinstance(value, list) or not isinstance(value[0], int): return None - return search_get_pb2.IntArray(values=cast(List[int], value)) + return base_pb2.IntArray(values=cast(List[int], value)) @staticmethod - def __and_or_filter(weav_filter: _Filters) -> Optional[search_get_pb2.Filters]: + def __and_or_filter(weav_filter: _Filters) -> Optional[base_pb2.Filters]: assert isinstance(weav_filter, _FilterAnd) or isinstance(weav_filter, _FilterOr) - return search_get_pb2.Filters( + return base_pb2.Filters( operator=weav_filter.operator._to_grpc(), filters=[ filter_ diff --git a/weaviate/proto/v1/base_pb2.py b/weaviate/proto/v1/base_pb2.py index aa46d5957..301fda0ff 100644 --- a/weaviate/proto/v1/base_pb2.py +++ b/weaviate/proto/v1/base_pb2.py @@ -16,7 +16,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\rv1/base.proto\x12\x0bweaviate.v1\x1a\x1cgoogle/protobuf/struct.proto"T\n\x15NumberArrayProperties\x12\x12\n\x06values\x18\x01 \x03(\x01\x42\x02\x18\x01\x12\x11\n\tprop_name\x18\x02 \x01(\t\x12\x14\n\x0cvalues_bytes\x18\x03 \x01(\x0c"7\n\x12IntArrayProperties\x12\x0e\n\x06values\x18\x01 \x03(\x03\x12\x11\n\tprop_name\x18\x02 \x01(\t"8\n\x13TextArrayProperties\x12\x0e\n\x06values\x18\x01 \x03(\t\x12\x11\n\tprop_name\x18\x02 \x01(\t";\n\x16\x42ooleanArrayProperties\x12\x0e\n\x06values\x18\x01 \x03(\x08\x12\x11\n\tprop_name\x18\x02 \x01(\t"\xd7\x03\n\x15ObjectPropertiesValue\x12\x33\n\x12non_ref_properties\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x43\n\x17number_array_properties\x18\x02 \x03(\x0b\x32".weaviate.v1.NumberArrayProperties\x12=\n\x14int_array_properties\x18\x03 \x03(\x0b\x32\x1f.weaviate.v1.IntArrayProperties\x12?\n\x15text_array_properties\x18\x04 \x03(\x0b\x32 .weaviate.v1.TextArrayProperties\x12\x45\n\x18\x62oolean_array_properties\x18\x05 \x03(\x0b\x32#.weaviate.v1.BooleanArrayProperties\x12\x38\n\x11object_properties\x18\x06 \x03(\x0b\x32\x1d.weaviate.v1.ObjectProperties\x12\x43\n\x17object_array_properties\x18\x07 \x03(\x0b\x32".weaviate.v1.ObjectArrayProperties"^\n\x15ObjectArrayProperties\x12\x32\n\x06values\x18\x01 \x03(\x0b\x32".weaviate.v1.ObjectPropertiesValue\x12\x11\n\tprop_name\x18\x02 \x01(\t"X\n\x10ObjectProperties\x12\x31\n\x05value\x18\x01 \x01(\x0b\x32".weaviate.v1.ObjectPropertiesValue\x12\x11\n\tprop_name\x18\x02 \x01(\t*\x89\x01\n\x10\x43onsistencyLevel\x12!\n\x1d\x43ONSISTENCY_LEVEL_UNSPECIFIED\x10\x00\x12\x19\n\x15\x43ONSISTENCY_LEVEL_ONE\x10\x01\x12\x1c\n\x18\x43ONSISTENCY_LEVEL_QUORUM\x10\x02\x12\x19\n\x15\x43ONSISTENCY_LEVEL_ALL\x10\x03\x42n\n#io.weaviate.client.grpc.protocol.v1B\x11WeaviateProtoBaseZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3' + b'\n\rv1/base.proto\x12\x0bweaviate.v1\x1a\x1cgoogle/protobuf/struct.proto"T\n\x15NumberArrayProperties\x12\x12\n\x06values\x18\x01 \x03(\x01\x42\x02\x18\x01\x12\x11\n\tprop_name\x18\x02 \x01(\t\x12\x14\n\x0cvalues_bytes\x18\x03 \x01(\x0c"7\n\x12IntArrayProperties\x12\x0e\n\x06values\x18\x01 \x03(\x03\x12\x11\n\tprop_name\x18\x02 \x01(\t"8\n\x13TextArrayProperties\x12\x0e\n\x06values\x18\x01 \x03(\t\x12\x11\n\tprop_name\x18\x02 \x01(\t";\n\x16\x42ooleanArrayProperties\x12\x0e\n\x06values\x18\x01 \x03(\x08\x12\x11\n\tprop_name\x18\x02 \x01(\t"\xd7\x03\n\x15ObjectPropertiesValue\x12\x33\n\x12non_ref_properties\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x43\n\x17number_array_properties\x18\x02 \x03(\x0b\x32".weaviate.v1.NumberArrayProperties\x12=\n\x14int_array_properties\x18\x03 \x03(\x0b\x32\x1f.weaviate.v1.IntArrayProperties\x12?\n\x15text_array_properties\x18\x04 \x03(\x0b\x32 .weaviate.v1.TextArrayProperties\x12\x45\n\x18\x62oolean_array_properties\x18\x05 \x03(\x0b\x32#.weaviate.v1.BooleanArrayProperties\x12\x38\n\x11object_properties\x18\x06 \x03(\x0b\x32\x1d.weaviate.v1.ObjectProperties\x12\x43\n\x17object_array_properties\x18\x07 \x03(\x0b\x32".weaviate.v1.ObjectArrayProperties"^\n\x15ObjectArrayProperties\x12\x32\n\x06values\x18\x01 \x03(\x0b\x32".weaviate.v1.ObjectPropertiesValue\x12\x11\n\tprop_name\x18\x02 \x01(\t"X\n\x10ObjectProperties\x12\x31\n\x05value\x18\x01 \x01(\x0b\x32".weaviate.v1.ObjectPropertiesValue\x12\x11\n\tprop_name\x18\x02 \x01(\t"\x1b\n\tTextArray\x12\x0e\n\x06values\x18\x01 \x03(\t"\x1a\n\x08IntArray\x12\x0e\n\x06values\x18\x01 \x03(\x03"\x1d\n\x0bNumberArray\x12\x0e\n\x06values\x18\x01 \x03(\x01"\x1e\n\x0c\x42ooleanArray\x12\x0e\n\x06values\x18\x01 \x03(\x08"\xfc\x06\n\x07\x46ilters\x12/\n\x08operator\x18\x01 \x01(\x0e\x32\x1d.weaviate.v1.Filters.Operator\x12\x0e\n\x02on\x18\x02 \x03(\tB\x02\x18\x01\x12%\n\x07\x66ilters\x18\x03 \x03(\x0b\x32\x14.weaviate.v1.Filters\x12\x14\n\nvalue_text\x18\x04 \x01(\tH\x00\x12\x13\n\tvalue_int\x18\x05 \x01(\x03H\x00\x12\x17\n\rvalue_boolean\x18\x06 \x01(\x08H\x00\x12\x16\n\x0cvalue_number\x18\x07 \x01(\x01H\x00\x12\x32\n\x10value_text_array\x18\t \x01(\x0b\x32\x16.weaviate.v1.TextArrayH\x00\x12\x30\n\x0fvalue_int_array\x18\n \x01(\x0b\x32\x15.weaviate.v1.IntArrayH\x00\x12\x38\n\x13value_boolean_array\x18\x0b \x01(\x0b\x32\x19.weaviate.v1.BooleanArrayH\x00\x12\x36\n\x12value_number_array\x18\x0c \x01(\x0b\x32\x18.weaviate.v1.NumberArrayH\x00\x12\x36\n\tvalue_geo\x18\r \x01(\x0b\x32!.weaviate.v1.GeoCoordinatesFilterH\x00\x12)\n\x06target\x18\x14 \x01(\x0b\x32\x19.weaviate.v1.FilterTarget"\xe3\x02\n\x08Operator\x12\x18\n\x14OPERATOR_UNSPECIFIED\x10\x00\x12\x12\n\x0eOPERATOR_EQUAL\x10\x01\x12\x16\n\x12OPERATOR_NOT_EQUAL\x10\x02\x12\x19\n\x15OPERATOR_GREATER_THAN\x10\x03\x12\x1f\n\x1bOPERATOR_GREATER_THAN_EQUAL\x10\x04\x12\x16\n\x12OPERATOR_LESS_THAN\x10\x05\x12\x1c\n\x18OPERATOR_LESS_THAN_EQUAL\x10\x06\x12\x10\n\x0cOPERATOR_AND\x10\x07\x12\x0f\n\x0bOPERATOR_OR\x10\x08\x12\x1d\n\x19OPERATOR_WITHIN_GEO_RANGE\x10\t\x12\x11\n\rOPERATOR_LIKE\x10\n\x12\x14\n\x10OPERATOR_IS_NULL\x10\x0b\x12\x19\n\x15OPERATOR_CONTAINS_ANY\x10\x0c\x12\x19\n\x15OPERATOR_CONTAINS_ALL\x10\rB\x0c\n\ntest_value"T\n\x1b\x46ilterReferenceSingleTarget\x12\n\n\x02on\x18\x01 \x01(\t\x12)\n\x06target\x18\x02 \x01(\x0b\x32\x19.weaviate.v1.FilterTarget"n\n\x1a\x46ilterReferenceMultiTarget\x12\n\n\x02on\x18\x01 \x01(\t\x12)\n\x06target\x18\x02 \x01(\x0b\x32\x19.weaviate.v1.FilterTarget\x12\x19\n\x11target_collection\x18\x03 \x01(\t"\xb0\x01\n\x0c\x46ilterTarget\x12\x12\n\x08property\x18\x01 \x01(\tH\x00\x12\x41\n\rsingle_target\x18\x02 \x01(\x0b\x32(.weaviate.v1.FilterReferenceSingleTargetH\x00\x12?\n\x0cmulti_target\x18\x03 \x01(\x0b\x32\'.weaviate.v1.FilterReferenceMultiTargetH\x00\x42\x08\n\x06target"M\n\x14GeoCoordinatesFilter\x12\x10\n\x08latitude\x18\x01 \x01(\x02\x12\x11\n\tlongitude\x18\x02 \x01(\x02\x12\x10\n\x08\x64istance\x18\x03 \x01(\x02*\x89\x01\n\x10\x43onsistencyLevel\x12!\n\x1d\x43ONSISTENCY_LEVEL_UNSPECIFIED\x10\x00\x12\x19\n\x15\x43ONSISTENCY_LEVEL_ONE\x10\x01\x12\x1c\n\x18\x43ONSISTENCY_LEVEL_QUORUM\x10\x02\x12\x19\n\x15\x43ONSISTENCY_LEVEL_ALL\x10\x03\x42n\n#io.weaviate.client.grpc.protocol.v1B\x11WeaviateProtoBaseZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3' ) _globals = globals() @@ -27,8 +27,10 @@ DESCRIPTOR._serialized_options = b"\n#io.weaviate.client.grpc.protocol.v1B\021WeaviateProtoBaseZ4github.com/weaviate/weaviate/grpc/generated;protocol" _NUMBERARRAYPROPERTIES.fields_by_name["values"]._options = None _NUMBERARRAYPROPERTIES.fields_by_name["values"]._serialized_options = b"\030\001" - _globals["_CONSISTENCYLEVEL"]._serialized_start = 983 - _globals["_CONSISTENCYLEVEL"]._serialized_end = 1120 + _FILTERS.fields_by_name["on"]._options = None + _FILTERS.fields_by_name["on"]._serialized_options = b"\030\001" + _globals["_CONSISTENCYLEVEL"]._serialized_start = 2454 + _globals["_CONSISTENCYLEVEL"]._serialized_end = 2591 _globals["_NUMBERARRAYPROPERTIES"]._serialized_start = 60 _globals["_NUMBERARRAYPROPERTIES"]._serialized_end = 144 _globals["_INTARRAYPROPERTIES"]._serialized_start = 146 @@ -43,4 +45,24 @@ _globals["_OBJECTARRAYPROPERTIES"]._serialized_end = 890 _globals["_OBJECTPROPERTIES"]._serialized_start = 892 _globals["_OBJECTPROPERTIES"]._serialized_end = 980 + _globals["_TEXTARRAY"]._serialized_start = 982 + _globals["_TEXTARRAY"]._serialized_end = 1009 + _globals["_INTARRAY"]._serialized_start = 1011 + _globals["_INTARRAY"]._serialized_end = 1037 + _globals["_NUMBERARRAY"]._serialized_start = 1039 + _globals["_NUMBERARRAY"]._serialized_end = 1068 + _globals["_BOOLEANARRAY"]._serialized_start = 1070 + _globals["_BOOLEANARRAY"]._serialized_end = 1100 + _globals["_FILTERS"]._serialized_start = 1103 + _globals["_FILTERS"]._serialized_end = 1995 + _globals["_FILTERS_OPERATOR"]._serialized_start = 1626 + _globals["_FILTERS_OPERATOR"]._serialized_end = 1981 + _globals["_FILTERREFERENCESINGLETARGET"]._serialized_start = 1997 + _globals["_FILTERREFERENCESINGLETARGET"]._serialized_end = 2081 + _globals["_FILTERREFERENCEMULTITARGET"]._serialized_start = 2083 + _globals["_FILTERREFERENCEMULTITARGET"]._serialized_end = 2193 + _globals["_FILTERTARGET"]._serialized_start = 2196 + _globals["_FILTERTARGET"]._serialized_end = 2372 + _globals["_GEOCOORDINATESFILTER"]._serialized_start = 2374 + _globals["_GEOCOORDINATESFILTER"]._serialized_end = 2451 # @@protoc_insertion_point(module_scope) diff --git a/weaviate/proto/v1/base_pb2.pyi b/weaviate/proto/v1/base_pb2.pyi index 95da5f50e..7e89c292e 100644 --- a/weaviate/proto/v1/base_pb2.pyi +++ b/weaviate/proto/v1/base_pb2.pyi @@ -134,3 +134,172 @@ class ObjectProperties(_message.Message): value: _Optional[_Union[ObjectPropertiesValue, _Mapping]] = ..., prop_name: _Optional[str] = ..., ) -> None: ... + +class TextArray(_message.Message): + __slots__ = ["values"] + VALUES_FIELD_NUMBER: _ClassVar[int] + values: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, values: _Optional[_Iterable[str]] = ...) -> None: ... + +class IntArray(_message.Message): + __slots__ = ["values"] + VALUES_FIELD_NUMBER: _ClassVar[int] + values: _containers.RepeatedScalarFieldContainer[int] + def __init__(self, values: _Optional[_Iterable[int]] = ...) -> None: ... + +class NumberArray(_message.Message): + __slots__ = ["values"] + VALUES_FIELD_NUMBER: _ClassVar[int] + values: _containers.RepeatedScalarFieldContainer[float] + def __init__(self, values: _Optional[_Iterable[float]] = ...) -> None: ... + +class BooleanArray(_message.Message): + __slots__ = ["values"] + VALUES_FIELD_NUMBER: _ClassVar[int] + values: _containers.RepeatedScalarFieldContainer[bool] + def __init__(self, values: _Optional[_Iterable[bool]] = ...) -> None: ... + +class Filters(_message.Message): + __slots__ = [ + "operator", + "on", + "filters", + "value_text", + "value_int", + "value_boolean", + "value_number", + "value_text_array", + "value_int_array", + "value_boolean_array", + "value_number_array", + "value_geo", + "target", + ] + + class Operator(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + OPERATOR_UNSPECIFIED: _ClassVar[Filters.Operator] + OPERATOR_EQUAL: _ClassVar[Filters.Operator] + OPERATOR_NOT_EQUAL: _ClassVar[Filters.Operator] + OPERATOR_GREATER_THAN: _ClassVar[Filters.Operator] + OPERATOR_GREATER_THAN_EQUAL: _ClassVar[Filters.Operator] + OPERATOR_LESS_THAN: _ClassVar[Filters.Operator] + OPERATOR_LESS_THAN_EQUAL: _ClassVar[Filters.Operator] + OPERATOR_AND: _ClassVar[Filters.Operator] + OPERATOR_OR: _ClassVar[Filters.Operator] + OPERATOR_WITHIN_GEO_RANGE: _ClassVar[Filters.Operator] + OPERATOR_LIKE: _ClassVar[Filters.Operator] + OPERATOR_IS_NULL: _ClassVar[Filters.Operator] + OPERATOR_CONTAINS_ANY: _ClassVar[Filters.Operator] + OPERATOR_CONTAINS_ALL: _ClassVar[Filters.Operator] + OPERATOR_UNSPECIFIED: Filters.Operator + OPERATOR_EQUAL: Filters.Operator + OPERATOR_NOT_EQUAL: Filters.Operator + OPERATOR_GREATER_THAN: Filters.Operator + OPERATOR_GREATER_THAN_EQUAL: Filters.Operator + OPERATOR_LESS_THAN: Filters.Operator + OPERATOR_LESS_THAN_EQUAL: Filters.Operator + OPERATOR_AND: Filters.Operator + OPERATOR_OR: Filters.Operator + OPERATOR_WITHIN_GEO_RANGE: Filters.Operator + OPERATOR_LIKE: Filters.Operator + OPERATOR_IS_NULL: Filters.Operator + OPERATOR_CONTAINS_ANY: Filters.Operator + OPERATOR_CONTAINS_ALL: Filters.Operator + OPERATOR_FIELD_NUMBER: _ClassVar[int] + ON_FIELD_NUMBER: _ClassVar[int] + FILTERS_FIELD_NUMBER: _ClassVar[int] + VALUE_TEXT_FIELD_NUMBER: _ClassVar[int] + VALUE_INT_FIELD_NUMBER: _ClassVar[int] + VALUE_BOOLEAN_FIELD_NUMBER: _ClassVar[int] + VALUE_NUMBER_FIELD_NUMBER: _ClassVar[int] + VALUE_TEXT_ARRAY_FIELD_NUMBER: _ClassVar[int] + VALUE_INT_ARRAY_FIELD_NUMBER: _ClassVar[int] + VALUE_BOOLEAN_ARRAY_FIELD_NUMBER: _ClassVar[int] + VALUE_NUMBER_ARRAY_FIELD_NUMBER: _ClassVar[int] + VALUE_GEO_FIELD_NUMBER: _ClassVar[int] + TARGET_FIELD_NUMBER: _ClassVar[int] + operator: Filters.Operator + on: _containers.RepeatedScalarFieldContainer[str] + filters: _containers.RepeatedCompositeFieldContainer[Filters] + value_text: str + value_int: int + value_boolean: bool + value_number: float + value_text_array: TextArray + value_int_array: IntArray + value_boolean_array: BooleanArray + value_number_array: NumberArray + value_geo: GeoCoordinatesFilter + target: FilterTarget + def __init__( + self, + operator: _Optional[_Union[Filters.Operator, str]] = ..., + on: _Optional[_Iterable[str]] = ..., + filters: _Optional[_Iterable[_Union[Filters, _Mapping]]] = ..., + value_text: _Optional[str] = ..., + value_int: _Optional[int] = ..., + value_boolean: bool = ..., + value_number: _Optional[float] = ..., + value_text_array: _Optional[_Union[TextArray, _Mapping]] = ..., + value_int_array: _Optional[_Union[IntArray, _Mapping]] = ..., + value_boolean_array: _Optional[_Union[BooleanArray, _Mapping]] = ..., + value_number_array: _Optional[_Union[NumberArray, _Mapping]] = ..., + value_geo: _Optional[_Union[GeoCoordinatesFilter, _Mapping]] = ..., + target: _Optional[_Union[FilterTarget, _Mapping]] = ..., + ) -> None: ... + +class FilterReferenceSingleTarget(_message.Message): + __slots__ = ["on", "target"] + ON_FIELD_NUMBER: _ClassVar[int] + TARGET_FIELD_NUMBER: _ClassVar[int] + on: str + target: FilterTarget + def __init__( + self, on: _Optional[str] = ..., target: _Optional[_Union[FilterTarget, _Mapping]] = ... + ) -> None: ... + +class FilterReferenceMultiTarget(_message.Message): + __slots__ = ["on", "target", "target_collection"] + ON_FIELD_NUMBER: _ClassVar[int] + TARGET_FIELD_NUMBER: _ClassVar[int] + TARGET_COLLECTION_FIELD_NUMBER: _ClassVar[int] + on: str + target: FilterTarget + target_collection: str + def __init__( + self, + on: _Optional[str] = ..., + target: _Optional[_Union[FilterTarget, _Mapping]] = ..., + target_collection: _Optional[str] = ..., + ) -> None: ... + +class FilterTarget(_message.Message): + __slots__ = ["property", "single_target", "multi_target"] + PROPERTY_FIELD_NUMBER: _ClassVar[int] + SINGLE_TARGET_FIELD_NUMBER: _ClassVar[int] + MULTI_TARGET_FIELD_NUMBER: _ClassVar[int] + property: str + single_target: FilterReferenceSingleTarget + multi_target: FilterReferenceMultiTarget + def __init__( + self, + property: _Optional[str] = ..., + single_target: _Optional[_Union[FilterReferenceSingleTarget, _Mapping]] = ..., + multi_target: _Optional[_Union[FilterReferenceMultiTarget, _Mapping]] = ..., + ) -> None: ... + +class GeoCoordinatesFilter(_message.Message): + __slots__ = ["latitude", "longitude", "distance"] + LATITUDE_FIELD_NUMBER: _ClassVar[int] + LONGITUDE_FIELD_NUMBER: _ClassVar[int] + DISTANCE_FIELD_NUMBER: _ClassVar[int] + latitude: float + longitude: float + distance: float + def __init__( + self, + latitude: _Optional[float] = ..., + longitude: _Optional[float] = ..., + distance: _Optional[float] = ..., + ) -> None: ... diff --git a/weaviate/proto/v1/batch_delete_pb2.py b/weaviate/proto/v1/batch_delete_pb2.py new file mode 100644 index 000000000..b4a9094b0 --- /dev/null +++ b/weaviate/proto/v1/batch_delete_pb2.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: v1/batch_delete.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from weaviate.proto.v1 import base_pb2 as v1_dot_base__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x15v1/batch_delete.proto\x12\x0bweaviate.v1\x1a\rv1/base.proto"\xe6\x01\n\x12\x42\x61tchDeleteRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12%\n\x07\x66ilters\x18\x02 \x01(\x0b\x32\x14.weaviate.v1.Filters\x12\x0f\n\x07verbose\x18\x03 \x01(\x08\x12\x0f\n\x07\x64ry_run\x18\x04 \x01(\x08\x12=\n\x11\x63onsistency_level\x18\x05 \x01(\x0e\x32\x1d.weaviate.v1.ConsistencyLevelH\x00\x88\x01\x01\x12\x13\n\x06tenant\x18\x06 \x01(\tH\x01\x88\x01\x01\x42\x14\n\x12_consistency_levelB\t\n\x07_tenant"\x86\x01\n\x10\x42\x61tchDeleteReply\x12\x0c\n\x04took\x18\x01 \x01(\x02\x12\x0e\n\x06\x66\x61iled\x18\x02 \x01(\x03\x12\x0f\n\x07matches\x18\x03 \x01(\x03\x12\x12\n\nsuccessful\x18\x04 \x01(\x03\x12/\n\x07objects\x18\x05 \x03(\x0b\x32\x1e.weaviate.v1.BatchDeleteObject"S\n\x11\x42\x61tchDeleteObject\x12\x0c\n\x04uuid\x18\x01 \x01(\x0c\x12\x12\n\nsuccessful\x18\x02 \x01(\x08\x12\x12\n\x05\x65rror\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_errorBo\n#io.weaviate.client.grpc.protocol.v1B\x12WeaviateProtoBatchZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "v1.batch_delete_pb2", _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b"\n#io.weaviate.client.grpc.protocol.v1B\022WeaviateProtoBatchZ4github.com/weaviate/weaviate/grpc/generated;protocol" + _globals["_BATCHDELETEREQUEST"]._serialized_start = 54 + _globals["_BATCHDELETEREQUEST"]._serialized_end = 284 + _globals["_BATCHDELETEREPLY"]._serialized_start = 287 + _globals["_BATCHDELETEREPLY"]._serialized_end = 421 + _globals["_BATCHDELETEOBJECT"]._serialized_start = 423 + _globals["_BATCHDELETEOBJECT"]._serialized_end = 506 +# @@protoc_insertion_point(module_scope) diff --git a/weaviate/proto/v1/batch_delete_pb2.pyi b/weaviate/proto/v1/batch_delete_pb2.pyi new file mode 100644 index 000000000..d3ae9ac47 --- /dev/null +++ b/weaviate/proto/v1/batch_delete_pb2.pyi @@ -0,0 +1,70 @@ +from weaviate.proto.v1 import base_pb2 as _base_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ( + ClassVar as _ClassVar, + Iterable as _Iterable, + Mapping as _Mapping, + Optional as _Optional, + Union as _Union, +) + +DESCRIPTOR: _descriptor.FileDescriptor + +class BatchDeleteRequest(_message.Message): + __slots__ = ["collection", "filters", "verbose", "dry_run", "consistency_level", "tenant"] + COLLECTION_FIELD_NUMBER: _ClassVar[int] + FILTERS_FIELD_NUMBER: _ClassVar[int] + VERBOSE_FIELD_NUMBER: _ClassVar[int] + DRY_RUN_FIELD_NUMBER: _ClassVar[int] + CONSISTENCY_LEVEL_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + collection: str + filters: _base_pb2.Filters + verbose: bool + dry_run: bool + consistency_level: _base_pb2.ConsistencyLevel + tenant: str + def __init__( + self, + collection: _Optional[str] = ..., + filters: _Optional[_Union[_base_pb2.Filters, _Mapping]] = ..., + verbose: bool = ..., + dry_run: bool = ..., + consistency_level: _Optional[_Union[_base_pb2.ConsistencyLevel, str]] = ..., + tenant: _Optional[str] = ..., + ) -> None: ... + +class BatchDeleteReply(_message.Message): + __slots__ = ["took", "failed", "matches", "successful", "objects"] + TOOK_FIELD_NUMBER: _ClassVar[int] + FAILED_FIELD_NUMBER: _ClassVar[int] + MATCHES_FIELD_NUMBER: _ClassVar[int] + SUCCESSFUL_FIELD_NUMBER: _ClassVar[int] + OBJECTS_FIELD_NUMBER: _ClassVar[int] + took: float + failed: int + matches: int + successful: int + objects: _containers.RepeatedCompositeFieldContainer[BatchDeleteObject] + def __init__( + self, + took: _Optional[float] = ..., + failed: _Optional[int] = ..., + matches: _Optional[int] = ..., + successful: _Optional[int] = ..., + objects: _Optional[_Iterable[_Union[BatchDeleteObject, _Mapping]]] = ..., + ) -> None: ... + +class BatchDeleteObject(_message.Message): + __slots__ = ["uuid", "successful", "error"] + UUID_FIELD_NUMBER: _ClassVar[int] + SUCCESSFUL_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + uuid: bytes + successful: bool + error: str + def __init__( + self, uuid: _Optional[bytes] = ..., successful: bool = ..., error: _Optional[str] = ... + ) -> None: ... diff --git a/weaviate/proto/v1/batch_delete_pb2_grpc.py b/weaviate/proto/v1/batch_delete_pb2_grpc.py new file mode 100644 index 000000000..8a9393943 --- /dev/null +++ b/weaviate/proto/v1/batch_delete_pb2_grpc.py @@ -0,0 +1,3 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc diff --git a/weaviate/proto/v1/search_get_pb2.py b/weaviate/proto/v1/search_get_pb2.py index fb931c40e..3df75964d 100644 --- a/weaviate/proto/v1/search_get_pb2.py +++ b/weaviate/proto/v1/search_get_pb2.py @@ -18,7 +18,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x13v1/search_get.proto\x12\x0bweaviate.v1\x1a\x1cgoogle/protobuf/struct.proto\x1a\rv1/base.proto\x1a\x13v1/properties.proto"\x9a\t\n\rSearchRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0e\n\x06tenant\x18\n \x01(\t\x12=\n\x11\x63onsistency_level\x18\x0b \x01(\x0e\x32\x1d.weaviate.v1.ConsistencyLevelH\x00\x88\x01\x01\x12\x37\n\nproperties\x18\x14 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequestH\x01\x88\x01\x01\x12\x33\n\x08metadata\x18\x15 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequestH\x02\x88\x01\x01\x12+\n\x08group_by\x18\x16 \x01(\x0b\x32\x14.weaviate.v1.GroupByH\x03\x88\x01\x01\x12\r\n\x05limit\x18\x1e \x01(\r\x12\x0e\n\x06offset\x18\x1f \x01(\r\x12\x0f\n\x07\x61utocut\x18 \x01(\r\x12\r\n\x05\x61\x66ter\x18! \x01(\t\x12$\n\x07sort_by\x18" \x03(\x0b\x32\x13.weaviate.v1.SortBy\x12*\n\x07\x66ilters\x18( \x01(\x0b\x32\x14.weaviate.v1.FiltersH\x04\x88\x01\x01\x12/\n\rhybrid_search\x18) \x01(\x0b\x32\x13.weaviate.v1.HybridH\x05\x88\x01\x01\x12+\n\x0b\x62m25_search\x18* \x01(\x0b\x32\x11.weaviate.v1.BM25H\x06\x88\x01\x01\x12\x31\n\x0bnear_vector\x18+ \x01(\x0b\x32\x17.weaviate.v1.NearVectorH\x07\x88\x01\x01\x12\x31\n\x0bnear_object\x18, \x01(\x0b\x32\x17.weaviate.v1.NearObjectH\x08\x88\x01\x01\x12\x33\n\tnear_text\x18- \x01(\x0b\x32\x1b.weaviate.v1.NearTextSearchH\t\x88\x01\x01\x12\x35\n\nnear_image\x18. \x01(\x0b\x32\x1c.weaviate.v1.NearImageSearchH\n\x88\x01\x01\x12\x35\n\nnear_audio\x18/ \x01(\x0b\x32\x1c.weaviate.v1.NearAudioSearchH\x0b\x88\x01\x01\x12\x35\n\nnear_video\x18\x30 \x01(\x0b\x32\x1c.weaviate.v1.NearVideoSearchH\x0c\x88\x01\x01\x12\x36\n\ngenerative\x18< \x01(\x0b\x32\x1d.weaviate.v1.GenerativeSearchH\r\x88\x01\x01\x12(\n\x06rerank\x18= \x01(\x0b\x32\x13.weaviate.v1.RerankH\x0e\x88\x01\x01\x12\x18\n\x0cuses_123_api\x18\x64 \x01(\x08\x42\x02\x18\x01\x42\x14\n\x12_consistency_levelB\r\n\x0b_propertiesB\x0b\n\t_metadataB\x0b\n\t_group_byB\n\n\x08_filtersB\x10\n\x0e_hybrid_searchB\x0e\n\x0c_bm25_searchB\x0e\n\x0c_near_vectorB\x0e\n\x0c_near_objectB\x0c\n\n_near_textB\r\n\x0b_near_imageB\r\n\x0b_near_audioB\r\n\x0b_near_videoB\r\n\x0b_generativeB\t\n\x07_rerank"L\n\x07GroupBy\x12\x0c\n\x04path\x18\x01 \x03(\t\x12\x18\n\x10number_of_groups\x18\x02 \x01(\x05\x12\x19\n\x11objects_per_group\x18\x03 \x01(\x05")\n\x06SortBy\x12\x11\n\tascending\x18\x01 \x01(\x08\x12\x0c\n\x04path\x18\x02 \x03(\t"m\n\x10GenerativeSearch\x12\x1e\n\x16single_response_prompt\x18\x01 \x01(\t\x12\x1d\n\x15grouped_response_task\x18\x02 \x01(\t\x12\x1a\n\x12grouped_properties\x18\x03 \x03(\t"\x1b\n\tTextArray\x12\x0e\n\x06values\x18\x01 \x03(\t"\x1a\n\x08IntArray\x12\x0e\n\x06values\x18\x01 \x03(\x03"\x1d\n\x0bNumberArray\x12\x0e\n\x06values\x18\x01 \x03(\x01"\x1e\n\x0c\x42ooleanArray\x12\x0e\n\x06values\x18\x01 \x03(\x08"\xcd\x06\n\x07\x46ilters\x12/\n\x08operator\x18\x01 \x01(\x0e\x32\x1d.weaviate.v1.Filters.Operator\x12\n\n\x02on\x18\x02 \x03(\t\x12%\n\x07\x66ilters\x18\x03 \x03(\x0b\x32\x14.weaviate.v1.Filters\x12\x14\n\nvalue_text\x18\x04 \x01(\tH\x00\x12\x13\n\tvalue_int\x18\x05 \x01(\x03H\x00\x12\x17\n\rvalue_boolean\x18\x06 \x01(\x08H\x00\x12\x16\n\x0cvalue_number\x18\x07 \x01(\x01H\x00\x12\x32\n\x10value_text_array\x18\t \x01(\x0b\x32\x16.weaviate.v1.TextArrayH\x00\x12\x30\n\x0fvalue_int_array\x18\n \x01(\x0b\x32\x15.weaviate.v1.IntArrayH\x00\x12\x38\n\x13value_boolean_array\x18\x0b \x01(\x0b\x32\x19.weaviate.v1.BooleanArrayH\x00\x12\x36\n\x12value_number_array\x18\x0c \x01(\x0b\x32\x18.weaviate.v1.NumberArrayH\x00\x12\x36\n\tvalue_geo\x18\r \x01(\x0b\x32!.weaviate.v1.GeoCoordinatesFilterH\x00"\xe3\x02\n\x08Operator\x12\x18\n\x14OPERATOR_UNSPECIFIED\x10\x00\x12\x12\n\x0eOPERATOR_EQUAL\x10\x01\x12\x16\n\x12OPERATOR_NOT_EQUAL\x10\x02\x12\x19\n\x15OPERATOR_GREATER_THAN\x10\x03\x12\x1f\n\x1bOPERATOR_GREATER_THAN_EQUAL\x10\x04\x12\x16\n\x12OPERATOR_LESS_THAN\x10\x05\x12\x1c\n\x18OPERATOR_LESS_THAN_EQUAL\x10\x06\x12\x10\n\x0cOPERATOR_AND\x10\x07\x12\x0f\n\x0bOPERATOR_OR\x10\x08\x12\x1d\n\x19OPERATOR_WITHIN_GEO_RANGE\x10\t\x12\x11\n\rOPERATOR_LIKE\x10\n\x12\x14\n\x10OPERATOR_IS_NULL\x10\x0b\x12\x19\n\x15OPERATOR_CONTAINS_ANY\x10\x0c\x12\x19\n\x15OPERATOR_CONTAINS_ALL\x10\rB\x0c\n\ntest_value"M\n\x14GeoCoordinatesFilter\x12\x10\n\x08latitude\x18\x01 \x01(\x02\x12\x11\n\tlongitude\x18\x02 \x01(\x02\x12\x10\n\x08\x64istance\x18\x03 \x01(\x02"\xcc\x01\n\x0fMetadataRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x08\x12\x0e\n\x06vector\x18\x02 \x01(\x08\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x04 \x01(\x08\x12\x10\n\x08\x64istance\x18\x05 \x01(\x08\x12\x11\n\tcertainty\x18\x06 \x01(\x08\x12\r\n\x05score\x18\x07 \x01(\x08\x12\x15\n\rexplain_score\x18\x08 \x01(\x08\x12\x15\n\ris_consistent\x18\t \x01(\x08"\xd1\x01\n\x11PropertiesRequest\x12\x1a\n\x12non_ref_properties\x18\x01 \x03(\t\x12\x39\n\x0eref_properties\x18\x02 \x03(\x0b\x32!.weaviate.v1.RefPropertiesRequest\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\x12$\n\x1creturn_all_nonref_properties\x18\x0b \x01(\x08"\x8b\x01\n\x17ObjectPropertiesRequest\x12\x11\n\tprop_name\x18\x01 \x01(\t\x12\x1c\n\x14primitive_properties\x18\x02 \x03(\t\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest"\xfc\x01\n\x06Hybrid\x12\r\n\x05query\x18\x01 \x01(\t\x12\x12\n\nproperties\x18\x02 \x03(\t\x12\x12\n\x06vector\x18\x03 \x03(\x02\x42\x02\x18\x01\x12\r\n\x05\x61lpha\x18\x04 \x01(\x02\x12\x33\n\x0b\x66usion_type\x18\x05 \x01(\x0e\x32\x1e.weaviate.v1.Hybrid.FusionType\x12\x14\n\x0cvector_bytes\x18\x06 \x01(\x0c"a\n\nFusionType\x12\x1b\n\x17\x46USION_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12\x46USION_TYPE_RANKED\x10\x01\x12\x1e\n\x1a\x46USION_TYPE_RELATIVE_SCORE\x10\x02"\xad\x02\n\x0eNearTextSearch\x12\r\n\x05query\x18\x01 \x03(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x12\x36\n\x07move_to\x18\x04 \x01(\x0b\x32 .weaviate.v1.NearTextSearch.MoveH\x02\x88\x01\x01\x12\x38\n\tmove_away\x18\x05 \x01(\x0b\x32 .weaviate.v1.NearTextSearch.MoveH\x03\x88\x01\x01\x1a\x36\n\x04Move\x12\r\n\x05\x66orce\x18\x01 \x01(\x02\x12\x10\n\x08\x63oncepts\x18\x02 \x03(\t\x12\r\n\x05uuids\x18\x03 \x03(\tB\x0c\n\n_certaintyB\x0b\n\t_distanceB\n\n\x08_move_toB\x0c\n\n_move_away"j\n\x0fNearImageSearch\x12\r\n\x05image\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance"j\n\x0fNearAudioSearch\x12\r\n\x05\x61udio\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance"j\n\x0fNearVideoSearch\x12\r\n\x05video\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance")\n\x04\x42M25\x12\r\n\x05query\x18\x01 \x01(\t\x12\x12\n\nproperties\x18\x02 \x03(\t"\xb1\x01\n\x14RefPropertiesRequest\x12\x1a\n\x12reference_property\x18\x01 \x01(\t\x12\x32\n\nproperties\x18\x02 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequest\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequest\x12\x19\n\x11target_collection\x18\x04 \x01(\t"\x80\x01\n\nNearVector\x12\x12\n\x06vector\x18\x01 \x03(\x02\x42\x02\x18\x01\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x12\x14\n\x0cvector_bytes\x18\x04 \x01(\x0c\x42\x0c\n\n_certaintyB\x0b\n\t_distance"b\n\nNearObject\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance"8\n\x06Rerank\x12\x10\n\x08property\x18\x01 \x01(\t\x12\x12\n\x05query\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_query"\xc3\x01\n\x0bSearchReply\x12\x0c\n\x04took\x18\x01 \x01(\x02\x12*\n\x07results\x18\x02 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12&\n\x19generative_grouped_result\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x34\n\x10group_by_results\x18\x04 \x03(\x0b\x32\x1a.weaviate.v1.GroupByResultB\x1c\n\x1a_generative_grouped_result"\x1c\n\x0bRerankReply\x12\r\n\x05score\x18\x01 \x01(\x01"!\n\x0fGenerativeReply\x12\x0e\n\x06result\x18\x01 \x01(\t"\x90\x02\n\rGroupByResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0cmin_distance\x18\x02 \x01(\x02\x12\x14\n\x0cmax_distance\x18\x03 \x01(\x02\x12\x19\n\x11number_of_objects\x18\x04 \x01(\x03\x12*\n\x07objects\x18\x05 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12-\n\x06rerank\x18\x06 \x01(\x0b\x32\x18.weaviate.v1.RerankReplyH\x00\x88\x01\x01\x12\x35\n\ngenerative\x18\x07 \x01(\x0b\x32\x1c.weaviate.v1.GenerativeReplyH\x01\x88\x01\x01\x42\t\n\x07_rerankB\r\n\x0b_generative"p\n\x0cSearchResult\x12\x31\n\nproperties\x18\x01 \x01(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult"\xc8\x04\n\x0eMetadataResult\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\x06vector\x18\x02 \x03(\x02\x42\x02\x18\x01\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x03\x12"\n\x1a\x63reation_time_unix_present\x18\x04 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x05 \x01(\x03\x12%\n\x1dlast_update_time_unix_present\x18\x06 \x01(\x08\x12\x10\n\x08\x64istance\x18\x07 \x01(\x02\x12\x18\n\x10\x64istance_present\x18\x08 \x01(\x08\x12\x11\n\tcertainty\x18\t \x01(\x02\x12\x19\n\x11\x63\x65rtainty_present\x18\n \x01(\x08\x12\r\n\x05score\x18\x0b \x01(\x02\x12\x15\n\rscore_present\x18\x0c \x01(\x08\x12\x15\n\rexplain_score\x18\r \x01(\t\x12\x1d\n\x15\x65xplain_score_present\x18\x0e \x01(\x08\x12\x1a\n\ris_consistent\x18\x0f \x01(\x08H\x00\x88\x01\x01\x12\x12\n\ngenerative\x18\x10 \x01(\t\x12\x1a\n\x12generative_present\x18\x11 \x01(\x08\x12\x1d\n\x15is_consistent_present\x18\x12 \x01(\x08\x12\x14\n\x0cvector_bytes\x18\x13 \x01(\x0c\x12\x13\n\x0bid_as_bytes\x18\x14 \x01(\x0c\x12\x14\n\x0crerank_score\x18\x15 \x01(\x01\x12\x1c\n\x14rerank_score_present\x18\x16 \x01(\x08\x42\x10\n\x0e_is_consistent"\x9d\x05\n\x10PropertiesResult\x12\x37\n\x12non_ref_properties\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\x02\x18\x01\x12\x33\n\tref_props\x18\x02 \x03(\x0b\x32 .weaviate.v1.RefPropertiesResult\x12\x19\n\x11target_collection\x18\x03 \x01(\t\x12-\n\x08metadata\x18\x04 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12G\n\x17number_array_properties\x18\x05 \x03(\x0b\x32".weaviate.v1.NumberArrayPropertiesB\x02\x18\x01\x12\x41\n\x14int_array_properties\x18\x06 \x03(\x0b\x32\x1f.weaviate.v1.IntArrayPropertiesB\x02\x18\x01\x12\x43\n\x15text_array_properties\x18\x07 \x03(\x0b\x32 .weaviate.v1.TextArrayPropertiesB\x02\x18\x01\x12I\n\x18\x62oolean_array_properties\x18\x08 \x03(\x0b\x32#.weaviate.v1.BooleanArrayPropertiesB\x02\x18\x01\x12<\n\x11object_properties\x18\t \x03(\x0b\x32\x1d.weaviate.v1.ObjectPropertiesB\x02\x18\x01\x12G\n\x17object_array_properties\x18\n \x03(\x0b\x32".weaviate.v1.ObjectArrayPropertiesB\x02\x18\x01\x12.\n\rnon_ref_props\x18\x0b \x01(\x0b\x32\x17.weaviate.v1.Properties"[\n\x13RefPropertiesResult\x12\x31\n\nproperties\x18\x01 \x03(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12\x11\n\tprop_name\x18\x02 \x01(\tBs\n#io.weaviate.client.grpc.protocol.v1B\x16WeaviateProtoSearchGetZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3' + b'\n\x13v1/search_get.proto\x12\x0bweaviate.v1\x1a\x1cgoogle/protobuf/struct.proto\x1a\rv1/base.proto\x1a\x13v1/properties.proto"\x9a\t\n\rSearchRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0e\n\x06tenant\x18\n \x01(\t\x12=\n\x11\x63onsistency_level\x18\x0b \x01(\x0e\x32\x1d.weaviate.v1.ConsistencyLevelH\x00\x88\x01\x01\x12\x37\n\nproperties\x18\x14 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequestH\x01\x88\x01\x01\x12\x33\n\x08metadata\x18\x15 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequestH\x02\x88\x01\x01\x12+\n\x08group_by\x18\x16 \x01(\x0b\x32\x14.weaviate.v1.GroupByH\x03\x88\x01\x01\x12\r\n\x05limit\x18\x1e \x01(\r\x12\x0e\n\x06offset\x18\x1f \x01(\r\x12\x0f\n\x07\x61utocut\x18 \x01(\r\x12\r\n\x05\x61\x66ter\x18! \x01(\t\x12$\n\x07sort_by\x18" \x03(\x0b\x32\x13.weaviate.v1.SortBy\x12*\n\x07\x66ilters\x18( \x01(\x0b\x32\x14.weaviate.v1.FiltersH\x04\x88\x01\x01\x12/\n\rhybrid_search\x18) \x01(\x0b\x32\x13.weaviate.v1.HybridH\x05\x88\x01\x01\x12+\n\x0b\x62m25_search\x18* \x01(\x0b\x32\x11.weaviate.v1.BM25H\x06\x88\x01\x01\x12\x31\n\x0bnear_vector\x18+ \x01(\x0b\x32\x17.weaviate.v1.NearVectorH\x07\x88\x01\x01\x12\x31\n\x0bnear_object\x18, \x01(\x0b\x32\x17.weaviate.v1.NearObjectH\x08\x88\x01\x01\x12\x33\n\tnear_text\x18- \x01(\x0b\x32\x1b.weaviate.v1.NearTextSearchH\t\x88\x01\x01\x12\x35\n\nnear_image\x18. \x01(\x0b\x32\x1c.weaviate.v1.NearImageSearchH\n\x88\x01\x01\x12\x35\n\nnear_audio\x18/ \x01(\x0b\x32\x1c.weaviate.v1.NearAudioSearchH\x0b\x88\x01\x01\x12\x35\n\nnear_video\x18\x30 \x01(\x0b\x32\x1c.weaviate.v1.NearVideoSearchH\x0c\x88\x01\x01\x12\x36\n\ngenerative\x18< \x01(\x0b\x32\x1d.weaviate.v1.GenerativeSearchH\r\x88\x01\x01\x12(\n\x06rerank\x18= \x01(\x0b\x32\x13.weaviate.v1.RerankH\x0e\x88\x01\x01\x12\x18\n\x0cuses_123_api\x18\x64 \x01(\x08\x42\x02\x18\x01\x42\x14\n\x12_consistency_levelB\r\n\x0b_propertiesB\x0b\n\t_metadataB\x0b\n\t_group_byB\n\n\x08_filtersB\x10\n\x0e_hybrid_searchB\x0e\n\x0c_bm25_searchB\x0e\n\x0c_near_vectorB\x0e\n\x0c_near_objectB\x0c\n\n_near_textB\r\n\x0b_near_imageB\r\n\x0b_near_audioB\r\n\x0b_near_videoB\r\n\x0b_generativeB\t\n\x07_rerank"L\n\x07GroupBy\x12\x0c\n\x04path\x18\x01 \x03(\t\x12\x18\n\x10number_of_groups\x18\x02 \x01(\x05\x12\x19\n\x11objects_per_group\x18\x03 \x01(\x05")\n\x06SortBy\x12\x11\n\tascending\x18\x01 \x01(\x08\x12\x0c\n\x04path\x18\x02 \x03(\t"m\n\x10GenerativeSearch\x12\x1e\n\x16single_response_prompt\x18\x01 \x01(\t\x12\x1d\n\x15grouped_response_task\x18\x02 \x01(\t\x12\x1a\n\x12grouped_properties\x18\x03 \x03(\t"\xcc\x01\n\x0fMetadataRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x08\x12\x0e\n\x06vector\x18\x02 \x01(\x08\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x04 \x01(\x08\x12\x10\n\x08\x64istance\x18\x05 \x01(\x08\x12\x11\n\tcertainty\x18\x06 \x01(\x08\x12\r\n\x05score\x18\x07 \x01(\x08\x12\x15\n\rexplain_score\x18\x08 \x01(\x08\x12\x15\n\ris_consistent\x18\t \x01(\x08"\xd1\x01\n\x11PropertiesRequest\x12\x1a\n\x12non_ref_properties\x18\x01 \x03(\t\x12\x39\n\x0eref_properties\x18\x02 \x03(\x0b\x32!.weaviate.v1.RefPropertiesRequest\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\x12$\n\x1creturn_all_nonref_properties\x18\x0b \x01(\x08"\x8b\x01\n\x17ObjectPropertiesRequest\x12\x11\n\tprop_name\x18\x01 \x01(\t\x12\x1c\n\x14primitive_properties\x18\x02 \x03(\t\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest"\xfc\x01\n\x06Hybrid\x12\r\n\x05query\x18\x01 \x01(\t\x12\x12\n\nproperties\x18\x02 \x03(\t\x12\x12\n\x06vector\x18\x03 \x03(\x02\x42\x02\x18\x01\x12\r\n\x05\x61lpha\x18\x04 \x01(\x02\x12\x33\n\x0b\x66usion_type\x18\x05 \x01(\x0e\x32\x1e.weaviate.v1.Hybrid.FusionType\x12\x14\n\x0cvector_bytes\x18\x06 \x01(\x0c"a\n\nFusionType\x12\x1b\n\x17\x46USION_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12\x46USION_TYPE_RANKED\x10\x01\x12\x1e\n\x1a\x46USION_TYPE_RELATIVE_SCORE\x10\x02"\xad\x02\n\x0eNearTextSearch\x12\r\n\x05query\x18\x01 \x03(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x12\x36\n\x07move_to\x18\x04 \x01(\x0b\x32 .weaviate.v1.NearTextSearch.MoveH\x02\x88\x01\x01\x12\x38\n\tmove_away\x18\x05 \x01(\x0b\x32 .weaviate.v1.NearTextSearch.MoveH\x03\x88\x01\x01\x1a\x36\n\x04Move\x12\r\n\x05\x66orce\x18\x01 \x01(\x02\x12\x10\n\x08\x63oncepts\x18\x02 \x03(\t\x12\r\n\x05uuids\x18\x03 \x03(\tB\x0c\n\n_certaintyB\x0b\n\t_distanceB\n\n\x08_move_toB\x0c\n\n_move_away"j\n\x0fNearImageSearch\x12\r\n\x05image\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance"j\n\x0fNearAudioSearch\x12\r\n\x05\x61udio\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance"j\n\x0fNearVideoSearch\x12\r\n\x05video\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance")\n\x04\x42M25\x12\r\n\x05query\x18\x01 \x01(\t\x12\x12\n\nproperties\x18\x02 \x03(\t"\xb1\x01\n\x14RefPropertiesRequest\x12\x1a\n\x12reference_property\x18\x01 \x01(\t\x12\x32\n\nproperties\x18\x02 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequest\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequest\x12\x19\n\x11target_collection\x18\x04 \x01(\t"\x80\x01\n\nNearVector\x12\x12\n\x06vector\x18\x01 \x03(\x02\x42\x02\x18\x01\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x12\x14\n\x0cvector_bytes\x18\x04 \x01(\x0c\x42\x0c\n\n_certaintyB\x0b\n\t_distance"b\n\nNearObject\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance"8\n\x06Rerank\x12\x10\n\x08property\x18\x01 \x01(\t\x12\x12\n\x05query\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_query"\xc3\x01\n\x0bSearchReply\x12\x0c\n\x04took\x18\x01 \x01(\x02\x12*\n\x07results\x18\x02 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12&\n\x19generative_grouped_result\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x34\n\x10group_by_results\x18\x04 \x03(\x0b\x32\x1a.weaviate.v1.GroupByResultB\x1c\n\x1a_generative_grouped_result"\x1c\n\x0bRerankReply\x12\r\n\x05score\x18\x01 \x01(\x01"!\n\x0fGenerativeReply\x12\x0e\n\x06result\x18\x01 \x01(\t"\x90\x02\n\rGroupByResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0cmin_distance\x18\x02 \x01(\x02\x12\x14\n\x0cmax_distance\x18\x03 \x01(\x02\x12\x19\n\x11number_of_objects\x18\x04 \x01(\x03\x12*\n\x07objects\x18\x05 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12-\n\x06rerank\x18\x06 \x01(\x0b\x32\x18.weaviate.v1.RerankReplyH\x00\x88\x01\x01\x12\x35\n\ngenerative\x18\x07 \x01(\x0b\x32\x1c.weaviate.v1.GenerativeReplyH\x01\x88\x01\x01\x42\t\n\x07_rerankB\r\n\x0b_generative"p\n\x0cSearchResult\x12\x31\n\nproperties\x18\x01 \x01(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult"\xc8\x04\n\x0eMetadataResult\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\x06vector\x18\x02 \x03(\x02\x42\x02\x18\x01\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x03\x12"\n\x1a\x63reation_time_unix_present\x18\x04 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x05 \x01(\x03\x12%\n\x1dlast_update_time_unix_present\x18\x06 \x01(\x08\x12\x10\n\x08\x64istance\x18\x07 \x01(\x02\x12\x18\n\x10\x64istance_present\x18\x08 \x01(\x08\x12\x11\n\tcertainty\x18\t \x01(\x02\x12\x19\n\x11\x63\x65rtainty_present\x18\n \x01(\x08\x12\r\n\x05score\x18\x0b \x01(\x02\x12\x15\n\rscore_present\x18\x0c \x01(\x08\x12\x15\n\rexplain_score\x18\r \x01(\t\x12\x1d\n\x15\x65xplain_score_present\x18\x0e \x01(\x08\x12\x1a\n\ris_consistent\x18\x0f \x01(\x08H\x00\x88\x01\x01\x12\x12\n\ngenerative\x18\x10 \x01(\t\x12\x1a\n\x12generative_present\x18\x11 \x01(\x08\x12\x1d\n\x15is_consistent_present\x18\x12 \x01(\x08\x12\x14\n\x0cvector_bytes\x18\x13 \x01(\x0c\x12\x13\n\x0bid_as_bytes\x18\x14 \x01(\x0c\x12\x14\n\x0crerank_score\x18\x15 \x01(\x01\x12\x1c\n\x14rerank_score_present\x18\x16 \x01(\x08\x42\x10\n\x0e_is_consistent"\xb8\x05\n\x10PropertiesResult\x12\x37\n\x12non_ref_properties\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\x02\x18\x01\x12\x33\n\tref_props\x18\x02 \x03(\x0b\x32 .weaviate.v1.RefPropertiesResult\x12\x19\n\x11target_collection\x18\x03 \x01(\t\x12-\n\x08metadata\x18\x04 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12G\n\x17number_array_properties\x18\x05 \x03(\x0b\x32".weaviate.v1.NumberArrayPropertiesB\x02\x18\x01\x12\x41\n\x14int_array_properties\x18\x06 \x03(\x0b\x32\x1f.weaviate.v1.IntArrayPropertiesB\x02\x18\x01\x12\x43\n\x15text_array_properties\x18\x07 \x03(\x0b\x32 .weaviate.v1.TextArrayPropertiesB\x02\x18\x01\x12I\n\x18\x62oolean_array_properties\x18\x08 \x03(\x0b\x32#.weaviate.v1.BooleanArrayPropertiesB\x02\x18\x01\x12<\n\x11object_properties\x18\t \x03(\x0b\x32\x1d.weaviate.v1.ObjectPropertiesB\x02\x18\x01\x12G\n\x17object_array_properties\x18\n \x03(\x0b\x32".weaviate.v1.ObjectArrayPropertiesB\x02\x18\x01\x12.\n\rnon_ref_props\x18\x0b \x01(\x0b\x32\x17.weaviate.v1.Properties\x12\x19\n\x11ref_props_present\x18\x0c \x01(\x08"[\n\x13RefPropertiesResult\x12\x31\n\nproperties\x18\x01 \x03(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12\x11\n\tprop_name\x18\x02 \x01(\tBs\n#io.weaviate.client.grpc.protocol.v1B\x16WeaviateProtoSearchGetZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3' ) _globals = globals() @@ -57,64 +57,50 @@ _globals["_SORTBY"]._serialized_end = 1402 _globals["_GENERATIVESEARCH"]._serialized_start = 1404 _globals["_GENERATIVESEARCH"]._serialized_end = 1513 - _globals["_TEXTARRAY"]._serialized_start = 1515 - _globals["_TEXTARRAY"]._serialized_end = 1542 - _globals["_INTARRAY"]._serialized_start = 1544 - _globals["_INTARRAY"]._serialized_end = 1570 - _globals["_NUMBERARRAY"]._serialized_start = 1572 - _globals["_NUMBERARRAY"]._serialized_end = 1601 - _globals["_BOOLEANARRAY"]._serialized_start = 1603 - _globals["_BOOLEANARRAY"]._serialized_end = 1633 - _globals["_FILTERS"]._serialized_start = 1636 - _globals["_FILTERS"]._serialized_end = 2481 - _globals["_FILTERS_OPERATOR"]._serialized_start = 2112 - _globals["_FILTERS_OPERATOR"]._serialized_end = 2467 - _globals["_GEOCOORDINATESFILTER"]._serialized_start = 2483 - _globals["_GEOCOORDINATESFILTER"]._serialized_end = 2560 - _globals["_METADATAREQUEST"]._serialized_start = 2563 - _globals["_METADATAREQUEST"]._serialized_end = 2767 - _globals["_PROPERTIESREQUEST"]._serialized_start = 2770 - _globals["_PROPERTIESREQUEST"]._serialized_end = 2979 - _globals["_OBJECTPROPERTIESREQUEST"]._serialized_start = 2982 - _globals["_OBJECTPROPERTIESREQUEST"]._serialized_end = 3121 - _globals["_HYBRID"]._serialized_start = 3124 - _globals["_HYBRID"]._serialized_end = 3376 - _globals["_HYBRID_FUSIONTYPE"]._serialized_start = 3279 - _globals["_HYBRID_FUSIONTYPE"]._serialized_end = 3376 - _globals["_NEARTEXTSEARCH"]._serialized_start = 3379 - _globals["_NEARTEXTSEARCH"]._serialized_end = 3680 - _globals["_NEARTEXTSEARCH_MOVE"]._serialized_start = 3573 - _globals["_NEARTEXTSEARCH_MOVE"]._serialized_end = 3627 - _globals["_NEARIMAGESEARCH"]._serialized_start = 3682 - _globals["_NEARIMAGESEARCH"]._serialized_end = 3788 - _globals["_NEARAUDIOSEARCH"]._serialized_start = 3790 - _globals["_NEARAUDIOSEARCH"]._serialized_end = 3896 - _globals["_NEARVIDEOSEARCH"]._serialized_start = 3898 - _globals["_NEARVIDEOSEARCH"]._serialized_end = 4004 - _globals["_BM25"]._serialized_start = 4006 - _globals["_BM25"]._serialized_end = 4047 - _globals["_REFPROPERTIESREQUEST"]._serialized_start = 4050 - _globals["_REFPROPERTIESREQUEST"]._serialized_end = 4227 - _globals["_NEARVECTOR"]._serialized_start = 4230 - _globals["_NEARVECTOR"]._serialized_end = 4358 - _globals["_NEAROBJECT"]._serialized_start = 4360 - _globals["_NEAROBJECT"]._serialized_end = 4458 - _globals["_RERANK"]._serialized_start = 4460 - _globals["_RERANK"]._serialized_end = 4516 - _globals["_SEARCHREPLY"]._serialized_start = 4519 - _globals["_SEARCHREPLY"]._serialized_end = 4714 - _globals["_RERANKREPLY"]._serialized_start = 4716 - _globals["_RERANKREPLY"]._serialized_end = 4744 - _globals["_GENERATIVEREPLY"]._serialized_start = 4746 - _globals["_GENERATIVEREPLY"]._serialized_end = 4779 - _globals["_GROUPBYRESULT"]._serialized_start = 4782 - _globals["_GROUPBYRESULT"]._serialized_end = 5054 - _globals["_SEARCHRESULT"]._serialized_start = 5056 - _globals["_SEARCHRESULT"]._serialized_end = 5168 - _globals["_METADATARESULT"]._serialized_start = 5171 - _globals["_METADATARESULT"]._serialized_end = 5755 - _globals["_PROPERTIESRESULT"]._serialized_start = 5758 - _globals["_PROPERTIESRESULT"]._serialized_end = 6427 - _globals["_REFPROPERTIESRESULT"]._serialized_start = 6429 - _globals["_REFPROPERTIESRESULT"]._serialized_end = 6520 + _globals["_METADATAREQUEST"]._serialized_start = 1516 + _globals["_METADATAREQUEST"]._serialized_end = 1720 + _globals["_PROPERTIESREQUEST"]._serialized_start = 1723 + _globals["_PROPERTIESREQUEST"]._serialized_end = 1932 + _globals["_OBJECTPROPERTIESREQUEST"]._serialized_start = 1935 + _globals["_OBJECTPROPERTIESREQUEST"]._serialized_end = 2074 + _globals["_HYBRID"]._serialized_start = 2077 + _globals["_HYBRID"]._serialized_end = 2329 + _globals["_HYBRID_FUSIONTYPE"]._serialized_start = 2232 + _globals["_HYBRID_FUSIONTYPE"]._serialized_end = 2329 + _globals["_NEARTEXTSEARCH"]._serialized_start = 2332 + _globals["_NEARTEXTSEARCH"]._serialized_end = 2633 + _globals["_NEARTEXTSEARCH_MOVE"]._serialized_start = 2526 + _globals["_NEARTEXTSEARCH_MOVE"]._serialized_end = 2580 + _globals["_NEARIMAGESEARCH"]._serialized_start = 2635 + _globals["_NEARIMAGESEARCH"]._serialized_end = 2741 + _globals["_NEARAUDIOSEARCH"]._serialized_start = 2743 + _globals["_NEARAUDIOSEARCH"]._serialized_end = 2849 + _globals["_NEARVIDEOSEARCH"]._serialized_start = 2851 + _globals["_NEARVIDEOSEARCH"]._serialized_end = 2957 + _globals["_BM25"]._serialized_start = 2959 + _globals["_BM25"]._serialized_end = 3000 + _globals["_REFPROPERTIESREQUEST"]._serialized_start = 3003 + _globals["_REFPROPERTIESREQUEST"]._serialized_end = 3180 + _globals["_NEARVECTOR"]._serialized_start = 3183 + _globals["_NEARVECTOR"]._serialized_end = 3311 + _globals["_NEAROBJECT"]._serialized_start = 3313 + _globals["_NEAROBJECT"]._serialized_end = 3411 + _globals["_RERANK"]._serialized_start = 3413 + _globals["_RERANK"]._serialized_end = 3469 + _globals["_SEARCHREPLY"]._serialized_start = 3472 + _globals["_SEARCHREPLY"]._serialized_end = 3667 + _globals["_RERANKREPLY"]._serialized_start = 3669 + _globals["_RERANKREPLY"]._serialized_end = 3697 + _globals["_GENERATIVEREPLY"]._serialized_start = 3699 + _globals["_GENERATIVEREPLY"]._serialized_end = 3732 + _globals["_GROUPBYRESULT"]._serialized_start = 3735 + _globals["_GROUPBYRESULT"]._serialized_end = 4007 + _globals["_SEARCHRESULT"]._serialized_start = 4009 + _globals["_SEARCHRESULT"]._serialized_end = 4121 + _globals["_METADATARESULT"]._serialized_start = 4124 + _globals["_METADATARESULT"]._serialized_end = 4708 + _globals["_PROPERTIESRESULT"]._serialized_start = 4711 + _globals["_PROPERTIESRESULT"]._serialized_end = 5407 + _globals["_REFPROPERTIESRESULT"]._serialized_start = 5409 + _globals["_REFPROPERTIESRESULT"]._serialized_end = 5500 # @@protoc_insertion_point(module_scope) diff --git a/weaviate/proto/v1/search_get_pb2.pyi b/weaviate/proto/v1/search_get_pb2.pyi index 5f8289800..a641a4d47 100644 --- a/weaviate/proto/v1/search_get_pb2.pyi +++ b/weaviate/proto/v1/search_get_pb2.pyi @@ -75,7 +75,7 @@ class SearchRequest(_message.Message): autocut: int after: str sort_by: _containers.RepeatedCompositeFieldContainer[SortBy] - filters: Filters + filters: _base_pb2.Filters hybrid_search: Hybrid bm25_search: BM25 near_vector: NearVector @@ -100,7 +100,7 @@ class SearchRequest(_message.Message): autocut: _Optional[int] = ..., after: _Optional[str] = ..., sort_by: _Optional[_Iterable[_Union[SortBy, _Mapping]]] = ..., - filters: _Optional[_Union[Filters, _Mapping]] = ..., + filters: _Optional[_Union[_base_pb2.Filters, _Mapping]] = ..., hybrid_search: _Optional[_Union[Hybrid, _Mapping]] = ..., bm25_search: _Optional[_Union[BM25, _Mapping]] = ..., near_vector: _Optional[_Union[NearVector, _Mapping]] = ..., @@ -152,131 +152,6 @@ class GenerativeSearch(_message.Message): grouped_properties: _Optional[_Iterable[str]] = ..., ) -> None: ... -class TextArray(_message.Message): - __slots__ = ["values"] - VALUES_FIELD_NUMBER: _ClassVar[int] - values: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, values: _Optional[_Iterable[str]] = ...) -> None: ... - -class IntArray(_message.Message): - __slots__ = ["values"] - VALUES_FIELD_NUMBER: _ClassVar[int] - values: _containers.RepeatedScalarFieldContainer[int] - def __init__(self, values: _Optional[_Iterable[int]] = ...) -> None: ... - -class NumberArray(_message.Message): - __slots__ = ["values"] - VALUES_FIELD_NUMBER: _ClassVar[int] - values: _containers.RepeatedScalarFieldContainer[float] - def __init__(self, values: _Optional[_Iterable[float]] = ...) -> None: ... - -class BooleanArray(_message.Message): - __slots__ = ["values"] - VALUES_FIELD_NUMBER: _ClassVar[int] - values: _containers.RepeatedScalarFieldContainer[bool] - def __init__(self, values: _Optional[_Iterable[bool]] = ...) -> None: ... - -class Filters(_message.Message): - __slots__ = [ - "operator", - "on", - "filters", - "value_text", - "value_int", - "value_boolean", - "value_number", - "value_text_array", - "value_int_array", - "value_boolean_array", - "value_number_array", - "value_geo", - ] - - class Operator(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - OPERATOR_UNSPECIFIED: _ClassVar[Filters.Operator] - OPERATOR_EQUAL: _ClassVar[Filters.Operator] - OPERATOR_NOT_EQUAL: _ClassVar[Filters.Operator] - OPERATOR_GREATER_THAN: _ClassVar[Filters.Operator] - OPERATOR_GREATER_THAN_EQUAL: _ClassVar[Filters.Operator] - OPERATOR_LESS_THAN: _ClassVar[Filters.Operator] - OPERATOR_LESS_THAN_EQUAL: _ClassVar[Filters.Operator] - OPERATOR_AND: _ClassVar[Filters.Operator] - OPERATOR_OR: _ClassVar[Filters.Operator] - OPERATOR_WITHIN_GEO_RANGE: _ClassVar[Filters.Operator] - OPERATOR_LIKE: _ClassVar[Filters.Operator] - OPERATOR_IS_NULL: _ClassVar[Filters.Operator] - OPERATOR_CONTAINS_ANY: _ClassVar[Filters.Operator] - OPERATOR_CONTAINS_ALL: _ClassVar[Filters.Operator] - OPERATOR_UNSPECIFIED: Filters.Operator - OPERATOR_EQUAL: Filters.Operator - OPERATOR_NOT_EQUAL: Filters.Operator - OPERATOR_GREATER_THAN: Filters.Operator - OPERATOR_GREATER_THAN_EQUAL: Filters.Operator - OPERATOR_LESS_THAN: Filters.Operator - OPERATOR_LESS_THAN_EQUAL: Filters.Operator - OPERATOR_AND: Filters.Operator - OPERATOR_OR: Filters.Operator - OPERATOR_WITHIN_GEO_RANGE: Filters.Operator - OPERATOR_LIKE: Filters.Operator - OPERATOR_IS_NULL: Filters.Operator - OPERATOR_CONTAINS_ANY: Filters.Operator - OPERATOR_CONTAINS_ALL: Filters.Operator - OPERATOR_FIELD_NUMBER: _ClassVar[int] - ON_FIELD_NUMBER: _ClassVar[int] - FILTERS_FIELD_NUMBER: _ClassVar[int] - VALUE_TEXT_FIELD_NUMBER: _ClassVar[int] - VALUE_INT_FIELD_NUMBER: _ClassVar[int] - VALUE_BOOLEAN_FIELD_NUMBER: _ClassVar[int] - VALUE_NUMBER_FIELD_NUMBER: _ClassVar[int] - VALUE_TEXT_ARRAY_FIELD_NUMBER: _ClassVar[int] - VALUE_INT_ARRAY_FIELD_NUMBER: _ClassVar[int] - VALUE_BOOLEAN_ARRAY_FIELD_NUMBER: _ClassVar[int] - VALUE_NUMBER_ARRAY_FIELD_NUMBER: _ClassVar[int] - VALUE_GEO_FIELD_NUMBER: _ClassVar[int] - operator: Filters.Operator - on: _containers.RepeatedScalarFieldContainer[str] - filters: _containers.RepeatedCompositeFieldContainer[Filters] - value_text: str - value_int: int - value_boolean: bool - value_number: float - value_text_array: TextArray - value_int_array: IntArray - value_boolean_array: BooleanArray - value_number_array: NumberArray - value_geo: GeoCoordinatesFilter - def __init__( - self, - operator: _Optional[_Union[Filters.Operator, str]] = ..., - on: _Optional[_Iterable[str]] = ..., - filters: _Optional[_Iterable[_Union[Filters, _Mapping]]] = ..., - value_text: _Optional[str] = ..., - value_int: _Optional[int] = ..., - value_boolean: bool = ..., - value_number: _Optional[float] = ..., - value_text_array: _Optional[_Union[TextArray, _Mapping]] = ..., - value_int_array: _Optional[_Union[IntArray, _Mapping]] = ..., - value_boolean_array: _Optional[_Union[BooleanArray, _Mapping]] = ..., - value_number_array: _Optional[_Union[NumberArray, _Mapping]] = ..., - value_geo: _Optional[_Union[GeoCoordinatesFilter, _Mapping]] = ..., - ) -> None: ... - -class GeoCoordinatesFilter(_message.Message): - __slots__ = ["latitude", "longitude", "distance"] - LATITUDE_FIELD_NUMBER: _ClassVar[int] - LONGITUDE_FIELD_NUMBER: _ClassVar[int] - DISTANCE_FIELD_NUMBER: _ClassVar[int] - latitude: float - longitude: float - distance: float - def __init__( - self, - latitude: _Optional[float] = ..., - longitude: _Optional[float] = ..., - distance: _Optional[float] = ..., - ) -> None: ... - class MetadataRequest(_message.Message): __slots__ = [ "uuid", @@ -726,6 +601,7 @@ class PropertiesResult(_message.Message): "object_properties", "object_array_properties", "non_ref_props", + "ref_props_present", ] NON_REF_PROPERTIES_FIELD_NUMBER: _ClassVar[int] REF_PROPS_FIELD_NUMBER: _ClassVar[int] @@ -738,6 +614,7 @@ class PropertiesResult(_message.Message): OBJECT_PROPERTIES_FIELD_NUMBER: _ClassVar[int] OBJECT_ARRAY_PROPERTIES_FIELD_NUMBER: _ClassVar[int] NON_REF_PROPS_FIELD_NUMBER: _ClassVar[int] + REF_PROPS_PRESENT_FIELD_NUMBER: _ClassVar[int] non_ref_properties: _struct_pb2.Struct ref_props: _containers.RepeatedCompositeFieldContainer[RefPropertiesResult] target_collection: str @@ -757,6 +634,7 @@ class PropertiesResult(_message.Message): _base_pb2.ObjectArrayProperties ] non_ref_props: _properties_pb2.Properties + ref_props_present: bool def __init__( self, non_ref_properties: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., @@ -780,6 +658,7 @@ class PropertiesResult(_message.Message): _Iterable[_Union[_base_pb2.ObjectArrayProperties, _Mapping]] ] = ..., non_ref_props: _Optional[_Union[_properties_pb2.Properties, _Mapping]] = ..., + ref_props_present: bool = ..., ) -> None: ... class RefPropertiesResult(_message.Message): diff --git a/weaviate/proto/v1/weaviate_pb2.py b/weaviate/proto/v1/weaviate_pb2.py index 1aa23c989..fe5c0269c 100644 --- a/weaviate/proto/v1/weaviate_pb2.py +++ b/weaviate/proto/v1/weaviate_pb2.py @@ -13,11 +13,12 @@ from weaviate.proto.v1 import batch_pb2 as v1_dot_batch__pb2 +from weaviate.proto.v1 import batch_delete_pb2 as v1_dot_batch__delete__pb2 from weaviate.proto.v1 import search_get_pb2 as v1_dot_search__get__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x11v1/weaviate.proto\x12\x0bweaviate.v1\x1a\x0ev1/batch.proto\x1a\x13v1/search_get.proto2\xa0\x01\n\x08Weaviate\x12@\n\x06Search\x12\x1a.weaviate.v1.SearchRequest\x1a\x18.weaviate.v1.SearchReply"\x00\x12R\n\x0c\x42\x61tchObjects\x12 .weaviate.v1.BatchObjectsRequest\x1a\x1e.weaviate.v1.BatchObjectsReply"\x00\x42j\n#io.weaviate.client.grpc.protocol.v1B\rWeaviateProtoZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3' + b'\n\x11v1/weaviate.proto\x12\x0bweaviate.v1\x1a\x0ev1/batch.proto\x1a\x15v1/batch_delete.proto\x1a\x13v1/search_get.proto2\xf1\x01\n\x08Weaviate\x12@\n\x06Search\x12\x1a.weaviate.v1.SearchRequest\x1a\x18.weaviate.v1.SearchReply"\x00\x12R\n\x0c\x42\x61tchObjects\x12 .weaviate.v1.BatchObjectsRequest\x1a\x1e.weaviate.v1.BatchObjectsReply"\x00\x12O\n\x0b\x42\x61tchDelete\x12\x1f.weaviate.v1.BatchDeleteRequest\x1a\x1d.weaviate.v1.BatchDeleteReply"\x00\x42j\n#io.weaviate.client.grpc.protocol.v1B\rWeaviateProtoZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3' ) _globals = globals() @@ -26,6 +27,6 @@ if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b"\n#io.weaviate.client.grpc.protocol.v1B\rWeaviateProtoZ4github.com/weaviate/weaviate/grpc/generated;protocol" - _globals["_WEAVIATE"]._serialized_start = 72 - _globals["_WEAVIATE"]._serialized_end = 232 + _globals["_WEAVIATE"]._serialized_start = 95 + _globals["_WEAVIATE"]._serialized_end = 336 # @@protoc_insertion_point(module_scope) diff --git a/weaviate/proto/v1/weaviate_pb2.pyi b/weaviate/proto/v1/weaviate_pb2.pyi index cbe50f11b..1c2ecbb97 100644 --- a/weaviate/proto/v1/weaviate_pb2.pyi +++ b/weaviate/proto/v1/weaviate_pb2.pyi @@ -1,4 +1,5 @@ from weaviate.proto.v1 import batch_pb2 as _batch_pb2 +from weaviate.proto.v1 import batch_delete_pb2 as _batch_delete_pb2 from weaviate.proto.v1 import search_get_pb2 as _search_get_pb2 from google.protobuf import descriptor as _descriptor from typing import ClassVar as _ClassVar diff --git a/weaviate/proto/v1/weaviate_pb2_grpc.py b/weaviate/proto/v1/weaviate_pb2_grpc.py index b17f49ebf..f01c7e63f 100644 --- a/weaviate/proto/v1/weaviate_pb2_grpc.py +++ b/weaviate/proto/v1/weaviate_pb2_grpc.py @@ -2,6 +2,7 @@ """Client and server classes corresponding to protobuf-defined services.""" import grpc +from weaviate.proto.v1 import batch_delete_pb2 as v1_dot_batch__delete__pb2 from weaviate.proto.v1 import batch_pb2 as v1_dot_batch__pb2 from weaviate.proto.v1 import search_get_pb2 as v1_dot_search__get__pb2 @@ -25,6 +26,11 @@ def __init__(self, channel): request_serializer=v1_dot_batch__pb2.BatchObjectsRequest.SerializeToString, response_deserializer=v1_dot_batch__pb2.BatchObjectsReply.FromString, ) + self.BatchDelete = channel.unary_unary( + "/weaviate.v1.Weaviate/BatchDelete", + request_serializer=v1_dot_batch__delete__pb2.BatchDeleteRequest.SerializeToString, + response_deserializer=v1_dot_batch__delete__pb2.BatchDeleteReply.FromString, + ) class WeaviateServicer(object): @@ -42,6 +48,12 @@ def BatchObjects(self, request, context): context.set_details("Method not implemented!") raise NotImplementedError("Method not implemented!") + def BatchDelete(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + def add_WeaviateServicer_to_server(servicer, server): rpc_method_handlers = { @@ -55,6 +67,11 @@ def add_WeaviateServicer_to_server(servicer, server): request_deserializer=v1_dot_batch__pb2.BatchObjectsRequest.FromString, response_serializer=v1_dot_batch__pb2.BatchObjectsReply.SerializeToString, ), + "BatchDelete": grpc.unary_unary_rpc_method_handler( + servicer.BatchDelete, + request_deserializer=v1_dot_batch__delete__pb2.BatchDeleteRequest.FromString, + response_serializer=v1_dot_batch__delete__pb2.BatchDeleteReply.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( "weaviate.v1.Weaviate", rpc_method_handlers @@ -123,3 +140,32 @@ def BatchObjects( timeout, metadata, ) + + @staticmethod + def BatchDelete( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/weaviate.v1.Weaviate/BatchDelete", + v1_dot_batch__delete__pb2.BatchDeleteRequest.SerializeToString, + v1_dot_batch__delete__pb2.BatchDeleteReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) From c78047728d79803b3515c5a5665568989ccc76c3 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Thu, 11 Jan 2024 17:49:05 +0000 Subject: [PATCH 2/7] parse ref props when len == 0 & | is_present --- integration/test_collection_references.py | 16 ++++++++++++++++ weaviate/collections/queries/base.py | 12 +++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/integration/test_collection_references.py b/integration/test_collection_references.py index 06a062cbf..ffb6841af 100644 --- a/integration/test_collection_references.py +++ b/integration/test_collection_references.py @@ -753,3 +753,19 @@ def test_ref_case_sensitivity(collection_factory: CollectionFactory) -> None: uid, return_references=[QueryReference(link_on="ref")] ) assert "ref" in obj.references + + +def test_empty_return_reference(collection_factory: CollectionFactory) -> None: + to = collection_factory(name="To", vectorizer_config=Configure.Vectorizer.none()) + source = collection_factory( + name="From", + references=[ + ReferenceProperty(name="ref", target_collection=to.name), + ], + vectorizer_config=Configure.Vectorizer.none(), + ) + uuid_source = source.data.insert(properties={}) + obj = source.query.fetch_object_by_id( + uuid_source, return_references=[QueryReference(link_on="ref")] + ) + assert obj.references == {} diff --git a/weaviate/collections/queries/base.py b/weaviate/collections/queries/base.py index f820614af..fa9cc2130 100644 --- a/weaviate/collections/queries/base.py +++ b/weaviate/collections/queries/base.py @@ -213,10 +213,12 @@ def __parse_nonref_properties_result( } def __parse_ref_properties_result( - self, properties: RepeatedCompositeFieldContainer[search_get_pb2.RefPropertiesResult] + self, + properties: RepeatedCompositeFieldContainer[search_get_pb2.RefPropertiesResult], + is_present: bool, ) -> Optional[dict]: if len(properties) == 0: - return None + return {} if is_present else None return { ref_prop.prop_name: _CrossReference._from( [ @@ -325,7 +327,7 @@ def __result_to_query_object( if options.include_metadata else _MetadataReturn(), references=( - self.__parse_ref_properties_result(props.ref_props) + self.__parse_ref_properties_result(props.ref_props, props.ref_props_present) if self._is_weaviate_version_123 else self.__parse_ref_properties_result_122(props) ) @@ -354,7 +356,7 @@ def __result_to_generative_object( if options.include_metadata else _MetadataReturn(), references=( - self.__parse_ref_properties_result(props.ref_props) + self.__parse_ref_properties_result(props.ref_props, props.ref_props_present) if self._is_weaviate_version_123 else self.__parse_ref_properties_result_122(props) ) @@ -419,7 +421,7 @@ def __result_to_group_by_object( if options.include_metadata else _GroupByMetadataReturn(), references=( - self.__parse_ref_properties_result(props.ref_props) + self.__parse_ref_properties_result(props.ref_props, props.ref_props_present) if self._is_weaviate_version_123 else self.__parse_ref_properties_result_122(props) ) From 166340481158ab0c47fca6f9d85bb61243745a41 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Thu, 11 Jan 2024 18:23:24 +0000 Subject: [PATCH 3/7] update ci image --- .github/workflows/main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index b8325112a..54616bb6c 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -15,7 +15,7 @@ on: env: OLD_WEAVIATE_VERSION: 1.22.6 - NEW_WEAVIATE_VERSION: preview-fix-uuid-casing-for-references-added-with-object-single-refs-and-bat-3e69acc + NEW_WEAVIATE_VERSION: preview-allow-discerning-between-nil-and-in-ref-props-ab9ec28 jobs: lint-and-format: From b14acdac4aa04cb6598fffaacc835c0157abe92a Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Thu, 11 Jan 2024 18:27:43 +0000 Subject: [PATCH 4/7] fix bad old tests --- integration/test_collection.py | 2 +- integration/test_collection_references.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/integration/test_collection.py b/integration/test_collection.py index f4340648c..c91d339ca 100644 --- a/integration/test_collection.py +++ b/integration/test_collection.py @@ -957,7 +957,7 @@ def test_add_reference(collection_factory: CollectionFactory) -> None: uuid2, return_properties=["name"], return_references=FromReference(link_on="self") ) assert "name" in obj1.properties - assert obj1.references is None + assert obj1.references == {} assert "name" in obj2.properties assert "self" in obj2.references diff --git a/integration/test_collection_references.py b/integration/test_collection_references.py index ffb6841af..099c5ac42 100644 --- a/integration/test_collection_references.py +++ b/integration/test_collection_references.py @@ -568,7 +568,7 @@ def test_insert_many_with_refs(collection_factory: CollectionFactory) -> None: return_properties=["name"], return_references=FromReference(link_on="self") ).objects: if obj.properties["name"] in ["A", "B"]: - assert obj.references is None + assert obj.references == {} else: assert obj.references is not None @@ -764,6 +764,10 @@ def test_empty_return_reference(collection_factory: CollectionFactory) -> None: ], vectorizer_config=Configure.Vectorizer.none(), ) + if not source._connection._weaviate_version.is_at_least( + 1, 23, 2 + ): # TODO: change this to 1.23.3 when it is released + pytest.skip("references return empty object only supported in 1.23.3+") uuid_source = source.data.insert(properties={}) obj = source.query.fetch_object_by_id( uuid_source, return_references=[QueryReference(link_on="ref")] From f2f794edfc3e7ece5fb2e89f99192f0830c0b1f3 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 12 Jan 2024 13:46:02 +0000 Subject: [PATCH 5/7] update to use latest Weaviate image with changes --- .github/workflows/main.yaml | 2 +- integration/test_collection.py | 6 +++++- integration/test_collection_references.py | 14 +++++++++----- weaviate/collections/queries/base.py | 17 ++++++++--------- weaviate/proto/v1/search_get_pb2.py | 8 ++++---- weaviate/proto/v1/search_get_pb2.pyi | 8 ++++---- 6 files changed, 31 insertions(+), 24 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 54616bb6c..64e51d81c 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -15,7 +15,7 @@ on: env: OLD_WEAVIATE_VERSION: 1.22.6 - NEW_WEAVIATE_VERSION: preview-allow-discerning-between-nil-and-in-ref-props-ab9ec28 + NEW_WEAVIATE_VERSION: preview-allow-discerning-between-nil-and-in-ref-props-20ad8e5 jobs: lint-and-format: diff --git a/integration/test_collection.py b/integration/test_collection.py index c91d339ca..9d464faff 100644 --- a/integration/test_collection.py +++ b/integration/test_collection.py @@ -957,7 +957,11 @@ def test_add_reference(collection_factory: CollectionFactory) -> None: uuid2, return_properties=["name"], return_references=FromReference(link_on="self") ) assert "name" in obj1.properties - assert obj1.references == {} + assert ( + obj1.references == {} + if collection._connection._weaviate_version.is_at_least(1, 23, 2) + else None + ) # TODO: change to 1.23.3 when released assert "name" in obj2.properties assert "self" in obj2.references diff --git a/integration/test_collection_references.py b/integration/test_collection_references.py index 099c5ac42..5f8a0ec72 100644 --- a/integration/test_collection_references.py +++ b/integration/test_collection_references.py @@ -568,7 +568,11 @@ def test_insert_many_with_refs(collection_factory: CollectionFactory) -> None: return_properties=["name"], return_references=FromReference(link_on="self") ).objects: if obj.properties["name"] in ["A", "B"]: - assert obj.references == {} + assert ( + obj.references == {} + if collection._connection._weaviate_version.is_at_least(1, 23, 2) + else None + ) # TODO: change to 1.23.3 when released else: assert obj.references is not None @@ -764,10 +768,10 @@ def test_empty_return_reference(collection_factory: CollectionFactory) -> None: ], vectorizer_config=Configure.Vectorizer.none(), ) - if not source._connection._weaviate_version.is_at_least( - 1, 23, 2 - ): # TODO: change this to 1.23.3 when it is released - pytest.skip("references return empty object only supported in 1.23.3+") + # if not source._connection._weaviate_version.is_at_least( + # 1, 23, 2 + # ): # TODO: change this to 1.23.3 when it is released + # pytest.skip("references return empty object only supported in 1.23.3+") uuid_source = source.data.insert(properties={}) obj = source.query.fetch_object_by_id( uuid_source, return_references=[QueryReference(link_on="ref")] diff --git a/weaviate/collections/queries/base.py b/weaviate/collections/queries/base.py index fa9cc2130..6a3ce92e4 100644 --- a/weaviate/collections/queries/base.py +++ b/weaviate/collections/queries/base.py @@ -6,7 +6,6 @@ from typing import Any, Dict, Generic, List, Optional, Type, Union, cast from google.protobuf import struct_pb2 -from google.protobuf.internal.containers import RepeatedCompositeFieldContainer from requests.exceptions import ConnectionError as RequestsConnectionError from typing_extensions import is_typeddict @@ -214,11 +213,11 @@ def __parse_nonref_properties_result( def __parse_ref_properties_result( self, - properties: RepeatedCompositeFieldContainer[search_get_pb2.RefPropertiesResult], - is_present: bool, + properties: search_get_pb2.PropertiesResult, ) -> Optional[dict]: - if len(properties) == 0: - return {} if is_present else None + if len(properties.ref_props) == 0: + return {} if properties.ref_props_requested else None + return { ref_prop.prop_name: _CrossReference._from( [ @@ -228,7 +227,7 @@ def __parse_ref_properties_result( for prop in ref_prop.properties ] ) - for ref_prop in properties + for ref_prop in properties.ref_props } def __deserialize_primitive_122(self, value: Any) -> Any: @@ -327,7 +326,7 @@ def __result_to_query_object( if options.include_metadata else _MetadataReturn(), references=( - self.__parse_ref_properties_result(props.ref_props, props.ref_props_present) + self.__parse_ref_properties_result(props) if self._is_weaviate_version_123 else self.__parse_ref_properties_result_122(props) ) @@ -356,7 +355,7 @@ def __result_to_generative_object( if options.include_metadata else _MetadataReturn(), references=( - self.__parse_ref_properties_result(props.ref_props, props.ref_props_present) + self.__parse_ref_properties_result(props) if self._is_weaviate_version_123 else self.__parse_ref_properties_result_122(props) ) @@ -421,7 +420,7 @@ def __result_to_group_by_object( if options.include_metadata else _GroupByMetadataReturn(), references=( - self.__parse_ref_properties_result(props.ref_props, props.ref_props_present) + self.__parse_ref_properties_result(props) if self._is_weaviate_version_123 else self.__parse_ref_properties_result_122(props) ) diff --git a/weaviate/proto/v1/search_get_pb2.py b/weaviate/proto/v1/search_get_pb2.py index 3df75964d..18b000b6f 100644 --- a/weaviate/proto/v1/search_get_pb2.py +++ b/weaviate/proto/v1/search_get_pb2.py @@ -18,7 +18,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x13v1/search_get.proto\x12\x0bweaviate.v1\x1a\x1cgoogle/protobuf/struct.proto\x1a\rv1/base.proto\x1a\x13v1/properties.proto"\x9a\t\n\rSearchRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0e\n\x06tenant\x18\n \x01(\t\x12=\n\x11\x63onsistency_level\x18\x0b \x01(\x0e\x32\x1d.weaviate.v1.ConsistencyLevelH\x00\x88\x01\x01\x12\x37\n\nproperties\x18\x14 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequestH\x01\x88\x01\x01\x12\x33\n\x08metadata\x18\x15 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequestH\x02\x88\x01\x01\x12+\n\x08group_by\x18\x16 \x01(\x0b\x32\x14.weaviate.v1.GroupByH\x03\x88\x01\x01\x12\r\n\x05limit\x18\x1e \x01(\r\x12\x0e\n\x06offset\x18\x1f \x01(\r\x12\x0f\n\x07\x61utocut\x18 \x01(\r\x12\r\n\x05\x61\x66ter\x18! \x01(\t\x12$\n\x07sort_by\x18" \x03(\x0b\x32\x13.weaviate.v1.SortBy\x12*\n\x07\x66ilters\x18( \x01(\x0b\x32\x14.weaviate.v1.FiltersH\x04\x88\x01\x01\x12/\n\rhybrid_search\x18) \x01(\x0b\x32\x13.weaviate.v1.HybridH\x05\x88\x01\x01\x12+\n\x0b\x62m25_search\x18* \x01(\x0b\x32\x11.weaviate.v1.BM25H\x06\x88\x01\x01\x12\x31\n\x0bnear_vector\x18+ \x01(\x0b\x32\x17.weaviate.v1.NearVectorH\x07\x88\x01\x01\x12\x31\n\x0bnear_object\x18, \x01(\x0b\x32\x17.weaviate.v1.NearObjectH\x08\x88\x01\x01\x12\x33\n\tnear_text\x18- \x01(\x0b\x32\x1b.weaviate.v1.NearTextSearchH\t\x88\x01\x01\x12\x35\n\nnear_image\x18. \x01(\x0b\x32\x1c.weaviate.v1.NearImageSearchH\n\x88\x01\x01\x12\x35\n\nnear_audio\x18/ \x01(\x0b\x32\x1c.weaviate.v1.NearAudioSearchH\x0b\x88\x01\x01\x12\x35\n\nnear_video\x18\x30 \x01(\x0b\x32\x1c.weaviate.v1.NearVideoSearchH\x0c\x88\x01\x01\x12\x36\n\ngenerative\x18< \x01(\x0b\x32\x1d.weaviate.v1.GenerativeSearchH\r\x88\x01\x01\x12(\n\x06rerank\x18= \x01(\x0b\x32\x13.weaviate.v1.RerankH\x0e\x88\x01\x01\x12\x18\n\x0cuses_123_api\x18\x64 \x01(\x08\x42\x02\x18\x01\x42\x14\n\x12_consistency_levelB\r\n\x0b_propertiesB\x0b\n\t_metadataB\x0b\n\t_group_byB\n\n\x08_filtersB\x10\n\x0e_hybrid_searchB\x0e\n\x0c_bm25_searchB\x0e\n\x0c_near_vectorB\x0e\n\x0c_near_objectB\x0c\n\n_near_textB\r\n\x0b_near_imageB\r\n\x0b_near_audioB\r\n\x0b_near_videoB\r\n\x0b_generativeB\t\n\x07_rerank"L\n\x07GroupBy\x12\x0c\n\x04path\x18\x01 \x03(\t\x12\x18\n\x10number_of_groups\x18\x02 \x01(\x05\x12\x19\n\x11objects_per_group\x18\x03 \x01(\x05")\n\x06SortBy\x12\x11\n\tascending\x18\x01 \x01(\x08\x12\x0c\n\x04path\x18\x02 \x03(\t"m\n\x10GenerativeSearch\x12\x1e\n\x16single_response_prompt\x18\x01 \x01(\t\x12\x1d\n\x15grouped_response_task\x18\x02 \x01(\t\x12\x1a\n\x12grouped_properties\x18\x03 \x03(\t"\xcc\x01\n\x0fMetadataRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x08\x12\x0e\n\x06vector\x18\x02 \x01(\x08\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x04 \x01(\x08\x12\x10\n\x08\x64istance\x18\x05 \x01(\x08\x12\x11\n\tcertainty\x18\x06 \x01(\x08\x12\r\n\x05score\x18\x07 \x01(\x08\x12\x15\n\rexplain_score\x18\x08 \x01(\x08\x12\x15\n\ris_consistent\x18\t \x01(\x08"\xd1\x01\n\x11PropertiesRequest\x12\x1a\n\x12non_ref_properties\x18\x01 \x03(\t\x12\x39\n\x0eref_properties\x18\x02 \x03(\x0b\x32!.weaviate.v1.RefPropertiesRequest\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\x12$\n\x1creturn_all_nonref_properties\x18\x0b \x01(\x08"\x8b\x01\n\x17ObjectPropertiesRequest\x12\x11\n\tprop_name\x18\x01 \x01(\t\x12\x1c\n\x14primitive_properties\x18\x02 \x03(\t\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest"\xfc\x01\n\x06Hybrid\x12\r\n\x05query\x18\x01 \x01(\t\x12\x12\n\nproperties\x18\x02 \x03(\t\x12\x12\n\x06vector\x18\x03 \x03(\x02\x42\x02\x18\x01\x12\r\n\x05\x61lpha\x18\x04 \x01(\x02\x12\x33\n\x0b\x66usion_type\x18\x05 \x01(\x0e\x32\x1e.weaviate.v1.Hybrid.FusionType\x12\x14\n\x0cvector_bytes\x18\x06 \x01(\x0c"a\n\nFusionType\x12\x1b\n\x17\x46USION_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12\x46USION_TYPE_RANKED\x10\x01\x12\x1e\n\x1a\x46USION_TYPE_RELATIVE_SCORE\x10\x02"\xad\x02\n\x0eNearTextSearch\x12\r\n\x05query\x18\x01 \x03(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x12\x36\n\x07move_to\x18\x04 \x01(\x0b\x32 .weaviate.v1.NearTextSearch.MoveH\x02\x88\x01\x01\x12\x38\n\tmove_away\x18\x05 \x01(\x0b\x32 .weaviate.v1.NearTextSearch.MoveH\x03\x88\x01\x01\x1a\x36\n\x04Move\x12\r\n\x05\x66orce\x18\x01 \x01(\x02\x12\x10\n\x08\x63oncepts\x18\x02 \x03(\t\x12\r\n\x05uuids\x18\x03 \x03(\tB\x0c\n\n_certaintyB\x0b\n\t_distanceB\n\n\x08_move_toB\x0c\n\n_move_away"j\n\x0fNearImageSearch\x12\r\n\x05image\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance"j\n\x0fNearAudioSearch\x12\r\n\x05\x61udio\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance"j\n\x0fNearVideoSearch\x12\r\n\x05video\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance")\n\x04\x42M25\x12\r\n\x05query\x18\x01 \x01(\t\x12\x12\n\nproperties\x18\x02 \x03(\t"\xb1\x01\n\x14RefPropertiesRequest\x12\x1a\n\x12reference_property\x18\x01 \x01(\t\x12\x32\n\nproperties\x18\x02 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequest\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequest\x12\x19\n\x11target_collection\x18\x04 \x01(\t"\x80\x01\n\nNearVector\x12\x12\n\x06vector\x18\x01 \x03(\x02\x42\x02\x18\x01\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x12\x14\n\x0cvector_bytes\x18\x04 \x01(\x0c\x42\x0c\n\n_certaintyB\x0b\n\t_distance"b\n\nNearObject\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance"8\n\x06Rerank\x12\x10\n\x08property\x18\x01 \x01(\t\x12\x12\n\x05query\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_query"\xc3\x01\n\x0bSearchReply\x12\x0c\n\x04took\x18\x01 \x01(\x02\x12*\n\x07results\x18\x02 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12&\n\x19generative_grouped_result\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x34\n\x10group_by_results\x18\x04 \x03(\x0b\x32\x1a.weaviate.v1.GroupByResultB\x1c\n\x1a_generative_grouped_result"\x1c\n\x0bRerankReply\x12\r\n\x05score\x18\x01 \x01(\x01"!\n\x0fGenerativeReply\x12\x0e\n\x06result\x18\x01 \x01(\t"\x90\x02\n\rGroupByResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0cmin_distance\x18\x02 \x01(\x02\x12\x14\n\x0cmax_distance\x18\x03 \x01(\x02\x12\x19\n\x11number_of_objects\x18\x04 \x01(\x03\x12*\n\x07objects\x18\x05 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12-\n\x06rerank\x18\x06 \x01(\x0b\x32\x18.weaviate.v1.RerankReplyH\x00\x88\x01\x01\x12\x35\n\ngenerative\x18\x07 \x01(\x0b\x32\x1c.weaviate.v1.GenerativeReplyH\x01\x88\x01\x01\x42\t\n\x07_rerankB\r\n\x0b_generative"p\n\x0cSearchResult\x12\x31\n\nproperties\x18\x01 \x01(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult"\xc8\x04\n\x0eMetadataResult\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\x06vector\x18\x02 \x03(\x02\x42\x02\x18\x01\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x03\x12"\n\x1a\x63reation_time_unix_present\x18\x04 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x05 \x01(\x03\x12%\n\x1dlast_update_time_unix_present\x18\x06 \x01(\x08\x12\x10\n\x08\x64istance\x18\x07 \x01(\x02\x12\x18\n\x10\x64istance_present\x18\x08 \x01(\x08\x12\x11\n\tcertainty\x18\t \x01(\x02\x12\x19\n\x11\x63\x65rtainty_present\x18\n \x01(\x08\x12\r\n\x05score\x18\x0b \x01(\x02\x12\x15\n\rscore_present\x18\x0c \x01(\x08\x12\x15\n\rexplain_score\x18\r \x01(\t\x12\x1d\n\x15\x65xplain_score_present\x18\x0e \x01(\x08\x12\x1a\n\ris_consistent\x18\x0f \x01(\x08H\x00\x88\x01\x01\x12\x12\n\ngenerative\x18\x10 \x01(\t\x12\x1a\n\x12generative_present\x18\x11 \x01(\x08\x12\x1d\n\x15is_consistent_present\x18\x12 \x01(\x08\x12\x14\n\x0cvector_bytes\x18\x13 \x01(\x0c\x12\x13\n\x0bid_as_bytes\x18\x14 \x01(\x0c\x12\x14\n\x0crerank_score\x18\x15 \x01(\x01\x12\x1c\n\x14rerank_score_present\x18\x16 \x01(\x08\x42\x10\n\x0e_is_consistent"\xb8\x05\n\x10PropertiesResult\x12\x37\n\x12non_ref_properties\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\x02\x18\x01\x12\x33\n\tref_props\x18\x02 \x03(\x0b\x32 .weaviate.v1.RefPropertiesResult\x12\x19\n\x11target_collection\x18\x03 \x01(\t\x12-\n\x08metadata\x18\x04 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12G\n\x17number_array_properties\x18\x05 \x03(\x0b\x32".weaviate.v1.NumberArrayPropertiesB\x02\x18\x01\x12\x41\n\x14int_array_properties\x18\x06 \x03(\x0b\x32\x1f.weaviate.v1.IntArrayPropertiesB\x02\x18\x01\x12\x43\n\x15text_array_properties\x18\x07 \x03(\x0b\x32 .weaviate.v1.TextArrayPropertiesB\x02\x18\x01\x12I\n\x18\x62oolean_array_properties\x18\x08 \x03(\x0b\x32#.weaviate.v1.BooleanArrayPropertiesB\x02\x18\x01\x12<\n\x11object_properties\x18\t \x03(\x0b\x32\x1d.weaviate.v1.ObjectPropertiesB\x02\x18\x01\x12G\n\x17object_array_properties\x18\n \x03(\x0b\x32".weaviate.v1.ObjectArrayPropertiesB\x02\x18\x01\x12.\n\rnon_ref_props\x18\x0b \x01(\x0b\x32\x17.weaviate.v1.Properties\x12\x19\n\x11ref_props_present\x18\x0c \x01(\x08"[\n\x13RefPropertiesResult\x12\x31\n\nproperties\x18\x01 \x03(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12\x11\n\tprop_name\x18\x02 \x01(\tBs\n#io.weaviate.client.grpc.protocol.v1B\x16WeaviateProtoSearchGetZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3' + b'\n\x13v1/search_get.proto\x12\x0bweaviate.v1\x1a\x1cgoogle/protobuf/struct.proto\x1a\rv1/base.proto\x1a\x13v1/properties.proto"\x9a\t\n\rSearchRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0e\n\x06tenant\x18\n \x01(\t\x12=\n\x11\x63onsistency_level\x18\x0b \x01(\x0e\x32\x1d.weaviate.v1.ConsistencyLevelH\x00\x88\x01\x01\x12\x37\n\nproperties\x18\x14 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequestH\x01\x88\x01\x01\x12\x33\n\x08metadata\x18\x15 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequestH\x02\x88\x01\x01\x12+\n\x08group_by\x18\x16 \x01(\x0b\x32\x14.weaviate.v1.GroupByH\x03\x88\x01\x01\x12\r\n\x05limit\x18\x1e \x01(\r\x12\x0e\n\x06offset\x18\x1f \x01(\r\x12\x0f\n\x07\x61utocut\x18 \x01(\r\x12\r\n\x05\x61\x66ter\x18! \x01(\t\x12$\n\x07sort_by\x18" \x03(\x0b\x32\x13.weaviate.v1.SortBy\x12*\n\x07\x66ilters\x18( \x01(\x0b\x32\x14.weaviate.v1.FiltersH\x04\x88\x01\x01\x12/\n\rhybrid_search\x18) \x01(\x0b\x32\x13.weaviate.v1.HybridH\x05\x88\x01\x01\x12+\n\x0b\x62m25_search\x18* \x01(\x0b\x32\x11.weaviate.v1.BM25H\x06\x88\x01\x01\x12\x31\n\x0bnear_vector\x18+ \x01(\x0b\x32\x17.weaviate.v1.NearVectorH\x07\x88\x01\x01\x12\x31\n\x0bnear_object\x18, \x01(\x0b\x32\x17.weaviate.v1.NearObjectH\x08\x88\x01\x01\x12\x33\n\tnear_text\x18- \x01(\x0b\x32\x1b.weaviate.v1.NearTextSearchH\t\x88\x01\x01\x12\x35\n\nnear_image\x18. \x01(\x0b\x32\x1c.weaviate.v1.NearImageSearchH\n\x88\x01\x01\x12\x35\n\nnear_audio\x18/ \x01(\x0b\x32\x1c.weaviate.v1.NearAudioSearchH\x0b\x88\x01\x01\x12\x35\n\nnear_video\x18\x30 \x01(\x0b\x32\x1c.weaviate.v1.NearVideoSearchH\x0c\x88\x01\x01\x12\x36\n\ngenerative\x18< \x01(\x0b\x32\x1d.weaviate.v1.GenerativeSearchH\r\x88\x01\x01\x12(\n\x06rerank\x18= \x01(\x0b\x32\x13.weaviate.v1.RerankH\x0e\x88\x01\x01\x12\x18\n\x0cuses_123_api\x18\x64 \x01(\x08\x42\x02\x18\x01\x42\x14\n\x12_consistency_levelB\r\n\x0b_propertiesB\x0b\n\t_metadataB\x0b\n\t_group_byB\n\n\x08_filtersB\x10\n\x0e_hybrid_searchB\x0e\n\x0c_bm25_searchB\x0e\n\x0c_near_vectorB\x0e\n\x0c_near_objectB\x0c\n\n_near_textB\r\n\x0b_near_imageB\r\n\x0b_near_audioB\r\n\x0b_near_videoB\r\n\x0b_generativeB\t\n\x07_rerank"L\n\x07GroupBy\x12\x0c\n\x04path\x18\x01 \x03(\t\x12\x18\n\x10number_of_groups\x18\x02 \x01(\x05\x12\x19\n\x11objects_per_group\x18\x03 \x01(\x05")\n\x06SortBy\x12\x11\n\tascending\x18\x01 \x01(\x08\x12\x0c\n\x04path\x18\x02 \x03(\t"m\n\x10GenerativeSearch\x12\x1e\n\x16single_response_prompt\x18\x01 \x01(\t\x12\x1d\n\x15grouped_response_task\x18\x02 \x01(\t\x12\x1a\n\x12grouped_properties\x18\x03 \x03(\t"\xcc\x01\n\x0fMetadataRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x08\x12\x0e\n\x06vector\x18\x02 \x01(\x08\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x04 \x01(\x08\x12\x10\n\x08\x64istance\x18\x05 \x01(\x08\x12\x11\n\tcertainty\x18\x06 \x01(\x08\x12\r\n\x05score\x18\x07 \x01(\x08\x12\x15\n\rexplain_score\x18\x08 \x01(\x08\x12\x15\n\ris_consistent\x18\t \x01(\x08"\xd1\x01\n\x11PropertiesRequest\x12\x1a\n\x12non_ref_properties\x18\x01 \x03(\t\x12\x39\n\x0eref_properties\x18\x02 \x03(\x0b\x32!.weaviate.v1.RefPropertiesRequest\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\x12$\n\x1creturn_all_nonref_properties\x18\x0b \x01(\x08"\x8b\x01\n\x17ObjectPropertiesRequest\x12\x11\n\tprop_name\x18\x01 \x01(\t\x12\x1c\n\x14primitive_properties\x18\x02 \x03(\t\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest"\xfc\x01\n\x06Hybrid\x12\r\n\x05query\x18\x01 \x01(\t\x12\x12\n\nproperties\x18\x02 \x03(\t\x12\x12\n\x06vector\x18\x03 \x03(\x02\x42\x02\x18\x01\x12\r\n\x05\x61lpha\x18\x04 \x01(\x02\x12\x33\n\x0b\x66usion_type\x18\x05 \x01(\x0e\x32\x1e.weaviate.v1.Hybrid.FusionType\x12\x14\n\x0cvector_bytes\x18\x06 \x01(\x0c"a\n\nFusionType\x12\x1b\n\x17\x46USION_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12\x46USION_TYPE_RANKED\x10\x01\x12\x1e\n\x1a\x46USION_TYPE_RELATIVE_SCORE\x10\x02"\xad\x02\n\x0eNearTextSearch\x12\r\n\x05query\x18\x01 \x03(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x12\x36\n\x07move_to\x18\x04 \x01(\x0b\x32 .weaviate.v1.NearTextSearch.MoveH\x02\x88\x01\x01\x12\x38\n\tmove_away\x18\x05 \x01(\x0b\x32 .weaviate.v1.NearTextSearch.MoveH\x03\x88\x01\x01\x1a\x36\n\x04Move\x12\r\n\x05\x66orce\x18\x01 \x01(\x02\x12\x10\n\x08\x63oncepts\x18\x02 \x03(\t\x12\r\n\x05uuids\x18\x03 \x03(\tB\x0c\n\n_certaintyB\x0b\n\t_distanceB\n\n\x08_move_toB\x0c\n\n_move_away"j\n\x0fNearImageSearch\x12\r\n\x05image\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance"j\n\x0fNearAudioSearch\x12\r\n\x05\x61udio\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance"j\n\x0fNearVideoSearch\x12\r\n\x05video\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance")\n\x04\x42M25\x12\r\n\x05query\x18\x01 \x01(\t\x12\x12\n\nproperties\x18\x02 \x03(\t"\xb1\x01\n\x14RefPropertiesRequest\x12\x1a\n\x12reference_property\x18\x01 \x01(\t\x12\x32\n\nproperties\x18\x02 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequest\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequest\x12\x19\n\x11target_collection\x18\x04 \x01(\t"\x80\x01\n\nNearVector\x12\x12\n\x06vector\x18\x01 \x03(\x02\x42\x02\x18\x01\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x12\x14\n\x0cvector_bytes\x18\x04 \x01(\x0c\x42\x0c\n\n_certaintyB\x0b\n\t_distance"b\n\nNearObject\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\tcertainty\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0c\n\n_certaintyB\x0b\n\t_distance"8\n\x06Rerank\x12\x10\n\x08property\x18\x01 \x01(\t\x12\x12\n\x05query\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_query"\xc3\x01\n\x0bSearchReply\x12\x0c\n\x04took\x18\x01 \x01(\x02\x12*\n\x07results\x18\x02 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12&\n\x19generative_grouped_result\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x34\n\x10group_by_results\x18\x04 \x03(\x0b\x32\x1a.weaviate.v1.GroupByResultB\x1c\n\x1a_generative_grouped_result"\x1c\n\x0bRerankReply\x12\r\n\x05score\x18\x01 \x01(\x01"!\n\x0fGenerativeReply\x12\x0e\n\x06result\x18\x01 \x01(\t"\x90\x02\n\rGroupByResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0cmin_distance\x18\x02 \x01(\x02\x12\x14\n\x0cmax_distance\x18\x03 \x01(\x02\x12\x19\n\x11number_of_objects\x18\x04 \x01(\x03\x12*\n\x07objects\x18\x05 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12-\n\x06rerank\x18\x06 \x01(\x0b\x32\x18.weaviate.v1.RerankReplyH\x00\x88\x01\x01\x12\x35\n\ngenerative\x18\x07 \x01(\x0b\x32\x1c.weaviate.v1.GenerativeReplyH\x01\x88\x01\x01\x42\t\n\x07_rerankB\r\n\x0b_generative"p\n\x0cSearchResult\x12\x31\n\nproperties\x18\x01 \x01(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult"\xc8\x04\n\x0eMetadataResult\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\x06vector\x18\x02 \x03(\x02\x42\x02\x18\x01\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x03\x12"\n\x1a\x63reation_time_unix_present\x18\x04 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x05 \x01(\x03\x12%\n\x1dlast_update_time_unix_present\x18\x06 \x01(\x08\x12\x10\n\x08\x64istance\x18\x07 \x01(\x02\x12\x18\n\x10\x64istance_present\x18\x08 \x01(\x08\x12\x11\n\tcertainty\x18\t \x01(\x02\x12\x19\n\x11\x63\x65rtainty_present\x18\n \x01(\x08\x12\r\n\x05score\x18\x0b \x01(\x02\x12\x15\n\rscore_present\x18\x0c \x01(\x08\x12\x15\n\rexplain_score\x18\r \x01(\t\x12\x1d\n\x15\x65xplain_score_present\x18\x0e \x01(\x08\x12\x1a\n\ris_consistent\x18\x0f \x01(\x08H\x00\x88\x01\x01\x12\x12\n\ngenerative\x18\x10 \x01(\t\x12\x1a\n\x12generative_present\x18\x11 \x01(\x08\x12\x1d\n\x15is_consistent_present\x18\x12 \x01(\x08\x12\x14\n\x0cvector_bytes\x18\x13 \x01(\x0c\x12\x13\n\x0bid_as_bytes\x18\x14 \x01(\x0c\x12\x14\n\x0crerank_score\x18\x15 \x01(\x01\x12\x1c\n\x14rerank_score_present\x18\x16 \x01(\x08\x42\x10\n\x0e_is_consistent"\xba\x05\n\x10PropertiesResult\x12\x37\n\x12non_ref_properties\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructB\x02\x18\x01\x12\x33\n\tref_props\x18\x02 \x03(\x0b\x32 .weaviate.v1.RefPropertiesResult\x12\x19\n\x11target_collection\x18\x03 \x01(\t\x12-\n\x08metadata\x18\x04 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12G\n\x17number_array_properties\x18\x05 \x03(\x0b\x32".weaviate.v1.NumberArrayPropertiesB\x02\x18\x01\x12\x41\n\x14int_array_properties\x18\x06 \x03(\x0b\x32\x1f.weaviate.v1.IntArrayPropertiesB\x02\x18\x01\x12\x43\n\x15text_array_properties\x18\x07 \x03(\x0b\x32 .weaviate.v1.TextArrayPropertiesB\x02\x18\x01\x12I\n\x18\x62oolean_array_properties\x18\x08 \x03(\x0b\x32#.weaviate.v1.BooleanArrayPropertiesB\x02\x18\x01\x12<\n\x11object_properties\x18\t \x03(\x0b\x32\x1d.weaviate.v1.ObjectPropertiesB\x02\x18\x01\x12G\n\x17object_array_properties\x18\n \x03(\x0b\x32".weaviate.v1.ObjectArrayPropertiesB\x02\x18\x01\x12.\n\rnon_ref_props\x18\x0b \x01(\x0b\x32\x17.weaviate.v1.Properties\x12\x1b\n\x13ref_props_requested\x18\x0c \x01(\x08"[\n\x13RefPropertiesResult\x12\x31\n\nproperties\x18\x01 \x03(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12\x11\n\tprop_name\x18\x02 \x01(\tBs\n#io.weaviate.client.grpc.protocol.v1B\x16WeaviateProtoSearchGetZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3' ) _globals = globals() @@ -100,7 +100,7 @@ _globals["_METADATARESULT"]._serialized_start = 4124 _globals["_METADATARESULT"]._serialized_end = 4708 _globals["_PROPERTIESRESULT"]._serialized_start = 4711 - _globals["_PROPERTIESRESULT"]._serialized_end = 5407 - _globals["_REFPROPERTIESRESULT"]._serialized_start = 5409 - _globals["_REFPROPERTIESRESULT"]._serialized_end = 5500 + _globals["_PROPERTIESRESULT"]._serialized_end = 5409 + _globals["_REFPROPERTIESRESULT"]._serialized_start = 5411 + _globals["_REFPROPERTIESRESULT"]._serialized_end = 5502 # @@protoc_insertion_point(module_scope) diff --git a/weaviate/proto/v1/search_get_pb2.pyi b/weaviate/proto/v1/search_get_pb2.pyi index a641a4d47..f8c4e0d35 100644 --- a/weaviate/proto/v1/search_get_pb2.pyi +++ b/weaviate/proto/v1/search_get_pb2.pyi @@ -601,7 +601,7 @@ class PropertiesResult(_message.Message): "object_properties", "object_array_properties", "non_ref_props", - "ref_props_present", + "ref_props_requested", ] NON_REF_PROPERTIES_FIELD_NUMBER: _ClassVar[int] REF_PROPS_FIELD_NUMBER: _ClassVar[int] @@ -614,7 +614,7 @@ class PropertiesResult(_message.Message): OBJECT_PROPERTIES_FIELD_NUMBER: _ClassVar[int] OBJECT_ARRAY_PROPERTIES_FIELD_NUMBER: _ClassVar[int] NON_REF_PROPS_FIELD_NUMBER: _ClassVar[int] - REF_PROPS_PRESENT_FIELD_NUMBER: _ClassVar[int] + REF_PROPS_REQUESTED_FIELD_NUMBER: _ClassVar[int] non_ref_properties: _struct_pb2.Struct ref_props: _containers.RepeatedCompositeFieldContainer[RefPropertiesResult] target_collection: str @@ -634,7 +634,7 @@ class PropertiesResult(_message.Message): _base_pb2.ObjectArrayProperties ] non_ref_props: _properties_pb2.Properties - ref_props_present: bool + ref_props_requested: bool def __init__( self, non_ref_properties: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., @@ -658,7 +658,7 @@ class PropertiesResult(_message.Message): _Iterable[_Union[_base_pb2.ObjectArrayProperties, _Mapping]] ] = ..., non_ref_props: _Optional[_Union[_properties_pb2.Properties, _Mapping]] = ..., - ref_props_present: bool = ..., + ref_props_requested: bool = ..., ) -> None: ... class RefPropertiesResult(_message.Message): From 8a70bfcdf32c60b733961c65cf297122e150ee06 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 12 Jan 2024 13:59:02 +0000 Subject: [PATCH 6/7] fix tests for old version --- integration/test_collection.py | 8 +++++--- integration/test_collection_references.py | 16 +++++++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/integration/test_collection.py b/integration/test_collection.py index 9d464faff..a06c3c828 100644 --- a/integration/test_collection.py +++ b/integration/test_collection.py @@ -959,9 +959,11 @@ def test_add_reference(collection_factory: CollectionFactory) -> None: assert "name" in obj1.properties assert ( obj1.references == {} - if collection._connection._weaviate_version.is_at_least(1, 23, 2) - else None - ) # TODO: change to 1.23.3 when released + if collection._connection._weaviate_version.is_at_least( + 1, 23, 2 + ) # TODO: change to 1.23.3 when released + else obj1.references is None + ) assert "name" in obj2.properties assert "self" in obj2.references diff --git a/integration/test_collection_references.py b/integration/test_collection_references.py index 5f8a0ec72..fed9ab84c 100644 --- a/integration/test_collection_references.py +++ b/integration/test_collection_references.py @@ -768,12 +768,18 @@ def test_empty_return_reference(collection_factory: CollectionFactory) -> None: ], vectorizer_config=Configure.Vectorizer.none(), ) - # if not source._connection._weaviate_version.is_at_least( - # 1, 23, 2 - # ): # TODO: change this to 1.23.3 when it is released - # pytest.skip("references return empty object only supported in 1.23.3+") + if not source._connection._weaviate_version.is_at_least( + 1, 23, 2 + ): # TODO: change this to 1.23.3 when it is released + pytest.skip("references return empty object only supported in 1.23.3+") uuid_source = source.data.insert(properties={}) obj = source.query.fetch_object_by_id( uuid_source, return_references=[QueryReference(link_on="ref")] ) - assert obj.references == {} + assert ( + obj.references == {} + if source._connection._weaviate_version.is_at_least( + 1, 23, 2 + ) # TODO: change to 1.23.3 when released + else obj.references is None + ) From de902c1369d67876765ee31940dfaf1a26e9ffc2 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 12 Jan 2024 14:24:19 +0000 Subject: [PATCH 7/7] fix broken test --- integration/test_collection_references.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration/test_collection_references.py b/integration/test_collection_references.py index fed9ab84c..82e32acc6 100644 --- a/integration/test_collection_references.py +++ b/integration/test_collection_references.py @@ -571,7 +571,7 @@ def test_insert_many_with_refs(collection_factory: CollectionFactory) -> None: assert ( obj.references == {} if collection._connection._weaviate_version.is_at_least(1, 23, 2) - else None + else obj.references is None ) # TODO: change to 1.23.3 when released else: assert obj.references is not None