Skip to content

Commit

Permalink
Support the older Python versions
Browse files Browse the repository at this point in the history
  • Loading branch information
Cito committed Aug 11, 2024
1 parent bb50a3f commit b4f8261
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
12 changes: 9 additions & 3 deletions src/graphql/execution/incremental_publisher.py
Original file line number Diff line number Diff line change
Expand Up @@ -364,12 +364,13 @@ class IncrementalPublisher:
_initial_result: InitialResult
_released: dict[IncrementalDataRecord, None]
_pending: dict[IncrementalDataRecord, None]
_resolve: Event | None

def __init__(self) -> None:
self._initial_result = InitialResult({}, False)
self._released = {}
self._pending = {}
self._resolve = Event()
self._resolve = None # lazy initialization
self._tasks: set[Awaitable] = set()

def has_next(self) -> bool:
Expand Down Expand Up @@ -399,7 +400,10 @@ async def subscribe(
if result is not None:
yield result
else:
await self._resolve.wait()
resolve = self._resolve
if resolve is None:
self._resolve = resolve = Event()
await resolve.wait()
finally:
close_async_iterators = []
for incremental_data_record in pending:
Expand Down Expand Up @@ -511,7 +515,9 @@ def filter(

def _trigger(self) -> None:
"""Trigger the resolve event."""
self._resolve.set()
resolve = self._resolve
if resolve is not None:
resolve.set()
self._resolve = Event()

def _introduce(self, item: IncrementalDataRecord) -> None:
Expand Down
2 changes: 1 addition & 1 deletion tests/execution/test_stream.py
Original file line number Diff line number Diff line change
Expand Up @@ -1387,7 +1387,7 @@ async def get_friend(i):
return {"nonNullName": throw() if i < 0 else friends[i].name}

async def get_friends(_info):
for i in 0, -1, 1:
for i in 0, -1, 1: # pragma: no cover exit
yield await get_friend(i)

result = await complete(
Expand Down

0 comments on commit b4f8261

Please sign in to comment.