def obfuscate(<EOL>obfuscate_globals=False, shadow_funcname=False, 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>Resolve: inst.resolve,<EOL>},<EOL>'<STR_LIT>': [<EOL>inst.prewalk_hook,<EOL>],<EOL>}<EOL><DEDENT>return name_obfuscation_rules<EOL>
An example, barebone name obfuscation ruleset

obfuscate_globals
    If true, identifier names on the global scope will also be
    obfuscated.  Default is False.
shadow_funcname
    If True, obfuscated function names will be shadowed.  Default is
    False.
reserved_keywords
    A tuple of strings that should not be generated as obfuscated
    identifiers.