ó uŽ¸Qc@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((s./sys/lib/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((s./sys/lib/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((s./sys/lib/python2.7/lib2to3/fixes/fix_idioms.pyRds  !  ! cCs*|d}|jtdd|jƒƒdS(NRuTrueR(treplaceRR(RRRtone((s./sys/lib/python2.7/lib2to3/fixes/fix_idioms.pyRps c Cs=|d}|d}|jdƒ}|jdƒ}|rW|jtdd|jƒƒnR|r|jƒ}d|_|jttdƒ|gd|jƒƒn tdƒ‚|jƒ|j}d |kr9|r|jd ƒd |d jf} d j | ƒ|d _q9t ƒ} |j j | ƒ|jd ƒd | _ndS( NtsorttnexttlisttexprusortedRusshould not have reached hereu i( tgetR RRRRRtremovet rpartitiontjoinRtparentt append_child( RRRt sort_stmtt next_stmtt list_callt simple_exprtnewtbtwnt prefix_linestend_line((s./sys/lib/python2.7/lib2to3/fixes/fix_idioms.pyRts*          ( t__name__t __module__tTruetexplicittTYPEtCMPtPATTERNR RRRR(((s./sys/lib/python2.7/lib2to3/fixes/fix_idioms.pyR%s' N(t__doc__tRt fixer_utilRRRRRRR9R8tBaseFixR(((s./sys/lib/python2.7/lib2to3/fixes/fix_idioms.pyts .