cfbolz · GitHub

@cfbolz

A small issue, but the new repl reports <unknown> as the file name for SyntaxErrors, but <python-input-x> for other errors:

>>> a b c
  File "<unknown>", line 1
    a b c
      ^
SyntaxError: invalid syntax
>>> 1 / 0
Traceback (most recent call last):
  File "<python-input-1>", line 1, in <module>
    1 / 0
    ~~^~~
ZeroDivisionError: division by zero

Classic repl:

>>> a b c
  File "<stdin>", line 1
    a b c
      ^
SyntaxError: invalid syntax
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
    a
NameError: name 'a' is not defined
>>>

I think this is because _pyrepl.console.InteractiveColoredConsole.showsyntaxerror does not pass on the filename argument to the super method:

    def showsyntaxerror(self, filename=None):
        super().showsyntaxerror(colorize=self.can_colorize)

Should probably wait till #122528 is done. Then, InteractiveColoredConsole could be simplified to overwrite only _showtraceback. The undocumented colorize keyword arguments that showtraceback and showsyntaxerror have gained for pyrepl could be removed again.

Linked PRs

Read the original on github.com ↗