-
-
Notifications
You must be signed in to change notification settings - Fork 3k
[match-case] fix matching against typing.Callable and Protocol types.
#19471
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[match-case] fix matching against typing.Callable and Protocol types.
#19471
Conversation
…eckable test should be performed elsewhere.
…on and anonymous `Callable`
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
39eedb4 to
74db0aa
Compare
This comment has been minimized.
This comment has been minimized.
3418149 to
d62d6d2
Compare
This comment has been minimized.
This comment has been minimized.
d62d6d2 to
143f990
Compare
This comment has been minimized.
This comment has been minimized.
|
Also, does this fix #19470 completely or partially? Please update the description to either remove "partially" or remove "fixes" magic word, so that half-resolved issue does not get autoclosed |
Co-authored-by: Stanislav Terliakov <[email protected]>
Co-authored-by: Stanislav Terliakov <[email protected]>
for more information, see https://pre-commit.ci
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! I like your docstring suggestion in the last comment, could you merge it?
This comment has been minimized.
This comment has been minimized.
|
@sterliakov done. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, looks like this is something worth trying
|
Diff from mypy_primer, showing the effect of this PR on open source code: mitmproxy (https://github.com/mitmproxy/mitmproxy)
+ mitmproxy/http.py:607: error: Unused "type: ignore" comment [unused-ignore]
|
collection.abc.Callableraises error [misc] #14014AnyCallableProtocol differs fromcallable()check #19470Added extra logic in
checker.py:conditional_typesfunction to deal with structural types such astyping.Callableor protocols.new tests
testMatchClassPatternCallable: testscase Callable() as fnusagetestMatchClassPatternProtocol: testscase Proto()usage, whereProtois a ProtocoltestMatchClassPatternCallbackProtocol: testscase Proto()usage, whereProtois a Callback-ProtocoltestGenericAliasIsinstanceUnreachable: derived from a mypy-primer failure in mesonbuild. Tests thatisinstance(x, Proto)can produce unreachable error.testGenericAliasRedundantExprCompoundIfExpr: derived from a CI failure ofpython runtest.py selfof an earlier version of this PR.modified tests
testOverloadOnProtocoladded annotations to overload implementation, which wasn't getting checked. Added missing return. Fixed return type in second branch.