summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKumar Aditya <59607654+kumaraditya303@users.noreply.github.com>2023-06-13 06:06:40 (GMT)
committerGitHub <noreply@github.com>2023-06-13 06:06:40 (GMT)
commit840d02f3f0cd341207db6d918ce7f0987be9952e (patch)
treebd456e3ea504d4a1e3ad0e270147d96d5f045b65
parent829ac13b69a2b53153e1b40670e6ef82f05130c1 (diff)
downloadcpython-840d02f3f0cd341207db6d918ce7f0987be9952e.zip
cpython-840d02f3f0cd341207db6d918ce7f0987be9952e.tar.gz
cpython-840d02f3f0cd341207db6d918ce7f0987be9952e.tar.bz2
GH-105684: Require `asyncio.Task` implementations to support `set_name` method (#105685)
-rw-r--r--Lib/asyncio/base_events.py2
-rw-r--r--Lib/asyncio/taskgroups.py2
-rw-r--r--Lib/asyncio/tasks.py15
-rw-r--r--Lib/test/test_asyncio/test_runners.py2
-rw-r--r--Misc/NEWS.d/next/Library/2023-06-12-10-40-38.gh-issue-105684.yiHkFD.rst3
5 files changed, 8 insertions, 16 deletions
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py
index 32d7e1c..f650e6b 100644
--- a/Lib/asyncio/base_events.py
+++ b/Lib/asyncio/base_events.py
@@ -443,7 +443,7 @@ class BaseEventLoop(events.AbstractEventLoop):
else:
task = self._task_factory(self, coro, context=context)
- tasks._set_task_name(task, name)
+ task.set_name(name)
return task
diff --git a/Lib/asyncio/taskgroups.py b/Lib/asyncio/taskgroups.py
index 06b2e0d..bf92bba 100644
--- a/Lib/asyncio/taskgroups.py
+++ b/Lib/asyncio/taskgroups.py
@@ -163,7 +163,7 @@ class TaskGroup:
task = self._loop.create_task(coro)
else:
task = self._loop.create_task(coro, context=context)
- tasks._set_task_name(task, name)
+ task.set_name(name)
# optimization: Immediately call the done callback if the task is
# already done (e.g. if the coro was able to complete eagerly),
# and skip scheduling a done callback
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py
index 4250bb0..75dd3cb 100644
--- a/Lib/asyncio/tasks.py
+++ b/Lib/asyncio/tasks.py
@@ -68,19 +68,6 @@ def all_tasks(loop=None):
if futures._get_loop(t) is loop and not t.done()}
-def _set_task_name(task, name):
- if name is not None:
- try:
- set_name = task.set_name
- except AttributeError:
- warnings.warn("Task.set_name() was added in Python 3.8, "
- "the method support will be mandatory for third-party "
- "task implementations since 3.13.",
- DeprecationWarning, stacklevel=3)
- else:
- set_name(name)
-
-
class Task(futures._PyFuture): # Inherit Python Task implementation
# from a Python Future implementation.
@@ -412,7 +399,7 @@ def create_task(coro, *, name=None, context=None):
else:
task = loop.create_task(coro, context=context)
- _set_task_name(task, name)
+ task.set_name(name)
return task
diff --git a/Lib/test/test_asyncio/test_runners.py b/Lib/test/test_asyncio/test_runners.py
index 811cf8b..b1eb6f4 100644
--- a/Lib/test/test_asyncio/test_runners.py
+++ b/Lib/test/test_asyncio/test_runners.py
@@ -243,6 +243,8 @@ class RunTests(BaseTest):
def get_loop(self, *args, **kwargs):
return self._task.get_loop(*args, **kwargs)
+ def set_name(self, *args, **kwargs):
+ return self._task.set_name(*args, **kwargs)
async def main():
interrupt_self()
diff --git a/Misc/NEWS.d/next/Library/2023-06-12-10-40-38.gh-issue-105684.yiHkFD.rst b/Misc/NEWS.d/next/Library/2023-06-12-10-40-38.gh-issue-105684.yiHkFD.rst
new file mode 100644
index 0000000..b0d4eb3
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-06-12-10-40-38.gh-issue-105684.yiHkFD.rst
@@ -0,0 +1,3 @@
+Supporting :meth:`asyncio.Task.set_name` is now mandatory for third party task implementations.
+The undocumented :func:`!_set_task_name` function (deprecated since 3.8) has been removed.
+Patch by Kumar Aditya.