Skip to content

Infer type var tuple contents in more situations #18958

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

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

A5rocks
Copy link
Collaborator

@A5rocks A5rocks commented Apr 23, 2025

Supersedes #17512 as I figured out how to handle this case in a more general manner.

This PR fixes #16522. It adds a mechanism for constraints to be discarded if they are less likely to be correct: for instance, if you pass f(x: int, y: str = "42") to Callable[[Unpack[Ts]], None] it's not clear whether y should be included in an unpacked TypeVarTuple. This PR makes it such that function_using_typevartuple(f, 42) discards constraints based on f.

This comment has been minimized.

@A5rocks
Copy link
Collaborator Author

A5rocks commented Apr 24, 2025

The only bad change in mypy primer is:

+ homeassistant/components/homekit/accessories.py:656: error: Argument 2 to "async_dispatcher_send" has incompatible type "SignalType[tuple[str, ...]]"; expected "SignalType[tuple[str]]"  [arg-type]

... and I'm not quite sure if there's a good way to solve this. We could check whether constraints interfere with each other and only if they do prefer the higher quality ones? That sounds slow, though. (EDIT: I did that, but again I'm not confident it's right)

Copy link
Contributor

Diff from mypy_primer, showing the effect of this PR on open source code:

vision (https://github.com/pytorch/vision)
- torchvision/utils.py:270: error: Unused "type: ignore" comment  [unused-ignore]

sockeye (https://github.com/awslabs/sockeye)
+ sockeye/layers.py:530: error: Unused "type: ignore" comment  [unused-ignore]
+ sockeye/layers.py:873: error: Unused "type: ignore" comment  [unused-ignore]

core (https://github.com/home-assistant/core)
+ homeassistant/util/signal_type.pyi:58: error: Unused "type: ignore" comment  [unused-ignore]
+ homeassistant/util/signal_type.pyi:58: error: Argument 2 to "async_dispatcher_send" has incompatible type "SignalType[int]"; expected "SignalType[str]"  [arg-type]
+ homeassistant/util/signal_type.pyi:58: note: Error code "arg-type" not covered by "type: ignore" comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Never inferred in complex situation with variadic callable protocol
1 participant