bpo-46829: Deprecate passing a message into Future.cancel() and Task.cancel() (GH-31840)

After a long deliberation we ended up feeling that the message argument for Future.cancel(), added in 3.9, was a bad idea, so we're deprecating it in 3.11 and plan to remove it in 3.13.
This commit is contained in:
Andrew Svetlov 2022-03-23 17:43:05 +02:00 committed by GitHub
parent 624e3986fb
commit 0360e9f346
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 106 additions and 17 deletions

View file

@ -8,6 +8,7 @@ import concurrent.futures
import contextvars
import logging
import sys
import warnings
from types import GenericAlias
from . import base_futures
@ -150,6 +151,11 @@ class Future:
change the future's state to cancelled, schedule the callbacks and
return True.
"""
if msg is not None:
warnings.warn("Passing 'msg' argument to Future.cancel() "
"is deprecated since Python 3.11, and "
"scheduled for removal in Python 3.14.",
DeprecationWarning, stacklevel=2)
self.__log_traceback = False
if self._state != _PENDING:
return False

View file

@ -207,6 +207,11 @@ class Task(futures._PyFuture): # Inherit Python Task implementation
This also increases the task's count of cancellation requests.
"""
if msg is not None:
warnings.warn("Passing 'msg' argument to Task.cancel() "
"is deprecated since Python 3.11, and "
"scheduled for removal in Python 3.14.",
DeprecationWarning, stacklevel=2)
self._log_traceback = False
if self.done():
return False