from typing import Any, Callable, List, Optional, Sequence, Tuple, Union
from typing import TYPE_CHECKING
-from typing_extensions import Protocol
from ._enums import Format
+from ..utils.compat import Protocol
if TYPE_CHECKING:
from .misc import PGnotify, ConninfoOption, PGresAttDesc
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 Protocol
from . import pq
from ._enums import Format
+from .utils.compat import Protocol
if TYPE_CHECKING:
from .sql import Composable
from collections import namedtuple
from typing import Any, Callable, Dict, NamedTuple, Sequence, Tuple, Type
from typing import TypeVar, TYPE_CHECKING
-from typing_extensions import Protocol
from . import errors as e
+from .utils.compat import Protocol
if TYPE_CHECKING:
from .cursor import AnyCursor
import asyncio
from typing import Any, Awaitable, Generator, Optional, Union, TypeVar
+if sys.version_info >= (3, 8):
+ from typing import Protocol
+else:
+ from typing_extensions import Protocol
+
T = TypeVar("T")
FutureT = Union["asyncio.Future[T]", Generator[Any, None, T], Awaitable[T]]
Task = asyncio.Future
-__all__ = ["asynccontextmanager", "get_running_loop", "create_task"]
+
+__all__ = [
+ "Protocol",
+ "asynccontextmanager",
+ "create_task",
+ "get_running_loop",
+]
packages = find:
zip_safe = False
install_requires =
- typing_extensions
-
+ typing_extensions; python_version < "3.8"
[options.package_data]
psycopg3_c = py.typed