from __future__ import annotations | |
import sys | |
from typing import Any, Dict | |
if sys.version_info >= (3, 8): | |
from typing import Literal, TypedDict | |
else: | |
# avoid runtime dependency on typing_extensions on py37 | |
try: | |
from typing_extensions import Literal, TypedDict # type: ignore | |
except ImportError: | |
class _Literal: | |
def __getitem__(self, key): | |
return Any | |
Literal = _Literal() # type: ignore | |
class TypedDict(Dict): # type: ignore | |
pass | |
if sys.version_info >= (3, 10): | |
from typing import TypeAlias | |
else: | |
try: | |
from typing_extensions import TypeAlias | |
except ImportError: | |
TypeAlias = type # type: ignore | |