Skip to content

Comments

gh-145056: Add support for frozendict in dataclass asdict and astuple#145125

Open
eendebakpt wants to merge 6 commits intopython:mainfrom
eendebakpt:dataclasses_frozendict_tests
Open

gh-145056: Add support for frozendict in dataclass asdict and astuple#145125
eendebakpt wants to merge 6 commits intopython:mainfrom
eendebakpt:dataclasses_frozendict_tests

Conversation

@eendebakpt
Copy link
Contributor

@eendebakpt eendebakpt commented Feb 22, 2026

Adds support for frozendict in dataclassses.astype and dataclasses.asdict. The main effect is that astuple and asdict recursive into a frozendict (just like they recurse into a dict). For example

from typing import Any
from dataclasses import dataclass, astuple, asdict

@dataclass
class A:
    item : Any

asub = A(item=10)
a = A(item=frozendict({'sub': asub}))
print(astuple(a))

Output on main: (frozendict({'sub': A(item=10)}),)
Output on PR: (frozendict({'sub': (10,)}),)

Notes:

  • Tracking issue for PEP 814 is PEP 814: Add built-in frozendict type #141510
  • For exact dicts there is a fastpath (for performance reasons). In this PR we have not added a fastpath for the frozendict. If this turns out to be a common case, we can add the fastpath later.

📚 Documentation preview 📚: https://cpython-previews--145125.org.readthedocs.build/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant