#!/usr/bin/env python3
+# © Copyright 2021-2022, Scott Gasch
+
+"""A fast word unscrambler library."""
+
import logging
from typing import Dict, Mapping, Optional
logger = logging.getLogger(__name__)
letters_bits = 32
-letters_mask = 2 ** letters_bits - 1
+letters_mask = 2**letters_bits - 1
fprint_bits = 52
-fprint_mask = (2 ** fprint_bits - 1) << letters_bits
+fprint_mask = (2**fprint_bits - 1) << letters_bits
fprint_feature_bit = {
'e': 0,
self.sigs = []
self.words = []
- filename = self.get_indexfile(indexfile)
+ filename = Unscrambler.get_indexfile(indexfile)
with open(filename, 'r') as rf:
lines = rf.readlines()
for line in lines:
self.sigs.append(isig)
self.words.append(word)
- def get_indexfile(self, indexfile: Optional[str]) -> str:
+ @staticmethod
+ def get_indexfile(indexfile: Optional[str]) -> str:
if indexfile is None:
if 'unscrambler_default_indexfile' in config.config:
indexfile = config.config['unscramble_indexfile']
@staticmethod
def repopulate(
- lsigs: Dict[str, int],
dictfile: str = '/usr/share/dict/words',
indexfile: str = '/usr/share/dict/sparse_index',
) -> None: