й¼] ã@s§ddlmZddlmZddlmZmZmZmZdd„Z dd„Z dd „Z d d „Z d d „Z dd„ZGdd„dejƒZdS)é)Ú fixer_base)Útoken)ÚNameÚsymsÚNodeÚLeafcCs¦xŸ|jD]”}|jtjkr,t|ƒS|jtjkr |jr |jd}|jtjkr |jr |jd}t|tƒr |j dkr dSq WdS)NéÚ __metaclass__TF) ÚchildrenÚtyperÚsuiteÚ has_metaclassÚ simple_stmtÚ expr_stmtÚ isinstancerÚvalue)ÚparentÚnodeÚ expr_nodeZ left_side©rú2/opt/alt/python35/lib64/python3.5/fix_metaclass.pyr s   r cCsÞx'|jD]}|jtjkr dSq Wx<t|jƒD]\}}|jtjkr:Pq:Wtdƒ‚ttjgƒ}xI|j|dd…rÆ|j|d}|j |j ƒƒ|j ƒq~W|j |ƒ|}dS)NzNo class suite and no ':'!é) r r rr Ú enumeraterÚCOLONÚ ValueErrorrÚ append_childÚcloneÚremove)Úcls_noderÚir Ú move_noderrrÚfixup_parse_tree-s  r!c Csôx4t|jƒD]\}}|jtjkrPqWdS|jƒttjgƒ}ttj |gƒ}xA|j|d…r«|j|}|j |j ƒƒ|jƒqkW|j ||ƒ|jdjd}|jdjd} | j |_ dS)Nr)rr r rÚSEMIrrrrrrrÚ insert_childÚprefix) rrZ stmt_nodeZsemi_indrZnew_exprZnew_stmtr Z new_leaf1Z old_leaf1rrrÚfixup_simple_stmtGs  r%cCs7|jr3|jdjtjkr3|jdjƒdS)Nréÿÿÿÿr&)r r rÚNEWLINEr)rrrrÚremove_trailing_newline_s"r(ccsóx0|jD]}|jtjkr Pq Wtdƒ‚x¹tt|jƒƒD]¢\}}|jtjkrI|jrI|jd}|jtjkrI|jrI|jd}t |t ƒrI|j dkrIt |||ƒt |ƒ|||fVqIWdS)NzNo class suite!rr )r r rr rÚlistrrrrrrr%r()rrrZ simple_noderZ left_noderrrÚ find_metasds "   r*cCs³|jddd…}x)|rA|jƒ}|jtjkrPqWxj|r®|jƒ}t|tƒrŽ|jtjkrŽ|jrŠd|_dS|j |jddd…ƒqEWdS)NrÚr&r&) r Úpopr rÚINDENTrrÚDEDENTr$Úextend)r ZkidsrrrrÚ fixup_indent{s    !  r0c@s(eZdZdZdZdd„ZdS)Ú FixMetaclassTz classdef cCs t|ƒsdSt|ƒd}x-t|ƒD]\}}}|}|jƒq-W|jdj}t|jƒdkrÙ|jdjtjkrž|jd}q‘|jdj ƒ} t tj| gƒ}|j d|ƒn¸t|jƒdkrt tjgƒ}|j d|ƒn~t|jƒdkr…t tjgƒ}|j dt tjdƒƒ|j d|ƒ|j dt tjdƒƒn td ƒ‚|jdjd} d | _| j} |jrå|jt tjd ƒƒd | _n d | _|jd} d | jd_d | jd_|j|ƒt|ƒ|js†|jƒt |dƒ} | | _|j| ƒ|jt tjdƒƒn‚t|jƒdkr|jdjtjkr|jdjtjkrt |dƒ} |j d| ƒ|j dt tjdƒƒdS)Nréééérú)ú(zUnexpected class definitionÚ metaclassú,ú r+rÚpassÚ éþÿÿÿr&r&r&)r r!r*rr r ÚlenrÚarglistrrZ set_childr#rrÚRPARÚLPARrrr$rÚCOMMAr0r'r-r.)ÚselfrÚresultsZlast_metaclassr rZstmtZ text_typer?rZmeta_txtZorig_meta_prefixrZ pass_leafrrrÚ transform˜s^               zFixMetaclass.transformN)Ú__name__Ú __module__Ú __qualname__Z BM_compatibleZPATTERNrErrrrr1‘s r1N)r+rZpygramrZ fixer_utilrrrrr r!r%r(r*r0ZBaseFixr1rrrrÚs"