diff --git a/faker/providers/__init__.py b/faker/providers/__init__.py index 1c6f87d921..ab363e3698 100644 --- a/faker/providers/__init__.py +++ b/faker/providers/__init__.py @@ -1,9 +1,11 @@ import re import string -from typing import Any, Collection, List, Optional, OrderedDict, Sequence, TypeVar, Union +from collections import OrderedDict +from typing import Any, Collection, List, Optional, Sequence, TypeVar, Union from ..generator import Generator +from ..typing import OrderedDictType from ..utils.distribution import choices_distribution, choices_distribution_unique _re_hash = re.compile(r"#") @@ -15,7 +17,7 @@ S = TypeVar("S") T = TypeVar("T") -ElementsType = Union[Collection[T], OrderedDict[T, float]] +ElementsType = Union[Collection[T], OrderedDictType[T, float]] class BaseProvider: diff --git a/faker/typing.py b/faker/typing.py index d18e6dfa3f..f412740368 100644 --- a/faker/typing.py +++ b/faker/typing.py @@ -1,3 +1,5 @@ +import sys + from datetime import date, datetime, timedelta from typing import Sequence, TypeVar, Union @@ -6,6 +8,13 @@ except ImportError: from typing_extensions import Literal # type: ignore +if sys.version_info >= (3, 9): + from collections import OrderedDict as OrderedDictType +elif sys.version_info >= (3, 7, 2): + from typing import OrderedDict as OrderedDictType +else: + from typing_extensions import OrderedDict as OrderedDictType # NOQA + DateParseType = Union[date, datetime, timedelta, str, int] HueType = TypeVar("HueType", str, float, Sequence[int]) SexLiteral = Literal["M", "F"]