Skip to content

Fix update_lib marker preservation for inline classes - #9131

Merged
youknowone merged 2 commits into
RustPython:mainfrom
youknowdot:fix/update-lib-inline-class
Oct 15, 2026
Merged

youknowone merged 2 commits into
RustPython:mainfrom
youknowdot:fix/update-lib-inline-class

Conversation

@youknowdot

@youknowdot youknowdot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Fix scripts/update_lib preserving an inherited test marker when CPython defines the destination class with an inline suite, such as class TestCDecode(TestDecode, CTest): pass. The previous output appended an indented method after that complete statement and produced invalid Python.

  • Expand the existing inline suite before inserting retained inherited overrides, preserving original statements and comments.
  • Parse the generated source before returning it.
  • Cover simple/commented suites, semicolon statements, multiline headers, conditional classes, and UTF-8 class names while asserting preservation of the original class-body AST.
  • Adjust the existing CI change detection and update_lib step conditions. Tool-only changes run 39 focused CPython tests in the existing Linux job; Rust changes retain the existing full RustPython discovery command. No new workflow or job is added, and the Rust build gates remain unchanged.

No Lib/ files are changed. The affected canonical JSON migration stays with the separate Python 3.15 integration work.

Validation

  • 39 focused tests passed: PYTHONPATH=scripts python3 -m unittest update_lib.tests.test_patch_spec update_lib.tests.test_migrate -v.
  • Normal commit hooks passed.
  • Existing ci.yaml offline zizmor comparison: no new findings relative to main (all 15 existing diagnostic signatures unchanged).
  • Independent source review of the tool repair and separate workflow review completed.

The existing Linux job uses .python-version for the focused tool-only path; that path does not claim coverage of unrelated update_lib commands. Because this PR itself changes ci.yaml, its existing workflow-change filter naturally runs the Rust matrix once. Future tool-only edits do not enable Rust builds. No local Rust build was needed for this Python-tool repair.

AI assistance: OpenAI Codex (model version unavailable); reviewed by the contributing maintainer's assistant.

Expand canonical inline class suites before appending retained inherited overrides, and validate generated syntax. Run focused migration-tool tests in a path-filtered Python-only CI job.

Assisted-by: OpenAI Codex:model version unavailable
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: Repository: RustPython/RustPython/.coderabbit.yml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 93992446-ac24-4553-a0a0-b0251c903e09
📥 Commits

Reviewing files that changed from the base of the PR and between 3ab5c0c and ad6ed9b.

📒 Files selected for processing: 3
  • .github/workflows/ci.yaml
  • scripts/update_lib/patch_spec.py
  • scripts/update_lib/tests/test_patch_spec.py
+--------------------------------------------------------------------------------------------------------------------------------------+
| DRY - Don't Repeat Yourself. Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. |
+--------------------------------------------------------------------------------------------------------------------------------------+
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • 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

Comment @coderabbitai help to get the list of available commands.

Keep Rust build gates unchanged and run focused Python migration tests on Linux for tool-only changes. Remove the separate workflow.

Assisted-by: OpenAI Codex:model version unavailable
youknowdot added a commit to youknowdot/RustPython that referenced this pull request Oct 15, 2026
Rebase the remaining integration onto current main while retaining merged compiler and runtime fixes. Import canonical CPython v3.15.0 library sources through update_lib with preserved RustPython markers and explicit migration deferrals.

Include the published dependency-report fix from PR RustPython#8958, partial slot correction from PR RustPython#9127, and update_lib repair with existing-workflow coverage from PR RustPython#9131.

Assisted-by: OpenAI Codex:model version unavailable
@youknowone
youknowone marked this pull request as ready for review October 15, 2026 04:54
@youknowone
youknowone merged commit 92e20da into RustPython:main Oct 15, 2026
29 checks passed
@chatgpt-codex-connector

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 ⚠️ Failed 2026-10-15T04:54:42.989927Z ad6ed9b 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.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

youknowdot added a commit to youknowdot/RustPython that referenced this pull request Oct 15, 2026
Rebase the remaining integration onto current main while retaining merged compiler and runtime fixes. Import canonical CPython v3.15.0 library sources through update_lib with preserved RustPython markers and explicit migration deferrals.

Include the published dependency-report fix from PR RustPython#8958, partial slot correction from PR RustPython#9127, and update_lib repair with existing-workflow coverage from PR RustPython#9131.

Assisted-by: OpenAI Codex:model version unavailable
youknowdot added a commit to youknowdot/RustPython that referenced this pull request Oct 18, 2026
Rebase the remaining integration onto current main while retaining merged compiler and runtime fixes. Import canonical CPython v3.15.0 library sources through update_lib with preserved RustPython markers and explicit migration deferrals.

Include the published dependency-report fix from PR RustPython#8958, partial slot correction from PR RustPython#9127, and update_lib repair with existing-workflow coverage from PR RustPython#9131.

Assisted-by: OpenAI Codex:model version unavailable
youknowdot added a commit to youknowdot/RustPython that referenced this pull request Oct 18, 2026
Rebase the remaining integration onto current main while retaining merged compiler and runtime fixes. Import canonical CPython v3.15.0 library sources through update_lib with preserved RustPython markers and explicit migration deferrals.

Include the published dependency-report fix from PR RustPython#8958, partial slot correction from PR RustPython#9127, and update_lib repair with existing-workflow coverage from PR RustPython#9131.

Assisted-by: OpenAI Codex:model version unavailable
youknowdot added a commit to youknowdot/RustPython that referenced this pull request Oct 18, 2026
Rebase the remaining integration onto current main while retaining merged compiler and runtime fixes. Import canonical CPython v3.15.0 library sources through update_lib with preserved RustPython markers and explicit migration deferrals.

Include the published dependency-report fix from PR RustPython#8958, partial slot correction from PR RustPython#9127, and update_lib repair with existing-workflow coverage from PR RustPython#9131.

Assisted-by: OpenAI Codex:model version unavailable
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