Skip to content

dataclasses: 3.12.3 regression with weakref_slot #118033

Closed
@francis-clairicia

Description

@francis-clairicia

Bug report

Bug description:

The __weakref__ slot is not set for classes that have a Generic[T] base.

from typing import Generic, TypeVar
from dataclasses import dataclass

T = TypeVar("T")

@dataclass(slots=True, weakref_slot=True)
class Token(Generic[T]):
    ctx: T

print(f"{Token.__slots__=!r}")
print(f"{hasattr(Token, '__weakref__')=}")

Output on 3.12.2:

Token.__slots__=('ctx', '__weakref__')
hasattr(Token, '__weakref__')=True

On 3.12.3:

Token.__slots__=('ctx',)
hasattr(Token, '__weakref__')=False

CPython versions tested on:

3.12

Operating systems tested on:

Linux, macOS, Windows

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.12only security fixes3.13bugs and security fixesstdlibPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions