mypy clean
[kiosk.git] / reddit_renderer.py
index 097bd82f55f44dc85508eb54cef2037e0c1b27d3..a4050a20f0f47dcd9b2e2ed6ce294c34d2b5411c 100644 (file)
@@ -1,8 +1,8 @@
 #!/usr/bin/env python3
 
-import praw
+import praw  # type: ignore
 import random
-from typing import Callable, Dict, List
+from typing import Callable, Dict, Iterable, List, Set
 
 import constants
 import file_writer
@@ -10,7 +10,6 @@ import grab_bag
 import page_builder
 import profanity_filter
 import renderer
-import renderer_catalog
 import secrets
 
 
@@ -24,7 +23,7 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer):
         *,
         min_votes: int = 20,
         font_size: int = 24,
-        additional_filters: List[Callable[[str], bool]] = [],
+        additional_filters: Iterable[Callable[[str], bool]] = [],
     ):
         super(reddit_renderer, self).__init__(name_to_timeout_dict, True)
         self.subreddit_list = subreddit_list
@@ -36,9 +35,11 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer):
         self.min_votes = min_votes
         self.font_size = font_size
         self.messages = grab_bag.grab_bag()
-        self.filters = [profanity_filter.profanity_filter().contains_bad_words]
+        self.filters: List[Callable[..., bool]] = [
+            profanity_filter.profanity_filter().contains_bad_words
+        ]
         self.filters.extend(additional_filters)
-        self.deduper = set()
+        self.deduper: Set[str] = set()
 
     def debug_prefix(self) -> str:
         x = ""
@@ -53,26 +54,27 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer):
         elif key == "Shuffle":
             return self.shuffle_messages()
         else:
-            raise error("Unexpected operation")
+            raise Exception("Unexpected operation")
 
     def append_message(self, messages: List[str]) -> None:
         for msg in messages:
-            if msg.title in self.deduper:
+            title = str(msg.title)
+            if title in self.deduper:
                 continue
             filtered = ""
-            for filter in self.filters:
-                if filter(msg.title) is True:
-                    filtered = filter.__name__
+            for filt in self.filters:
+                if filt(title) is True:
+                    filtered = filt.__name__
                     break
             if filtered != "":
-                print(f'Filter {filtered} struck down "{msg.title}"')
+                print(f'Filter {filtered} struck down "{title}"')
                 continue
             if msg.ups < self.min_votes:
-                print(f'"{msg.title}" doesn\'t have enough upvotes to be interesting')
+                print(f'"{title}" doesn\'t have enough upvotes to be interesting')
                 continue
 
             try:
-                self.deduper.add(msg.title)
+                self.deduper.add(title)
                 content = f"{msg.ups}"
                 if (
                     msg.thumbnail != "self"
@@ -91,7 +93,7 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer):
 
     <!-- The content and author: -->
     <TD>
-      <B>{msg.title}</B><BR><FONT COLOR=#bbbbbb>({msg.author})</FONT>
+      <B>{title}</B><BR><FONT COLOR=#bbbbbb>({msg.author})</FONT>
     </TD>
   </TR>
 </TABLE>"""
@@ -99,7 +101,7 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer):
             except:
                 self.debug_print("Unexpected exception, skipping message.")
 
-    def scrape_reddit(self) -> None:
+    def scrape_reddit(self) -> bool:
         self.deduper.clear()
         self.messages.clear()
         for subreddit in self.subreddit_list:
@@ -169,6 +171,7 @@ class quotes_reddit_renderer(reddit_renderer):
 
 
 class showerthoughts_reddit_renderer(reddit_renderer):
+    @staticmethod
     def dont_tell_me_about_gift_cards(msg: str) -> bool:
         return not "IMPORTANT PSA: No, you did not win a gift card" in msg
 
@@ -199,6 +202,6 @@ class lifeprotips_reddit_renderer(reddit_renderer):
         )
 
 
-# x = reddit_renderer({"Test", 1234}, ["seattle","bellevue"], min_votes=50, font_size=24)
-# x.periodic_render("Scrape")
-# x.periodic_render("Shuffle")
+#x = reddit_renderer({"Test", 1234}, ["seattle","bellevue"], min_votes=50, font_size=24)
+#x.periodic_render("Scrape")
+#x.periodic_render("Shuffle")