o bc.@sZdZddlmZddlmZddlmZddlmZmZm Z m Z m Z Gdddej Z dS) zFixer 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.)pytree)token) fixer_base)NameCallArgListAttris_tuplec@seZdZdZdZddZdS)FixThrowTz power< any trailer< '.' 'throw' > trailer< '(' args=arglist< exc=any ',' val=any [',' tb=any] > ')' > > | power< any trailer< '.' 'throw' > trailer< '(' exc=any ')' > > c Cs|j}|d}|jtjur||ddS|d}|dur"dS|}t|r7dd|jddD}nd|_ |g}|d }d |vrl|d }d|_ t ||} t | t d t |gg} |t|j| dS|t ||dS) Nexcz+Python 3 does not support string exceptionsvalcSsg|]}|qS)clone).0cr r ./usr/lib/python3.10/lib2to3/fixes/fix_throw.py )sz&FixThrow.transform..argstbwith_traceback)symsrtyperSTRINGcannot_convertgetr childrenprefixrrrrreplacerNodepower) selfnoderesultsrr r r throw_argsrewith_tbr r r transforms*      zFixThrow.transformN)__name__ __module__ __qualname__ BM_compatiblePATTERNr)r r r rr s r N)__doc__rrpgen2rr fixer_utilrrrrr BaseFixr r r r rs