GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — gh-148947: dataclasses: fix error on empty __class__ cell by JelleZijlstra · Pull Request #148948 · python/cpython

Conversation

@JelleZijlstra

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

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

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

  • Issue: dataclass(slots=True) fails if method has an empty __class__ cell #148947

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@JelleZijlstra
pythongh-148947: dataclasses: fix crash on empty __class__ cell
9983346
Also add a test demonstrating the need for the existing "is oldcls" check.
@JelleZijlstra JelleZijlstra added the needs backport to 3.14 bugs and security fixes label Apr 24, 2026
@JelleZijlstra
JelleZijlstra requested a review from ericvsmith as a code owner April 24, 2026 04:49
@bedevere-app bedevere-app Bot added the awaiting core review label Apr 24, 2026
@bedevere-app bedevere-app Bot mentioned this pull request Apr 24, 2026
dataclass(slots=True) fails if method has an empty __class__ cell #148947
Closed
@johnslavik 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
johnslavik approved these changes Apr 24, 2026
View reviewed changes

@johnslavik johnslavik left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Nice catch! 🚀

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread Lib/test/test_dataclasses/__init__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

@johnslavik 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 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
@JelleZijlstra @johnslavik
Update Lib/test/test_dataclasses/__init__.py
f3792ab
Co-authored-by: Bartosz Sławecki <[email protected]>
@JelleZijlstra
JelleZijlstra merged commit 6d7bbee into python:main Apr 25, 2026
51 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@miss-islington-app

miss-islington-app Bot commented Apr 25, 2026

Copy link
Copy Markdown

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

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-app bedevere-app Bot removed the awaiting core review label Apr 25, 2026
@JelleZijlstra
JelleZijlstra deleted the weirdclass branch April 25, 2026 15:31
@bedevere-app

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.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-app 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
@JelleZijlstra @johnslavik @ljfp
pythongh-148947: dataclasses: fix error on empty __class__ cell (pyth…
efe54da
…on#148948)

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

Co-authored-by: Bartosz Sławecki <[email protected]>
JelleZijlstra added a commit that referenced this pull request Apr 25, 2026
@miss-islington @JelleZijlstra @johnslavik
[3.14] gh-148947: dataclasses: fix error on empty __class__ cell (GH-…
15e2b64
…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 <[email protected]>
Co-authored-by: Bartosz Sławecki <[email protected]>
gpshead added a commit to gpshead/cpython that referenced this pull request Apr 25, 2026
@gpshead @JelleZijlstra
@johnslavik @claude
[3.13] pythongh-148947: dataclasses: fix error on empty __class__ cell (
3abfebc
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 <[email protected]>
Co-authored-by: Bartosz Sławecki <[email protected]>
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
gpshead added a commit to gpshead/cpython that referenced this pull request Apr 25, 2026
@gpshead @JelleZijlstra
@johnslavik @claude
[3.13] pythongh-148947: dataclasses: fix error on empty __class__ cell (
678cc46
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 <[email protected]>
Co-authored-by: Bartosz Sławecki <[email protected]>
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
gpshead added a commit that referenced this pull request Apr 26, 2026
@gpshead @Prometheus3375
@JelleZijlstra @johnslavik
[3.13] gh-105936: Properly update closure cells for __setattr__ and _…
9651429
…_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 <[email protected]>
Co-authored-by: Sviataslau <[email protected]>
Co-authored-by: Jelle Zijlstra <[email protected]>
Co-authored-by: Bartosz Sławecki <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@johnslavik johnslavik johnslavik approved these changes
@ericvsmith ericvsmith Awaiting requested review from ericvsmith ericvsmith is a code owner

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@JelleZijlstra @johnslavik
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.