"raise SyntaxError(NotImplemented)" exits REPL and IDLE subprocess
Abierto
@terryjreedy ya está trabajando en esto.
Desde el 28/6/2026.
stdlib
topic-repl
type-bug
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 35.9k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Bug report
Bug description:
Since Python 3.14, using NotImplemented in a boolean context started to raise TypeError.
Due to this change, raising SyntaxError (or its subclasses) with argument NotImplemented causes TypeError exception chaining and forces restarting the IDLE Shell. It's not reproducible for other exception types.
MRE:
raise SyntaxError(NotImplemented)
Traceback:
Traceback (most recent call last):
File "C:/Users/benja/AppData/Local/Programs/Python/Python314/example.py", line 1, in <module>
raise SyntaxError(NotImplemented)
Traceback (most recent call last):
File "C:/Users/benja/AppData/Local/Programs/Python/Python314/example.py", line 1, in <module>
raise SyntaxError(NotImplemented)
Traceback (most recent call last):
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 590, in runcode
exec(code, self.locals)
~~~~^^^^^^^^^^^^^^^^^^^
File "C:/Users/benja/AppData/Local/Programs/Python/Python314/example.py", line 1, in <module>
raise SyntaxError(NotImplemented)
Traceback (most recent call last):
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 590, in runcode
exec(code, self.locals)
~~~~^^^^^^^^^^^^^^^^^^^
File "C:/Users/benja/AppData/Local/Programs/Python/Python314/example.py", line 1, in <module>
raise SyntaxError(NotImplemented)
Traceback (most recent call last):
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 590, in runcode
exec(code, self.locals)
File "C:/Users/benja/AppData/Local/Programs/Python/Python314/example.py", line 1, in <module>
raise SyntaxError(NotImplemented)
File "<string>", line 0
SyntaxError: NotImplemented
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 172, in main
ret = method(*args, **kwargs)
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 604, in runcode
print_exception()
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 278, in print_exception
print_exc(typ, val, tb)
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 274, in print_exc
lines = get_message_lines(typ, exc, tb)
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 240, in get_message_lines
return traceback.format_exception_only(typ, exc)
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\traceback.py", line 181, in format_exception_only
return list(te.format_exception_only(show_group=show_group, colorize=colorize))
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\traceback.py", line 1263, in format_exception_only
yield from [indent + l for l in self._format_syntax_error(stype, colorize=colorize)]
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\traceback.py", line 1456, in _format_syntax_error
msg = self.msg or "<no detail available>"
TypeError: NotImplemented should not be used in a boolean context
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 186, in main
print_exception()
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 278, in print_exception
print_exc(typ, val, tb)
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 264, in print_exc
print_exc(type(context), context, context.__traceback__)
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 274, in print_exc
lines = get_message_lines(typ, exc, tb)
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 240, in get_message_lines
return traceback.format_exception_only(typ, exc)
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\traceback.py", line 181, in format_exception_only
return list(te.format_exception_only(show_group=show_group, colorize=colorize))
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\traceback.py", line 1263, in format_exception_only
yield from [indent + l for l in self._format_syntax_error(stype, colorize=colorize)]
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\traceback.py", line 1456, in _format_syntax_error
msg = self.msg or "<no detail available>"
TypeError: NotImplemented should not be used in a boolean context
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\idlelib\run.py", line 190, in main
traceback.print_exception(type, value, tb, file=sys.__stderr__)
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\traceback.py", line 134, in print_exception
te.print(file=file, chain=chain, colorize=colorize)
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\traceback.py", line 1573, in print
for line in self.format(chain=chain, colorize=colorize):
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\traceback.py", line 1510, in format
yield from _ctx.emit(exc.format_exception_only(colorize=colorize))
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\traceback.py", line 999, in emit
for text in text_gen:
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\traceback.py", line 1263, in format_exception_only
yield from [indent + l for l in self._format_syntax_error(stype, colorize=colorize)]
File "C:\Users\benja\AppData\Local\Programs\Python\Python314\Lib\traceback.py", line 1456, in _format_syntax_error
msg = self.msg or "<no detail available>"
TypeError: NotImplemented should not be used in a boolean context
================================ RESTART: Shell ================================
So, I suggest changing the part of traceback.py code,
msg = self.msg or "<no detail available>"
to like this:
if self.msg is None:
msg = "<no detail available>"
else:
msg = self.msg
CPython versions tested on:
3.14, 3.15
Operating systems tested on:
Windows
Linked PRs
- gh-152495
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Evaluación
Este issue todavía no se ha evaluado.