python / python/cpython

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

Đang mở
#152,490 1 bình luận 0 reaction 1 người được giao Xem trên GitHub

@terryjreedy đang làm issue này rồi.

Từ ngày 28/6/2026.

stdlib topic-repl type-bug
Ngôn ngữ chính
Python
Star
77.2k
Fork
35.9k
Chỉ số merge pull request
Chỉ số pull request đang chờ

Mô tả

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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.