Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Prev Previous commit
Next Next commit
fix: pending_task mutation bug
  • Loading branch information
RazorBest committed Aug 13, 2025
commit d29f385afa41cee099a74fbd6085d7521bd4a1ec
11 changes: 7 additions & 4 deletions 11 pycdp/twisted.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,12 @@ def put(self, elem: dict):

def close(self):
self._closed = True
for task in self._pending_tasks:
# task.cancel can trigger other methods of this class
# So, we can't use a for loop, because self._pending_tasks can be
# mutated
while len(self._pending_tasks) > 0:
task = self._pending_tasks.pop()
task.cancel()
self._pending_tasks.clear()

async def __aiter__(self):
get_task = None
Expand All @@ -58,7 +61,7 @@ async def __aiter__(self):
# Store the task so it can be canceled, if needed
self._pending_tasks.add(get_task)
elem = await get_task
self._pending_tasks.remove(get_task)
self._pending_tasks.discard(get_task)
get_task = None
yield elem
except CancelledError:
Expand All @@ -67,7 +70,7 @@ async def __aiter__(self):
finally:
self._closed = True
if get_task is not None:
self._pending_tasks.remove(get_task)
self._pending_tasks.discard(get_task)
get_task = None

def __str__(self) -> str:
Expand Down
Morty Proxy This is a proxified and sanitized view of the page, visit original site.