From a423f452942c5b1597c29be50b235c8df4d6c93d Mon Sep 17 00:00:00 2001
From: David Robertson <davidr@element.io>
Date: Mon, 3 Oct 2022 14:26:49 +0100
Subject: [PATCH] Fix twisted trunk mypy errors (#14012)

---
 changelog.d/14012.misc               | 1 +
 synapse/handlers/cas.py              | 3 +++
 synapse/handlers/ui_auth/checkers.py | 3 +++
 3 files changed, 7 insertions(+)
 create mode 100644 changelog.d/14012.misc

diff --git a/changelog.d/14012.misc b/changelog.d/14012.misc
new file mode 100644
index 0000000000..9888dc6cc1
--- /dev/null
+++ b/changelog.d/14012.misc
@@ -0,0 +1 @@
+Fix type annotations to be compatible with new annotations in development versions of twisted.
diff --git a/synapse/handlers/cas.py b/synapse/handlers/cas.py
index 7163af8004..fc467bc7c1 100644
--- a/synapse/handlers/cas.py
+++ b/synapse/handlers/cas.py
@@ -130,6 +130,9 @@ class CasHandler:
         except PartialDownloadError as pde:
             # Twisted raises this error if the connection is closed,
             # even if that's being used old-http style to signal end-of-data
+            # Assertion is for mypy's benefit. Error.response is Optional[bytes],
+            # but a PartialDownloadError should always have a non-None response.
+            assert pde.response is not None
             body = pde.response
         except HttpResponseException as e:
             description = (
diff --git a/synapse/handlers/ui_auth/checkers.py b/synapse/handlers/ui_auth/checkers.py
index a744d68c64..332edcca24 100644
--- a/synapse/handlers/ui_auth/checkers.py
+++ b/synapse/handlers/ui_auth/checkers.py
@@ -119,6 +119,9 @@ class RecaptchaAuthChecker(UserInteractiveAuthChecker):
         except PartialDownloadError as pde:
             # Twisted is silly
             data = pde.response
+            # For mypy's benefit. A general Error.response is Optional[bytes], but
+            # a PartialDownloadError.response should be bytes AFAICS.
+            assert data is not None
             resp_body = json_decoder.decode(data.decode("utf-8"))
 
         if "success" in resp_body:
-- 
GitLab