FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

gh-148947: dataclasses: fix error on empty __class__ cell by JelleZijlstra · Pull Request #148948 · python/cpython · GitHub

/ cpython Public

gh-148947: dataclasses: fix error on empty __class__ cell - #148948

Merged
JelleZijlstra merged 2 commits into
python:mainfrom
JelleZijlstra:weirdclass
Apr 25, 2026
Merged

gh-148947: dataclasses: fix error on empty __class__ cell #148948
JelleZijlstra merged 2 commits into
python:mainfrom
JelleZijlstra:weirdclass

Conversation

JelleZijlstra commented Apr 24, 2026
edited by bedevere-app Bot
Loading

Copy link
Copy Markdown
Member

Also add a test demonstrating the need for the existing "is oldcls" check.

Also add a test demonstrating the need for the existing "is oldcls" check.
JelleZijlstra added the needs backport to 3.14 bugs and security fixes label Apr 24, 2026
johnslavik changed the title gh-148947: dataclasses: fix crash on empty __class__ cell gh-148947: dataclasses: fix error on empty __class__ cell Apr 24, 2026

johnslavik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Nice catch! 🚀

Comment thread Lib/test/test_dataclasses/__init__.py Outdated
johnslavik changed the title gh-148947: dataclasses: fix error on empty __class__ cell gh-148947: dataclasses: fix crash on empty __class__ cell Apr 24, 2026
johnslavik changed the title gh-148947: dataclasses: fix crash on empty __class__ cell gh-148947: dataclasses: fix error on empty __class__ cell Apr 24, 2026
Co-authored-by: Bartosz Sławecki <bartosz@ilikepython.com>
JelleZijlstra merged commit 6d7bbee into python:main Apr 25, 2026
51 checks passed

Copy link
Copy Markdown

Thanks @JelleZijlstra for the PR 🌮🎉.. I'm working now to backport this PR to: 3.14.
🐍🍒⛏🤖

JelleZijlstra deleted the weirdclass branch April 25, 2026 15:31

bedevere-app Bot commented Apr 25, 2026

Copy link
Copy Markdown

GH-148995 is a backport of this pull request to the 3.14 branch.

bedevere-app Bot removed the needs backport to 3.14 bugs and security fixes label Apr 25, 2026
ljfp pushed a commit to ljfp/cpython that referenced this pull request Apr 25, 2026
…on#148948)

Also add a test demonstrating the need for the existing "is oldcls" check.

Co-authored-by: Bartosz Sławecki <bartosz@ilikepython.com>
JelleZijlstra added a commit that referenced this pull request Apr 25, 2026
…148948) (#148995)

gh-148947: dataclasses: fix error on empty __class__ cell  (GH-148948)

Also add a test demonstrating the need for the existing "is oldcls" check.
(cherry picked from commit 6d7bbee)

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Bartosz Sławecki <bartosz@ilikepython.com>
gpshead added a commit to gpshead/cpython that referenced this pull request Apr 25, 2026
pythonGH-148948)

pythongh-148947: dataclasses: fix error on empty __class__ cell  (pythonGH-148948)

Also add a test demonstrating the need for the existing "is oldcls" check.
(cherry picked from commit 6d7bbee)

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Bartosz Sławecki <bartosz@ilikepython.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
gpshead added a commit to gpshead/cpython that referenced this pull request Apr 25, 2026
pythonGH-148948)

pythongh-148947: dataclasses: fix error on empty __class__ cell  (pythonGH-148948)

Also add a test demonstrating the need for the existing "is oldcls" check.
(cherry picked from commit 6d7bbee)

Consolidates the news entries given pythonGH-148947 bug was never present in the 3.13
branch

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Bartosz Sławecki <bartosz@ilikepython.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
gpshead added a commit that referenced this pull request Apr 26, 2026
…_delattr__ in frozen dataclasses with slots (GH-144021) (GH-148476)

gh-105936: Properly update closure cells for `__setattr__` and `__delattr__` in frozen dataclasses with slots (GH-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 GH-124455 (gh-90562). Specifically:

- Backported `_update_func_cell_for__class__()` helper function and the
  closure fixup loop in `_add_slots()` from GH-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 GH-137047 for gh-135228 which was not
  backported to 3.13).

gh-148947: dataclasses: fix error on empty __class__ cell  (GH-148948)

Also add a test demonstrating the need for the existing "is oldcls" check.
(cherry picked from commit 6d7bbee)

---------

Co-authored-by: Prometheus3375 <prometheus3375@gmail.com>
Co-authored-by: Sviataslau <35541026+Prometheus3375@users.noreply.github.com>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Bartosz Sławecki <bartosz@ilikepython.com>
This 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
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


Back | FazBrowse Home | New Git URL