-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
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
Inference failure with Protocol and ParamSpec #15734
Labels
Comments
hauntsaninja
pushed a commit
that referenced
this issue
Sep 14, 2023
Fixes #15734 Fixes #15188 Fixes #14321 Fixes #13107 (plain Callable was already working, this fixes the protocol example) Fixes #16058 It looks like treating trivial suffixes (especially for erased callables) as "whatever works" is a right thing, because it reflects the whole idea of why we normally check subtyping with respect to an e.g. erased type. As you can see this fixes a bunch of issues. Note it was necessary to make couple more tweaks to make everything work smoothly: * Adjust self-type erasure level in `checker.py` to match other places. * Explicitly allow `Callable` as a `self`/`cls` annotation (actually I am not sure we need to keep this check at all, since we now have good inference for self-types, and we check they are safe either at definition site or at call site).
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
To Reproduce
mypy Playground
Expected Behavior
No error found.
Actual Behavior
Argument 1 to "forwarder1" has incompatible type "Callable[[int, str, float], str]"; expected "FuncType[]" [arg-type]
Argument 2 to "forwarder1" has incompatible type "float"; expected [arg-type]
The text was updated successfully, but these errors were encountered: