[issue40438] Python 3.9 eval on list comprehension sometimes returns coroutines
Jonathan Crall added the comment: This can be closed, but for completeness, the test you ran didn't verify that the bug was fixed. This is because the hard coded compile flags I gave in my example seem to have changed in Python 3.9 (is this documented?). In python3.8 the compile flags I specified correspond to division, print_function, unicode_literals, and absolute_import. python3.8 -c "import __future__; print(__future__.print_function.compiler_flag | __future__.division.compiler_flag | __future__.unicode_literals.compiler_flag | __future__.absolute_import.compiler_flag)" Results in: 221184 In Python 3.9 the same code results in: 3538944 I can modify the MWE to accommodate these changes: ./python -c "import __future__; print(eval(compile('[i for i in range(3)]', mode='eval', filename='fo', flags=__future__.print_function.compiler_flag | __future__.division.compiler_flag | __future__.unicode_literals.compiler_flag | __future__.absolute_import.compiler_flag)))" Which does produce the correct output as expected. So, the issue can remain closed. I am curious what the bug in 3.9.0a5 was though if you have any speculations. -- ___ Python tracker <https://bugs.python.org/issue40438> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue40438] Python 3.9 eval on list comprehension sometimes returns coroutines
Jonathan Crall added the comment: Ah, sorry. I neglected all the important information. I tested this using: Python 3.9.0a5 (default, Apr 23 2020, 14:11:34) [GCC 8.3.0] Specifically, I ran in a docker container: DOCKER_IMAGE=circleci/python:3.9-rc docker pull $DOCKER_IMAGE docker run --rm -it $DOCKER_IMAGE bash And then in the bash shell in the docker image I ran: python -c "print(eval(compile('[i for i in range(3)]', mode='eval', filename='foo', flags=221184)))" -- ___ Python tracker <https://bugs.python.org/issue40438> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue40438] Python 3.9 eval on list comprehension sometimes returns coroutines
New submission from Jonathan Crall : I first noticed this when testing xdoctest on Python 3.9, and then again when using IPython. I was finally able to generate a minimal working example in Python itself. The following code: python -c "print(eval(compile('[i for i in range(3)]', mode='eval', filename='foo', flags=221184)))" produces [0, 1, 2] in Python <= 3.8, but in 3.9 it produces: at 0x7fa336d40ec0> :1: RuntimeWarning: coroutine '' was never awaited RuntimeWarning: Enable tracemalloc to get the object allocation traceback Is this an intended change? I can't find any notes in the CHANGELOG that seem to correspond to it. -- components: Interpreter Core messages: 367651 nosy: Jonathan Crall priority: normal severity: normal status: open title: Python 3.9 eval on list comprehension sometimes returns coroutines versions: Python 3.9 ___ Python tracker <https://bugs.python.org/issue40438> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com