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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions integration/test_collection.py
Original file line number Diff line number Diff line change
Expand Up @@ -960,7 +960,7 @@ def test_collection_config_get(collection_factory: CollectionFactory) -> None:
assert config.vectorizer == Vectorizers.NONE


@pytest.mark.parametrize("return_properties", [None, [], ["name"]])
@pytest.mark.parametrize("return_properties", [None, [], ["name"], False, True])
@pytest.mark.parametrize(
"return_metadata",
[
Expand All @@ -983,7 +983,7 @@ def test_collection_config_get(collection_factory: CollectionFactory) -> None:
@pytest.mark.parametrize("include_vector", [False, True])
def test_return_properties_metadata_references_combos(
collection_factory: CollectionFactory,
return_properties: Optional[List[PROPERTY]],
return_properties: Union[List[PROPERTY], bool, None],
return_metadata: Optional[MetadataQuery],
return_references: Optional[List[REFERENCE]],
include_vector: bool,
Expand Down Expand Up @@ -1022,12 +1022,12 @@ def test_return_properties_metadata_references_combos(

assert obj.uuid is not None

if return_properties is None:
if return_properties is None or return_properties is True:
assert "name" in obj.properties
assert "age" in obj.properties
assert obj.properties["name"] == "John"
assert obj.properties["age"] == 43
elif len(return_properties) == 0:
elif return_properties is False or len(return_properties) == 0:
assert "name" not in obj.properties
assert "age" not in obj.properties
else:
Expand Down
2 changes: 1 addition & 1 deletion weaviate/collections/classes/grpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ class _QueryReference(_WeaviateInput):
link_on: str
include_vector: bool = Field(default=False)
return_metadata: Optional[MetadataQuery] = Field(default=None)
return_properties: Optional["PROPERTIES"] = Field(default=None)
return_properties: Union["PROPERTIES", bool, None] = Field(default=None)
return_references: Optional["REFERENCES"] = Field(default=None)

def __hash__(self) -> int: # for set
Expand Down
2 changes: 1 addition & 1 deletion weaviate/collections/classes/internal.py
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@ def _extract_references_from_data_model(type_: Type["References"]) -> Optional[R
return refs if len(refs) > 0 else None


ReturnProperties: TypeAlias = Union[PROPERTIES, Type[TProperties]]
ReturnProperties: TypeAlias = Union[PROPERTIES, bool, Type[TProperties]]
ReturnReferences: TypeAlias = Union[
Union[_QueryReference, Sequence[_QueryReference]], Type[TReferences]
]
Expand Down
40 changes: 20 additions & 20 deletions weaviate/collections/grpc/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ def get(
filters: Optional[_Filters] = None,
sort: Optional[_Sorting] = None,
return_metadata: Optional[_MetadataQuery] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Optional[REFERENCES] = None,
generative: Optional[_Generative] = None,
rerank: Optional[Rerank] = None,
Expand Down Expand Up @@ -171,7 +171,7 @@ def hybrid(
filters: Optional[_Filters] = None,
group_by: Optional[_GroupBy] = None,
return_metadata: Optional[_MetadataQuery] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Optional[REFERENCES] = None,
generative: Optional[_Generative] = None,
rerank: Optional[Rerank] = None,
Expand Down Expand Up @@ -306,7 +306,7 @@ def bm25(
filters: Optional[_Filters] = None,
group_by: Optional[_GroupBy] = None,
return_metadata: Optional[_MetadataQuery] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Optional[REFERENCES] = None,
generative: Optional[_Generative] = None,
rerank: Optional[Rerank] = None,
Expand Down Expand Up @@ -354,7 +354,7 @@ def near_vector(
rerank: Optional[Rerank] = None,
target_vector: Optional[TargetVectorJoinType] = None,
return_metadata: Optional[_MetadataQuery] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Optional[REFERENCES] = None,
) -> Awaitable[search_get_pb2.SearchReply]:
if self._validate_arguments:
Expand Down Expand Up @@ -433,7 +433,7 @@ def near_object(
rerank: Optional[Rerank] = None,
target_vector: Optional[TargetVectorJoinType] = None,
return_metadata: Optional[_MetadataQuery] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Optional[REFERENCES] = None,
) -> Awaitable[search_get_pb2.SearchReply]:
if self._validate_arguments:
Expand Down Expand Up @@ -488,7 +488,7 @@ def near_text(
rerank: Optional[Rerank] = None,
target_vector: Optional[TargetVectorJoinType] = None,
return_metadata: Optional[_MetadataQuery] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Optional[REFERENCES] = None,
) -> Awaitable[search_get_pb2.SearchReply]:
if self._validate_arguments:
Expand Down Expand Up @@ -549,7 +549,7 @@ def near_media(
rerank: Optional[Rerank] = None,
target_vector: Optional[TargetVectorJoinType] = None,
return_metadata: Optional[_MetadataQuery] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Optional[REFERENCES] = None,
) -> Awaitable[search_get_pb2.SearchReply]:
if self._validate_arguments:
Expand Down Expand Up @@ -652,7 +652,7 @@ def __create_request(
after: Optional[UUID] = None,
filters: Optional[_Filters] = None,
metadata: Optional[_MetadataQuery] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Optional[REFERENCES] = None,
generative: Optional[_Generative] = None,
rerank: Optional[Rerank] = None,
Expand Down Expand Up @@ -684,7 +684,9 @@ def __create_request(
_ValidateArgument([int, None], "autocut", autocut),
_ValidateArgument([_GroupBy, None], "group_by", group_by),
_ValidateArgument(
[str, QueryNested, Sequence, None], "return_properties", return_properties
[str, bool, QueryNested, Sequence, None],
"return_properties",
return_properties,
),
_ValidateArgument(
[_QueryReference, Sequence, None], "return_references", return_references
Expand Down Expand Up @@ -714,12 +716,7 @@ def __create_request(
else:
return_references_parsed = None

if return_properties is not None:
return_properties_parsed: Optional[Set[PROPERTY]] = self.__convert_to_set(
return_properties
)
else:
return_properties_parsed = None
return_properties_parsed = self.__parse_return_properties(return_properties)

return search_get_pb2.SearchRequest(
uses_123_api=True,
Expand Down Expand Up @@ -793,6 +790,13 @@ def __resolve_property(self, prop: QueryNested) -> search_get_pb2.ObjectProperti
],
)

def __parse_return_properties(
self, props: Union[PROPERTIES, bool, None]
) -> Optional[Set[PROPERTY]]:
if props is None or props is True:
return None
return self.__convert_to_set([] if props is False else props)

def _translate_properties_from_python_to_grpc(
self, properties: Optional[Set[PROPERTY]], references: Optional[Set[REFERENCE]]
) -> Optional[search_get_pb2.PropertiesRequest]:
Expand All @@ -812,11 +816,7 @@ def _translate_properties_from_python_to_grpc(
search_get_pb2.RefPropertiesRequest(
reference_property=ref.link_on,
properties=self._translate_properties_from_python_to_grpc(
(
None
if ref.return_properties is None
else self.__convert_to_set(ref.return_properties)
),
self.__parse_return_properties(ref.return_properties),
(
None
if ref.return_references is None
Expand Down
18 changes: 13 additions & 5 deletions weaviate/collections/queries/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -542,28 +542,36 @@ def _result_to_query_or_groupby_return(
def _parse_return_properties(
self,
return_properties: Optional[ReturnProperties[TProperties]],
) -> Optional[PROPERTIES]:
) -> Union[PROPERTIES, bool, None]:
if (
return_properties is not None and not return_properties
): # fast way to check if it is an empty list
): # fast way to check if it is an empty list or False
return []

if (
isinstance(return_properties, Sequence)
or isinstance(return_properties, str)
or isinstance(return_properties, QueryNested)
or (return_properties is None and self._properties is None)
or (
(return_properties is None or return_properties is True)
and self._properties is None
)
):
# return self.__parse_properties(return_properties)
return cast(Optional[PROPERTIES], return_properties) # is not sourced from any generic
elif return_properties is None and self._properties is not None:
return cast(
Union[PROPERTIES, bool, None], return_properties
) # is not sourced from any generic
elif (
return_properties is None or return_properties is True
) and self._properties is not None:
if not is_typeddict(self._properties):
return return_properties
return _extract_properties_from_data_model(
self._properties
) # is sourced from collection-specific generic
else:
assert return_properties is not None
assert return_properties is not True
if not is_typeddict(return_properties):
raise WeaviateInvalidInputError(
f"return_properties must only be a TypedDict or PROPERTIES within this context but is {type(return_properties)}"
Expand Down
26 changes: 13 additions & 13 deletions weaviate/collections/queries/bm25/generate.pyi
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Generic, List, Literal, Optional, Type, overload
from typing import Generic, List, Literal, Optional, Type, Union, overload

from weaviate.collections.classes.filters import (
_Filters,
Expand Down Expand Up @@ -34,7 +34,7 @@ class _BM25GenerateAsync(Generic[Properties, References], _Base[Properties, Refe
rerank: Optional[Rerank] = None,
include_vector: INCLUDE_VECTOR = False,
return_metadata: Optional[METADATA] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Literal[None] = None,
) -> GenerativeReturn[Properties, References]: ...
@overload
Expand All @@ -54,7 +54,7 @@ class _BM25GenerateAsync(Generic[Properties, References], _Base[Properties, Refe
rerank: Optional[Rerank] = None,
include_vector: INCLUDE_VECTOR = False,
return_metadata: Optional[METADATA] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: REFERENCES,
) -> GenerativeReturn[Properties, CrossReferences]: ...
@overload
Expand All @@ -74,7 +74,7 @@ class _BM25GenerateAsync(Generic[Properties, References], _Base[Properties, Refe
rerank: Optional[Rerank] = None,
include_vector: INCLUDE_VECTOR = False,
return_metadata: Optional[METADATA] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Type[TReferences],
) -> GenerativeReturn[Properties, TReferences]: ...
@overload
Expand Down Expand Up @@ -157,7 +157,7 @@ class _BM25GenerateAsync(Generic[Properties, References], _Base[Properties, Refe
rerank: Optional[Rerank] = None,
include_vector: INCLUDE_VECTOR = False,
return_metadata: Optional[METADATA] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Literal[None] = None,
) -> GenerativeGroupByReturn[Properties, References]: ...
@overload
Expand All @@ -177,7 +177,7 @@ class _BM25GenerateAsync(Generic[Properties, References], _Base[Properties, Refe
rerank: Optional[Rerank] = None,
include_vector: INCLUDE_VECTOR = False,
return_metadata: Optional[METADATA] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: REFERENCES,
) -> GenerativeGroupByReturn[Properties, CrossReferences]: ...
@overload
Expand All @@ -197,7 +197,7 @@ class _BM25GenerateAsync(Generic[Properties, References], _Base[Properties, Refe
rerank: Optional[Rerank] = None,
include_vector: INCLUDE_VECTOR = False,
return_metadata: Optional[METADATA] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Type[TReferences],
) -> GenerativeGroupByReturn[Properties, TReferences]: ...
@overload
Expand Down Expand Up @@ -299,7 +299,7 @@ class _BM25Generate(Generic[Properties, References], _Base[Properties, Reference
rerank: Optional[Rerank] = None,
include_vector: INCLUDE_VECTOR = False,
return_metadata: Optional[METADATA] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Literal[None] = None,
) -> GenerativeReturn[Properties, References]: ...
@overload
Expand All @@ -319,7 +319,7 @@ class _BM25Generate(Generic[Properties, References], _Base[Properties, Reference
rerank: Optional[Rerank] = None,
include_vector: INCLUDE_VECTOR = False,
return_metadata: Optional[METADATA] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: REFERENCES,
) -> GenerativeReturn[Properties, CrossReferences]: ...
@overload
Expand All @@ -339,7 +339,7 @@ class _BM25Generate(Generic[Properties, References], _Base[Properties, Reference
rerank: Optional[Rerank] = None,
include_vector: INCLUDE_VECTOR = False,
return_metadata: Optional[METADATA] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Type[TReferences],
) -> GenerativeReturn[Properties, TReferences]: ...
@overload
Expand Down Expand Up @@ -423,7 +423,7 @@ class _BM25Generate(Generic[Properties, References], _Base[Properties, Reference
target_vector: Optional[str] = None,
include_vector: INCLUDE_VECTOR = False,
return_metadata: Optional[METADATA] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Literal[None] = None,
) -> GenerativeGroupByReturn[Properties, References]: ...
@overload
Expand All @@ -444,7 +444,7 @@ class _BM25Generate(Generic[Properties, References], _Base[Properties, Reference
target_vector: Optional[str] = None,
include_vector: INCLUDE_VECTOR = False,
return_metadata: Optional[METADATA] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: REFERENCES,
) -> GenerativeGroupByReturn[Properties, CrossReferences]: ...
@overload
Expand All @@ -465,7 +465,7 @@ class _BM25Generate(Generic[Properties, References], _Base[Properties, Reference
target_vector: Optional[str] = None,
include_vector: INCLUDE_VECTOR = False,
return_metadata: Optional[METADATA] = None,
return_properties: Optional[PROPERTIES] = None,
return_properties: Union[PROPERTIES, bool, None] = None,
return_references: Type[TReferences],
) -> GenerativeGroupByReturn[Properties, TReferences]: ...
@overload
Expand Down
Loading