def obfuscatable_variable(tokens, index, ignore_length=False):
tok = tokens[index]<EOL>token_type = tok[<NUM_LIT:0>]<EOL>token_string = tok[<NUM_LIT:1>]<EOL>line = tok[<NUM_LIT:4>]<EOL>if index > <NUM_LIT:0>:<EOL><INDENT>prev_tok = tokens[index-<NUM_LIT:1>]<EOL><DEDENT>else: <EOL><INDENT>prev_tok = (<NUM_LIT>, '<STR_LIT:\n>', (<NUM_LIT:1>, <NUM_LIT:1>), (<NUM_LIT:1>, <NUM_LIT:2>), '<STR_LIT>')<EOL><DEDENT>prev_tok_type = prev_tok[<NUM_LIT:0>]<EOL>prev_tok_string = prev_tok[<NUM_LIT:1>]<EOL>try:<EOL><INDENT>next_tok = tokens[index+<NUM_LIT:1>]<EOL><DEDENT>except IndexError: <EOL><INDENT>next_tok = (<NUM_LIT>, '<STR_LIT:\n>', (<NUM_LIT:1>, <NUM_LIT:1>), (<NUM_LIT:1>, <NUM_LIT:2>), '<STR_LIT>')<EOL><DEDENT>next_tok_string = next_tok[<NUM_LIT:1>]<EOL>if token_string == "<STR_LIT:=>":<EOL><INDENT>return '<STR_LIT>'<EOL><DEDENT>if token_type != tokenize.NAME:<EOL><INDENT>return None <EOL><DEDENT>if token_string.startswith('<STR_LIT>'):<EOL><INDENT>return None<EOL><DEDENT>if next_tok_string == "<STR_LIT:.>":<EOL><INDENT>if token_string in imported_modules:<EOL><INDENT>return None<EOL><DEDENT><DEDENT>if prev_tok_string == '<STR_LIT>':<EOL><INDENT>return '<STR_LIT>'<EOL><DEDENT>if prev_tok_string == "<STR_LIT:.>":<EOL><INDENT>return '<STR_LIT>'<EOL><DEDENT>if prev_tok_string == "<STR_LIT>":<EOL><INDENT>if len(token_string) > <NUM_LIT:2>:<EOL><INDENT>return token_string<EOL><DEDENT><DEDENT>if token_string == "<STR_LIT>":<EOL><INDENT>return None<EOL><DEDENT>if token_string in keyword_args.keys():<EOL><INDENT>return None<EOL><DEDENT>if token_string in ["<STR_LIT>", "<STR_LIT:class>", '<STR_LIT>', '<STR_LIT>', '<STR_LIT>']:<EOL><INDENT>return '<STR_LIT>'<EOL><DEDENT>if prev_tok_type != tokenize.INDENT and next_tok_string != '<STR_LIT:=>':<EOL><INDENT>return '<STR_LIT>'<EOL><DEDENT>if not ignore_length:<EOL><INDENT>if len(token_string) < <NUM_LIT:3>:<EOL><INDENT>return None<EOL><DEDENT><DEDENT>if token_string in RESERVED_WORDS:<EOL><INDENT>return None<EOL><DEDENT>return token_string<EOL>
Given a list of *tokens* and an *index* (representing the current position),
returns the token string if it is a variable name that can be safely
obfuscated.

Returns '__skipline__' if the rest of the tokens on this line should be skipped.
Returns '__skipnext__' if the next token should be skipped.

If *ignore_length* is ``True``, even variables that are already a single
character will be obfuscated (typically only used with the ``--nonlatin``
option).