Skip to content

code.interact() gives SyntaxError instead of SyntaxWarning #97562

Closed

Description

@aroberge

Bug report

In the example below, the normal interpreter only emits a SyntaxWarning which, upon execution, gives rise to a TypeError, whereas code.interact() gives a SyntaxError right away.

Python 3.11.0rc2 (main, Sep 11 2022, 20:22:52) [MSC v.1933 64 bit (AMD64)] on win32
>>> def test():
...    [1, 2, 3]()
...
<stdin>:2: SyntaxWarning: 'list' object is not callable; perhaps you missed a comma?
>>> test()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in test
TypeError: 'list' object is not callable
>>>
>>> import code
>>> code.interact()
(InteractiveConsole)
>>> def test():
...    [1, 2, 3]()
  File "<console>", line 2
SyntaxError: 'list' object is not callable; perhaps you missed a comma?

In addition to the above, I have been able to reproduce this with Python 3.9 and 3.10, but not with earlier Python versions.

Activity

  1. vstinner commented on Sep 26, 2022

    @vstinner
    Member
  2. serhiy-storchaka commented on Sep 26, 2022

    @serhiy-storchaka
    Member

    Seems it was fixed in #96052.

  3. aroberge commented on Oct 24, 2022

    @aroberge
    ContributorAuthor

    This was not fixed.

    > python
    Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> def test():
    ...    [1, 2, 3]()
    ...
    <stdin>:2: SyntaxWarning: 'list' object is not callable; perhaps you missed a comma?
    >>> test()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 2, in test
    TypeError: 'list' object is not callable
    >>> import code
    >>> code.interact()
    Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    (InteractiveConsole)
    >>> def test():
    ...    [1, 2, 3]()
      File "<console>", line 2
    SyntaxError: 'list' object is not callable; perhaps you missed a comma?
    
  4. serhiy-storchaka commented on Oct 25, 2022

    @serhiy-storchaka
    Member

    I only get a warning.

  5. aroberge commented on Oct 25, 2022

    @aroberge
    ContributorAuthor

    I got a warning with 3.12.0a1, but not with 3.11.0. I assume it will be fixed in 3.11.1 and this can remained closed.

  6. vstinner commented on Nov 3, 2022

    @vstinner
    Member

    I confirm that the fix is not in Python 3.11.0 final: you will have to wait for Python 3.11.1 bugfix release.

    Python 3.11.0 has the bug (raise SyntaxError):

    $ /opt/py311/bin/python3 -m code
    Python 3.11.0 (main, Oct 31 2022, 12:39:47) [GCC 12.2.1 20220819 (Red Hat 12.2.1-2)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    (InteractiveConsole)
    >>> def test(): [1, 2, 3]()
      File "<console>", line 1
    SyntaxError: 'list' object is not callable; perhaps you missed a comma?
    >>> 
    now exiting InteractiveConsole...
    

    The 3.11 development branch has the fix (display a warning):

    vstinner@mona$ ./python -m code
    Python 3.11.0+ (heads/3.11:eb023a84d9, Nov  3 2022, 15:59:57) [GCC 12.2.1 20220819 (Red Hat 12.2.1-2)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    (InteractiveConsole)
    >>> def test(): [1, 2, 3]()
    ... 
    <console>:1: SyntaxWarning: 'list' object is not callable; perhaps you missed a comma?
    >>> 
    now exiting InteractiveConsole...
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    type-bugAn unexpected behavior, bug, or error

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions