Как указать ожидаемое значение?

Есть функция, которая принимает на вход только -1, 0 и 1. Как мне указать это?

Так не работает:

from typing import Union

def do_anything(var: Union[-1, 0, 1]) -> dict:
    ...

Ответы (1 шт):

Автор решения: strawdog

Попробуйте использовать typing.Literal

tc.py:

from typing import Literal

def do_anything(var: Literal[-1, 0, 1]) -> dict:
    return dict()

do_anything(2)

mypy tc.py

tc.py:6: error: Argument 1 to "do_anything" has incompatible type "Literal[2]"; expected "Union[Literal[-1], Literal[0], Literal[1]]" Found 1 error in 1 file (checked 1 source file)

from typing import Literal

def do_anything(var: Literal[-1, 0, 1]) -> dict:
    return dict()

do_anything(1)

mypy tc.py

Success: no issues found in 1 source file

→ Ссылка