Skip to content

ast.parse(mode='single') exception for block statements without trailing newline #135798

Open
@tom-pytel

Description

@tom-pytel

Bug report

Bug description:

I deliberated on whether to post this as its so inconsequential, but the fix (in ast.py at least, dunno about compile) is super trivial so might as well. It goes back to 3.10 at least.

>>> ast.parse('pass', mode='exec')
Module(body=[Pass()], type_ignores=[])

>>> ast.parse('pass', mode='single')
Interactive(body=[Pass()])

>>> ast.parse('if 1: pass', mode='exec')
Module(body=[If(test=Constant(value=1, kind=None), body=[Pass()], orelse=[])], type_ignores=[])

>>> ast.parse('if 1: pass', mode='single')
Traceback (most recent call last):
  File "<python-input-4>", line 1, in <module>
    ast.parse('if 1: pass', mode='single')
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/tom/work/cpython/main/cp/Lib/ast.py", line 46, in parse
    return compile(source, filename, mode, flags,
                   _feature_version=feature_version, optimize=optimize)
  File "<unknown>", line 1
    if 1: pass
SyntaxError: invalid syntax

>>> ast.parse('if 1: pass\n', mode='single')
Interactive(body=[If(test=Constant(value=1, kind=None), body=[Pass()], orelse=[])])

CPython versions tested on:

CPython main branch

Operating systems tested on:

Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    pendingThe issue will be closed if no feedback is providedstdlibPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions