-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Include tuple fallback in constraints built from tuple types #19100
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
base: master
Are you sure you want to change the base?
Include tuple fallback in constraints built from tuple types #19100
Conversation
Diff from mypy_primer, showing the effect of this PR on open source code: xarray (https://github.com/pydata/xarray)
+ xarray/conventions.py:413: error: Argument "decode_timedelta" to "decode_cf_variable" has incompatible type "object"; expected "bool | CFTimedeltaCoder | None" [arg-type]
mongo-python-driver (https://github.com/mongodb/mongo-python-driver)
+ bson/__init__.py:1330: error: Unused "type: ignore" comment [unused-ignore]
+ bson/__init__.py:1376: error: Unused "type: ignore[arg-type]" comment [unused-ignore]
|
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.
This makes sense. I think NamedTuples also use partial_fallback
so can you add a test case using that?
will this also stop mypy from crashing in case of a typo like this? class MyTuple[*Ts](tuple[*_Ts]): ... # oh no a typo
https://mypy-play.net/?mypy=1.15.0&python=3.13&gist=1b2a9f33efc227902750f06f5b9c54e4 or should I open a new issue for this? edit: the same crash also seems to happen in case of valid code, btw: class Shape0(tuple[*tuple[()]]): ... https://mypy-play.net/?mypy=latest&python=3.13&gist=e201c77b05e55f03d4b475342475dd83 |
And similarly, how about this one: class Shape[*Ts](tuple[*Ts]): ...
reveal_type((42, )) # tuple[Literal[42]?]
reveal_type(Shape((42, ))) # __main__.Shape[Unpack[builtins.tuple[Never, ...]]] https://mypy-play.net/?mypy=1.15.0&python=3.13&gist=2e2ba990a2112c97ca8d9d071c559a56 is this also covered by this fix, or a different issue? |
@jorenham No, this will definitely not fix a crash, and I highly recommend reporting that one separately ASAP as a crash (not a bug). I'll try to look into it when I have some time - that should be an easy fix. The second snippet is also a different issue (probably unrelated to both this PR and the crash, please report too). @A5rocks namedtuples are handled by a different branch and we should (hopefully) already have tests for that; constraints for namedtuples are built as if they were just their fallbacks, ignoring tuple items. Any ideas what's that |
Fixes #19093.