Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
aroberge opened this issue Sep 26, 2022 · 6 comments
Closed

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

aroberge opened this issue Sep 26, 2022 · 6 comments
Labels
type-bug An unexpected behavior, bug, or error

Comments

@aroberge
Copy link

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.

@aroberge aroberge added the type-bug An unexpected behavior, bug, or error label Sep 26, 2022
@vstinner
Copy link
Member

cc @serhiy-storchaka

@serhiy-storchaka
Copy link
Member

Seems it was fixed in #96052.

@aroberge
Copy link
Author

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?

@serhiy-storchaka
Copy link
Member

I only get a warning.

@aroberge
Copy link
Author

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.

@vstinner
Copy link
Member

vstinner commented Nov 3, 2022

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
Labels
type-bug An unexpected behavior, bug, or error
Projects
None yet
Development

No branches or pull requests

3 participants