Search code examples
pythonmypy

mypy - How to mark line as unreachable


I've got a function of the form:

def get_new_file(prefix: str) -> pathlib.Path:
    for i in itertools.count(0):
        p = pathlib.Path(f'{prefix}_{i}')
        if not p.is_file():
            return p
    # This line is unreachable.

mypy understandably complains that the function is missing a return statement. Is there a way to mark a line so as to inform mypy that the line should be considered unreachable?


Solution

  • This was raised as an issue. The recommended solution is assert False.

    def get_new_file(prefix: str) -> pathlib.Path:
        for i in itertools.count(0):
            p = pathlib.Path(f'{prefix}_{i}')
            if not p.is_file():
                return p
        assert False