1+ from collections import deque
12from dataclasses import dataclass
23from typing import (
34 Any ,
67 Generic ,
78 Iterable ,
89 Iterator ,
9- List ,
1010 Optional ,
1111)
1212from uuid import UUID
@@ -54,14 +54,14 @@ def __init__(
5454 self .__query = query
5555 self .__inputs = inputs
5656
57- self .__iter_object_cache : List [Object [TProperties , TReferences ]] = []
57+ self .__iter_object_cache : deque [Object [TProperties , TReferences ]] = deque ()
5858 self .__iter_object_last_uuid : Optional [UUID ] = _parse_after (self .__inputs .after )
5959 self .__iter_cache_size = cache_size or ITERATOR_CACHE_SIZE
6060
6161 def __iter__ (
6262 self ,
6363 ) -> Iterator [Object [TProperties , TReferences ]]:
64- self .__iter_object_cache = []
64+ self .__iter_object_cache = deque ()
6565 self .__iter_object_last_uuid = _parse_after (self .__inputs .after )
6666 return self
6767
@@ -75,11 +75,11 @@ def __next__(self) -> Object[TProperties, TReferences]:
7575 return_properties = self .__inputs .return_properties ,
7676 return_references = self .__inputs .return_references ,
7777 )
78- self .__iter_object_cache = res .objects # type: ignore
78+ self .__iter_object_cache = deque ( res .objects ) # type: ignore
7979 if len (self .__iter_object_cache ) == 0 :
8080 raise StopIteration
8181
82- ret_object = self .__iter_object_cache .pop ( 0 )
82+ ret_object = self .__iter_object_cache .popleft ( )
8383 self .__iter_object_last_uuid = ret_object .uuid
8484 assert (
8585 self .__iter_object_last_uuid is not None
@@ -100,14 +100,14 @@ def __init__(
100100 self .__query = query
101101 self .__inputs = inputs
102102
103- self .__iter_object_cache : List [Object [TProperties , TReferences ]] = []
103+ self .__iter_object_cache : deque [Object [TProperties , TReferences ]] = deque ()
104104 self .__iter_object_last_uuid : Optional [UUID ] = _parse_after (self .__inputs .after )
105105 self .__iter_cache_size = cache_size or ITERATOR_CACHE_SIZE
106106
107107 def __aiter__ (
108108 self ,
109109 ) -> AsyncIterator [Object [TProperties , TReferences ]]:
110- self .__iter_object_cache = []
110+ self .__iter_object_cache = deque ()
111111 self .__iter_object_last_uuid = _parse_after (self .__inputs .after )
112112 return self
113113
@@ -123,11 +123,11 @@ async def __anext__(
123123 return_properties = self .__inputs .return_properties ,
124124 return_references = self .__inputs .return_references ,
125125 )
126- self .__iter_object_cache = res .objects # type: ignore
126+ self .__iter_object_cache = deque ( res .objects ) # type: ignore
127127 if len (self .__iter_object_cache ) == 0 :
128128 raise StopAsyncIteration
129129
130- ret_object = self .__iter_object_cache .pop ( 0 )
130+ ret_object = self .__iter_object_cache .popleft ( )
131131 self .__iter_object_last_uuid = ret_object .uuid
132132 assert (
133133 self .__iter_object_last_uuid is not None
0 commit comments