import enum from typing import Any, List, Tuple class ChoicesMeta(enum.EnumMeta): names: List[str] = ... choices: List[Tuple[Any, str]] = ... labels: List[str] = ... values: List[Any] = ... def __contains__(self, item: Any) -> bool: ... class Choices(enum.Enum, metaclass=ChoicesMeta): def __str__(self): ... @property def label(self) -> str: ... @property def value(self) -> Any: ... # fake class _IntegerChoicesMeta(ChoicesMeta): names: List[str] = ... choices: List[Tuple[int, str]] = ... labels: List[str] = ... values: List[int] = ... class IntegerChoices(int, Choices, metaclass=_IntegerChoicesMeta): @property def value(self) -> int: ... # fake class _TextChoicesMeta(ChoicesMeta): names: List[str] = ... choices: List[Tuple[str, str]] = ... labels: List[str] = ... values: List[str] = ... class TextChoices(str, Choices, metaclass=_TextChoicesMeta): @property def value(self) -> str: ...