typing.NoReturnを返す関数以降のコードをmypyは到達不可と判断するようです。
しらなかった。
NoReturnはraise Exception
に対する戻り値とする、と記事で読みました。
なので、そうしていました。
ただ、誤りは、別の型を返すにもかかわらず、->NoReturn
とNoReturnしか返さないとしてしまうと、mypyが呼び出し元の関数以降に到達しない、とerrorを表示する。この意図がわからなかったので、簡易ながらメモ残します。
def main():
my_no_return():
# 以降のコードをmypy/Pycharmの「問題」は到達不能と判断下し、解析しない
def my_no_return(clause:bool)->NoReturn: #ここはException以外もあるため` NoReturn|None`とするのが正解
if clause:
raise Exception("hogehoge")