⚡ Sangsakala Proxy 🏠 Home
Skip to content

Fix except-star wrapper types and traceback - #9646

Merged
youknowone merged 2 commits into
RustPython:mainfrom
youknowdot:fix/exceptstar-wrapped-traceback-20261103
Nov 4, 2026
Merged

youknowone merged 2 commits into
RustPython:mainfrom
youknowdot:fix/exceptstar-wrapped-traceback-20261103

Conversation

@youknowdot

Copy link
Copy Markdown
Contributor

Summary

Use the builtin BaseExceptionGroup constructor for new except-star wrappers and combined raised groups. It selects ExceptionGroup for ordinary exceptions and permits a BaseExceptionGroup when a child is a KeyboardInterrupt, SystemExit, or another non-Exception BaseException, as CPython 3.15 does.

For a naked exception matched by except*, give the new wrapper a traceback at the current handler instruction rather than copying the child's original traceback. The child keeps its original traceback. exception_group_match documents that its caller must attach that handler traceback; the frame's CHECK_EG_MATCH is the sole in-repository caller.

This does not change the existing leaf-identity-based reraised-exception classification, malformed/no-location bytecode handling, or the separate subgroup derivation work in #9588. The extra group-type check is on the except-star matching path; no benchmark was run.

Validation

Assisted-by: OpenAI Codex:model version not exposed
@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 30 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration
Commits

Reviewing files that changed from the base of the PR and between 18fc82b and e32878d.

Files ignored due to path filters: 1
  • Lib/test/test_traceback.py is excluded by !Lib/**
Files selected for processing: 2
  • crates/vm/src/exceptions.rs
  • crates/vm/src/frame.rs
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

The wrapped naked exception traceback test passed twice in hosted Windows CI for the except-star correction. Remove only its obsolete expectedFailure marker using update_lib; preserve the inherited test body and C-only skip.

Assisted-by: OpenAI Codex:model version not exposed
@youknowone
youknowone marked this pull request as ready for review November 4, 2026 01:32
@youknowone
youknowone enabled auto-merge (squash) November 4, 2026 01:32
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-04T01:36:10.406265Z e32878d Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

📦 Library Dependencies

The following Lib/ modules were modified. Here are their dependencies:

[x] lib: cpython/Lib/traceback.py
[x] test: cpython/Lib/test/test_traceback.py (TODO: 1)

dependencies:

  • traceback

dependent tests: (178 tests)

  • traceback: test_asyncio test_builtin test_code_module test_concurrent_futures test_contextlib test_contextlib_async test_coroutines test_crossinterp test_dictcomps test_exceptions test_http_cookiejar test_importlib test_iter test_listcomps test_pyexpat test_setcomps test_socket test_ssl test_subprocess test_sys test_threadedtempfile test_threading test_traceback test_unittest test_with test_zipimport
    • code:
      • pdb: test_pdb test_remote_pdb
      • sqlite3.main: test_sqlite3
    • concurrent.futures.interpreter: test_concurrent_futures
    • concurrent.futures.process: test_compileall test_concurrent_futures
    • http.cookiejar: test_urllib2
      • urllib.request: test_httpservers test_pathlib test_pydoc test_sax test_site test_urllib test_urllib2_localnet test_urllib2net test_urllibnet
    • logging: test_asyncio test_decimal test_genericalias test_hashlib test_logging test_pkgutil test_support test_unittest
      • multiprocessing.util: test_asyncio test_concurrent_futures
      • venv: test_venv
    • multiprocessing: test_fcntl test_importlib test_memoryview test_multiprocessing_forkserver test_multiprocessing_main_handling test_profiling test_re
    • profiling.sampling.dump: test_profiling
    • py_compile: test_cmd_line_script test_importlib test_modulefinder test_py_compile test_runpy
      • zipfile: test_shutil test_zipapp test_zipfile test_zipfile64 test_zipimport_support
    • pydoc: test_enum
      • xmlrpc.server: test_docxmlrpc test_xmlrpc
    • socketserver: test_imaplib test_socketserver test_wsgiref
    • threading: test_android test_asyncio test_bytes test_bz2 test_code test_concurrent_futures test_context test_ctypes test_email test_enumerate test_external_inspection test_fork1 test_frame test_free_threading test_ftplib test_functools test_gc test_httplib test_importlib test_inspect test_interpreters test_io test_ioctl test_itertools test_linecache test_opcache test_pathlib test_poll test_poplib test_profiling test_pyrepl test_queue test_robotparser test_sched test_signal test_smtplib test_sqlite3 test_super test_syslog test_termios test_threading_local test_time test_weakref test_winreg test_zstd
      • bdb: test_bdb
      • importlib.util: test_asdl_parser test_capi test_ctypes test_doctest test_importlib test_reprlib
      • subprocess: test_asyncio test_atexit test_audit test_c_locale_coercion test_cmd_line test_ctypes test_dtrace test_embed test_faulthandler test_file_eintr test_gzip test_interpreters test_json test_launcher test_msvcrt test_ntpath test_os test_osx_env test_peg_generator test_platform test_plistlib test_profiling test_pyrepl test_quopri test_regrtest test_repl test_script_helper test_select test_source_encoding test_sys_settrace test_sysconfig test_tcl test_tempfile test_tkinter test_tstring test_unittest test_utf8_mode test_wait3 test_webbrowser test_xpickle
      • sysconfig: test_importlib test_os test_perfmaps test_tools
      • trace: test_trace
    • timeit: test_timeit
    • tkinter: test_tkinter test_ttk test_ttk_textonly

Legend:

  • [+] path exists in CPython
  • [x] up-to-date, [ ] outdated

@youknowone
youknowone merged commit 36e100b into RustPython:main Nov 4, 2026
29 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants