1
1
# File generated from our OpenAPI spec by Stainless.
2
2
3
3
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
5
5
6
6
from ._types import ModelT
7
7
from ._base_client import BasePage , PageInfo , BaseSyncPage , BaseAsyncPage
11
11
12
12
@runtime_checkable
13
13
class CursorPageItem (Protocol ):
14
- id : str
14
+ id : Optional [ str ]
15
15
16
16
17
17
class SyncPage (BaseSyncPage [ModelT ], BasePage [ModelT ], Generic [ModelT ]):
18
18
"""Note: no pagination actually occurs yet, this is for forwards-compatibility."""
19
19
20
20
data : List [ModelT ]
21
- object : Literal [ "list" ]
21
+ object : str
22
22
23
23
@override
24
24
def _get_page_items (self ) -> List [ModelT ]:
25
- return self .data
25
+ data = self .data
26
+ if not data :
27
+ return []
28
+ return data
26
29
27
30
@override
28
31
def next_page_info (self ) -> None :
@@ -37,11 +40,14 @@ class AsyncPage(BaseAsyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
37
40
"""Note: no pagination actually occurs yet, this is for forwards-compatibility."""
38
41
39
42
data : List [ModelT ]
40
- object : Literal [ "list" ]
43
+ object : str
41
44
42
45
@override
43
46
def _get_page_items (self ) -> List [ModelT ]:
44
- return self .data
47
+ data = self .data
48
+ if not data :
49
+ return []
50
+ return data
45
51
46
52
@override
47
53
def next_page_info (self ) -> None :
@@ -57,15 +63,19 @@ class SyncCursorPage(BaseSyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
57
63
58
64
@override
59
65
def _get_page_items (self ) -> List [ModelT ]:
60
- return self .data
66
+ data = self .data
67
+ if not data :
68
+ return []
69
+ return data
61
70
62
71
@override
63
72
def next_page_info (self ) -> Optional [PageInfo ]:
64
- if not self .data :
73
+ data = self .data
74
+ if not data :
65
75
return None
66
76
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 :
69
79
# TODO emit warning log
70
80
return None
71
81
@@ -77,15 +87,19 @@ class AsyncCursorPage(BaseAsyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
77
87
78
88
@override
79
89
def _get_page_items (self ) -> List [ModelT ]:
80
- return self .data
90
+ data = self .data
91
+ if not data :
92
+ return []
93
+ return data
81
94
82
95
@override
83
96
def next_page_info (self ) -> Optional [PageInfo ]:
84
- if not self .data :
97
+ data = self .data
98
+ if not data :
85
99
return None
86
100
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 :
89
103
# TODO emit warning log
90
104
return None
91
105
0 commit comments