Skip to content

Commit 1e47ea7

Browse files
committed
add async iterator
1 parent f9828d9 commit 1e47ea7

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

python/convex/__init__.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,15 @@ def __next__(self) -> ConvexValue:
120120
raise ConvexError(result["message"], result["data"])
121121
return result["value"]
122122

123+
def __aiter__(self) -> QuerySubscription:
124+
return self
125+
126+
async def __anext__(self) -> ConvexValue:
127+
result = await self.safe_inner_sub().anext()
128+
if result["type"] == "convexerror":
129+
raise ConvexError(result["message"], result["data"])
130+
return result["value"]
131+
123132
def unsubscribe(self) -> None:
124133
"""Unsubscribe from the query and drop this subscription from the active query set.
125134
@@ -162,6 +171,17 @@ def __next__(self) -> Optional[Dict[SubscriberId, ConvexValue]]:
162171
result[k] = result[k]
163172
return result
164173

174+
def __aiter__(self) -> QuerySetSubscription:
175+
return self
176+
177+
async def __anext__(self) -> Optional[Dict[SubscriberId, ConvexValue]]:
178+
result = await self.safe_inner_sub().anext()
179+
if not result:
180+
return result
181+
for k in result:
182+
result[k] = result[k]
183+
return result
184+
165185

166186
class ConvexClient:
167187
"""WebSocket-based Convex Client.

0 commit comments

Comments
 (0)