Extend conformance tests for dataclass hashability#2201
Open
AlexWaygood wants to merge 3 commits intomainfrom
Open
Extend conformance tests for dataclass hashability#2201AlexWaygood wants to merge 3 commits intomainfrom
AlexWaygood wants to merge 3 commits intomainfrom
Conversation
AlexWaygood
commented
Feb 28, 2026
| @@ -1,11 +1,24 @@ | |||
| conformant = "Partial" | |||
| conformant = "Unsupported" | |||
Member
Author
There was a problem hiding this comment.
It's not clear to me that mypy has implemented support for any of the functionality tested in dataclasses_hash.py, so I downgraded its score from "Partial" to "Unsupported". I'm very happy to revert this change if anybody feels this is unfair or if I've missed something!
JelleZijlstra
approved these changes
Feb 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
ty currently fails all the assertions in
dataclasses_hash.py. Insofar as these tests themselves go, this is fair: ty has some unfortunate behaviour around how it treatstyping.Hashableright now, which we'd like to fix. Our behaviour regarding hashability is suboptimal and something we'd like to improve; it's definitely the case that some tests in this file should fail for ty.However, I also don't think a 100% failure rate for ty on this file is an accurate reflection of the state of ty's dataclasses implementation. ty does synthesize a callable
__hash__method for hashable dataclasses, and it does synthesize a__hash__ = Noneattribute for unhashable dataclasses. The reason why it fails 100% of the assertions in this file currently isn't because of a gap in its dataclasses implementation; it's because we simplify unions too eagerly and this causes issues for ourProtocolimplementation.This PR therefore extends the existing tests with some added assertions that don't depend on these unrelated features so heavily. The existing tests that accurately expose a shortcoming in ty's behaviour are retained.