typing: set warn_unreachable

This makes mypy raise an error whenever it detects code which is
statically unreachable, e.g.

    x: int
    if isinstance(x, str):
        ... # Statement is unreachable  [unreachable]

This is really neat and finds quite a few logic and typing bugs.

Sometimes the code is intentionally unreachable in terms of types, e.g.
raising TypeError when a function is given an argument with a wrong
type. In these cases a `type: ignore[unreachable]` is needed, but I
think it's a nice code hint.
This commit is contained in:
Ran Benita
2020-08-03 19:15:21 +03:00
parent 0dd5e169d0
commit 9ab14c6d9c
24 changed files with 60 additions and 46 deletions
+1 -1
View File
@@ -330,7 +330,7 @@ def _check_record_param_type(param: str, v: str) -> None:
type."""
__tracebackhide__ = True
if not isinstance(v, str):
msg = "{param} parameter needs to be a string, but {g} given"
msg = "{param} parameter needs to be a string, but {g} given" # type: ignore[unreachable]
raise TypeError(msg.format(param=param, g=type(v).__name__))