î i f.ã@s{dZddlmZddlmZddlmZddlmZmZm Z m Z m Z Gdd„dej ƒZ dS) zÖ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.é)Úpytree)Útoken)Ú fixer_base)ÚNameÚCallÚArgListÚAttrÚis_tuplec@s(eZdZdZdZdd„ZdS)Ú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|dƒdS|jdƒ}|dkr^dS|jƒ}t|ƒr™dd„|jdd …Dƒ}nd|_ |g}|d}d |kr-|d jƒ}d|_ t ||ƒ} t | t d ƒƒt |gƒg} |jtj|j| ƒƒn|jt ||ƒƒdS) NÚexcz+Python 3 does not support string exceptionsÚvalcSsg|]}|jƒ‘qS©)Úclone)Ú.0Úcr r ú)s z&FixThrow.transform..éÚÚargsÚtbÚwith_tracebackéÿÿÿÿ)ÚsymsrÚtyperÚSTRINGZcannot_convertÚgetr ZchildrenÚprefixrrrrÚreplacerZNodeZpower) ÚselfZnodeZresultsrr r rZ throw_argsrÚeZwith_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 rÚs (