mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-10-11 03:38:07 +00:00
* fix(python): model restoring helper calls in decorator identity (#3414) A bare module-level call to a same-file helper whose every global binding of a descriptor name is an unconditional del or builtins import now restores the builtin at the call site, matching CPython. A nonlocal rebind nested in the enclosing function now shadows an owned builtins import, closing a false builtin. Unprovable call orders stay fail-closed and are pinned against CPython 3.11. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix(review): apply review findings Close three false-builtin paths the review found: a match-pattern capture now counts as a binding (at any scope, including inside a restoring helper), a call before the helper's def no longer counts as a restore, and the helper-name uniqueness check sees match captures. Pin the helper rejections (conditional restore, async, early and nested return, wildcard import) against CPython 3.11. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix(cache): bump parse-cache schema to v122 for #3414 Python decorator identity verdicts changed, so warm v121 ParsedFiles would replay stale receiver bindings. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix(python): require an argument-free call to a helper with no required parameters A call that fails to bind the helper's parameters raises TypeError before the body runs, so it proves no restore. Keep such calls fail-closed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix(python): count only real captures and module bindings for decorator identity Match value patterns, class names and keyword keys read a name rather than capture it, so they no longer shadow a builtin descriptor. A local of the same name as a restoring helper no longer disqualifies the module-level helper; only a module binding or a global rebind does. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(python): state the fail-closed contract of the descriptor identity table `false` means the resolver does not prove the builtin, not that CPython shadows it. Cases where CPython keeps the builtin but the resolver fails closed carry a comment saying so. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Gergo Magyar <gergomagyar0@gmail.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| fixtures | ||
| helpers | ||
| integration | ||
| unit | ||
| utils | ||