Skip to content

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

@JelleZijlstra

Description

@JelleZijlstra

Bug report

Bug description:

On Python 3.14, this code:

def maker():
    if False:
        __class__ = 42

    def method(self):
        return __class__
    return method

from dataclasses import dataclass

@dataclass(slots=True)
class X:
    a: int

    meth = maker()

Fails with ValueError: Cell is empty, because some dataclasses machinery for updating the __class__ cell doesn't reckon with the possibility that the cell may be empty.

CPython versions tested on:

3.14, CPython main branch

Operating systems tested on:

macOS

Linked PRs

Metadata

Metadata

Assignees

Labels

3.14bugs and security fixes3.15new features, bugs and security fixesstdlibStandard Library Python modules in the Lib/ directorytopic-dataclassestype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions