Может использоваться как тип в аннотациях с помощью синтаксиса [].
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 во время сравнения на равенство, если один из их параметров является изменяемым типом.