Python/aqmp: fix type definitions for mypy 0.920

0.920 (Released 2021-12-15) is not entirely happy with the
way that I was defining _FutureT:

qemu/aqmp/protocol.py:601: error: Item "object" of the upper bound
"Optional[Future[Any]]" of type variable "_FutureT" has no attribute
"done"

Update it with something a little mechanically simpler that works better
across a wider array of mypy versions.

Signed-off-by: John Snow <jsnow@redhat.com>
Message-id: 20220110191349.1841027-3-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
John Snow 2022-01-10 14:13:48 -05:00
parent f75b20e4f1
commit 42d73f2894
1 changed files with 3 additions and 2 deletions

View File

@ -43,8 +43,8 @@ from .util import (
T = TypeVar('T') T = TypeVar('T')
_U = TypeVar('_U')
_TaskFN = Callable[[], Awaitable[None]] # aka ``async def func() -> None`` _TaskFN = Callable[[], Awaitable[None]] # aka ``async def func() -> None``
_FutureT = TypeVar('_FutureT', bound=Optional['asyncio.Future[Any]'])
class Runstate(Enum): class Runstate(Enum):
@ -591,7 +591,8 @@ class AsyncProtocol(Generic[T]):
""" """
Fully reset this object to a clean state and return to `IDLE`. Fully reset this object to a clean state and return to `IDLE`.
""" """
def _paranoid_task_erase(task: _FutureT) -> Optional[_FutureT]: def _paranoid_task_erase(task: Optional['asyncio.Future[_U]']
) -> Optional['asyncio.Future[_U]']:
# Help to erase a task, ENSURING it is fully quiesced first. # Help to erase a task, ENSURING it is fully quiesced first.
assert (task is None) or task.done() assert (task is None) or task.done()
return None if (task and task.done()) else task return None if (task and task.done()) else task