-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Open
Labels
bugmypy got something wrongmypy got something wrongtopic-overloadstopic-type-contextType context / bidirectional inferenceType context / bidirectional inferencetopic-typeguard-typeisTypeGuard / TypeIs / PEP 647 / PEP 742TypeGuard / TypeIs / PEP 647 / PEP 742
Description
Bug Report
NB: This may be more properly an issue in Typeshed, or require changes in that project to fix, but our team encountered it via MyPy.
The type annotations on builtins.filter
cause correct and idiomatic usages to fail to typecheck:
To Reproduce
# filter-mypy.py
path_parts: List[Optional[str]] = ["foo", None, "bar"]
"/".join(filter(None, path_parts))
"/".join(filter(bool, path_parts))
"/".join(filter(lambda s: isinstance(s, str), path_parts))
Expected:
$> mypy filter-mypy.py
Success: no issues found in 1 source file
Actual result:
$> mypy filter-mypy.py
filter-mypy.py:6: error: Argument 1 to "filter" has incompatible type "Type[bool]"; expected "Callable[[Optional[str]], TypeGuard[str]]"
filter-mypy.py:7: error: Argument 1 to "filter" has incompatible type "Callable[[Any], bool]"; expected "Callable[[Optional[str]], TypeGuard[str]]"
Found 2 errors in 1 file (checked 1 source file)
Your Environment
- Mypy version used:
$> mypy --version
mypy 0.950 (compiled: yes)
- Python version used:
$> python --version
Python 3.10.4
- Operating system and version: Ubuntu 20.04
The following is what my editor (VSCode) pulls up when I investigate the type hints for filter
, though I doubt this is the same file that MyPy itself is consulting:
class filter(Iterator[_T], Generic[_T]):
@overload
def __init__(self, __function: None, __iterable: Iterable[_T | None]) -> None: ...
@overload
def __init__(self, __function: Callable[[_S], TypeGuard[_T]], __iterable: Iterable[_S]) -> None: ...
@overload
def __init__(self, __function: Callable[[_T], Any], __iterable: Iterable[_T]) -> None: ...
Note that both offending lines conform to the third type signature, but fail the second.
pauleverettmo, Hnasar, CremaLuca, fcr--, davida-c2a and 26 more
Metadata
Metadata
Assignees
Labels
bugmypy got something wrongmypy got something wrongtopic-overloadstopic-type-contextType context / bidirectional inferenceType context / bidirectional inferencetopic-typeguard-typeisTypeGuard / TypeIs / PEP 647 / PEP 742TypeGuard / TypeIs / PEP 647 / PEP 742