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

Тип аннотации Literal модуля typing в Python

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

Может использоваться как тип в аннотациях с помощью синтаксиса [].

Синтаксис:

from typing import Literal

# Новое в Python 3.8.
Literal['a', 'b', ...]

Параметры:

  • 'a', 'b', ... - допустимые литеральные значения аргумента функции.

Описание:

Тип аннотации Literal модуля typing, может использоваться для указания контролерам типов, что соответствующая переменная или параметр функции имеет значение, эквивалентное предоставленному литералу или одному из нескольких литералов.

Например:

def validate_simple(data: Any) -> Literal[True]:  # всегда возвращает `True`
    ...

MODE = Literal['r', 'rb', 'w', 'wb']
def open_helper(file: str, mode: MODE) -> str:
    ...

open_helper('/some/path', 'r')  # Проходит проверку типа
open_helper('/other/path', 'typo')  # Ошибка в проверке типов

Тип Literal[...] не может быть разделен на подклассы. Во время выполнения в качестве аргумента типа для Literal[...] допускается произвольное значение, но средства проверки типов могут накладывать ограничения.

Новое в Python 3.8.

Изменено в Python 3.9.1: Тип аннотации Literal теперь дедуплицирует параметры. При сравнении на равенство объектов Literal больше не зависит от порядка допустимых литералов. Литеральные объекты теперь будут вызывать исключение TypeError во время сравнения на равенство, если один из их параметров является изменяемым типом.