� {fc@s{dZddlmZddlmZddlmZddlmZmZm Z m Z m Z dej fd��YZ dS( s�Fixer for generator.throw(E, V, T). g.throw(E) -> g.throw(E) g.throw(E, V) -> g.throw(E(V)) g.throw(E, V, T) -> g.throw(E(V).with_traceback(T)) g.throw("foo"[, V[, T]]) will warn about string exceptions.i(tpytree(ttoken(t fixer_base(tNametCalltArgListtAttrtis_tupletFixThrowcBseZeZdZd�ZRS(s� power< any trailer< '.' 'throw' > trailer< '(' args=arglist< exc=any ',' val=any [',' tb=any] > ')' > > | power< any trailer< '.' 'throw' > trailer< '(' exc=any ')' > > c CsP|j}|dj�}|jtjkr?|j|d�dS|jd�}|dkr^dS|j�}t|�r�g|j dd!D]}|j�^q�}nd|_ |g}|d}d|kr6|dj�} d| _ t ||�} t | t d ��t| g�g} |jtj|j| ��n|jt ||��dS( Ntexcs+Python 3 does not support string exceptionsuvalii����utargsttbuwith_traceback(tsymstclonettypeRtSTRINGtcannot_converttgettNoneRtchildrentprefixRRRRtreplaceRtNodetpower( tselftnodetresultsR R tvaltcR t throw_argsR tetwith_tb((s//usr/lib64/python2.7/lib2to3/fixes/fix_throw.pyt transforms*    ,     %(t__name__t __module__tTruet BM_compatibletPATTERNR (((s//usr/lib64/python2.7/lib2to3/fixes/fix_throw.pyRsN(t__doc__tRtpgen2RRt fixer_utilRRRRRtBaseFixR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_throw.pyts (