import pickle
import sys
from programming_language import check_character_list


punctuation_list_scrubbed = ['(',
 '=',
 ',',
 '_',
 ')',
 '",',
 "',",
 '()',
 '))',
 '://',
 '())',
 '-',
 ';',
 '.',
 ';;',
 '(.',
 '(*',
 '(+',
 ')))',
 '(==',
 '))))',
 '")))',
 '--',
 '->',
 '::',
 '<-',
 '),',
 '[]',
 '},',
 '++',
 '++)',
 '//',
 "('')",
 '[',
 '([',
 ')]',
 '))]',
 ')])',
 ')))]',
 ').',
 '=>',
 '(_.',
 '(_._',
 '$',
 '($',
 '[$',
 "'",
 '==',
 "','",
 "('/'",
 '#{',
 '...',
 '"""',
 '===',
 '/*',
 '*/',
 '*)',
 '{-',
 '{[',
 '<=',
 'String',
 'string',
 'class',
 'object',
 'val',
 'def',
 'return',
 'set',
 'argv',
 'end',
 'expr',
 'public',
 'function',
 'param',
 'args',
 'format',
 'module',
 'label',
 'in',
 'len',
 'zip',
 'length',
 'for',
 'is_a',
 'ref',
 '$format',
 'else',
 'null',
 'none',
 'proc',
 'mix',
 'defn',
 'println',
 'ns',
 'Integer',
 'List',
 'with',
 'Map',
 'map',
 'Make',
 'false',
 'False',
 'True',
 'true',
 'init',
 'search',
 'int',
 'try',
 'except',
 'if',
 'call',
 'clojure',
 'list',
 'from',
 'let',
 'combine',
 'self',
 'Text',
 'where',
 'Set',
 'include',
 'super',
 'start',
 'this',
 'dom',
 'system',
 'sys',
 'require',
 'extend',
 'loc.',
 'import',
 'get',
 'var',
 'fns',
 'replace',
 'slice',
 'fn',
 'exec',
 'tuple',
 'value',
 'Array',
 'array',
 'scala',
 'interface',
 'not',
 'define',
 'port',
 'lambda',
 '|',
 'Config',
 'file',
 'File',
 'Module',
 'sortBy',
 '!',
 '"',
 '#',
 '%',
 '&',
 '*',
 '+',
 '/',
 ':',
 '<',
 '>',
 '?',
 '@',
 '\\',
 ']',
 '^',
 '`',
 '{',
 '}',
 '~']

print("The file prediction is: ")

with open('classifier.pickle', 'rb') as pickled_classifier:
    classifier = pickle.load(pickled_classifier)

predict_file = sys.argv[1]
count = check_character_list(predict_file, punctuation_list_scrubbed)
prediction = classifier.predict(count)
print(prediction[0])
