]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
fix: don't re-export TypeAlias from _compat module
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 13 Dec 2022 04:25:46 +0000 (04:25 +0000)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 13 Dec 2022 04:28:41 +0000 (04:28 +0000)
Pyright special-cases that type and requires to import it from typing or
typing_extensions only (see https://github.com/microsoft/pyright/issues/4197).

Drop conditional dependency on typing_extension and always import
TypeAlias from there.

Fix #439.

20 files changed:
docs/news.rst
docs/news_pool.rst
psycopg/psycopg/_compat.py
psycopg/psycopg/_pipeline.py
psycopg/psycopg/_preparing.py
psycopg/psycopg/_struct.py
psycopg/psycopg/_transform.py
psycopg/psycopg/_typeinfo.py
psycopg/psycopg/abc.py
psycopg/psycopg/connection.py
psycopg/psycopg/errors.py
psycopg/psycopg/pq/abc.py
psycopg/psycopg/rows.py
psycopg/psycopg/types/enum.py
psycopg/psycopg/types/hstore.py
psycopg/psycopg/types/net.py
psycopg/setup.cfg
psycopg_pool/psycopg_pool/_compat.py
psycopg_pool/setup.cfg
tools/update_oids.py

index 69bc8720803592d91326b7f977b898dbb5ccff30..6189d7cba6bbb1c45cbc18f4dd619615e8470966 100644 (file)
@@ -19,6 +19,7 @@ Psycopg 3.1.5 (unreleased)
   (:ticket:`#422`).
 - Fix `Cursor.rownumber` to return `!None` when the result has no row to fetch
   (:ticket:`#437`).
+- Avoid error in pyright caused by aliasing TypeAlias (:ticket:`#439`).
 - Fix `Copy.set_types()` used with `varchar` and `name` types (:ticket:`#452`).
 
 
index ce6f98ba1448025edacf2d0a823b8a2218bb2b1d..866b04548847f68cd6b6bce3c62030c7629a9038 100644 (file)
@@ -7,6 +7,15 @@
 ``psycopg_pool`` release notes
 ==============================
 
+Future releases
+---------------
+
+psycopg_pool 3.1.5 (unreleased)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Avoid error in pyright caused by aliasing TypeAlias (:ticket:`#439`).
+
+
 Current release
 ---------------
 
index 91c87b8d2ab5af4477b85073236aa9f836072109..7dbae79686d961bbb6992a4482a7cc49d1277e88 100644 (file)
@@ -8,13 +8,18 @@ import sys
 import asyncio
 from typing import Any, Awaitable, Generator, Optional, Sequence, Union, TypeVar
 
+# NOTE: TypeAlias cannot be exported by this module, as pyright special-cases it.
+# For this raisin it must be imported directly from typing_extension where used.
+# See https://github.com/microsoft/pyright/issues/4197
+from typing_extensions import TypeAlias
+
 if sys.version_info >= (3, 8):
     from typing import Protocol
 else:
     from typing_extensions import Protocol
 
 T = TypeVar("T")
-FutureT: "TypeAlias" = Union["asyncio.Future[T]", Generator[Any, None, T], Awaitable[T]]
+FutureT: TypeAlias = Union["asyncio.Future[T]", Generator[Any, None, T], Awaitable[T]]
 
 if sys.version_info >= (3, 8):
     create_task = asyncio.create_task
@@ -45,9 +50,9 @@ else:
     cache = lru_cache(maxsize=None)
 
 if sys.version_info >= (3, 10):
-    from typing import TypeAlias, TypeGuard
+    from typing import TypeGuard
 else:
-    from typing_extensions import TypeAlias, TypeGuard
+    from typing_extensions import TypeGuard
 
 if sys.version_info >= (3, 11):
     from typing import LiteralString
@@ -59,7 +64,6 @@ __all__ = [
     "Deque",
     "LiteralString",
     "Protocol",
-    "TypeAlias",
     "TypeGuard",
     "ZoneInfo",
     "cache",
index fe4bf54fcf1a4099df45a230d7b844f56d21292c..c818d86e8136d3ecd8c3f36ffbb604cda44369ef 100644 (file)
@@ -7,11 +7,12 @@ commands pipeline management
 import logging
 from types import TracebackType
 from typing import Any, List, Optional, Union, Tuple, Type, TypeVar, TYPE_CHECKING
+from typing_extensions import TypeAlias
 
 from . import pq
 from . import errors as e
 from .abc import PipelineCommand, PQGen
-from ._compat import Deque, TypeAlias
+from ._compat import Deque
 from ._encodings import pgconn_encoding
 from ._preparing import Key, Prepare
 from .generators import pipeline_communicate, fetch_many, send
index 622aeff41ad584dc61fb70343beda1f9f566295f..f60c0cbb3c19785a905965c54aa118dab60d0b4b 100644 (file)
@@ -7,9 +7,10 @@ Support for prepared statements
 from enum import IntEnum, auto
 from typing import Iterator, Optional, Sequence, Tuple, TYPE_CHECKING
 from collections import OrderedDict
+from typing_extensions import TypeAlias
 
 from . import pq
-from ._compat import Deque, TypeAlias
+from ._compat import Deque
 from ._queries import PostgresQuery
 
 if TYPE_CHECKING:
index 191c4013dbe101f12653de1fd5dc18a2d8dbcf4b..28a6084475ac0919e8f21506404b9c0e552a7c90 100644 (file)
@@ -6,10 +6,11 @@ Utility functions to deal with binary structs.
 
 import struct
 from typing import Callable, cast, Optional, Tuple
+from typing_extensions import TypeAlias
 
 from .abc import Buffer
 from . import errors as e
-from ._compat import Protocol, TypeAlias
+from ._compat import Protocol
 
 PackInt: TypeAlias = Callable[[int], bytes]
 UnpackInt: TypeAlias = Callable[[Buffer], Tuple[int]]
index 0e9dcaf7a2ce30fc1808a395b8eb6aff8dd1a69c..19bd6aec79d4021c991751f89f38b19dfd0a70a9 100644 (file)
@@ -7,13 +7,13 @@ Helper object to transform values between Python and PostgreSQL
 from typing import Any, Dict, List, Optional, Sequence, Tuple
 from typing import DefaultDict, TYPE_CHECKING
 from collections import defaultdict
+from typing_extensions import TypeAlias
 
 from . import pq
 from . import postgres
 from . import errors as e
 from .abc import Buffer, LoadFunc, AdaptContext, PyFormat, DumperKey, NoneType
 from .rows import Row, RowMaker
-from ._compat import TypeAlias
 from .postgres import INVALID_OID, TEXT_OID
 from ._encodings import pgconn_encoding
 
index 048b5232c8c87f4f4540e363b77dc122da85c2e7..2f1a24d93ff542162349f8dba7bd01a9eeee422a 100644 (file)
@@ -9,11 +9,11 @@ information to the adapters if needed.
 from enum import Enum
 from typing import Any, Dict, Iterator, Optional, overload
 from typing import Sequence, Tuple, Type, TypeVar, Union, TYPE_CHECKING
+from typing_extensions import TypeAlias
 
 from . import errors as e
 from .abc import AdaptContext
 from .rows import dict_row
-from ._compat import TypeAlias
 
 if TYPE_CHECKING:
     from .connection import Connection
index 12a5f93e77eff92eb1f17c704486b24911007482..80c8fbfb3d8967200bc8b3ee8ff040e2783fa798 100644 (file)
@@ -7,10 +7,11 @@ Protocol objects representing different implementations of the same classes.
 from typing import Any, Callable, Generator, Mapping
 from typing import List, Optional, Sequence, Tuple, TypeVar, Union
 from typing import TYPE_CHECKING
+from typing_extensions import TypeAlias
 
 from . import pq
 from ._enums import PyFormat as PyFormat
-from ._compat import Protocol, TypeAlias, LiteralString
+from ._compat import Protocol, LiteralString
 
 if TYPE_CHECKING:
     from . import sql
index d40b4807f35d6d889664464f18a9742fd6ba5b9e..78ad57751a93128aea6a00498b18a597f4d98246 100644 (file)
@@ -14,6 +14,7 @@ from weakref import ref, ReferenceType
 from warnings import warn
 from functools import partial
 from contextlib import contextmanager
+from typing_extensions import TypeAlias
 
 from . import pq
 from . import errors as e
@@ -27,7 +28,7 @@ from .rows import Row, RowFactory, tuple_row, TupleRow, args_row
 from .adapt import AdaptersMap
 from ._enums import IsolationLevel
 from .cursor import Cursor
-from ._compat import TypeAlias, LiteralString
+from ._compat import LiteralString
 from .conninfo import make_conninfo, conninfo_to_dict, ConnectionInfo
 from ._pipeline import BasePipeline, Pipeline
 from .generators import notifies, connect, execute
index 65f001703ddd65013b52f182d95e18778b84ceeb..e1769546b7106a8a85490be7f512f16874fda4e2 100644 (file)
@@ -19,10 +19,11 @@ DBAPI-defined Exceptions are defined in the following hierarchy::
 # Copyright (C) 2020 The Psycopg Team
 
 from typing import Any, Dict, Optional, Sequence, Tuple, Type, Union
+from typing_extensions import TypeAlias
 
 from .pq.abc import PGconn, PGresult
 from .pq._enums import DiagnosticField
-from ._compat import TypeAlias, TypeGuard
+from ._compat import TypeGuard
 
 ErrorInfo: TypeAlias = Union[None, PGresult, Dict[int, Optional[bytes]]]
 
index 9ee21c288437352cc1262779cf5a7ee2fadc5f31..9c45f64d18c3310ab65eb88201276bfefe95e650 100644 (file)
@@ -6,9 +6,10 @@ Protocol objects to represent objects exposed by different pq implementations.
 
 from typing import Any, Callable, List, Optional, Sequence, Tuple
 from typing import Union, TYPE_CHECKING
+from typing_extensions import TypeAlias
 
 from ._enums import Format, Trace
-from .._compat import Protocol, TypeAlias
+from .._compat import Protocol
 
 if TYPE_CHECKING:
     from .misc import PGnotify, ConninfoOption, PGresAttDesc
index 3652b637c82b792c36e03175407e17a80190b11b..bab954d2ccb7d4cab2c920eaa80d9a024d5fec6c 100644 (file)
@@ -8,9 +8,10 @@ import functools
 from typing import Any, Callable, Dict, NamedTuple, NoReturn, Sequence, Tuple
 from typing import TYPE_CHECKING, Type, TypeVar
 from collections import namedtuple
+from typing_extensions import TypeAlias
 
 from . import errors as e
-from ._compat import Protocol, TypeAlias
+from ._compat import Protocol
 from ._encodings import _as_python_identifier
 
 if TYPE_CHECKING:
index 3e195443ddb61c0e848fab7deeb7ccc523c06a2b..d3c73874f7aed2d07e13848d797ccdb815d6c9c1 100644 (file)
@@ -4,13 +4,13 @@ Adapters for the enum type.
 from enum import Enum
 from typing import Any, Dict, Generic, Optional, Mapping, Sequence
 from typing import Tuple, Type, TypeVar, Union, cast
+from typing_extensions import TypeAlias
 
 from .. import postgres
 from .. import errors as e
 from ..pq import Format
 from ..abc import AdaptContext
 from ..adapt import Buffer, Dumper, Loader
-from .._compat import TypeAlias
 from .._encodings import conn_encoding
 from .._typeinfo import EnumInfo as EnumInfo  # exported here
 
index f1467db167df7c187f9e5c13b2f2b9468699b7e1..e1ab1d5806a49374073fbc06d6a8a6c2f9f0bf94 100644 (file)
@@ -6,12 +6,12 @@ Dict to hstore adaptation
 
 import re
 from typing import Dict, List, Optional
+from typing_extensions import TypeAlias
 
 from .. import errors as e
 from .. import postgres
 from ..abc import Buffer, AdaptContext
 from ..adapt import PyFormat, RecursiveDumper, RecursiveLoader
-from .._compat import TypeAlias
 from ..postgres import TEXT_OID
 from .._typeinfo import TypeInfo
 
index b07cfb696a09d582802d6cedb21c6da0c95ee793..2f2c05b1ea35e0388cfbded9bbb4190b4c202f62 100644 (file)
@@ -5,12 +5,12 @@ Adapters for network types.
 # Copyright (C) 2020 The Psycopg Team
 
 from typing import Callable, Optional, Type, Union, TYPE_CHECKING
+from typing_extensions import TypeAlias
 
 from .. import postgres
 from ..pq import Format
 from ..abc import AdaptContext
 from ..adapt import Buffer, Dumper, Loader
-from .._compat import TypeAlias
 
 if TYPE_CHECKING:
     import ipaddress
index af9e7afab8dc8c50ec1139c5649023cb4397bbf1..fdcb6127f10d29ade211f3833f16d6476119a10f 100644 (file)
@@ -40,7 +40,7 @@ packages = find:
 zip_safe = False
 install_requires =
     backports.zoneinfo >= 0.2.0; python_version < "3.9"
-    typing-extensions >= 4.1; python_version < "3.11"
+    typing-extensions >= 4.1
     tzdata; sys_platform == "win32"
 
 [options.package_data]
index 10c570e7f8b9fb567f2cf38e011bf73c86272632..9fb2b9b566a61abbb23a5a24b126f268edf0aa8a 100644 (file)
@@ -7,11 +7,12 @@ compatibility functions for different Python versions
 import sys
 import asyncio
 from typing import Any, Awaitable, Generator, Optional, Union, Type, TypeVar
+from typing_extensions import TypeAlias
 
 import psycopg.errors as e
 
 T = TypeVar("T")
-FutureT: "TypeAlias" = Union["asyncio.Future[T]", Generator[Any, None, T], Awaitable[T]]
+FutureT: TypeAlias = Union["asyncio.Future[T]", Generator[Any, None, T], Awaitable[T]]
 
 if sys.version_info >= (3, 8):
     create_task = asyncio.create_task
@@ -31,16 +32,10 @@ if sys.version_info >= (3, 9):
 else:
     from typing import Counter, Deque
 
-if sys.version_info >= (3, 10):
-    from typing import TypeAlias
-else:
-    from typing_extensions import TypeAlias
-
 __all__ = [
     "Counter",
     "Deque",
     "Task",
-    "TypeAlias",
     "create_task",
 ]
 
index 70f2d985fbd2c0bbdffb100d8e72c7270bb91de1..1a3274e635b9e095d079ca6a2bdb117304dd17ea 100644 (file)
@@ -39,7 +39,7 @@ python_requires = >= 3.7
 packages = find:
 zip_safe = False
 install_requires =
-    typing-extensions >= 3.10; python_version < "3.10"
+    typing-extensions >= 3.10
 
 [options.package_data]
 psycopg_pool = py.typed
index cdae2e55e882fe8a0af94a0cde752551bafaa1cc..df4f969c7706baf096dc321950b0ac9f29ee3d5f 100755 (executable)
@@ -19,11 +19,11 @@ import argparse
 import subprocess as sp
 from typing import List
 from pathlib import Path
+from typing_extensions import TypeAlias
 
 import psycopg
 from psycopg.rows import TupleRow
 from psycopg.crdb import CrdbConnection
-from psycopg._compat import TypeAlias
 
 Connection: TypeAlias = psycopg.Connection[TupleRow]