diff --git a/changelog.d/11297.misc b/changelog.d/11297.misc
new file mode 100644
index 0000000000..856b856847
--- /dev/null
+++ b/changelog.d/11297.misc
@@ -0,0 +1 @@
+Add type hints to `synapse._scripts`.
diff --git a/mypy.ini b/mypy.ini
index 1752b82bc5..04e8eab72b 100644
--- a/mypy.ini
+++ b/mypy.ini
@@ -23,8 +23,6 @@ files =
# https://docs.python.org/3/library/re.html#re.X
exclude = (?x)
^(
- |synapse/_scripts/register_new_matrix_user.py
- |synapse/_scripts/review_recent_signups.py
|synapse/app/__init__.py
|synapse/app/_base.py
|synapse/app/admin_cmd.py
diff --git a/setup.py b/setup.py
index 5d602db240..0ce8beb004 100755
--- a/setup.py
+++ b/setup.py
@@ -110,6 +110,7 @@ CONDITIONAL_REQUIREMENTS["mypy"] = [
"types-Pillow>=8.3.4",
"types-pyOpenSSL>=20.0.7",
"types-PyYAML>=5.4.10",
+ "types-requests>=2.26.0",
"types-setuptools>=57.4.0",
]
diff --git a/synapse/_scripts/register_new_matrix_user.py b/synapse/_scripts/register_new_matrix_user.py
index dae986c788..4ffe6a1ef3 100644
--- a/synapse/_scripts/register_new_matrix_user.py
+++ b/synapse/_scripts/register_new_matrix_user.py
@@ -1,5 +1,6 @@
# Copyright 2015, 2016 OpenMarket Ltd
# Copyright 2018 New Vector
+# Copyright 2021 The Matrix.org Foundation C.I.C.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -19,22 +20,23 @@ import hashlib
import hmac
import logging
import sys
+from typing import Callable, Optional
import requests as _requests
import yaml
def request_registration(
- user,
- password,
- server_location,
- shared_secret,
- admin=False,
- user_type=None,
+ user: str,
+ password: str,
+ server_location: str,
+ shared_secret: str,
+ admin: bool = False,
+ user_type: Optional[str] = None,
requests=_requests,
- _print=print,
- exit=sys.exit,
-):
+ _print: Callable[[str], None] = print,
+ exit: Callable[[int], None] = sys.exit,
+) -> None:
url = "%s/_synapse/admin/v1/register" % (server_location.rstrip("/"),)
@@ -65,13 +67,13 @@ def request_registration(
mac.update(b"\x00")
mac.update(user_type.encode("utf8"))
- mac = mac.hexdigest()
+ hex_mac = mac.hexdigest()
data = {
"nonce": nonce,
"username": user,
"password": password,
- "mac": mac,
+ "mac": hex_mac,
"admin": admin,
"user_type": user_type,
}
@@ -91,10 +93,17 @@ def request_registration(
_print("Success!")
-def register_new_user(user, password, server_location, shared_secret, admin, user_type):
+def register_new_user(
+ user: str,
+ password: str,
+ server_location: str,
+ shared_secret: str,
+ admin: Optional[bool],
+ user_type: Optional[str],
+) -> None:
if not user:
try:
- default_user = getpass.getuser()
+ default_user: Optional[str] = getpass.getuser()
except Exception:
default_user = None
@@ -123,8 +132,8 @@ def register_new_user(user, password, server_location, shared_secret, admin, use
sys.exit(1)
if admin is None:
- admin = input("Make admin [no]: ")
- if admin in ("y", "yes", "true"):
+ admin_inp = input("Make admin [no]: ")
+ if admin_inp in ("y", "yes", "true"):
admin = True
else:
admin = False
@@ -134,7 +143,7 @@ def register_new_user(user, password, server_location, shared_secret, admin, use
)
-def main():
+def main() -> None:
logging.captureWarnings(True)
diff --git a/synapse/_scripts/review_recent_signups.py b/synapse/_scripts/review_recent_signups.py
index 8e66a38421..093af4327a 100644
--- a/synapse/_scripts/review_recent_signups.py
+++ b/synapse/_scripts/review_recent_signups.py
@@ -92,7 +92,7 @@ def get_recent_users(txn: LoggingTransaction, since_ms: int) -> List[UserInfo]:
return user_infos
-def main():
+def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument(
"-c",
@@ -142,7 +142,8 @@ def main():
engine = create_engine(database_config.config)
with make_conn(database_config, engine, "review_recent_signups") as db_conn:
- user_infos = get_recent_users(db_conn.cursor(), since_ms)
+ # This generates a type of Cursor, not LoggingTransaction.
+ user_infos = get_recent_users(db_conn.cursor(), since_ms) # type: ignore[arg-type]
for user_info in user_infos:
if exclude_users_with_email and user_info.emails:
|