]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
always use typing_extension
authorFederico Caselli <cfederico87@gmail.com>
Sat, 25 Jun 2022 09:55:07 +0000 (11:55 +0200)
committerFederico Caselli <cfederico87@gmail.com>
Sat, 25 Jun 2022 09:55:07 +0000 (11:55 +0200)
always use typing_extensions to import missing types in old python version

Change-Id: Ied03e8597e10bfae06f0e37d8624fbad90e74bcf

lib/sqlalchemy/util/typing.py
setup.cfg

index 4e76554c73e8d0151a7b40ed4ed24735c4ab9d5b..653301f1f2bf62a7ed00af5a9a63e63536b290ea 100644 (file)
@@ -19,16 +19,26 @@ from typing import Type
 from typing import TypeVar
 from typing import Union
 
-from typing_extensions import NotRequired as NotRequired  # noqa: F401
-
 from . import compat
 
-
-# more zimports issues
-if True:
-    from typing_extensions import (  # noqa: F401
-        dataclass_transform as dataclass_transform,
+if True:  # zimports removes the tailing comments
+    from typing_extensions import Annotated as Annotated  # 3.8
+    from typing_extensions import Concatenate as Concatenate  # 3.10
+    from typing_extensions import (
+        dataclass_transform as dataclass_transform,  # 3.11,
     )
+    from typing_extensions import Final as Final  # 3.8
+    from typing_extensions import final as final  # 3.8
+    from typing_extensions import get_args as get_args  # 3.10
+    from typing_extensions import get_origin as get_origin  # 3.10
+    from typing_extensions import Literal as Literal  # 3.8
+    from typing_extensions import NotRequired as NotRequired  # 3.11
+    from typing_extensions import ParamSpec as ParamSpec  # 3.10
+    from typing_extensions import Protocol as Protocol  # 3.8
+    from typing_extensions import SupportsIndex as SupportsIndex  # 3.8
+    from typing_extensions import TypeAlias as TypeAlias  # 3.10
+    from typing_extensions import TypedDict as TypedDict  # 3.8
+    from typing_extensions import TypeGuard as TypeGuard  # 3.10
 
 
 _T = TypeVar("_T", bound=Any)
@@ -47,45 +57,6 @@ if compat.py310:
 else:
     NoneType = type(None)  # type: ignore
 
-if compat.py310:
-    from typing import TypeGuard as TypeGuard
-    from typing import TypeAlias as TypeAlias
-else:
-    from typing_extensions import TypeGuard as TypeGuard  # noqa: F401
-    from typing_extensions import TypeAlias as TypeAlias  # noqa: F401
-
-if typing.TYPE_CHECKING or compat.py38:
-    from typing import SupportsIndex as SupportsIndex
-else:
-    from typing_extensions import SupportsIndex as SupportsIndex  # noqa: F401
-
-if typing.TYPE_CHECKING or compat.py310:
-    from typing import Annotated as Annotated
-    from typing import get_args as get_args
-    from typing import get_origin as get_origin
-else:
-    from typing_extensions import Annotated as Annotated  # noqa: F401
-
-    # these are in py38 but don't work with Annotated correctly, so
-    # for 3.8 / 3.9 we use the typing extensions version
-    from typing_extensions import get_args as get_args  # noqa: F401
-    from typing_extensions import (
-        get_origin as get_origin,  # noqa: F401,
-    )
-
-if typing.TYPE_CHECKING or compat.py38:
-    from typing import Literal as Literal
-    from typing import Protocol as Protocol
-    from typing import TypedDict as TypedDict
-    from typing import Final as Final
-    from typing import final as final
-else:
-    from typing_extensions import Literal as Literal  # noqa: F401
-    from typing_extensions import Protocol as Protocol  # noqa: F401
-    from typing_extensions import TypedDict as TypedDict  # noqa: F401
-    from typing_extensions import Final as Final  # noqa: F401
-    from typing_extensions import final as final  # noqa: F401
-
 typing_get_args = get_args
 typing_get_origin = get_origin
 
@@ -106,13 +77,6 @@ class SupportsKeysAndGetItem(Protocol[_KT, _VT_co]):
 # work around https://github.com/microsoft/pyright/issues/3025
 _LiteralStar = Literal["*"]
 
-if typing.TYPE_CHECKING or not compat.py310:
-    from typing_extensions import Concatenate as Concatenate
-    from typing_extensions import ParamSpec as ParamSpec
-else:
-    from typing import Concatenate as Concatenate  # noqa: F401
-    from typing import ParamSpec as ParamSpec  # noqa: F401
-
 
 def de_stringify_annotation(
     cls: Type[Any],
index b2bb757d97df6eb805c09b17cada8335c17a7c7f..35f8ed0ff8340244f90ce242ce455def43d5ade8 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -117,6 +117,7 @@ per-file-ignores =
     lib/sqlalchemy/schema.py:F401
     lib/sqlalchemy/types.py:F401
     lib/sqlalchemy/sql/expression.py:F401
+    lib/sqlalchemy/util/typing.py:F401
 
 [sqla_testing]
 requirement_cls = test.requirements:DefaultRequirements