From 884550a91f33307a740073ea6595eb0d45c1b34f Mon Sep 17 00:00:00 2001
From: wes <wjak56@gmail.com>
Date: Tue, 17 Jan 2017 18:49:30 -0500
Subject: [PATCH] more refactoring

---
 src/predictions.py | 153 ---------------------------------------------
 src/website.py     |   3 +-
 2 files changed, 1 insertion(+), 155 deletions(-)
 delete mode 100755 src/predictions.py

diff --git a/src/predictions.py b/src/predictions.py
deleted file mode 100755
index e377b88..0000000
--- a/src/predictions.py
+++ /dev/null
@@ -1,153 +0,0 @@
-##! /usr/bin/python3
-from itertools import groupby, chain
-from sys import stdout
-from functools import partial
-from json import dumps
-
-def gensymer():
-    n = [0]
-    def inner():
-        result = str(n[0])
-        n[0] += 1
-        return result
-    return inner
-
-gensym = gensymer()
-
-def printTrie(graph, prev, trie, weight):
-    new_node = str(gensym())
-    graph.node(new_node, "%s" % trie.letter)
-    graph.edge(prev, new_node, label="%.2f" % weight)
-    if not trie.children:
-        return
-    for child, weight in zip(trie.children, trie.ws):
-        printTrie(graph, new_node, child, weight)
-
-
-class Trie(object):
-    def __init__(self, letter, children, ws):
-        self.letter = letter
-        self.children = children
-        self.ws = ws
-
-def probweight(suffixes):
-    weights = [float(s["value"]) for s in suffixes]
-    s = float(sum(weights))
-    ws = [w/s for w in weights]
-    return ws
-
-def buildtrie(trie, suffixes):
-    """
-    Build a trie, also known as a prefix tree, of all the possible completions
-    """
-    trie.children = []
-    for letter, suffs in suffixes:
-        ped = partition(suffs)
-        if any(map(lambda p: p[0], ped)):
-            # check if there are any children
-            trie.children.append(buildtrie(Trie(letter, [], probweight(suffs)), partition(suffs)))
-        else:
-            # we've reached the end of this word so just include the final letter
-            # [1] = there is a probability of 1 of reaching this single leaf node,
-            # since it is the only possible completion here
-            trie.children.append(Trie(letter, [], [1]))
-    return trie
-
-
-def keyf(x):
-    if not x["key"]:
-        return ""
-    return x["key"][0]
-
-def tails(words):
-    for word in words:
-        yield {
-               "key" : word["key"][1:],
-               "value" : word["value"]
-               }
-
-def partition(words):
-    """
-    Partition the words into different prefixes based on the first character
-    """
-    groups = [
-            (g[0], list(tails(g[1])))
-                for g in groupby(
-                    sorted(words, key=keyf),
-                    key=keyf)
-             ]
-    return groups
-
-
-def flatten_helper(letter, trie):
-    return ([letter + child.letter for
-            child in trie.children], trie.children)
-
-def flatten(trie):
-    if not trie.children:
-        return trie.letter
-    prefixes, suffixes = flatten_helper(trie.letter, trie)
-    return [flatten(Trie(p, s2.children, s2.ws)) for p, s2 in zip(prefixes, suffixes)]
-
-def flattenlist(xs):
-    locs = []
-    for x in xs:
-        if not isinstance(x, list):
-            locs.append(x)
-        else:
-            locs.extend(flattenlist(x))
-    return locs
-
-def matchc(trie, prefix):
-    c = None
-    if len(prefix) > 1:
-        c = prefix[0]
-    else:
-        c = prefix
-    return [ch for ch in trie.children if ch.letter == c]
-
-def match(trie, word):
-    if not word:
-        return []
-    m = matchc(trie, word[0])
-    if not m:
-        return []
-    else:
-        return [m[0]] + match(m[0], word[1:])
-
-def complete(trie, word):
-    m = match(trie, word)
-    if len(word) != len(m):
-        return False
-    completions = [word+x[1:] for x in flattenlist(flatten(m[-1]))]
-    if len(completions) > 10:
-        return dumps(completions[0:10])
-    return dumps(completions)
-
-def sortTrie(trie):
-    """
-    Sort the children of each node in descending order
-    of the probability that each child would be the completion
-    of whatever that word is
-    """
-    if not trie.children:
-        return
-    sortedChilds = sorted(zip(trie.children, trie.ws), key=lambda x: x[1], reverse=True)
-    trie.children = [x[0] for x in sortedChilds]
-    trie.ws = [x[1] for x in sortedChilds]
-    for child in trie.children:
-        sortTrie(child)
-
-def toTrie(words):
-    for word in words:
-        word["key"] = word["key"].lower()
-    trie = buildtrie(Trie("", [], [1]), partition(words))
-    trie.ws = [1]*len(trie.children)
-    sortTrie(trie)
-    return trie
-
-def testkey(w):
-    return {
-            "key" : w,
-            "value" : "1"
-            }
diff --git a/src/website.py b/src/website.py
index 7d3ebb9..6d48b3c 100755
--- a/src/website.py
+++ b/src/website.py
@@ -3,9 +3,8 @@ from functools import partial
 from urllib.parse import quote, unquote
 from json import loads
 
-from flask import Blueprint, abort, Flask, render_template, flash, request, send_from_directory, jsonify
+from flask import Blueprint, Flask, render_template, request, send_from_directory, jsonify
 from flask_bootstrap import Bootstrap
-from flask_appconfig import AppConfig
 from werkzeug.contrib.cache import MemcachedCache
 
 from search import search_courses