Skip to content

dataclasses.astuple breaks on DefaultDict #98169

Description

@kwsp

Bug report

This is very similar to #79721

fromdataclassesimportdataclass, astuplefromtypingimportDefaultDict, Listfromcollectionsimportdefaultdict@dataclassclassC:
mp: DefaultDict[str, List]
dd=defaultdict(list)
dd["x"].append(12)
c=C(mp=dd)
d=astuple(c) # throws "TypeError: first argument must be callable or None"assertd== ({"x": [12]},)
assertd[0] isnotc.mp# make sure defaultdict is copied

Basically applying the same fix for asdict from #32056 to astuple.

Your environment

  • CPython versions tested on: 3.10.7
  • Operating system and architecture: macOS, arm64

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    type-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions