diff --git a/changelog.d/16381.misc b/changelog.d/16381.misc
new file mode 100644
index 0000000000..a454651952
--- /dev/null
+++ b/changelog.d/16381.misc
@@ -0,0 +1 @@
+Improve type hints, and bump types-psycopg2 from 2.9.21.11 to 2.9.21.14.
diff --git a/poetry.lock b/poetry.lock
index 9a8be27b6f..bf229349cb 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -3093,13 +3093,13 @@ files = [
[[package]]
name = "types-psycopg2"
-version = "2.9.21.11"
+version = "2.9.21.14"
description = "Typing stubs for psycopg2"
optional = false
python-versions = "*"
files = [
- {file = "types-psycopg2-2.9.21.11.tar.gz", hash = "sha256:d5077eacf90e61db8c0b8eea2fdc9d4a97d7aaa16865fb4bd7034a7571520b4d"},
- {file = "types_psycopg2-2.9.21.11-py3-none-any.whl", hash = "sha256:7a323d7744bc8a882fb5a6f63448e903fc70d3dc0d6da9ec1f9c6c4dc10a7102"},
+ {file = "types-psycopg2-2.9.21.14.tar.gz", hash = "sha256:bf73a0ac4da4e278c89bf1b01fc596d5a5ac7a356cfe6ac0249f47b9e259f868"},
+ {file = "types_psycopg2-2.9.21.14-py3-none-any.whl", hash = "sha256:cd9c5350631f3bc6184ec8d48f2ed31d4ea660f89d0fffe78239450782f383c5"},
]
[[package]]
diff --git a/synapse/storage/database.py b/synapse/storage/database.py
index 697bc5651c..ca894edd5a 100644
--- a/synapse/storage/database.py
+++ b/synapse/storage/database.py
@@ -361,19 +361,7 @@ class LoggingTransaction:
@property
def description(
self,
- ) -> Optional[
- Sequence[
- Tuple[
- str,
- Optional[Any],
- Optional[int],
- Optional[int],
- Optional[int],
- Optional[int],
- Optional[int],
- ]
- ]
- ]:
+ ) -> Optional[Sequence[Any]]:
return self.txn.description
def execute_batch(self, sql: str, args: Iterable[Iterable[Any]]) -> None:
diff --git a/synapse/storage/types.py b/synapse/storage/types.py
index 34ac807530..afaeef9a5a 100644
--- a/synapse/storage/types.py
+++ b/synapse/storage/types.py
@@ -53,22 +53,10 @@ class Cursor(Protocol):
@property
def description(
self,
- ) -> Optional[
- Sequence[
- # Note that this is an approximate typing based on sqlite3 and other
- # drivers, and may not be entirely accurate.
- # FWIW, the DBAPI 2 spec is: https://peps.python.org/pep-0249/#description
- Tuple[
- str,
- Optional[Any],
- Optional[int],
- Optional[int],
- Optional[int],
- Optional[int],
- Optional[int],
- ]
- ]
- ]:
+ ) -> Optional[Sequence[Any]]:
+ # At the time of writing, Synapse only assumes that `column[0]: str` for each
+ # `column in description`. Since this is hard to express in the type system, and
+ # as this is rarely used in Synapse, we deem `column: Any` good enough.
...
@property
|