Ran black code formatter on everything.
[python_utils.git] / unscrambler.py
index 6cebacf79b7555212ae8ada2042177fa9ace3b10..3abb6d817a633147382d0ac82fea37cf4450e816 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 
 import logging
-from typing import Dict
+from typing import Dict, Mapping
 
 import config
 import decorator_utils
@@ -121,9 +121,13 @@ class Unscrambler(object):
 
     # 52 bits
     @staticmethod
-    def _compute_word_fingerprint(word: str, population) -> int:
+    def _compute_word_fingerprint(
+        word: str, population: Mapping[str, int]
+    ) -> int:
         fp = 0
-        for pair in sorted(population.items(), key=lambda x: x[1], reverse=True):
+        for pair in sorted(
+            population.items(), key=lambda x: x[1], reverse=True
+        ):
             letter = pair[0]
             if letter in fprint_feature_bit:
                 count = pair[1]
@@ -136,9 +140,15 @@ class Unscrambler(object):
 
     # 32 bits
     @staticmethod
-    def _compute_word_letter_sig(letter_sigs, word: str, population) -> int:
+    def _compute_word_letter_sig(
+        letter_sigs: Mapping[str, int],
+        word: str,
+        population: Mapping[str, int],
+    ) -> int:
         sig = 0
-        for pair in sorted(population.items(), key=lambda x: x[1], reverse=True):
+        for pair in sorted(
+            population.items(), key=lambda x: x[1], reverse=True
+        ):
             letter = pair[0]
             if letter not in letter_sigs:
                 continue
@@ -179,7 +189,9 @@ class Unscrambler(object):
         """
         population = list_utils.population_counts(word)
         fprint = Unscrambler._compute_word_fingerprint(word, population)
-        letter_sig = Unscrambler._compute_word_letter_sig(letter_sigs, word, population)
+        letter_sig = Unscrambler._compute_word_letter_sig(
+            letter_sigs, word, population
+        )
         assert fprint & letter_sig == 0
         sig = fprint | letter_sig
         return sig
@@ -214,7 +226,9 @@ class Unscrambler(object):
                 word = words_by_sigs[sig]
                 print(f'0x{sig:x}+{word}', file=f)
 
-    def lookup(self, word: str, *, include_fuzzy_matches=False) -> Dict[str, bool]:
+    def lookup(
+        self, word: str, *, include_fuzzy_matches: bool = False
+    ) -> Dict[str, bool]:
         """Looks up a potentially scrambled word optionally including near
         "fuzzy" matches.
 
@@ -224,9 +238,13 @@ class Unscrambler(object):
 
         """
         sig = Unscrambler.compute_word_sig(word)
-        return self.lookup_by_sig(sig, include_fuzzy_matches=include_fuzzy_matches)
+        return self.lookup_by_sig(
+            sig, include_fuzzy_matches=include_fuzzy_matches
+        )
 
-    def lookup_by_sig(self, sig, *, include_fuzzy_matches=False) -> Dict[str, bool]:
+    def lookup_by_sig(
+        self, sig: int, *, include_fuzzy_matches: bool = False
+    ) -> Dict[str, bool]:
         """Looks up a word that has already been translated into a signature by
         a previous call to Unscrambler.compute_word_sig.  Optionally returns
         near "fuzzy" matches.