[Python-checkins] cpython (merge 3.4 -> default): (Merge 3.4) asyncio: sync with Tulip
victor.stinner
python-checkins at python.org
Fri Jul 11 01:25:40 CEST 2014
http://hg.python.org/cpython/rev/53791c97f1ab
changeset: 91632:53791c97f1ab
parent: 91630:c71a3dfc8764
parent: 91631:4ec238fc7036
user: Victor Stinner <victor.stinner at gmail.com>
date: Fri Jul 11 01:24:33 2014 +0200
summary:
(Merge 3.4) 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+
files:
Lib/asyncio/coroutines.py | 12 +++---------
Lib/asyncio/tasks.py | 1 -
Lib/test/test_asyncio/test_tasks.py | 11 +++--------
3 files changed, 6 insertions(+), 18 deletions(-)
diff --git a/Lib/asyncio/coroutines.py b/Lib/asyncio/coroutines.py
--- a/Lib/asyncio/coroutines.py
+++ b/Lib/asyncio/coroutines.py
@@ -29,8 +29,6 @@
_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 @@
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 @@
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 _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)
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py
--- a/Lib/asyncio/tasks.py
+++ b/Lib/asyncio/tasks.py
@@ -21,7 +21,6 @@
from .log import logger
_PY34 = (sys.version_info >= (3, 4))
-_PY35 = (sys.version_info >= (3, 5))
class Task(futures.Future):
diff --git a/Lib/test/test_asyncio/test_tasks.py b/Lib/test/test_asyncio/test_tasks.py
--- a/Lib/test/test_asyncio/test_tasks.py
+++ b/Lib/test/test_asyncio/test_tasks.py
@@ -150,7 +150,7 @@
# test coroutine object
gen = notmuch()
- if PY35:
+ if coroutines._DEBUG or PY35:
coro_qualname = 'TaskTests.test_task_repr.<locals>.notmuch'
else:
coro_qualname = 'notmuch'
@@ -205,17 +205,12 @@
# test coroutine object
gen = notmuch()
- if PY35:
+ if coroutines._DEBUG or PY35:
# On Python >= 3.5, generators now inherit the name of the
# function, as expected, and have a qualified name (__qualname__
# attribute).
coro_name = 'notmuch'
coro_qualname = 'TaskTests.test_task_repr_coro_decorator.<locals>.notmuch'
- elif coroutines._DEBUG:
- # In debug mode, @coroutine decorator uses CoroWrapper which gets
- # its name (__name__ attribute) from the wrapped coroutine
- # function.
- coro_name = coro_qualname = 'notmuch'
else:
# On Python < 3.5, generators inherit the name of the code, not of
# the function. See: http://bugs.python.org/issue21205
@@ -1653,7 +1648,7 @@
self.assertTrue(m_log.error.called)
message = m_log.error.call_args[0][0]
func_filename, func_lineno = test_utils.get_function_source(coro_noop)
- regex = (r'^Coroutine %s\(\) at %s:%s was never yielded from\n'
+ regex = (r'^<CoroWrapper %s\(\) .* at %s:%s, .*> was never yielded from\n'
r'Coroutine object created at \(most recent call last\):\n'
r'.*\n'
r' File "%s", line %s, in test_coroutine_never_yielded\n'
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list