This affects task creation through either `asyncio.create_task()` or `TaskGroup.create_task()` -- the redundant call to `task.set_name()` is skipped. We still call `set_name()` when a task factory is involved, because the task factory call signature (unfortunately) doesn't take a `name` argument.
if self._aborting:
raise RuntimeError(f"TaskGroup {self!r} is shutting down")
if context is None:
- task = self._loop.create_task(coro)
+ task = self._loop.create_task(coro, name=name)
else:
- task = self._loop.create_task(coro, context=context)
- task.set_name(name)
+ task = self._loop.create_task(coro, name=name, context=context)
+
# 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
loop = events.get_running_loop()
if context is None:
# Use legacy API if context is not needed
- task = loop.create_task(coro)
+ task = loop.create_task(coro, name=name)
else:
- task = loop.create_task(coro, context=context)
+ task = loop.create_task(coro, name=name, context=context)
- task.set_name(name)
return task
--- /dev/null
+Ensure ``name`` parameter is passed to event loop in
+:func:`asyncio.create_task`.