Skip to content

Commit 2eef097

Browse files
committed
fix(pagination): use correct type hint for .object (openai#943)
1 parent bc457f0 commit 2eef097

File tree

1 file changed

+28
-14
lines changed

1 file changed

+28
-14
lines changed

Diff for: src/openai/pagination.py

+28-14
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# File generated from our OpenAPI spec by Stainless.
22

33
from typing import Any, List, Generic, Optional, cast
4-
from typing_extensions import Literal, Protocol, override, runtime_checkable
4+
from typing_extensions import Protocol, override, runtime_checkable
55

66
from ._types import ModelT
77
from ._base_client import BasePage, PageInfo, BaseSyncPage, BaseAsyncPage
@@ -11,18 +11,21 @@
1111

1212
@runtime_checkable
1313
class CursorPageItem(Protocol):
14-
id: str
14+
id: Optional[str]
1515

1616

1717
class SyncPage(BaseSyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
1818
"""Note: no pagination actually occurs yet, this is for forwards-compatibility."""
1919

2020
data: List[ModelT]
21-
object: Literal["list"]
21+
object: str
2222

2323
@override
2424
def _get_page_items(self) -> List[ModelT]:
25-
return self.data
25+
data = self.data
26+
if not data:
27+
return []
28+
return data
2629

2730
@override
2831
def next_page_info(self) -> None:
@@ -37,11 +40,14 @@ class AsyncPage(BaseAsyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
3740
"""Note: no pagination actually occurs yet, this is for forwards-compatibility."""
3841

3942
data: List[ModelT]
40-
object: Literal["list"]
43+
object: str
4144

4245
@override
4346
def _get_page_items(self) -> List[ModelT]:
44-
return self.data
47+
data = self.data
48+
if not data:
49+
return []
50+
return data
4551

4652
@override
4753
def next_page_info(self) -> None:
@@ -57,15 +63,19 @@ class SyncCursorPage(BaseSyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
5763

5864
@override
5965
def _get_page_items(self) -> List[ModelT]:
60-
return self.data
66+
data = self.data
67+
if not data:
68+
return []
69+
return data
6170

6271
@override
6372
def next_page_info(self) -> Optional[PageInfo]:
64-
if not self.data:
73+
data = self.data
74+
if not data:
6575
return None
6676

67-
item = cast(Any, self.data[-1])
68-
if not isinstance(item, CursorPageItem):
77+
item = cast(Any, data[-1])
78+
if not isinstance(item, CursorPageItem) or item.id is None:
6979
# TODO emit warning log
7080
return None
7181

@@ -77,15 +87,19 @@ class AsyncCursorPage(BaseAsyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
7787

7888
@override
7989
def _get_page_items(self) -> List[ModelT]:
80-
return self.data
90+
data = self.data
91+
if not data:
92+
return []
93+
return data
8194

8295
@override
8396
def next_page_info(self) -> Optional[PageInfo]:
84-
if not self.data:
97+
data = self.data
98+
if not data:
8599
return None
86100

87-
item = cast(Any, self.data[-1])
88-
if not isinstance(item, CursorPageItem):
101+
item = cast(Any, data[-1])
102+
if not isinstance(item, CursorPageItem) or item.id is None:
89103
# TODO emit warning log
90104
return None
91105

0 commit comments

Comments
 (0)