typing: Convert function type annotations to Python 3 style.

Generated by com2ann (slightly patched to avoid also converting
assignment type annotations, which require Python 3.6), followed by
some manual whitespace adjustment, and two fixes for use-before-define
issues:

-    def set_zulip_client(self, zulipToJabberClient: ZulipToJabberBot) -> None:
+    def set_zulip_client(self, zulipToJabberClient: 'ZulipToJabberBot') -> None:

-def init_from_options(options: Any, client: Optional[str] = None) -> Client:
+def init_from_options(options: Any, client: Optional[str] = None) -> 'Client':

Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
This commit is contained in:
Anders Kaseorg 2020-04-18 15:59:12 -07:00 committed by Tim Abbott
parent 7c5f73dce9
commit 5428c5f296
42 changed files with 311 additions and 577 deletions

View file

@ -9,8 +9,7 @@ from types import FrameType
from typing import Any
from zulip import RandomExponentialBackoff
def die(signal, frame):
# type: (int, FrameType) -> None
def die(signal: int, frame: FrameType) -> None:
"""We actually want to exit, so run os._exit (so as not to be caught and restarted)"""
os._exit(1)

View file

@ -57,23 +57,19 @@ from typing import Any, Callable
__version__ = "1.1"
def room_to_stream(room):
# type: (str) -> str
def room_to_stream(room: str) -> str:
return room + "/xmpp"
def stream_to_room(stream):
# type: (str) -> str
def stream_to_room(stream: str) -> str:
return stream.lower().rpartition("/xmpp")[0]
def jid_to_zulip(jid):
# type: (JID) -> str
def jid_to_zulip(jid: JID) -> str:
suffix = ''
if not jid.username.endswith("-bot"):
suffix = options.zulip_email_suffix
return "%s%s@%s" % (jid.username, suffix, options.zulip_domain)
def zulip_to_jid(email, jabber_domain):
# type: (str, str) -> JID
def zulip_to_jid(email: str, jabber_domain: str) -> JID:
jid = JID(email, domain=jabber_domain)
if (options.zulip_email_suffix and
options.zulip_email_suffix in jid.username and
@ -82,8 +78,7 @@ def zulip_to_jid(email, jabber_domain):
return jid
class JabberToZulipBot(ClientXMPP):
def __init__(self, jid, password, rooms):
# type: (JID, str, List[str]) -> None
def __init__(self, jid: JID, password: str, rooms: List[str]) -> None:
if jid.resource:
self.nick = jid.resource
else:
@ -100,19 +95,16 @@ class JabberToZulipBot(ClientXMPP):
self.register_plugin('xep_0045') # Jabber chatrooms
self.register_plugin('xep_0199') # XMPP Ping
def set_zulip_client(self, zulipToJabberClient):
# type: (ZulipToJabberBot) -> None
def set_zulip_client(self, zulipToJabberClient: 'ZulipToJabberBot') -> None:
self.zulipToJabber = zulipToJabberClient
def session_start(self, event):
# type: (Dict[str, Any]) -> None
def session_start(self, event: Dict[str, Any]) -> None:
self.get_roster()
self.send_presence()
for room in self.rooms_to_join:
self.join_muc(room)
def join_muc(self, room):
# type: (str) -> None
def join_muc(self, room: str) -> None:
if room in self.rooms:
return
logging.debug("Joining " + room)
@ -137,8 +129,7 @@ class JabberToZulipBot(ClientXMPP):
else:
logging.error("Could not configure room: " + str(muc_jid))
def leave_muc(self, room):
# type: (str) -> None
def leave_muc(self, room: str) -> None:
if room not in self.rooms:
return
logging.debug("Leaving " + room)
@ -146,8 +137,7 @@ class JabberToZulipBot(ClientXMPP):
muc_jid = JID(local=room, domain=options.conference_domain)
self.plugin['xep_0045'].leaveMUC(muc_jid, self.nick)
def message(self, msg):
# type: (JabberMessage) -> Any
def message(self, msg: JabberMessage) -> Any:
try:
if msg["type"] == "groupchat":
return self.group(msg)
@ -159,8 +149,7 @@ class JabberToZulipBot(ClientXMPP):
except Exception:
logging.exception("Error forwarding Jabber => Zulip")
def private(self, msg):
# type: (JabberMessage) -> None
def private(self, msg: JabberMessage) -> None:
if options.mode == 'public' or msg['thread'] == '\u1FFFE':
return
sender = jid_to_zulip(msg["from"])
@ -176,8 +165,7 @@ class JabberToZulipBot(ClientXMPP):
if ret.get("result") != "success":
logging.error(str(ret))
def group(self, msg):
# type: (JabberMessage) -> None
def group(self, msg: JabberMessage) -> None:
if options.mode == 'personal' or msg["thread"] == '\u1FFFE':
return
@ -204,8 +192,7 @@ class JabberToZulipBot(ClientXMPP):
if ret.get("result") != "success":
logging.error(str(ret))
def nickname_to_jid(self, room, nick):
# type: (str, str) -> JID
def nickname_to_jid(self, room: str, nick: str) -> JID:
jid = self.plugin['xep_0045'].getJidProperty(room, nick, "jid")
if (jid is None or jid == ''):
return JID(local=nick.replace(' ', ''), domain=self.boundjid.domain)
@ -213,17 +200,14 @@ class JabberToZulipBot(ClientXMPP):
return jid
class ZulipToJabberBot:
def __init__(self, zulip_client):
# type: (Client) -> None
def __init__(self, zulip_client: Client) -> None:
self.client = zulip_client
self.jabber = None # type: Optional[JabberToZulipBot]
def set_jabber_client(self, client):
# type: (JabberToZulipBot) -> None
def set_jabber_client(self, client: JabberToZulipBot) -> None:
self.jabber = client
def process_event(self, event):
# type: (Dict[str, Any]) -> None
def process_event(self, event: Dict[str, Any]) -> None:
if event['type'] == 'message':
message = event["message"]
if message['sender_email'] != self.client.email:
@ -241,8 +225,7 @@ class ZulipToJabberBot:
elif event['type'] == 'stream':
self.process_stream(event)
def stream_message(self, msg):
# type: (Dict[str, str]) -> None
def stream_message(self, msg: Dict[str, str]) -> None:
assert(self.jabber is not None)
stream = msg['display_recipient']
if not stream.endswith("/xmpp"):
@ -257,8 +240,7 @@ class ZulipToJabberBot:
outgoing['thread'] = '\u1FFFE'
outgoing.send()
def private_message(self, msg):
# type: (Dict[str, Any]) -> None
def private_message(self, msg: Dict[str, Any]) -> None:
assert(self.jabber is not None)
for recipient in msg['display_recipient']:
if recipient["email"] == self.client.email:
@ -274,8 +256,7 @@ class ZulipToJabberBot:
outgoing['thread'] = '\u1FFFE'
outgoing.send()
def process_subscription(self, event):
# type: (Dict[str, Any]) -> None
def process_subscription(self, event: Dict[str, Any]) -> None:
assert(self.jabber is not None)
if event['op'] == 'add':
streams = [s['name'].lower() for s in event['subscriptions']]
@ -288,8 +269,7 @@ class ZulipToJabberBot:
for stream in streams:
self.jabber.leave_muc(stream_to_room(stream))
def process_stream(self, event):
# type: (Dict[str, Any]) -> None
def process_stream(self, event: Dict[str, Any]) -> None:
assert(self.jabber is not None)
if event['op'] == 'occupy':
streams = [s['name'].lower() for s in event['streams']]
@ -302,10 +282,8 @@ class ZulipToJabberBot:
for stream in streams:
self.jabber.leave_muc(stream_to_room(stream))
def get_rooms(zulipToJabber):
# type: (ZulipToJabberBot) -> List[str]
def get_stream_infos(key, method):
# type: (str, Callable[[], Dict[str, Any]]) -> Any
def get_rooms(zulipToJabber: ZulipToJabberBot) -> List[str]:
def get_stream_infos(key: str, method: Callable[[], Dict[str, Any]]) -> Any:
ret = method()
if ret.get("result") != "success":
logging.error(str(ret))
@ -324,8 +302,7 @@ def get_rooms(zulipToJabber):
rooms.append(stream_to_room(stream))
return rooms
def config_error(msg):
# type: (str) -> None
def config_error(msg: str) -> None:
sys.stderr.write("%s\n" % (msg,))
sys.exit(2)