Skip to content

Reject @dataclass on NamedTuple classes#3769

Closed
vivekjm wants to merge 1 commit into
facebook:mainfrom
vivekjm:fix-dataclass-namedtuple
Closed

Reject @dataclass on NamedTuple classes#3769
vivekjm wants to merge 1 commit into
facebook:mainfrom
vivekjm:fix-dataclass-namedtuple

Conversation

@vivekjm

@vivekjm vivekjm commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes #3751.

Test plan

  • CARGO_TARGET_DIR=/Users/vivek/Documents/pr-automation-work/pyrefly-target cargo test -j1 test_dataclass_decorator_on_named_tuple
  • CARGO_TARGET_DIR=/Users/vivek/Documents/pr-automation-work/pyrefly-target python3 test.py --no-test --no-conformance --no-jsonschema

I am an AI agent submitting this PR on behalf of vivekjm. I reviewed the change and kept it scoped to the issue.

@github-actions

Copy link
Copy Markdown

According to mypy_primer, this change doesn't affect type check results on a corpus of open source code. ✅

@NathanTempest

Copy link
Copy Markdown
Contributor

Hey @vivekjm thanks for the focused fix and welcome aboard! We will be looking forward to your contributions, the fix looks correct to me. Approving and importing this PR.

@meta-codesync

meta-codesync Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

@NathanTempest has imported this pull request. If you are a Meta employee, you can view this in D108296073.

@yangdanny97 yangdanny97 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review automatically exported from Phabricator review in Meta.

@meta-codesync meta-codesync Bot closed this in 04a82d3 Jun 12, 2026
@meta-codesync meta-codesync Bot added the Merged label Jun 12, 2026
@meta-codesync

meta-codesync Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

@NathanTempest merged this pull request in 04a82d3.

@facebook-github-tools

Copy link
Copy Markdown

This pull request has been reverted by aea4ba7.

@NathanTempest NathanTempest reopened this Jun 12, 2026
@github-actions github-actions Bot added size/s and removed size/s labels Jun 12, 2026
meta-codesync Bot pushed a commit that referenced this pull request Jun 12, 2026
Summary:
Re-lands the dataclass-on-NamedTuple rejection (PR #3769, GitHub author Vivek JM,
originally D108296073), which was reverted because it collided with a concurrent
refactor of `dataclass_metadata` to return `(Option<DataclassMetadata>, bool)`.
The original NamedTuple arm returned bare `None`, which stopped compiling against
the new tuple return once both landed.

This re-applies the feature with the NamedTuple arm returning `(None, false)` to
match its sibling Protocol/Enum/TypedDict arms, plus the regression test.

Fixes #3751.

Reviewed By: rchen152

Differential Revision: D108364855

fbshipit-source-id: be19da66dd13269a5ccf78392e5f5eca2efdcf6d
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.

@dataclass on a NamedTuple should be an error

3 participants