python / python/cpython

"raise SyntaxError(NotImplemented)" exits REPL and IDLE subprocess

オープン
#152,490 コメント 1 件 リアクション 0 件 担当者 1 名 GitHub で見る

@terryjreedy がすでに取り組んでいます。

2026年6月28日 から。

stdlib topic-repl type-bug
主要言語
Python
スター
77.2k
フォーク
35.9k
PR マージ指標
PR 指標を取得中

説明

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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。