lambda input type is `Any` when function type is a union, and no error when lambda does not satisfy any of the types in the union
Open
Nobody has claimed this yet.
bug
topic-inference
- Dominant language
- Python
- Stars
- 20.6k
- Forks
- 3.3k
- PR merge metrics
- PR metrics pending
Description
from typing import Callable
def f(a: Callable[[int], None] | Callable[[int, str], None]) -> None: ...
f(lambda x: reveal_type(x)) # Any
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the supplied Python reproducer in the issue and compare its behavior in the linked mypy playground. Trace lambda inference when the expected type is a union of Callable types, including the case where no union member accepts the lambda. Done means the lambda parameter is not inferred as Any and an incompatible lambda produces an error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100