11# File generated from our OpenAPI spec by Stainless.
22
33from 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
66from ._types import ModelT
77from ._base_client import BasePage , PageInfo , BaseSyncPage , BaseAsyncPage
1111
1212@runtime_checkable
1313class CursorPageItem (Protocol ):
14- id : str
14+ id : Optional [ str ]
1515
1616
1717class 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