Сообщить об ошибке.

Аннотации Never и NoReturn модуля typing в Python

Типизация переменных и функций которые ничего не возвращают

Типы 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. Средства проверки типов должны относиться к ним одинаково.