[issue27119] `compile` doesn't compile into an AST object as specified

New submission from Franklin? Lee:
From `compile`'s doc: "Compile the source into a code or AST object."
The docs don't say how to compile into an AST object with `compile`, though. As it says later: "If you want to parse Python code into its AST representation, see ast.parse()." I checked 3.4-3.2, 3.0, 2.7, and 2.6. Versions before 3.4, and version 2.6, are missing the `ast.parse` line, but still have the first line. ---------- assignee: docs@python components: Documentation messages: 266311 nosy: docs@python, leewz priority: normal severity: normal status: open title: `compile` doesn't compile into an AST object as specified type: behavior versions: Python 2.7, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6 _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue27119> _______________________________________

Eryk Sun added the comment: What you're looking for is in the 2nd paragraph of the ast docs: An abstract syntax tree can be generated by passing ast.PyCF_ONLY_AST as a flag to the compile() built-in function, or using the parse() helper provided in this module. The result will be a tree of objects whose classes all inherit from ast.AST. An abstract syntax tree can be compiled into a Python code object using the built-in compile() function. For example: >>> mod = compile('42', '', 'exec', ast.PyCF_ONLY_AST) >>> mod <_ast.Module object at 0x7f0e45b15be0 >>> ast.dump(mod) 'Module(body=[Expr(value=Num(n=42))])' In the discussion of `flags`, I think the compile docs should explicitly list ast.PyCF_ONLY_AST and the CO_FUTURE_* flags in a table. ---------- nosy: +eryksun _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue27119> _______________________________________

Franklin? Lee added the comment:
What you're looking for is in the 2nd paragraph of the ast docs:
Oh. I considered that, but then compile's docs say: The optional arguments flags and dont_inherit control which future statements (see PEP 236) affect the compilation of source. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue27119> _______________________________________

Change by Batuhan <batuhanosmantaskaya@gmail.com>: ---------- nosy: +BTaskaya versions: +Python 3.7, Python 3.8, Python 3.9 -Python 3.2, Python 3.3, Python 3.4 _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue27119> _______________________________________

Batuhan Taskaya <isidentical@gmail.com> added the comment: We've added a reference to the compiler flags into the compile(), see issue 40484 for details. ---------- resolution: -> duplicate stage: -> resolved status: open -> closed versions: +Python 3.10 -Python 2.7, Python 3.5, Python 3.6, Python 3.7, Python 3.8 _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue27119> _______________________________________
participants (4)
-
Batuhan
-
Batuhan Taskaya
-
Eryk Sun
-
Franklin? Lee