[1.1 backport] [dataclass_transform] include __dataclass_fields__ in transformed types (#14752) #14769
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
dataclasses
uses a__dataclass_fields__
attribute on each class to mark that it is a dataclass, and Typeshed checks for this attribute in its stubs for functions likedataclasses.is_dataclass
anddataclasses.asdict
.In #14667, I mistakenly removed this attribute for classes transformed by a
dataclass_transform
. This was due to a misinterpretation of PEP 681 on my part; after rereading the section on dataclass semantics, it says:The PEP doesn't seem to state anything about
__dataclass_fields__
or the related functions as far as I can tell, so we should assume that transforms should match the behavior ofdataclasses.dataclass
in this regard and include the attribute. This also matches the behavior of Pyright, which the PEP defines as the reference implementation.(cherry picked from commit 54635de)