Repository navigation
code.interact() gives SyntaxError instead of SyntaxWarning #97562
Copy link
Copy link
Closed
Labels
type-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Activity
- addedtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
on Sep 26, 2022 Seems it was fixed in #96052.
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?I only get a warning.
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.
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...
Metadata
Metadata
Assignees
Labels
type-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
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.
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.