asyncio: sync with Tulip

- CoroWrapper.__del__() now reuses repr(CoroWrapper) to log the "... was never
  yielded from" warning
- Improve CoroWrapper: copy also the qualified name on Python 3.4, not only on
  Python 3.5+
This commit is contained in:
Victor Stinner 2014-07-11 01:04:16 +02:00
parent c39ba7d611
commit 737c34fa85
3 changed files with 6 additions and 18 deletions

View file

@ -29,8 +29,6 @@ _YIELD_FROM = opcode.opmap['YIELD_FROM']
_DEBUG = (not sys.flags.ignore_environment
and bool(os.environ.get('PYTHONASYNCIODEBUG')))
_PY35 = (sys.version_info >= (3, 5))
# Check for CPython issue #21209
def has_yield_from_bug():
@ -119,8 +117,7 @@ class CoroWrapper:
gen = getattr(self, 'gen', None)
frame = getattr(gen, 'gi_frame', None)
if frame is not None and frame.f_lasti == -1:
func = events._format_callback(self.func, ())
msg = 'Coroutine %s was never yielded from' % func
msg = '%r was never yielded from' % self
tb = getattr(self, '_source_traceback', ())
if tb:
tb = ''.join(traceback.format_list(tb))
@ -155,7 +152,7 @@ def coroutine(func):
if w._source_traceback:
del w._source_traceback[-1]
w.__name__ = func.__name__
if _PY35:
if hasattr(func, '__qualname__'):
w.__qualname__ = func.__qualname__
w.__doc__ = func.__doc__
return w
@ -178,10 +175,7 @@ def iscoroutine(obj):
def _format_coroutine(coro):
assert iscoroutine(coro)
if _PY35:
coro_name = coro.__qualname__
else:
coro_name = coro.__name__
coro_name = getattr(coro, '__qualname__', coro.__name__)
filename = coro.gi_code.co_filename
if (isinstance(coro, CoroWrapper)

View file

@ -21,7 +21,6 @@ from .coroutines import coroutine
from .log import logger
_PY34 = (sys.version_info >= (3, 4))
_PY35 = (sys.version_info >= (3, 5))
class Task(futures.Future):