� {fc@s�dZddlmZddlmZddlmZddlmZmZm Z m Z m Z m Z d�Z dejfd��YZd S( s�Fixer for except statements with named exceptions. The following cases will be converted: - "except E, T:" where T is a name: except E as T: - "except E, T:" where T is not a name, tuple or list: except E as t: T = t This is done because the target of an "except" clause must be a name. - "except E, T:" where T is a tuple or list literal: except E as t: T = t.args i(tpytree(ttoken(t fixer_base(tAssigntAttrtNametis_tupletis_listtsymsccsbx[t|�D]M\}}|jtjkr |jdjdkrZ|||dfVqZq q WdS(Niuexcepti(t enumeratettypeRt except_clausetchildrentvalue(tnodestitn((s0/usr/lib64/python2.7/lib2to3/fixes/fix_except.pyt find_exceptsst FixExceptcBseZeZdZd�ZRS(s1 try_stmt< 'try' ':' (simple_stmt | suite) cleanup=(except_clause ':' (simple_stmt | suite))+ tail=(['except' ':' (simple_stmt | suite)] ['else' ':' (simple_stmt | suite)] ['finally' ':' (simple_stmt | suite)]) > cCs,|j}g|dD]}|j�^q}g|dD]}|j�^q7}x�t|�D]�\}} t|j�dkr\|jdd!\} } } | jtddd��| jtj kr�t|j �dd�} | j�}d|_ | j| �| j�} | j}x0t |�D]"\}}t |tj�rPqqWt| �s[t| �r|t|t| td ���}nt|| �}x(t|| �D]}| jd |�q�W| j||�q�| j dkr�d| _ q�q\q\Wg|jd D]}|j�^q�||}tj|j|�S( Nttailtcleanupiiuastprefixu uuargsii(RtcloneRtlenR treplaceRR RtNAMEtnew_nameRR t isinstanceRtNodeRRRRtreversedt insert_child(tselftnodetresultsRRRtcht try_cleanupR te_suitetEtcommatNtnew_Nttargett suite_stmtsRtstmttassigntchildtcR ((s0/usr/lib64/python2.7/lib2to3/fixes/fix_except.pyt transform/s6 ##     !.(t__name__t __module__tTruet BM_compatibletPATTERNR/(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_except.pyR$sN(t__doc__tRtpgen2RRt fixer_utilRRRRRRRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_except.pyts .