import queue
import asyncio
import threading
-from typing import Any, Callable
+from typing import Any, Callable, TypeAlias
from collections.abc import Coroutine
-from ._compat import TypeAlias, TypeVar
+from ._compat import TypeVar
Worker: TypeAlias = threading.Thread
AWorker: TypeAlias = "asyncio.Task[None]"
import sys
-if sys.version_info >= (3, 10):
- from typing import TypeAlias, TypeGuard
-else:
- from typing_extensions import TypeAlias, TypeGuard
-
if sys.version_info >= (3, 11):
from typing import LiteralString, Self
else:
__all__ = [
"LiteralString",
"Self",
- "TypeAlias",
- "TypeGuard",
"TypeVar",
]
import sys
import logging
-from typing import TYPE_CHECKING, Callable, Generic, NamedTuple
+from typing import TYPE_CHECKING, Callable, Generic, NamedTuple, TypeAlias
from weakref import ReferenceType, ref
from warnings import warn
from functools import partial
from .rows import Row
from .adapt import AdaptersMap
from ._enums import IsolationLevel
-from ._compat import LiteralString, Self, TypeAlias, TypeVar
+from ._compat import LiteralString, Self, TypeVar
from .pq.misc import connection_summary
from ._pipeline import BasePipeline
from ._preparing import PrepareManager
import logging
from types import TracebackType
-from typing import TYPE_CHECKING, Any
+from typing import TYPE_CHECKING, Any, TypeAlias
from collections import deque
from . import errors as e
from . import pq
from .abc import PipelineCommand, PQGen
-from ._compat import Self, TypeAlias
+from ._compat import Self
from .pq.misc import connection_summary
from .generators import fetch_many, pipeline_communicate, send
from ._capabilities import capabilities
from __future__ import annotations
from enum import IntEnum, auto
-from typing import TYPE_CHECKING, Any
+from typing import TYPE_CHECKING, Any, TypeAlias
from collections import OrderedDict, deque
from collections.abc import Sequence
from . import pq
from .abc import PQGen
-from ._compat import TypeAlias
from ._queries import PostgresQuery
if TYPE_CHECKING:
from __future__ import annotations
-from typing import TYPE_CHECKING, Any, DefaultDict
+from typing import TYPE_CHECKING, Any, DefaultDict, TypeAlias
from collections import defaultdict
from collections.abc import Sequence
from .abc import AdaptContext, Buffer, LoadFunc, NoneType, PyFormat
from .rows import Row, RowMaker
from ._oids import INVALID_OID, TEXT_OID
-from ._compat import TypeAlias
from ._encodings import conn_encoding
if TYPE_CHECKING:
from __future__ import annotations
import re
-from typing import TYPE_CHECKING, Any, Callable, NamedTuple
+from typing import TYPE_CHECKING, Any, Callable, NamedTuple, TypeAlias, TypeGuard
from functools import lru_cache
from collections.abc import Mapping, Sequence
from .abc import Buffer, Params, Query
from .sql import Composable
from ._enums import PyFormat
-from ._compat import TypeAlias, TypeGuard
from ._encodings import conn_encoding
if TYPE_CHECKING:
from __future__ import annotations
import struct
-from typing import Callable, Protocol, cast
+from typing import Callable, Protocol, TypeAlias, cast
from . import errors as e
from .abc import Buffer
-from ._compat import TypeAlias
PackInt: TypeAlias = Callable[[int], bytes]
UnpackInt: TypeAlias = Callable[[Buffer], "tuple[int]"]
from __future__ import annotations
-from typing import TYPE_CHECKING, Any, overload
+from typing import TYPE_CHECKING, Any, TypeAlias, overload
from collections.abc import Iterator, Sequence
from . import errors as e
from . import sql
from .abc import AdaptContext, Query
from .rows import dict_row
-from ._compat import TypeAlias, TypeVar
+from ._compat import TypeVar
from ._typemod import TypeModifier
from ._encodings import conn_encoding
from __future__ import annotations
-from typing import TYPE_CHECKING, Any, Callable, Protocol, Union
+from typing import TYPE_CHECKING, Any, Callable, Protocol, TypeAlias, Union
from collections.abc import Generator, Mapping, Sequence
from . import pq
from ._enums import PyFormat as PyFormat
-from ._compat import LiteralString, TypeAlias, TypeVar
+from ._compat import LiteralString, TypeVar
if TYPE_CHECKING:
from . import sql # noqa: F401
from __future__ import annotations
-from typing import TYPE_CHECKING, Any, Callable, NoReturn
+from typing import TYPE_CHECKING, Any, Callable, NoReturn, TypeAlias, TypeGuard
from asyncio import CancelledError
from dataclasses import dataclass, field, fields
from collections.abc import Sequence
from .pq.abc import PGconn, PGresult
-from ._compat import TypeAlias, TypeGuard
from .pq._enums import ConnStatus, DiagnosticField, PipelineStatus, TransactionStatus
if TYPE_CHECKING:
from __future__ import annotations
-from typing import TYPE_CHECKING, Any, Callable, Protocol, Union
+from typing import TYPE_CHECKING, Any, Callable, Protocol, TypeAlias, Union
from collections.abc import Sequence
from ._enums import Format, Trace
-from .._compat import Self, TypeAlias
+from .._compat import Self
if TYPE_CHECKING:
from .misc import ConninfoOption, PGnotify, PGresAttDesc
import functools
from typing import TYPE_CHECKING, Any, Callable, NamedTuple, NoReturn, Protocol
+from typing import TypeAlias
from collections import namedtuple
from collections.abc import Sequence
from . import errors as e
from . import pq
-from ._compat import TypeAlias, TypeVar
+from ._compat import TypeVar
from ._encodings import _as_python_identifier
if TYPE_CHECKING:
from __future__ import annotations
from enum import Enum
-from typing import TYPE_CHECKING, Any, Generic, cast
+from typing import TYPE_CHECKING, Any, Generic, TypeAlias, cast
from functools import cache
from collections.abc import Mapping, Sequence
from ..pq import Format
from ..abc import AdaptContext, Query
from ..adapt import Buffer, Dumper, Loader
-from .._compat import TypeAlias, TypeVar
+from .._compat import TypeVar
from .._typeinfo import TypeInfo
from .._encodings import conn_encoding
import re
from struct import Struct
+from typing import TypeAlias
from functools import cache
from .. import errors as e
from ..abc import AdaptContext, Buffer
from .._oids import TEXT_OID
from ..adapt import Loader, PyFormat, RecursiveDumper, RecursiveLoader
-from .._compat import TypeAlias
from .._typeinfo import TypeInfo
from .._encodings import conn_encoding
from __future__ import annotations
import json
-from typing import Any, Callable
+from typing import Any, Callable, TypeAlias
from functools import cache
from .. import _oids, abc
from ..pq import Format
from ..adapt import AdaptersMap, Buffer, Dumper, Loader, PyFormat
from ..errors import DataError
-from .._compat import TypeAlias
JsonDumpsFunction: TypeAlias = Callable[[Any], "str | bytes"]
JsonLoadsFunction: TypeAlias = Callable[["str | bytes"], Any]
from __future__ import annotations
-from typing import TYPE_CHECKING, Callable
+from typing import TYPE_CHECKING, Callable, 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
import asyncio
import logging
import threading
-from typing import Any, Callable
+from typing import Any, Callable, TypeAlias
from collections.abc import Coroutine
-from ._compat import TypeAlias, TypeVar
+from ._compat import TypeVar
logger = logging.getLogger("psycopg.pool")
T = TypeVar("T")
import sys
-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:
__all__ = [
"Self",
- "TypeAlias",
"TypeVar",
]
from __future__ import annotations
-from typing import TYPE_CHECKING, Callable, Union
+from typing import TYPE_CHECKING, Callable, TypeAlias, Union
from collections.abc import Awaitable
-from ._compat import TypeAlias, TypeVar
+from ._compat import TypeVar
if TYPE_CHECKING:
from typing import Any # noqa: F401
from __future__ import annotations
-import sys
import time
import queue
import asyncio
import inspect
-import builtins
import threading
import contextlib
from typing import Any
return "Async" in obj.__name__
-if sys.version_info >= (3, 10):
- anext = builtins.anext
- aclosing = contextlib.aclosing
-
-else:
-
- async def anext(it):
- return await it.__anext__()
-
- @contextlib.asynccontextmanager
- async def aclosing(thing):
- try:
- yield thing
- finally:
- await thing.aclose()
-
-
async def alist(it):
"""Consume an async iterator into a list. Async equivalent of list(it)."""
return [i async for i in it]
import weakref
import datetime as dt
from typing import Any
+from contextlib import closing
import pytest
from packaging.version import parse as ver
from . import _test_cursor
from .utils import raiseif
-from .acompat import closing
from .fix_crdb import crdb_encoding
from ._test_cursor import my_row_factory, ph
import weakref
import datetime as dt
from typing import Any
+from contextlib import aclosing
import pytest
from packaging.version import parse as ver
from . import _test_cursor
from .utils import raiseif
-from .acompat import aclosing, alist, anext
+from .acompat import alist
from .fix_crdb import crdb_encoding
from ._test_cursor import my_row_factory, ph
from psycopg import errors as e
from psycopg import pq
-from .acompat import anext, is_async
+from .acompat import is_async
pytestmark = [
pytest.mark.pipeline,
import re
import argparse
import subprocess as sp
+from typing import TypeAlias
from pathlib import Path
import psycopg
from psycopg.pq import version_pretty
from psycopg.crdb import CrdbConnection
from psycopg.rows import TupleRow
-from psycopg._compat import TypeAlias
Connection: TypeAlias = psycopg.Connection[TupleRow]