� {fc@smdZddlmZddlmZmZmZmZmZm Z dZ dZ dej fd��YZ dS( s�Adjust some old Python 2 idioms to their modern counterparts. * Change some type comparisons to isinstance() calls: type(x) == T -> isinstance(x, T) type(x) is T -> isinstance(x, T) type(x) != T -> not isinstance(x, T) type(x) is not T -> not isinstance(x, T) * Change "while 1:" into "while True:". * Change both v = list(EXPR) v.sort() foo(v) and the more general v = EXPR v.sort() foo(v) into v = sorted(EXPR) foo(v) i(t fixer_base(tCalltCommatNametNodet BlankLinetsymss0(n='!=' | '==' | 'is' | n=comp_op< 'is' 'not' >)s(power< 'type' trailer< '(' x=any ')' > >t FixIdiomscBsQeZeZdeeeefZd�Zd�Zd�Z d�Z d�Z RS(s� isinstance=comparison< %s %s T=any > | isinstance=comparison< T=any %s %s > | while_stmt< 'while' while='1' ':' any+ > | sorted=any< any* simple_stmt< expr_stmt< id1=any '=' power< list='list' trailer< '(' (not arglist) any ')' > > > '\n' > sort= simple_stmt< power< id2=any trailer< '.' 'sort' > trailer< '(' ')' > > '\n' > next=any* > | sorted=any< any* simple_stmt< expr_stmt< id1=any '=' expr=any > '\n' > sort= simple_stmt< power< id2=any trailer< '.' 'sort' > trailer< '(' ')' > > '\n' > next=any* > cCsJtt|�j|�}|rFd|krF|d|dkrB|SdS|S(Ntsortedtid1tid2(tsuperRtmatchtNone(tselftnodetr((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyR Os cCsdd|kr|j||�Sd|kr8|j||�Sd|krT|j||�Std��dS(Nt isinstancetwhileRs Invalid match(ttransform_isinstancettransform_whilettransform_sortt RuntimeError(RRtresults((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyt transformZs   cCs�|dj�}|dj�}d|_d|_ttd�|t�|g�}d|kr�d|_ttjtd�|g�}n|j|_|S(NtxtTuu u isinstancetnunot(tclonetprefixRRRRRtnot_test(RRRRRttest((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyRds  !  ! cCs*|d}|jtdd|j��dS(NRuTrueR(treplaceRR(RRRtone((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyRps c Csv|d}|d}|jd�}|jd�}|rW|jtdd|j��nR|r�|j�}d|_|jttd�|gd|j��n td��|j�|j}d |krr|r|jd �d |d jf} d j | �|d _qr|j st �|j dks+t �t�} |j j| �|j | ksYt �|jd �d | _ndS( NtsorttnexttlisttexprusortedRusshould not have reached hereu i(tgetR RRRRRtremovet rpartitiontjointparenttAssertionErrort next_siblingR Rt append_child( RRRt sort_stmtt next_stmtt list_callt simple_exprtnewtbtwnt prefix_linestend_line((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyRts0          ( t__name__t __module__tTruetexplicittTYPEtCMPtPATTERNR RRRR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyR%s' N(t__doc__tRt fixer_utilRRRRRRR;R:tBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyts .