Skip to content

Expose symbol scopes through _symtable - #8538

Open
YangSiJun528 wants to merge 1 commit into
RustPython:mainfrom
YangSiJun528:expose-symtable-scopes
Open

Expose symbol scopes through _symtable#8538
YangSiJun528 wants to merge 1 commit into
RustPython:mainfrom
YangSiJun528:expose-symtable-scopes

Conversation

@YangSiJun528

@YangSiJun528 YangSiJun528 commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Summary

_symtable omitted symbol scope information, causing Lib/symtable.py to report incorrect globals, locals, and free variables.

Expose the missing scope information so the public symtable API returns CPython-compatible results.

Testing

  • cargo run --release -- -m test test_symtable

AI assistance

Codex (GPT-5) was used to investigate and implement this change.
I reviewed and validated all AI-assisted work.

Summary by CodeRabbit

  • Bug Fixes
    • Corrected symbol table results to include both symbol flags and scope information.
    • Improved the accuracy of symbol metadata returned to callers.

Pack symbol scopes with definition flags in _symtable.symbols for
Lib/symtable.py.

Assisted-by: Codex:gpt-5
@github-actions github-actions Bot added the z-ca-2026 Tag to track Contribution Academy 2026 label Aug 16, 2026
@coderabbitai

coderabbitai Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro Plus

Run ID: 3aa4bb6f-4909-448f-8395-028131f51fec

📥 Commits

Reviewing files that changed from the base of the PR and between aaeab4f and 62dd3ca.

⛔ Files ignored due to path filters (1)
  • Lib/test/test_symtable.py is excluded by !Lib/**
📒 Files selected for processing (1)
  • crates/vm/src/stdlib/_symtable.rs

Included review availability: Your plan includes up to 10 reviews per rolling hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

PySymbolTable.symbols now returns symbol flags combined with the symbol scope shifted by SCOPE_OFFSET.

Changes

Symbol scope encoding

Layer / File(s) Summary
Encode symbol scope values
crates/vm/src/stdlib/_symtable.rs
PySymbolTable.symbols combines each symbol’s flag bits with its shifted scope classification.

Estimated code review effort: 2 (Simple) | ~5 minutes

Merge Risk: ⚪ Minimal · up to 62dd3

This is a localized behavior fix with no actionable merge-blocking risk remaining; merge after normal formatting and lint checks.

Possibly related PRs

Suggested reviewers: shaharnaveh, youknowone

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: exposing symbol scopes through _symtable.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@github-actions

Copy link
Copy Markdown
Contributor

📦 Library Dependencies

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

[x] lib: cpython/Lib/symtable.py
[x] test: cpython/Lib/test/test_symtable.py (TODO: 5)

dependencies:

  • symtable

dependent tests: (2 tests)

  • symtable: test_inspect test_symtable

Legend:

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

z-ca-2026 Tag to track Contribution Academy 2026

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant