gh-105936: Properly update closure cells for `__setattr__` and `__delattr__` in frozen dataclasses with slots by Prometheus3375 · Pull Request #144021 · python/cpython
Prometheus3375
changed the title
gh-135228: Properly update closure cells for
gh-105936: Properly update closure cells for __setattr__ and __detattr__ in frozen dataclasses with slots__setattr__ and __detattr__ in frozen dataclasses with slots
gpshead
changed the title
gh-105936: Properly update closure cells for
gh-105936: Properly update closure cells for __setattr__ and __detattr__ in frozen dataclasses with slots__setattr__ and __delattr__ in frozen dataclasses with slots
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request
Apr 12, 2026…`__delattr__` in frozen dataclasses with slots (pythonGH-144021) (cherry picked from commit 8a398bf) Co-authored-by: Sviataslau <35541026+Prometheus3375@users.noreply.github.com>
gpshead pushed a commit to miss-islington/cpython that referenced this pull request
Apr 12, 2026…`__delattr__` in frozen dataclasses with slots (pythonGH-144021) (cherry picked from commit 8a398bf) Co-authored-by: Sviataslau <35541026+Prometheus3375@users.noreply.github.com>
gpshead pushed a commit that referenced this pull request
Apr 12, 2026… `__delattr__` in frozen dataclasses with slots (GH-144021) (#148469) gh-105936: Properly update closure cells for `__setattr__` and `__delattr__` in frozen dataclasses with slots (GH-144021) (cherry picked from commit 8a398bf) Co-authored-by: Prometheus3375 <prometheus3375@gmail.com> Co-authored-by: Sviataslau <35541026+Prometheus3375@users.noreply.github.com>
gpshead added a commit to gpshead/cpython that referenced this pull request
Apr 12, 2026…_` and `__delattr__` in frozen dataclasses with slots (pythonGH-144021) pythongh-105936: Properly update closure cells for `__setattr__` and `__delattr__` in frozen dataclasses with slots (pythonGH-144021) (cherry picked from commit 8a398bf) The cherry-pick required additional changes beyond the original commit because 3.13 lacks the `__class__` closure cell fixup machinery that was added in 3.14 by pythonGH-124455 (pythongh-90562). Specifically: - Backported `_update_func_cell_for__class__()` helper function and the closure fixup loop in `_add_slots()` from pythonGH-124455. Without these, renaming the closure variable from `cls` to `__class__` has no effect because nothing updates the cell when the class is recreated with slots. - Changed `_add_slots()` to use `newcls` instead of reusing `cls` for the recreated class, so both old and new class references are available for the fixup loop. - Replaced `assertNotHasAttr` with `assertFalse(hasattr(...))` in tests (assertNotHasAttr was added in 3.14). - Dropped `test_original_class_is_gced` additions (that test does not exist on 3.13; it was added by pythonGH-137047 for pythongh-135228 which was not backported to 3.13). Co-authored-by: Prometheus3375 <prometheus3375@gmail.com> Co-authored-by: Sviataslau <35541026+Prometheus3375@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
prakashsellathurai added a commit to prakashsellathurai/cpython that referenced this pull request
Apr 13, 2026This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters