summaryrefslogtreecommitdiffstats
path: root/Lib/asyncio
diff options
context:
space:
mode:
authorYury Selivanov <yury@magic.io>2016-11-09 00:16:01 (GMT)
committerYury Selivanov <yury@magic.io>2016-11-09 00:16:01 (GMT)
commit6cc495e9e2db8de0b8b7d95323d3a1514844b1b4 (patch)
tree53ad200923868483dd72cee032bb1050d297870f /Lib/asyncio
parent70b72f0f96d0a78e7cb154ae64356c82d06ac901 (diff)
downloadcpython-6cc495e9e2db8de0b8b7d95323d3a1514844b1b4.zip
cpython-6cc495e9e2db8de0b8b7d95323d3a1514844b1b4.tar.gz
cpython-6cc495e9e2db8de0b8b7d95323d3a1514844b1b4.tar.bz2
asyncio: Fix _format_coroutine for coroutine-like objects w/o __name__
Some built-in coroutine-like objects might not have __name__ or __qualname__. A good example of such are 'asend', 'aclose' and 'athrow' coroutine methods of asynchronous generators.
Diffstat (limited to 'Lib/asyncio')
-rw-r--r--Lib/asyncio/coroutines.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/Lib/asyncio/coroutines.py b/Lib/asyncio/coroutines.py
index 1db7030..f46197d 100644
--- a/Lib/asyncio/coroutines.py
+++ b/Lib/asyncio/coroutines.py
@@ -262,8 +262,12 @@ def _format_coroutine(coro):
assert iscoroutine(coro)
if not hasattr(coro, 'cr_code') and not hasattr(coro, 'gi_code'):
- # Most likely a Cython coroutine.
- coro_name = getattr(coro, '__qualname__', coro.__name__)
+ # Most likely a built-in type or a Cython coroutine.
+
+ # Built-in types might not have __qualname__ or __name__.
+ coro_name = getattr(
+ coro, '__qualname__',
+ getattr(coro, '__name__', type(coro).__name__))
coro_name = '{}()'.format(coro_name)
running = False