From 307bccc6ff6670c58f4c20421a29071ff710e6a3 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 12 Jun 2014 18:39:26 +0200 Subject: asyncio: Tulip issue 173: Enhance repr(Handle) and repr(Task) repr(Handle) is shorter for function: "foo" instead of "". It now also includes the source of the callback, filename and line number where it was defined, if available. repr(Task) now also includes the current position in the code, filename and line number, if available. If the coroutine (generator) is done, the line number is omitted and "done" is added. --- Lib/asyncio/tasks.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'Lib/asyncio/tasks.py') diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py index 8b8fb82ed2d..e6fd3d380be 100644 --- a/Lib/asyncio/tasks.py +++ b/Lib/asyncio/tasks.py @@ -188,7 +188,15 @@ class Task(futures.Future): i = res.find('<') if i < 0: i = len(res) - res = res[:i] + '(<{}>)'.format(self._coro.__name__) + res[i:] + text = self._coro.__name__ + coro = self._coro + if inspect.isgenerator(coro): + filename = coro.gi_code.co_filename + if coro.gi_frame is not None: + text += ' at %s:%s' % (filename, coro.gi_frame.f_lineno) + else: + text += ' done at %s' % filename + res = res[:i] + '(<{}>)'.format(text) + res[i:] return res def get_stack(self, *, limit=None): -- cgit v1.2.3