You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ponymail.apache.org by hu...@apache.org on 2020/09/08 07:46:14 UTC

[incubator-ponymail-foal] 02/04: Fix up type errors found by mypy

This is an automated email from the ASF dual-hosted git repository.

humbedooh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-ponymail-foal.git

commit dffe4c5ac19e07f600abc2e74fa69983782242e0
Author: Daniel Gruno <hu...@apache.org>
AuthorDate: Tue Sep 8 09:45:13 2020 +0200

    Fix up type errors found by mypy
---
 server/plugins/mbox.py | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/server/plugins/mbox.py b/server/plugins/mbox.py
index a3ac061..787c99a 100644
--- a/server/plugins/mbox.py
+++ b/server/plugins/mbox.py
@@ -39,7 +39,7 @@ import plugins.database
 
 PYPONY_RE_PREFIX = re.compile(r"^([a-zA-Z]+:\s*)+")
 
-mbox_cache_privacy = {}
+mbox_cache_privacy: typing.Dict[str, bool] = {}
 
 
 def extract_name(addr):
@@ -83,7 +83,7 @@ async def find_parent(session, doc: typing.Dict[str, str]):
     # max 50 steps up in the hierarchy
     while step < 50:
         step = step + 1
-        irt: str = doc["in-reply-to"] if "in-reply-to" in doc else None
+        irt: typing.Optional[str] = doc["in-reply-to"] if "in-reply-to" in doc else None
         if not irt:
             break  # Shouldn't happen because irt is always present currently
         # Extract the reference, if any
@@ -152,6 +152,7 @@ async def get_email(
     irt=None,
     source=False,
 ):
+    assert session.database, "Database not connected!"
     doctype = session.database.dbs.mbox
     if source:
         doctype = session.database.dbs.source
@@ -199,6 +200,7 @@ async def get_email(
 
 
 async def get_source(session: plugins.session.SessionObject, permalink: str = None):
+    assert session.database, "Database not connected!"
     doctype = session.database.dbs.source
     try:
         doc = await session.database.get(index=doctype, id=permalink)
@@ -258,6 +260,7 @@ async def query(
     """
     docs = []
     hits = 0
+    assert session.database, "Database not connected!"
     async for hit in async_scan(
         client=session.database.client,
         query={
@@ -417,16 +420,16 @@ def find_root_subject(threads, hashdict, root_email, osubject=None):
 
 def construct_threads(emails: typing.List[typing.Dict]):
     """Turns a list of emails into a nested thread structure"""
-    threads = []
+    threads: typing.List[dict] = []
     authors = {}
-    hashdict = {}
+    hashdict: typing.Dict[str, dict] = {}
     for cur_email in sorted(emails, key=lambda x: x["epoch"]):
         author = cur_email.get("from")
         if author not in authors:
             authors[author] = 0
         authors[author] += 1
-        subject = cur_email.get("subject").replace("\n", "")  # Crop multi-line subjects
-        tsubject = PYPONY_RE_PREFIX.sub("", subject) + "_" + cur_email.get("list_raw")
+        subject = cur_email.get("subject", "").replace("\n", "")  # Crop multi-line subjects
+        tsubject = PYPONY_RE_PREFIX.sub("", subject) + "_" + cur_email.get("list_raw", "<a.b.c.d>")
         parent = find_root_subject(threads, hashdict, cur_email, tsubject)
         xemail = {
             "children": [],