classification
Title: asyncio.coroutine decorator returns a non-generator function when using PYTHONASYNCIODEBUG
Type: behavior Stage: resolved
Components: asyncio Versions: Python 3.10, Python 3.9, Python 3.8, Python 3.7, Python 3.6, Python 3.5
process
Status: closed Resolution: wont fix
Dependencies: Superseder:
Assigned To: Nosy List: a-feld, asvetlov, iritkatriel, yselivanov
Priority: normal Keywords:

Created on 2020-06-30 17:14 by a-feld, last changed 2021-12-07 08:27 by iritkatriel. This issue is now closed.

Messages (3)
msg372706 - (view) Author: Allan Feldman (a-feld) * Date: 2020-06-30 17:14
This code behaves differently when PYTHONASYNCIODEBUG=1

import asyncio
import inspect


@asyncio.coroutine
def foo():
    yield from asyncio.sleep(0)


print("isgeneratorfunction:", inspect.isgeneratorfunction(foo))


PYTHONASYNCIODEBUG:
isgeneratorfunction: False

non-debug mode:
isgeneratorfunction: True


When in debug mode, the `asyncio.coroutine` decorator returns a function that is not a generator function (https://github.com/python/cpython/blob/bd4a3f21454a6012f4353e2255837561fc9f0e6a/Lib/asyncio/coroutines.py#L144)

The result is that introspection of functions is changed when PYTHONASYNCIODEBUG is enabled.
msg407868 - (view) Author: Irit Katriel (iritkatriel) * (Python committer) Date: 2021-12-06 22:07
asyncio.coroutine was removed in 3.11, and I don't think this will be changed in stable versions. I will close this issue unless I am corrected.
msg407899 - (view) Author: Andrew Svetlov (asvetlov) * (Python committer) Date: 2021-12-07 08:20
Agree, thanks!
History
Date User Action Args
2021-12-07 08:27:33iritkatrielsetstatus: open -> closed
stage: resolved
2021-12-07 08:20:16asvetlovsetstatus: pending -> open

messages: + msg407899
2021-12-06 22:07:52iritkatrielsetstatus: open -> pending

nosy: + iritkatriel
messages: + msg407868

resolution: wont fix
2020-06-30 17:14:21a-feldcreate