diff options
author | INADA Naoki <songofacandy@gmail.com> | 2016-10-21 03:30:15 (GMT) |
---|---|---|
committer | INADA Naoki <songofacandy@gmail.com> | 2016-10-21 03:30:15 (GMT) |
commit | a83636247e3de138e017a04474236ef5aa8b4f4a (patch) | |
tree | 1ab8a9a8dba1c7969860de6b7298404b3420ec36 /Lib/asyncio | |
parent | 56b2cf5e8564c7221a42675d35aaa0d0c503365e (diff) | |
download | cpython-a83636247e3de138e017a04474236ef5aa8b4f4a.zip cpython-a83636247e3de138e017a04474236ef5aa8b4f4a.tar.gz cpython-a83636247e3de138e017a04474236ef5aa8b4f4a.tar.bz2 |
Issue #28448: Fix C implemented asyncio.Future didn't work on Windows
Diffstat (limited to 'Lib/asyncio')
-rw-r--r-- | Lib/asyncio/futures.py | 8 | ||||
-rw-r--r-- | Lib/asyncio/windows_events.py | 9 |
2 files changed, 11 insertions, 6 deletions
diff --git a/Lib/asyncio/futures.py b/Lib/asyncio/futures.py index 73215f5..e45d6aa 100644 --- a/Lib/asyncio/futures.py +++ b/Lib/asyncio/futures.py @@ -247,10 +247,10 @@ class Future: if self._state != _PENDING: return False self._state = _CANCELLED - self._schedule_callbacks() + self.__schedule_callbacks() return True - def _schedule_callbacks(self): + def __schedule_callbacks(self): """Internal: Ask the event loop to call all callbacks. The callbacks are scheduled to be called as soon as possible. Also @@ -352,7 +352,7 @@ class Future: raise InvalidStateError('{}: {!r}'.format(self._state, self)) self._result = result self._state = _FINISHED - self._schedule_callbacks() + self.__schedule_callbacks() def set_exception(self, exception): """Mark the future done and set an exception. @@ -369,7 +369,7 @@ class Future: "and cannot be raised into a Future") self._exception = exception self._state = _FINISHED - self._schedule_callbacks() + self.__schedule_callbacks() if compat.PY34: self._log_traceback = True else: diff --git a/Lib/asyncio/windows_events.py b/Lib/asyncio/windows_events.py index 668fe14..b777dd0 100644 --- a/Lib/asyncio/windows_events.py +++ b/Lib/asyncio/windows_events.py @@ -171,8 +171,13 @@ class _WaitCancelFuture(_BaseWaitHandleFuture): def cancel(self): raise RuntimeError("_WaitCancelFuture must not be cancelled") - def _schedule_callbacks(self): - super(_WaitCancelFuture, self)._schedule_callbacks() + def set_result(self, result): + super().set_result(result) + if self._done_callback is not None: + self._done_callback(self) + + def set_exception(self, exception): + super().set_exception(exception) if self._done_callback is not None: self._done_callback(self) |