summary refs log tree commit diff
path: root/synapse/storage/database.py
diff options
context:
space:
mode:
authorDavid Robertson <davidr@element.io>2022-03-23 14:03:24 +0000
committerGitHub <noreply@github.com>2022-03-23 14:03:24 +0000
commitf4c5e5864cdc04aa61ad13d6f6ba870df811a881 (patch)
treef11520a98e7efd6a7c771e50cafddd38b4301906 /synapse/storage/database.py
parentRemove mutual_rooms `update_user_directory` check, and add extra documentatio... (diff)
downloadsynapse-f4c5e5864cdc04aa61ad13d6f6ba870df811a881.tar.xz
Use psycopg2 type stubs (#12269)
Diffstat (limited to 'synapse/storage/database.py')
-rw-r--r--synapse/storage/database.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/synapse/storage/database.py b/synapse/storage/database.py
index 9749f0c06e..367709a1a7 100644
--- a/synapse/storage/database.py
+++ b/synapse/storage/database.py
@@ -288,7 +288,7 @@ class LoggingTransaction:
         """
 
         if isinstance(self.database_engine, PostgresEngine):
-            from psycopg2.extras import execute_batch  # type: ignore
+            from psycopg2.extras import execute_batch
 
             self._do_execute(lambda *x: execute_batch(self.txn, *x), sql, args)
         else:
@@ -302,10 +302,18 @@ class LoggingTransaction:
         rows (e.g. INSERTs).
         """
         assert isinstance(self.database_engine, PostgresEngine)
-        from psycopg2.extras import execute_values  # type: ignore
+        from psycopg2.extras import execute_values
 
         return self._do_execute(
-            lambda *x: execute_values(self.txn, *x, fetch=fetch), sql, *args
+            # Type ignore: mypy is unhappy because if `x` is a 5-tuple, then there will
+            # be two values for `fetch`: one given positionally, and another given
+            # as a keyword argument. We might be able to fix this by
+            # - propagating the signature of psycopg2.extras.execute_values to this
+            #   function, or
+            # - changing `*args: Any` to `values: T` for some appropriate T.
+            lambda *x: execute_values(self.txn, *x, fetch=fetch),  # type: ignore[misc]
+            sql,
+            *args,
         )
 
     def execute(self, sql: str, *args: Any) -> None: