Feature
Consider the following code:
from typing import Optional, List
list_with_none: List[Optional[int]] = [None, 1, 2]
filtered = filter(lambda v: v is not None, list_with_none)
reveal_type(filtered)
# Revealed type is 'typing.Iterator[Union[builtins.int, None]]'
It would be nice if mypy was able to parse simple lambda functions like this one, and infer that filtered is typing.Iterator[builtins.int].
Note that in this example, we use a simple none check, but this could work with more complicated checks:
list_of_tuples: List[Tuple[Optional[int], Optional[int]]]
filter(lambda v: v[0] is not None and v[1] is not None, list_of_tuples)
# would become `Iterator[Tuple[int, int]]`
Pitch
This is a fairly common idiom in Python.
Reasons why mypy might now want to do this:
Feature
Consider the following code:
It would be nice if mypy was able to parse simple lambda functions like this one, and infer that
filteredistyping.Iterator[builtins.int].Note that in this example, we use a simple none check, but this could work with more complicated checks:
Pitch
This is a fairly common idiom in Python.
Reasons why mypy might now want to do this: