Your IP : 13.59.42.207


Current Path : /lib64/python2.7/lib2to3/fixes/
Upload File :
Current File : //lib64/python2.7/lib2to3/fixes/fix_except.pyc

�
�mec@s�dZddlmZddlmZddlmZddlmZmZm	Z	m
Z
mZm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�|jdkr�d|_q�q\q\Wg|jd D]}|j�^q�||}tj|j|�S(Nttailtcleanupiiuastprefixu uuargsii(RtcloneRtlenRtreplaceRR
RtNAMEtnew_nameRR	t
isinstanceRtNodeRRRRtreversedtinsert_child(tselftnodetresultsRRRtchttry_cleanupRte_suitetEtcommatNtnew_Nttargettsuite_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.pyt<module>s.