Treat methods with empty bodies in Protocols as abstract #12058
Closed
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.
Description
Closes #8005
Sending this PR to get feedback. The problem is I don't know where to hook into mypy to implement this. I'm fairly confident about my changes in
semanal_classprop.py
, but the code insemanal.py
is most likely in the wrong place. One problem I have is that I can't figure out how to identify overloads. That's why I'm currently excluding any function with a decorator, which is clearly the wrong thing to do.My current plan is to treat any method in a protocol as abstract for which all of the following is true:
pass
,...
, and/or a docstring.None
orAny
.@overload
.Any help appreciated!
Test Plan
I added tests for the new behavior.