JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr i f.@s{dZddlmZddlmZddlmZddlmZmZm 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@s(eZdZdZdZddZdS)FixThrowTz power< any trailer< '.' 'throw' > trailer< '(' args=arglist< exc=any ',' val=any [',' tb=any] > ')' > > | power< any trailer< '.' 'throw' > trailer< '(' exc=any ')' > > c CsG|j}|dj}|jtjkr?|j|ddS|jd}|dkr^dS|j}t|rdd|jdd D}nd|_ |g}|d}d |kr-|d j}d|_ t ||} t | t d t |gg} |jtj|j| n|jt ||dS) Nexcz+Python 3 does not support string exceptionsvalcSsg|]}|jqS)clone).0cr r )s z&FixThrow.transform..argstbwith_traceback)symsrtyperSTRINGZcannot_convertgetr ZchildrenprefixrrrrreplacerZNodeZpower) selfZnodeZresultsrr r rZ throw_argsreZwith_tbr r r transforms*    #     %zFixThrow.transformN)__name__ __module__ __qualname__Z BM_compatibleZPATTERNr!r r r rr s r N)__doc__rrZpgen2rrZ fixer_utilrrrrr ZBaseFixr r r r rs (