List comprehensions inside of a lambda print only [
#492
Labels
Python 3.8
Volunteer wanted
Volunteer wanted to fix if a bug or to implement if a new feature.
Works on decompyle3
Description
List comprehensions inside of a lambda print a single
[
bracket instead of the list comprehension, resulting in invalid syntax.How to Reproduce
The following is a simple list comprehension in a lambda function:
Stored in a file called
poc.py
, it can be compiled into a.pyc
file with the following commands:python3 -c 'import py_compile; print(py_compile.compile("poc.py"))' uncompyle6 __pycache__/poc.cpython-38.pyc
It decompiles to the following code on the latest 3.9.1 version:
This happens while a regular function using
def
containing a list comprehension does work perfectly:Expected behavior
Write the whole list comprehension just like a function using
def
would. This would be the expected output for the example above:Environment
$ uncompyle6 --version uncompyle6, version 3.9.1 $ pydisasm --version pydisasm, version 6.1.0 $ python3 -c "import sys; print(sys.version)" 3.8.10 (default, Nov 22 2023, 10:22:35) [GCC 9.4.0] $ cat /etc/issue Ubuntu 20.04.6 LTS
Workarounds
Ignore the missing list comprehension code in the output, because it continues to print the code after it. This won't make the code inside the list comprehension visible though.
The text was updated successfully, but these errors were encountered: