Skip to content

Commit 2db1beb

Browse files
authored
fix: Fix Dataset.iter_items for apify_storage (#321)
Fix iter_items to correctly work in async iteration. Add test. - closes #320
1 parent 15ad055 commit 2db1beb

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

src/apify/apify_storage_client/_dataset_client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ async def iterate_items(
9191
skip_empty: bool = False,
9292
skip_hidden: bool = False,
9393
) -> AsyncIterator[dict]:
94-
return self._client.iterate_items(
94+
async for item in self._client.iterate_items(
9595
offset=offset,
9696
limit=limit,
9797
clean=clean,
@@ -101,7 +101,8 @@ async def iterate_items(
101101
unwind=unwind,
102102
skip_empty=skip_empty,
103103
skip_hidden=skip_hidden,
104-
)
104+
):
105+
yield item
105106

106107
@override
107108
async def get_items_as_bytes(

tests/integration/test_actor_dataset.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,26 @@ async def main() -> None:
5454
assert item['str'] == 'x' * 10000
5555

5656

57+
async def test_dataset_iter_items(
58+
make_actor: MakeActorFunction,
59+
run_actor: RunActorFunction,
60+
) -> None:
61+
async def main() -> None:
62+
inserted_data = {'Something': 'something else'}
63+
64+
async with Actor:
65+
dataset = await Actor.open_dataset()
66+
await dataset.push_data(inserted_data)
67+
requested_data = [item async for item in dataset.iterate_items()]
68+
69+
assert len(requested_data) == 1
70+
assert requested_data[0] == inserted_data
71+
72+
actor = await make_actor(label='test_dataset_iter_items', main_func=main)
73+
run_result = await run_actor(actor)
74+
assert run_result.status == 'SUCCEEDED'
75+
76+
5777
async def test_same_references_in_default_dataset(
5878
make_actor: MakeActorFunction,
5979
run_actor: RunActorFunction,

0 commit comments

Comments
 (0)