else:
task = self._task_factory(self, coro, context=context)
- tasks._set_task_name(task, name)
+ task.set_name(name)
return task
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
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.
else:
task = loop.create_task(coro, context=context)
- _set_task_name(task, name)
+ task.set_name(name)
return task
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()
--- /dev/null
+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.