Skip to content

dataclasses.astuple breaks on DefaultDict #98169

Closed
@kwsp

Description

@kwsp

Bug report

This is very similar to #79721

from dataclasses import dataclass, astuple
from typing import DefaultDict, List
from collections import defaultdict

@dataclass
class C:
    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"


assert d == ({"x": [12]},)
assert d[0] is not c.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