Add __hash__ for a bunch of types that set it to None#13286
Merged
JelleZijlstra merged 2 commits intopython:mainfrom Dec 24, 2024
Merged
Add __hash__ for a bunch of types that set it to None#13286JelleZijlstra merged 2 commits intopython:mainfrom
__hash__ for a bunch of types that set it to None#13286JelleZijlstra merged 2 commits intopython:mainfrom
Conversation
Contributor
|
According to mypy_primer, this change has no effect on the checked open source code. 🤖🎉 |
radarhere
reviewed
Feb 5, 2025
| def conjugate(self) -> _ComplexLike: ... | ||
| @abstractmethod | ||
| def __eq__(self, other: object) -> bool: ... | ||
| __hash__: ClassVar[None] # type: ignore[assignment] |
Contributor
There was a problem hiding this comment.
The Number class states that "Concrete numeric types must provide their own hash implementation"
Feel free to enlighten me if I've missed something, but doesn't the change here mean that you can't actually do that? So for example, doesn't this line mean that the following wouldn't work?
from numbers import Complex
class Test(Complex):
def __hash__(self) -> int:
return 0
Contributor
Author
There was a problem hiding this comment.
Good catch. I tested it, and this requires the use of # type: ignore[override] to type check with mypy correctly. That's not exactly wrong, but isn't a great experience either. I can see an argument for either way.
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.
I found these by removing
__hash__from stubtest's list of ignorable dunders._collections_abc.Mapping.__hash__and_collections_abc.Set.__hash__should also be here, but their counterparts intypingdo have a__hash__method, so I left that alone.Related to #2148
This unfortunately has little practical effect until python/mypy#4266 is fixed.