def obfuscate(<EOL>obfuscate_globals=False,<EOL>shadow_funcname=False,<EOL>reserved_keywords=()):
def name_obfuscation_rules():<EOL><INDENT>inst = Obfuscator(<EOL>obfuscate_globals=obfuscate_globals,<EOL>shadow_funcname=shadow_funcname,<EOL>reserved_keywords=reserved_keywords,<EOL>)<EOL>return {<EOL>'<STR_LIT>': token_handler_unobfuscate,<EOL>'<STR_LIT>': {<EOL>},<EOL>'<STR_LIT>': {<EOL>Resolve: inst.resolve,<EOL>},<EOL>'<STR_LIT>': [<EOL>inst.prewalk_hook,<EOL>],<EOL>}<EOL><DEDENT>return name_obfuscation_rules<EOL>
The name obfuscation ruleset.

Arguments:

obfuscate_globals
    If true, identifier names on the global scope will also be
    obfuscated.  Default is False.
shadow_funcname
    If True, permit the shadowing of the name of named functions by
    names within the scope it defines.  Default is False.
reserved_keywords
    A tuple of strings that should not be generated as obfuscated
    identifiers.