File tree Expand file tree Collapse file tree 2 files changed +28
-0
lines changed
Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Original file line number Diff line number Diff line change 1+ def paginated_api_reader (fetch_page_func , start = 1 ):
2+ """
3+ Yields items from a paginated API.
4+
5+ `fetch_page_func(page_number)`: should return (items: list, has_more: bool)
6+ """
7+ page = start
8+ while True :
9+ items , has_more = fetch_page_func (page )
10+ for item in items :
11+ yield item
12+ if not has_more :
13+ break
14+ page += 1
Original file line number Diff line number Diff line change 1+ from generators .paginated_api_reader import paginated_api_reader
2+
3+
4+ def mock_api (page ):
5+ if page > 3 :
6+ return [], False
7+ return [f"item-{ page } -{ i } " for i in range (2 )], True
8+
9+
10+ def test_paginated_api_reader ():
11+ items = list (paginated_api_reader (mock_api ))
12+ assert len (items ) == 6
13+ assert items [0 ] == "item-1-0"
14+ assert items [- 1 ] == "item-3-1"
You can’t perform that action at this time.
0 commit comments