]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
feat: use LiteralString for Query and SQL aliases
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Mon, 27 Jun 2022 21:05:54 +0000 (22:05 +0100)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sun, 3 Jul 2022 02:52:59 +0000 (03:52 +0100)
Current mypy version probably doesn't do anything with it at the moment.

psycopg/psycopg/_compat.py
psycopg/psycopg/abc.py
psycopg/psycopg/sql.py
psycopg/setup.cfg
tests/constraints.txt

index 25804c8b58660c98d0f5680d2dd6da3a47f3a26a..16b1685c892882f433e31b070ffd7dfd69a1e14e 100644 (file)
@@ -39,9 +39,15 @@ if sys.version_info >= (3, 10):
 else:
     from typing_extensions import TypeAlias, TypeGuard
 
+if sys.version_info >= (3, 11):
+    from typing import LiteralString
+else:
+    from typing_extensions import LiteralString
+
 __all__ = [
     "Counter",
     "Deque",
+    "LiteralString",
     "Protocol",
     "TypeAlias",
     "TypeGuard",
index f4af55ac0758cfb714e236117a709af41a8caf8a..e6ff7607ec6e6ece9847248a7bbe80c5e77e4248 100644 (file)
@@ -10,7 +10,7 @@ from typing import TYPE_CHECKING
 
 from . import pq
 from ._enums import PyFormat as PyFormat
-from ._compat import Protocol, TypeAlias
+from ._compat import Protocol, TypeAlias, LiteralString
 
 if TYPE_CHECKING:
     from .sql import Composable
@@ -23,7 +23,7 @@ if TYPE_CHECKING:
 # An object implementing the buffer protocol
 Buffer: TypeAlias = Union[bytes, bytearray, memoryview]
 
-Query: TypeAlias = Union[str, bytes, "Composable"]
+Query: TypeAlias = Union[LiteralString, bytes, "Composable"]
 Params: TypeAlias = Union[Sequence[Any], Mapping[str, Any]]
 ConnectionType = TypeVar("ConnectionType", bound="BaseConnection[Any]")
 PipelineCommand: TypeAlias = Callable[[], None]
index fcb67b8741f8712bad7c15a43e0625a6a8d36f17..df44fdf51ccb6fedc061f68403dad7dbf71dac38 100644 (file)
@@ -12,6 +12,7 @@ from typing import Any, Iterator, Iterable, List, Optional, Sequence, Union
 from .pq import Escaping
 from .abc import AdaptContext
 from .adapt import Transformer, PyFormat
+from ._compat import LiteralString
 from ._encodings import conn_encoding
 
 
@@ -193,7 +194,7 @@ class SQL(Composable):
     _obj: str
     _formatter = string.Formatter()
 
-    def __init__(self, obj: str):
+    def __init__(self, obj: LiteralString):
         super().__init__(obj)
         if not isinstance(obj, str):
             raise TypeError(f"SQL values must be strings, got {obj!r} instead")
index fbf87e4fe542be87951d149f2fadeaffb16a96d8..c0907e8c3df909a03e5fba568b6807ba173bacb7 100644 (file)
@@ -39,7 +39,7 @@ packages = find:
 zip_safe = False
 install_requires =
     backports.zoneinfo >= 0.2.0; python_version < "3.9"
-    typing-extensions >= 3.10; python_version < "3.10"
+    typing-extensions >= 4.1; python_version < "3.11"
     tzdata; sys_platform == "win32"
 
 [options.package_data]
index ce4667d9d822222d84c3312e3269bbbc40c3b7da..7acc4c10c5433ec0059c61ac5706a40d170b4698 100644 (file)
@@ -5,7 +5,7 @@
 
 # From install_requires
 backports.zoneinfo == 0.2.0
-typing-extensions == 3.10.0.0
+typing-extensions == 4.1.0
 
 # From the 'test' extra
 mypy == 0.940