File tree Expand file tree Collapse file tree 1 file changed +35
-12
lines changed Expand file tree Collapse file tree 1 file changed +35
-12
lines changed Original file line number Diff line number Diff line change 18
18
19
19
QueryItem = Video | FeedItem | User
20
20
21
+ class Pages :
22
+ '''
23
+ An iterator for query pages.
24
+ '''
25
+
26
+ def __init__ (self , query : Query ) -> None :
27
+ '''
28
+ Initialise a new Pages object.
29
+ '''
30
+
31
+ self .query = query
32
+
33
+ def __repr__ (self ) -> str :
34
+
35
+ return f'phub.Pages(query={ self .query } )'
36
+
37
+ def __getitem__ (self , index : int | slice ) -> Iterator [QueryItem ] | Iterator [Iterator [QueryItem ]]:
38
+ '''
39
+ Get a single, or slice of pages.
40
+ '''
41
+
42
+ if isinstance (index , int ):
43
+ items = self .query ._get_page (index )
44
+ return self .query ._iter_page (items )
45
+
46
+ def wrap ():
47
+ for i in range (index .start or 0 ,
48
+ index .stop or 0 ,
49
+ index .step or 1 ):
50
+
51
+ yield self [i ]
52
+
53
+ return wrap ()
21
54
22
55
class Query :
23
56
'''
@@ -74,22 +107,12 @@ def __len__(self) -> int:
74
107
return int (counter )
75
108
76
109
@cached_property
77
- def pages (self ) -> Iterator [ Iterator [ QueryItem ]] :
110
+ def pages (self ) -> Pages :
78
111
'''
79
112
Iterate through the query pages.
80
113
'''
81
114
82
- i = 0
83
- while 1 :
84
-
85
- try :
86
- page = self ._get_page (i )
87
- i += 1
88
-
89
- yield self ._iter_page (page )
90
-
91
- except errors .NoResult :
92
- return
115
+ return Pages (self )
93
116
94
117
def __iter__ (self ) -> Iterator [QueryItem ]:
95
118
'''
You can’t perform that action at this time.
0 commit comments