ó u®øQc@s_dZddlmZddlmZddlmZmZmZdejfd„ƒYZ dS(s•Fixer for exec. This converts usages of the exec statement into calls to a built-in exec() function. exec code in ns1, ns2 -> exec(code, ns1, ns2) i(tpytree(t fixer_base(tCommatNametCalltFixExeccBseZeZdZd„ZRS(sx exec_stmt< 'exec' a=any 'in' b=any [',' c=any] > | exec_stmt< 'exec' (not atom<'(' [any] ')'>) a=any > cCsĖ|s t‚|j}|d}|jdƒ}|jdƒ}|jƒg}d|d_|dk r„|jtƒ|jƒgƒn|dk rÆ|jtƒ|jƒgƒntt dƒ|d|jƒS(Ntatbtctiuexectprefix( tAssertionErrortsymstgettcloneR tNonetextendRRR(tselftnodetresultsR RRRtargs((s,/sys/lib/python2.7/lib2to3/fixes/fix_exec.pyt transforms      (t__name__t __module__tTruet BM_compatibletPATTERNR(((s,/sys/lib/python2.7/lib2to3/fixes/fix_exec.pyRsN( t__doc__R RRt fixer_utilRRRtBaseFixR(((s,/sys/lib/python2.7/lib2to3/fixes/fix_exec.pyt s