diff options
author | Nathaniel J. Smith <njs@pobox.com> | 2018-01-24 20:14:33 (GMT) |
---|---|---|
committer | Yury Selivanov <yury@magic.io> | 2018-01-24 20:14:33 (GMT) |
commit | fb5a7ad421ac20c49218ee4b86fb0d85ca4cd664 (patch) | |
tree | 732c85b5d8ce04bb71c05a507cfe226e4c0fd248 | |
parent | 0a5e71b4c70aab87125a54d7a59765e18d7583a4 (diff) | |
download | cpython-fb5a7ad421ac20c49218ee4b86fb0d85ca4cd664.zip cpython-fb5a7ad421ac20c49218ee4b86fb0d85ca4cd664.tar.gz cpython-fb5a7ad421ac20c49218ee4b86fb0d85ca4cd664.tar.bz2 |
bpo-32636: Fix @asyncio.coroutine debug mode bug exposed by gh-5250 (#5291)
-rw-r--r-- | Lib/asyncio/coroutines.py | 3 | ||||
-rw-r--r-- | Lib/test/test_asyncio/test_tasks.py | 17 |
2 files changed, 19 insertions, 1 deletions
diff --git a/Lib/asyncio/coroutines.py b/Lib/asyncio/coroutines.py index 5a29100..c7fcd44 100644 --- a/Lib/asyncio/coroutines.py +++ b/Lib/asyncio/coroutines.py @@ -132,8 +132,9 @@ def coroutine(func): res = yield from await_meth() return res + coro = types.coroutine(coro) if not _DEBUG: - wrapper = types.coroutine(coro) + wrapper = coro else: @functools.wraps(func) def wrapper(*args, **kwds): diff --git a/Lib/test/test_asyncio/test_tasks.py b/Lib/test/test_asyncio/test_tasks.py index daa1ff9..5e83a54 100644 --- a/Lib/test/test_asyncio/test_tasks.py +++ b/Lib/test/test_asyncio/test_tasks.py @@ -9,6 +9,7 @@ import io import random import re import sys +import textwrap import types import unittest import weakref @@ -3090,6 +3091,22 @@ class CompatibilityTests(test_utils.TestCase): result = self.loop.run_until_complete(inner()) self.assertEqual(['ok1', 'ok2'], result) + def test_debug_mode_interop(self): + # https://bugs.python.org/issue32636 + code = textwrap.dedent(""" + import asyncio + + async def native_coro(): + pass + + @asyncio.coroutine + def old_style_coro(): + yield from native_coro() + + asyncio.run(old_style_coro()) + """) + assert_python_ok("-c", code, PYTHONASYNCIODEBUG="1") + if __name__ == '__main__': unittest.main() |