3  f@sVdZddlmZddlmZmZmZmZmZm Z m Z m Z m Z m Z GdddejZdS)zoFixer for execfile. This converts usages of the execfile function into calls to the built-in exec() function. ) fixer_base) CommaNameCallLParenRParenDotNodeArgListStringsymsc@seZdZdZdZddZdS) FixExecfileTz power< 'execfile' trailer< '(' arglist< filename=any [',' globals=any [',' locals=any ] ] > ')' > > | power< 'execfile' trailer< '(' filename=any ')' > > cCs0|st|d}|jd}|jd}|jdjdj}t|jttddg|d}ttj t d|g}ttj t t d gttj t tgg} |g| } |j} d| _td d} | t| t| g} tt d | d }|g}|dk r|jt|jg|dk r|jt|jgtt d ||jdS)Nfilenameglobalslocalsz"rb" )Zrparenopenreadz'exec'compileexec)prefixr)AssertionErrorgetZchildrenZcloner rr r r ZpowerrZtrailerrrrrrextend)selfZnodeZresultsrrrZexecfile_parenZ open_argsZ open_callrZ open_exprZ filename_argZexec_strZ compile_argsZ compile_callargsr?/opt/alt/python36/lib64/python3.6/lib2to3/fixes/fix_execfile.py transforms,      zFixExecfile.transformN)__name__ __module__ __qualname__Z BM_compatibleZPATTERNr!rrrr r sr N)__doc__rrZ fixer_utilrrrrrrr r r r ZBaseFixr rrrr s 0