create_task -> ensure_future + wrap event wait

This commit is contained in:
DevilXD committed 2022-11-05 22:53:55 +01:00
1 parent 2306fc1331
commit 024ad975b9
1 file changed
+5 -5
+5 -5
View File
@@ -1922,13 +1922,13 @@ class GUIManager:
# wait until the user closes the window # wait until the user closes the window
await self._close_requested.wait() await self._close_requested.wait()
async def coro_unless_closed(self, coro: Any) -> _T: async def coro_unless_closed(self, coro: abc.Awaitable[_T]) -> _T:
# In Python 3.11, we need to explicitly wrap awaitables # In Python 3.11, we need to explicitly wrap awaitables
task = asyncio.create_task(coro) tasks = [asyncio.ensure_future(coro), asyncio.ensure_future(self._close_requested.wait())]
done: set[asyncio.Task[Any]] done: set[asyncio.Task[Any]]
done, pending = await asyncio.wait( pending: set[asyncio.Task[Any]]
[task, self._close_requested.wait()], done, pending = await asyncio.wait( # type: ignore
return_when=asyncio.FIRST_COMPLETED, tasks, return_when=asyncio.FIRST_COMPLETED # type: ignore
) )
for task in pending: for task in pending:
task.cancel() task.cancel()