From: Daniele Varrazzo Date: Mon, 8 Jan 2024 11:48:22 +0000 (+0100) Subject: refactor: move TypeAlias back to _compat module X-Git-Tag: 3.2.0~96 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f6f20afaef3bde1068f03c9db6220f6b3c941887;p=thirdparty%2Fpsycopg.git refactor: move TypeAlias back to _compat module It was imported directly by typing_extensions to work around https://github.com/microsoft/pyright/issues/4197 but the issue has been fixed in pyright 1.1.297, released almost one year ago. --- diff --git a/psycopg/psycopg/_acompat.py b/psycopg/psycopg/_acompat.py index cf106c5ba..d7290889d 100644 --- a/psycopg/psycopg/_acompat.py +++ b/psycopg/psycopg/_acompat.py @@ -15,9 +15,7 @@ import asyncio import threading from typing import Any, Callable, Coroutine, TYPE_CHECKING -from typing_extensions import TypeAlias - -from ._compat import TypeVar +from ._compat import TypeAlias, TypeVar Worker: TypeAlias = threading.Thread AWorker: TypeAlias = "asyncio.Task[None]" diff --git a/psycopg/psycopg/_compat.py b/psycopg/psycopg/_compat.py index 1e1130486..68d689a2d 100644 --- a/psycopg/psycopg/_compat.py +++ b/psycopg/psycopg/_compat.py @@ -18,9 +18,9 @@ else: cache = lru_cache(maxsize=None) if sys.version_info >= (3, 10): - from typing import TypeGuard + from typing import TypeGuard, TypeAlias else: - from typing_extensions import TypeGuard + from typing_extensions import TypeGuard, TypeAlias if sys.version_info >= (3, 11): from typing import LiteralString, Self @@ -37,6 +37,7 @@ __all__ = [ "Deque", "LiteralString", "Self", + "TypeAlias", "TypeGuard", "TypeVar", "ZoneInfo", diff --git a/psycopg/psycopg/_connection_base.py b/psycopg/psycopg/_connection_base.py index 4dc695ce6..39e00002b 100644 --- a/psycopg/psycopg/_connection_base.py +++ b/psycopg/psycopg/_connection_base.py @@ -11,7 +11,6 @@ from typing import TYPE_CHECKING from weakref import ref, ReferenceType from warnings import warn from functools import partial -from typing_extensions import TypeAlias from . import pq from . import errors as e @@ -23,7 +22,7 @@ from ._tpc import Xid from .rows import Row from .adapt import AdaptersMap from ._enums import IsolationLevel -from ._compat import LiteralString, Self, TypeVar +from ._compat import LiteralString, Self, TypeAlias, TypeVar from .pq.misc import connection_summary from ._pipeline import BasePipeline from ._encodings import pgconn_encoding diff --git a/psycopg/psycopg/_conninfo_utils.py b/psycopg/psycopg/_conninfo_utils.py index 8940c937b..72e59a41e 100644 --- a/psycopg/psycopg/_conninfo_utils.py +++ b/psycopg/psycopg/_conninfo_utils.py @@ -7,14 +7,17 @@ Internal utilities to manipulate connection strings from __future__ import annotations import os -from typing import Any +from typing import TYPE_CHECKING from functools import lru_cache from ipaddress import ip_address from dataclasses import dataclass -from typing_extensions import TypeAlias from . import pq from . import errors as e +from ._compat import TypeAlias + +if TYPE_CHECKING: + from typing import Any # noqa: F401 ConnDict: TypeAlias = "dict[str, Any]" diff --git a/psycopg/psycopg/_pipeline.py b/psycopg/psycopg/_pipeline.py index 72ac97ddd..909310eba 100644 --- a/psycopg/psycopg/_pipeline.py +++ b/psycopg/psycopg/_pipeline.py @@ -7,12 +7,11 @@ commands pipeline management import logging from types import TracebackType from typing import Any, List, Optional, Union, Tuple, Type, TYPE_CHECKING -from typing_extensions import TypeAlias from . import pq from . import errors as e from .abc import PipelineCommand, PQGen -from ._compat import Deque, Self +from ._compat import Deque, Self, TypeAlias from .pq.misc import connection_summary from ._encodings import pgconn_encoding from ._preparing import Key, Prepare diff --git a/psycopg/psycopg/_preparing.py b/psycopg/psycopg/_preparing.py index 158552ba5..465de53a4 100644 --- a/psycopg/psycopg/_preparing.py +++ b/psycopg/psycopg/_preparing.py @@ -7,10 +7,9 @@ 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 +from ._compat import Deque, TypeAlias from ._queries import PostgresQuery if TYPE_CHECKING: diff --git a/psycopg/psycopg/_py_transformer.py b/psycopg/psycopg/_py_transformer.py index 17f21c079..dd7f54759 100644 --- a/psycopg/psycopg/_py_transformer.py +++ b/psycopg/psycopg/_py_transformer.py @@ -12,7 +12,6 @@ dependencies problems). 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 abc @@ -20,6 +19,7 @@ from . import errors as e from .abc import Buffer, LoadFunc, AdaptContext, PyFormat, DumperKey, NoneType from .rows import Row, RowMaker from ._oids import INVALID_OID, TEXT_OID +from ._compat import TypeAlias from ._encodings import conn_encoding if TYPE_CHECKING: diff --git a/psycopg/psycopg/_queries.py b/psycopg/psycopg/_queries.py index 376012aec..dc2e5a67e 100644 --- a/psycopg/psycopg/_queries.py +++ b/psycopg/psycopg/_queries.py @@ -8,14 +8,13 @@ import re from typing import Any, Callable, Dict, List, Mapping, Match, NamedTuple, Optional from typing import Sequence, Tuple, Union, TYPE_CHECKING from functools import lru_cache -from typing_extensions import TypeAlias from . import pq from . import errors as e from .sql import Composable from .abc import Buffer, Query, Params from ._enums import PyFormat -from ._compat import TypeGuard +from ._compat import TypeAlias, TypeGuard from ._encodings import conn_encoding if TYPE_CHECKING: diff --git a/psycopg/psycopg/_struct.py b/psycopg/psycopg/_struct.py index bce427c80..5f5c3f2c2 100644 --- a/psycopg/psycopg/_struct.py +++ b/psycopg/psycopg/_struct.py @@ -6,10 +6,10 @@ Utility functions to deal with binary structs. import struct from typing import Callable, cast, Optional, Protocol, Tuple -from typing_extensions import TypeAlias -from .abc import Buffer from . import errors as e +from .abc import Buffer +from ._compat import TypeAlias PackInt: TypeAlias = Callable[[int], bytes] UnpackInt: TypeAlias = Callable[[Buffer], Tuple[int]] diff --git a/psycopg/psycopg/_typeinfo.py b/psycopg/psycopg/_typeinfo.py index bfa740ff9..68eea41e0 100644 --- a/psycopg/psycopg/_typeinfo.py +++ b/psycopg/psycopg/_typeinfo.py @@ -9,13 +9,12 @@ information to the adapters if needed. from typing import Any, Dict, Iterator, Optional, overload from typing import Sequence, Tuple, Type, Union, TYPE_CHECKING -from typing_extensions import TypeAlias from . import sql from . import errors as e from .abc import AdaptContext, Query from .rows import dict_row -from ._compat import TypeVar +from ._compat import TypeAlias, TypeVar from ._encodings import conn_encoding if TYPE_CHECKING: diff --git a/psycopg/psycopg/abc.py b/psycopg/psycopg/abc.py index 0952e8d0b..0080891f8 100644 --- a/psycopg/psycopg/abc.py +++ b/psycopg/psycopg/abc.py @@ -7,11 +7,10 @@ Protocol objects representing different implementations of the same classes. from typing import Any, Callable, Generator, Mapping from typing import List, Optional, Protocol, Sequence, Tuple, Union from typing import TYPE_CHECKING -from typing_extensions import TypeAlias from . import pq from ._enums import PyFormat as PyFormat -from ._compat import LiteralString, TypeVar +from ._compat import LiteralString, TypeAlias, TypeVar if TYPE_CHECKING: from . import sql diff --git a/psycopg/psycopg/errors.py b/psycopg/psycopg/errors.py index d2cd81207..d2e2a955e 100644 --- a/psycopg/psycopg/errors.py +++ b/psycopg/psycopg/errors.py @@ -21,12 +21,11 @@ DBAPI-defined Exceptions are defined in the following hierarchy:: from dataclasses import dataclass, field, fields from typing import Any, Callable, Dict, List, NoReturn, Optional, Sequence, Tuple, Type from typing import Union, TYPE_CHECKING -from typing_extensions import TypeAlias from asyncio import CancelledError from .pq.abc import PGconn, PGresult from .pq._enums import ConnStatus, DiagnosticField, PipelineStatus, TransactionStatus -from ._compat import TypeGuard +from ._compat import TypeAlias, TypeGuard if TYPE_CHECKING: from .pq.misc import PGnotify, ConninfoOption diff --git a/psycopg/psycopg/pq/abc.py b/psycopg/psycopg/pq/abc.py index 3a76d56c0..e16bf11ba 100644 --- a/psycopg/psycopg/pq/abc.py +++ b/psycopg/psycopg/pq/abc.py @@ -6,9 +6,9 @@ Protocol objects to represent objects exposed by different pq implementations. from typing import Any, Callable, List, Optional, Protocol, Sequence, Tuple from typing import Union, TYPE_CHECKING -from typing_extensions import TypeAlias from ._enums import Format, Trace +from .._compat import TypeAlias if TYPE_CHECKING: from .misc import PGnotify, ConninfoOption, PGresAttDesc diff --git a/psycopg/psycopg/rows.py b/psycopg/psycopg/rows.py index 4c2f7781b..8e4a5c00e 100644 --- a/psycopg/psycopg/rows.py +++ b/psycopg/psycopg/rows.py @@ -8,11 +8,10 @@ import functools from typing import Any, Callable, Dict, List, Optional, NamedTuple, NoReturn from typing import TYPE_CHECKING, Protocol, Sequence, Tuple, Type from collections import namedtuple -from typing_extensions import TypeAlias from . import pq from . import errors as e -from ._compat import TypeVar +from ._compat import TypeAlias, TypeVar from ._encodings import _as_python_identifier if TYPE_CHECKING: diff --git a/psycopg/psycopg/types/enum.py b/psycopg/psycopg/types/enum.py index e15c11299..d8a12b5ac 100644 --- a/psycopg/psycopg/types/enum.py +++ b/psycopg/psycopg/types/enum.py @@ -4,7 +4,6 @@ Adapters for the enum type. from enum import Enum from typing import Any, Dict, Generic, Optional, Mapping, Sequence from typing import Tuple, Type, Union, cast, TYPE_CHECKING -from typing_extensions import TypeAlias from .. import sql from .. import postgres @@ -12,7 +11,7 @@ from .. import errors as e from ..pq import Format from ..abc import AdaptContext, Query from ..adapt import Buffer, Dumper, Loader -from .._compat import cache, TypeVar +from .._compat import cache, TypeAlias, TypeVar from .._encodings import conn_encoding from .._typeinfo import TypeInfo diff --git a/psycopg/psycopg/types/hstore.py b/psycopg/psycopg/types/hstore.py index 851a0556f..5bc261f55 100644 --- a/psycopg/psycopg/types/hstore.py +++ b/psycopg/psycopg/types/hstore.py @@ -6,14 +6,13 @@ Dict to hstore adaptation import re from typing import Dict, List, Optional, Type -from typing_extensions import TypeAlias from .. import errors as e from .. import postgres from ..abc import Buffer, AdaptContext from .._oids import TEXT_OID from ..adapt import PyFormat, RecursiveDumper, RecursiveLoader -from .._compat import cache +from .._compat import cache, TypeAlias from .._typeinfo import TypeInfo _re_escape = re.compile(r'(["\\])') diff --git a/psycopg/psycopg/types/net.py b/psycopg/psycopg/types/net.py index 983de9a03..76522dcbb 100644 --- a/psycopg/psycopg/types/net.py +++ b/psycopg/psycopg/types/net.py @@ -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 _oids from ..pq import Format from ..abc import AdaptContext from ..adapt import Buffer, Dumper, Loader +from .._compat import TypeAlias if TYPE_CHECKING: import ipaddress diff --git a/psycopg_pool/psycopg_pool/_acompat.py b/psycopg_pool/psycopg_pool/_acompat.py index 4e4fa20b0..d58548515 100644 --- a/psycopg_pool/psycopg_pool/_acompat.py +++ b/psycopg_pool/psycopg_pool/_acompat.py @@ -17,9 +17,7 @@ import logging import threading from typing import Any, Callable, Coroutine, TYPE_CHECKING -from typing_extensions import TypeAlias - -from ._compat import TypeVar +from ._compat import TypeAlias, TypeVar logger = logging.getLogger("psycopg.pool") T = TypeVar("T") diff --git a/psycopg_pool/psycopg_pool/_compat.py b/psycopg_pool/psycopg_pool/_compat.py index 5917ff31b..3fc645cbe 100644 --- a/psycopg_pool/psycopg_pool/_compat.py +++ b/psycopg_pool/psycopg_pool/_compat.py @@ -14,6 +14,11 @@ 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 + if sys.version_info >= (3, 11): from typing import Self else: @@ -28,6 +33,7 @@ __all__ = [ "Counter", "Deque", "Self", + "TypeAlias", "TypeVar", ] diff --git a/psycopg_pool/psycopg_pool/abc.py b/psycopg_pool/psycopg_pool/abc.py index 6cc85a2c5..07209a64c 100644 --- a/psycopg_pool/psycopg_pool/abc.py +++ b/psycopg_pool/psycopg_pool/abc.py @@ -8,9 +8,7 @@ from __future__ import annotations from typing import Any, Awaitable, Callable, Union, TYPE_CHECKING -from typing_extensions import TypeAlias - -from ._compat import TypeVar +from ._compat import TypeAlias, TypeVar if TYPE_CHECKING: from .pool import ConnectionPool diff --git a/tools/update_oids.py b/tools/update_oids.py index 22f04ec53..7e303bb51 100755 --- a/tools/update_oids.py +++ b/tools/update_oids.py @@ -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]