def apply_obfuscation(source):
global keyword_args<EOL>global imported_modules<EOL>tokens = token_utils.listified_tokenizer(source)<EOL>keyword_args = analyze.enumerate_keyword_args(tokens)<EOL>imported_modules = analyze.enumerate_imports(tokens)<EOL>variables = find_obfuscatables(tokens, obfuscatable_variable)<EOL>classes = find_obfuscatables(tokens, obfuscatable_class)<EOL>functions = find_obfuscatables(tokens, obfuscatable_function)<EOL>for variable in variables:<EOL><INDENT>replace_obfuscatables(<EOL>tokens, obfuscate_variable, variable, name_generator)<EOL><DEDENT>for function in functions:<EOL><INDENT>replace_obfuscatables(<EOL>tokens, obfuscate_function, function, name_generator)<EOL><DEDENT>for _class in classes:<EOL><INDENT>replace_obfuscatables(tokens, obfuscate_class, _class, name_generator)<EOL><DEDENT>return token_utils.untokenize(tokens)<EOL>
Returns 'source' all obfuscated.