diff options
author | Guido van Rossum <guido@python.org> | 2022-02-28 23:15:56 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-28 23:15:56 (GMT) |
commit | 7d611b4cabaf7925f5f94daddf711d54aeae2cf9 (patch) | |
tree | 4c8a48847d780e1a2632a15d8ae2b551bc224ad8 /Lib/asyncio/tasks.py | |
parent | 08deed1af56bec8668c6cb4d5cfd89e393e1fe5e (diff) | |
download | cpython-7d611b4cabaf7925f5f94daddf711d54aeae2cf9.zip cpython-7d611b4cabaf7925f5f94daddf711d54aeae2cf9.tar.gz cpython-7d611b4cabaf7925f5f94daddf711d54aeae2cf9.tar.bz2 |
bpo-46771: Remove two controversial lines from Task.cancel() (GH-31623)
Also from the _asyncio C accelerator module,
and adjust one test that the change caused to fail.
For more discussion see the discussion starting here:
https://github.com/python/cpython/pull/31394#issuecomment-1053545331
(Basically, @asvetlov proposed to return False from cancel()
when there is already a pending cancellation, and I went along,
even though it wasn't necessary for the task group implementation,
and @agronholm has come up with a counterexample that fails
because of this change. So now I'm changing it back to the old
semantics (but still bumping the counter) until we can have a
proper discussion about this.)
Diffstat (limited to 'Lib/asyncio/tasks.py')
-rw-r--r-- | Lib/asyncio/tasks.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py index 38c2385..059143f 100644 --- a/Lib/asyncio/tasks.py +++ b/Lib/asyncio/tasks.py @@ -205,8 +205,11 @@ class Task(futures._PyFuture): # Inherit Python Task implementation if self.done(): return False self._num_cancels_requested += 1 - if self._num_cancels_requested > 1: - return False + # These two lines are controversial. See discussion starting at + # https://github.com/python/cpython/pull/31394#issuecomment-1053545331 + # Also remember that this is duplicated in _asynciomodule.c. + # if self._num_cancels_requested > 1: + # return False if self._fut_waiter is not None: if self._fut_waiter.cancel(msg=msg): # Leave self._fut_waiter; it may be a Task that |