ž zyMa c@smdZddlmZddlmZmZmZmZmZm Z dZ dZ Gdd„dej ƒZ dS( uά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(u fixer_base(uCalluCommauNameuNodeu BlankLineusymsu0(n='!=' | '==' | 'is' | n=comp_op< 'is' 'not' >)u(power< 'type' trailer< '(' x=any ')' > >csr|EeZdZd ZdeeeefZ‡fdd†Zdd„Z dd„Z dd „Z d d „Z ‡S( u FixIdiomsuΊ 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* > csJtt|ƒj|ƒ}|rFd|krF|d|dkrB|SdS|S(Nusorteduid1uid2(usuperu FixIdiomsumatchuNone(uselfunodeur(u __class__(u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_idioms.pyumatchOs uFixIdioms.matchcCsdd|kr|j||ƒSd|kr8|j||ƒSd|krT|j||ƒStdƒ‚dS(Nu isinstanceuwhileusortedu Invalid match(utransform_isinstanceutransform_whileutransform_sortu RuntimeError(uselfunodeuresults((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_idioms.pyu transformZs   uFixIdioms.transformcCs™|djƒ}|djƒ}d|_d|_ttdƒ|tƒ|gƒ}d|kr‰d|_ttjtdƒ|gƒ}n|j|_|S(NuxuTuu u isinstanceununot(ucloneuprefixuCalluNameuCommauNodeusymsunot_test(uselfunodeuresultsuxuTutest((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_idioms.pyutransform_isinstanceds  !  ! uFixIdioms.transform_isinstancecCs*|d}|jtdd|jƒƒdS(NuwhileuTrueuprefix(ureplaceuNameuprefix(uselfunodeuresultsuone((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_idioms.pyutransform_whileps uFixIdioms.transform_whilec 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( Nusortunextulistuexprusorteduprefixuushould not have reached hereu i(ugetureplaceuNameuprefixucloneuCallu RuntimeErroruremoveu rpartitionujoinuparentuAssertionErroru next_siblinguNoneu BlankLineu append_child( uselfunodeuresultsu sort_stmtu next_stmtu list_callu simple_exprunewubtwnu prefix_linesuend_line((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_idioms.pyutransform_sortts0          uFixIdioms.transform_sortT( u__name__u __module__u __qualname__uTrueuexplicituTYPEuCMPuPATTERNumatchu transformutransform_isinstanceutransform_whileutransform_sort(u __locals__((u __class__u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_idioms.pyu FixIdioms%s' u FixIdiomsN(u__doc__uu fixer_baseu fixer_utiluCalluCommauNameuNodeu BlankLineusymsuCMPuTYPEuBaseFixu FixIdioms(((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_idioms.pyus .