playground
fromtypingimportAny, Callablefromtyping_extensionsimportTypeIs, assert_type, assert_neverdefis_single_callable(c: Callable[[], Any] |Callable[[int], Any]) ->TypeIs[Callable[[int], Any]]:
...
deftest(c: Callable[[], Any] |Callable[[int], Any]):
ifis_single_callable(c):
reveal_type(c)
else:
# mypy thinks this is unreachablea: int=1
While c could be narrowed to Callable[[], Any] in the else block, it is currently narrowed to Never. For reference, see this discussion.
Your Environment
- Mypy version used: 1.12.1
- Mypy command-line flags:
--warn-unreachable - Python version used: 3.12
playground
While
ccould be narrowed toCallable[[], Any]in theelseblock, it is currently narrowed toNever. For reference, see this discussion.Your Environment
--warn-unreachable