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
6 changes: 6 additions & 0 deletions src/apify_client/_resource_clients/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,7 @@ def stream_items(
skip_hidden: bool | None = None,
xml_root: str | None = None,
xml_row: str | None = None,
flatten: list[str] | None = None,
signature: str | None = None,
timeout: Timeout = 'long',
) -> Iterator[HttpResponse]:
Expand Down Expand Up @@ -445,6 +446,7 @@ def stream_items(
xml_root: Overrides default root element name of xml output. By default the root element is items.
xml_row: Overrides default element name that wraps each page or page function result object in xml output.
By default the element name is item.
flatten: A list of fields that should be flattened.
signature: Signature used to access the items.
timeout: Timeout for the API HTTP request.

Expand All @@ -469,6 +471,7 @@ def stream_items(
skipHidden=skip_hidden,
xmlRoot=xml_root,
xmlRow=xml_row,
flatten=flatten,
signature=signature,
)

Expand Down Expand Up @@ -964,6 +967,7 @@ async def stream_items(
skip_hidden: bool | None = None,
xml_root: str | None = None,
xml_row: str | None = None,
flatten: list[str] | None = None,
signature: str | None = None,
timeout: Timeout = 'long',
) -> AsyncIterator[HttpResponse]:
Expand Down Expand Up @@ -1007,6 +1011,7 @@ async def stream_items(
xml_root: Overrides default root element name of xml output. By default the root element is items.
xml_row: Overrides default element name that wraps each page or page function result object in xml output.
By default the element name is item.
flatten: A list of fields that should be flattened.
signature: Signature used to access the items.
timeout: Timeout for the API HTTP request.

Expand All @@ -1031,6 +1036,7 @@ async def stream_items(
skipHidden=skip_hidden,
xmlRoot=xml_root,
xmlRow=xml_row,
flatten=flatten,
signature=signature,
)

Expand Down
22 changes: 22 additions & 0 deletions tests/unit/test_client_streaming.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,28 @@ async def test_dataset_stream_items_async(
assert await response.aread() == STREAM_CONTENT


def test_dataset_stream_items_flatten_sync(httpserver: HTTPServer) -> None:
"""`flatten` is sent as a comma-separated query parameter."""
httpserver.expect_request(
f'/v2/datasets/{DATASET_ID}/items', query_string={'format': 'json', 'flatten': 'a,b.c'}
).respond_with_data(STREAM_CONTENT)
client = ApifyClient(token='test', api_url=httpserver.url_for('/').removesuffix('/'))

with client.dataset(DATASET_ID).stream_items(flatten=['a', 'b.c']) as response:
assert response.read() == STREAM_CONTENT


async def test_dataset_stream_items_flatten_async(httpserver: HTTPServer) -> None:
"""`flatten` is sent as a comma-separated query parameter."""
httpserver.expect_request(
f'/v2/datasets/{DATASET_ID}/items', query_string={'format': 'json', 'flatten': 'a,b.c'}
).respond_with_data(STREAM_CONTENT)
client = ApifyClientAsync(token='test', api_url=httpserver.url_for('/').removesuffix('/'))

async with client.dataset(DATASET_ID).stream_items(flatten=['a', 'b.c']) as response:
assert await response.aread() == STREAM_CONTENT


def test_key_value_store_stream_record_sync(
httpserver: HTTPServer,
http_client_class: type[HttpClient],
Expand Down
Loading