\d zdZddlmZddlmZddlmZddlmZmZm Z m Z m Z m Z dZ GddejZd S) aFixer 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 )pytree)token) fixer_base)AssignAttrNameis_tupleis_listsymsc#Kt|D]?\}}|jtjkr%|jdjdkr|||dzfV@dS)Nexceptr) enumeratetyper except_clausechildrenvalue)nodesins )..\python\lib\lib2to3\fixes\fix_except.py find_exceptsrsh%  &&1 6T' ' 'z!}"h..%!*o%%%&&ceZdZdZdZdZdS) FixExceptTa1 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 j|j}d|dD}d|dD}t|D]\}}t|jdkr|jdd\}} } | t dd | jtjkrAt | d } | } d | _ | | | } |j} t| D]!\}}t|tjrn"t!| st#| r,t%| t'| t d }nt%| | }t)| d|D]}|d ||||| j d krd| _ d |jddD|z|z}tj|j|S)Nc6g|]}|Sclone).0rs r z'FixExcept.transform..2s 333a 333rtailc6g|]}|Srr)r!chs rr"z'FixExcept.transform..4s ???brxxzz???rcleanupas )prefixargsr c6g|]}|Srr)r!cs rr"z'FixExcept.transform..\s 999!AGGII999r)r rlenrreplacerrrNAMEnew_namer r+r isinstancerNoder r rrreversed insert_child)selfnoderesultsr r# try_cleanupre_suiteEcommaNnew_Ntarget suite_stmtsrstmtassignchildrs r transformzFixExcept.transform/s2y3376?333??GI,>??? &2;&?&?$ #$ # "M7=)**a// - 6qs ; E1 d44445556UZ'' ===EWWYYF$&FMIIe$$$!KKMME #*"2K#,[#9#9""4%dFK88"!E"  {{7gajj7!'UDLL0I0I!J!J!'!6!6"*+bqb/!:!:77,,Q6666((F3333X^^ #AH:9t}RaR'8999KG$N{49h///rN)__name__ __module__ __qualname__ BM_compatiblePATTERNrGrrrrr$s/MG.0.0.0.0.0rrN)__doc__r,rpgen2rr fixer_utilrrrr r r rBaseFixrrrrrQs0DDDDDDDDDDDDDDDD&&& 9090909090 "9090909090r