Skip to content

dataclasses: 3.12.3 regression with weakref_slot #118033

@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 fixesstdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions