Типы typing.Never и typing.NoReturn могут использоваться как типы в аннотациях и не поддерживаются синтаксис аннотации [].
typing.Never:Низший тип (нулевой тип, пустой тип), это тип, у которого нет членов. Низший тип - объект, использующийся в некоторых теориях типов и языках программирования, соответствующий типу без значений.
Низший тип часто используется в качестве возвращаемого значения функции, чтобы показать расходимость функции: когда функция не возвращает никаких результатов вызывающей стороне.
Аннотация typing.Never может быть использовано для определения функции, которая никогда не должна вызываться, или функции, которая никогда не возвращает:
from typing import Never def never_call_me(arg: Never) -> None: pass def int_or_str(arg: int | str) -> None: never_call_me(arg) # ошибка проверки типа match arg: case int(): print("It's an int") case str(): print("It's a str") case _: never_call_me(arg) # проверки типа -> OK, `arg` имеет тип `Never`
Новое в Python 3.11: в более старых версиях Python может использоваться для выражения той же концепции
typing.NoReturn. Аннотацияtyping.Neverбыла добавлена в Python 3.11, чтобы сделать предполагаемое значение более явным.
typing.NoReturn:Специальный тип typing.NoReturn, указывает, что функция никогда не возвращает результат.
Например:
from typing import NoReturn def stop() -> NoReturn: raise RuntimeError('no way')
Новое в Python 3.6.2.
Аннотацию
typing.NoReturnтакже можно использовать в качестве так называемого низшего типа, типа, который не имеет значений. Начиная с Python 3.11, для этой концепции следует использовать тип аннотацииtyping.Never. Средства проверки типов должны относиться к ним одинаково.