Ñò §ÚêLc @ sŠ d Z d d k l Z d d k l Z d d k l Z d d k l Z l Z l Z l Z l Z l Z d „ Z d e i f d „ ƒ YZ d 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 ( t pytree( t token( t fixer_base( t Assignt Attrt Namet is_tuplet is_listt symsc c sf x_ t | ƒ D]Q \ } } | i t i j o2 | i d i d j o | | | d f Vq^ q q Wd S( Ni u excepti ( t enumeratet typeR t except_clauset childrent value( t nodest it n( ( s0 /usr/lib64/python2.6/lib2to3/fixes/fix_except.pyt find_excepts s t FixExceptc B s e Z d Z d „ Z RS( 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)]) > c C sO | i } g } | d D] } | | i ƒ q ~ } g } | d D] } | | i ƒ qC ~ } x¤t | ƒ D]–\ } } t | i ƒ d j ot| i d d !\ } } } | i t d d d ƒƒ | i t i j ot | i ƒ d d ƒ} | i ƒ } d | _ | i | ƒ | i ƒ } | i } x2 t | ƒ D]$ \ } } t | t i ƒ o Pq/q/Wt | ƒ p t | ƒ o" t | t | t d ƒ ƒ ƒ } n t | | ƒ } x( t | | ƒ D] } | i d | ƒ q³W| i | | ƒ q| i d j o d | _ qql ql Wg } | i d D] } | | i ƒ q~ | | } t i | i | ƒ S( Nt tailt cleanupi i u ast prefixu u u argsi i ( R t cloneR t lenR t replaceR R R t NAMEt new_nameR R t isinstanceR t NodeR R R R t reversedt insert_child( t selft nodet resultsR t _[1]R R t _[2]t cht try_cleanupR t e_suitet Et commat Nt new_Nt targett suite_stmtsR t stmtt assignt childt _[3]t cR ( ( s0 /usr/lib64/python2.6/lib2to3/fixes/fix_except.pyt transform. s<