-
Notifications
You must be signed in to change notification settings - Fork 1.6k
[ty] Make tuple subclass constructors sound #19469
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
Conversation
|
|
The new diagnostics look weird, though, because I would expect |
yeah, that's why it's still in draft :P I'm looking into it! |
|
Minimal repro: this still passes on this branch: from typing import Callable, Any
def f(x: Callable[..., Any]): ...
f(tuple)but this no longer does: from typing import Callable, Any
def f(x: Callable[[Any], Any]): ...
f(tuple) |
|
The reason seems to be that this ruff/crates/ty_python_semantic/src/types.rs Lines 1420 to 1422 in fcdffe4
|
|
Oh, I think the bug is just astral-sh/ty#760 again, but for |
|
Great, 3838203 fixed it! This now has a clean primer report. |
3838203 to
4e3acfc
Compare
4e3acfc to
0577d51
Compare
* main: (76 commits) Move fix suggestion to subdiagnostic (#19464) [ty] Implement non-stdlib stub mapping for classes and functions (#19471) [ty] Disallow illegal uses of `ClassVar` (#19483) [ty] Disallow `Final` in function parameter/return-type annotations (#19480) [ty] Extend `Final` test suite (#19476) [ty] Minor change to diagnostic message for invalid Literal uses (#19482) [ty] Detect illegal non-enum attribute accesses in Literal annotation (#19477) [ty] Reduce size of `TypeInference` (#19435) Run MD tests for Markdown-only changes (#19479) Revert "[ty] Detect illegal non-enum attribute accesses in Literal annotation" [ty] Detect illegal non-enum attribute accesses in Literal annotation [ty] Added semantic token support for more identifiers (#19473) [ty] Make tuple subclass constructors sound (#19469) [ty] Pass down specialization to generic dataclass bases (#19472) [ty] Garbage-collect reachability constraints (#19414) [ty] Implicit instance attributes declared `Final` (#19462) [ty] Expansion of enums into unions of literals (#19382) [ty] Avoid rechecking the entire project when changing the opened files (#19463) [ty] Add warning for unknown `TY_MEMORY_REPORT` value (#19465) [ty] Sync vendored typeshed stubs (#19461) ...
* main: [ty] Use `ThinVec` for sub segments in `PlaceExpr` (#19470) [ty] Splat variadic arguments into parameter list (#18996) [`flake8-pyi`] Skip fix if all `Union` members are `None` (`PYI016`) (#19416) Skip notebook with errors in ecosystem check (#19491) [ty] Consistent use of American english (in rules) (#19488) [ty] Support iterating over enums (#19486) Fix panic for illegal `Literal[…]` annotations with inner subscript expressions (#19489) Move fix suggestion to subdiagnostic (#19464) [ty] Implement non-stdlib stub mapping for classes and functions (#19471) [ty] Disallow illegal uses of `ClassVar` (#19483) [ty] Disallow `Final` in function parameter/return-type annotations (#19480) [ty] Extend `Final` test suite (#19476) [ty] Minor change to diagnostic message for invalid Literal uses (#19482) [ty] Detect illegal non-enum attribute accesses in Literal annotation (#19477) [ty] Reduce size of `TypeInference` (#19435) Run MD tests for Markdown-only changes (#19479) Revert "[ty] Detect illegal non-enum attribute accesses in Literal annotation" [ty] Detect illegal non-enum attribute accesses in Literal annotation [ty] Added semantic token support for more identifiers (#19473) [ty] Make tuple subclass constructors sound (#19469)
Summary
#18987 only partly implemented the special-casing required to make tuple instantiations sound. While that PR made instantiations of
tupleitself sound, it did not make instantiations of tuple subclasses sound, as the way in which that PR added the special casing did not mean that the synthesized constructor signatures would be automatically inherited by subclasses. This PR fixes that by moving the special casing to a lower level, insideClassType::own_class_member.Test Plan
Mdtests added. Some existing mdtests also had to be slightly modified because they were unsoundly constructing instances of tuple subclasses.