Skip to content

Commit cecd42e

Browse files
authored
APP-14644 BinaryDataByIDs allow specifying include_binary (#1053)
1 parent fc134bf commit cecd42e

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

src/viam/app/data_client.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -790,6 +790,7 @@ async def binary_data_by_filter(
790790
async def binary_data_by_ids(
791791
self,
792792
binary_ids: Union[List[BinaryID], List[str]],
793+
include_binary_data: bool = True,
793794
dest: Optional[str] = None,
794795
) -> List[BinaryData]:
795796
"""Filter and download binary data.
@@ -812,6 +813,8 @@ async def binary_data_by_ids(
812813
:class:`BinaryID` objects. Must be non-empty.
813814
*DEPRECATED:* :class:`BinaryID` *is deprecated and will be removed in a future release. Instead, pass binary data IDs as a
814815
list of strings.*
816+
include_binary_data (bool): Boolean specifying whether to actually include the binary file data with each retrieved file.
817+
Defaults to true (that is, both the files' data and metadata are returned).
815818
dest (str): Optional filepath for writing retrieved data.
816819
817820
Raises:
@@ -825,10 +828,10 @@ async def binary_data_by_ids(
825828
request = BinaryDataByIDsRequest()
826829
if len(binary_ids) > 0 and isinstance(binary_ids[0], str):
827830
binary_data_ids = cast(List[str], binary_ids)
828-
request = BinaryDataByIDsRequest(binary_data_ids=binary_data_ids, include_binary=True)
831+
request = BinaryDataByIDsRequest(binary_data_ids=binary_data_ids, include_binary=include_binary_data)
829832
else:
830833
bin_ids = cast(List[BinaryID], binary_ids)
831-
request = BinaryDataByIDsRequest(binary_ids=bin_ids, include_binary=True)
834+
request = BinaryDataByIDsRequest(binary_ids=bin_ids, include_binary=include_binary_data)
832835
response: BinaryDataByIDsResponse = await self._data_client.BinaryDataByIDs(request, metadata=self._metadata)
833836
if dest:
834837
try:

tests/mocks/services.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -928,6 +928,7 @@ async def BinaryDataByIDs(self, stream: Stream[BinaryDataByIDsRequest, BinaryDat
928928
assert request is not None
929929
self.binary_ids = request.binary_ids
930930
self.binary_data_ids = request.binary_data_ids
931+
self.include_binary = request.include_binary
931932
await stream.send_message(BinaryDataByIDsResponse(data=self.binary_response))
932933

933934
async def DeleteTabularData(self, stream: Stream[DeleteTabularDataRequest, DeleteTabularDataResponse]) -> None:

tests/test_data_client.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,10 +308,18 @@ async def test_binary_data_by_ids(self, service: MockData):
308308
client = DataClient(channel, DATA_SERVICE_METADATA)
309309
binary_data = await client.binary_data_by_ids(binary_ids=BINARY_IDS)
310310
assert binary_data == BINARY_RESPONSE
311+
assert service.include_binary is True
311312
self.assert_binary_ids(binary_ids=list(service.binary_ids))
312313
binary_data = await client.binary_data_by_ids(binary_ids=BINARY_DATA_IDS)
313314
assert binary_data == BINARY_RESPONSE
315+
assert service.include_binary is True
314316
self.assert_binary_data_ids(binary_data_ids=list(service.binary_data_ids))
317+
binary_data = await client.binary_data_by_ids(binary_ids=BINARY_IDS, include_binary_data=False)
318+
assert binary_data == BINARY_RESPONSE
319+
assert service.include_binary is False
320+
binary_data = await client.binary_data_by_ids(binary_ids=BINARY_DATA_IDS, include_binary_data=False)
321+
assert binary_data == BINARY_RESPONSE
322+
assert service.include_binary is False
315323

316324
async def test_delete_tabular_data(self, service: MockData):
317325
async with ChannelFor([service]) as channel:

0 commit comments

Comments
 (0)