Проверьте, находится ли строка в строковом литеральном типе - PullRequest
0 голосов
/ 11 апреля 2020

Мы широко используем проверку типов stati c, но нам также нужна простая проверка типов во время выполнения. Я бы хотел использовать наши типы stati c для проверки типов во время выполнения. Я видел typeguard и другие библиотеки, но предпочел бы что-нибудь попроще.

Я пробовал ниже, но assert value in expected_type не имеет смысла. Как создать простую функцию, которая будет проверять, находится ли строка в строковом литерале Python?

from typing_extensions import Literal

def check_str_in_literal(value: str, expected_type: Literal):
    assert value in expected_type

Gender = Literal["Male", "Female", "Other"]
def print_gender(gender: Gender):
    print(gender)

# Unknown string as it's been retrieved from elsewhere
strRetrievedFromDB = "Male"  # type: ignore

check_str_in_literal(strRetrievedFromDB, Gender)
print_gender(strRetrievedFromDB)
...