3 \ ã@srddlmZddlmZddlmZmZmZdd„Zdd„Z dd „Z d d „Z d d „Z dd„Z Gdd„dejƒZdS)é)Ú fixer_base)Útoken)ÚsymsÚNodeÚLeafcCsxxr|jD]h}|jtjkr t|ƒS|jtjkr|jr|jd}|jtjkr|jr|jd}t|tƒr|j dkrdSqWdS)NéÚ __metaclass__TF) ÚchildrenÚtyperÚsuiteÚ has_metaclassÚ simple_stmtÚ expr_stmtÚ isinstancerÚvalue)ÚparentÚnodeÚ expr_nodeZ left_side©rú3/usr/lib64/python3.6/lib2to3/fixes/fix_metaclass.pyr s      r cCs¨x|jD]}|jtjkrdSqWx,t|jƒD]\}}|jtjkr,Pq,Wtdƒ‚ttjgƒ}x:|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¸x(t|jƒD]\}}|jtjkr Pq WdS|jƒttjgƒ}ttj |gƒ}x2|j|d…r~|j|}|j |j ƒƒ|jƒqNW|j ||ƒ|jdjd}|jdjd} | j |_ dS)Nr)rr r rÚSEMIrrrrr rrÚ insert_childÚprefix) rrZ stmt_nodeZsemi_indrZnew_exprZnew_stmtrZ new_leaf1Z old_leaf1rrrÚfixup_simple_stmtGs     r$cCs*|jr&|jdjtjkr&|jdjƒdS)Nréÿÿÿÿr%)r r rÚNEWLINEr)rrrrÚremove_trailing_newline_sr'ccs²x$|jD]}|jtjkrPqWtdƒ‚x†tt|jƒƒD]t\}}|jtjkr6|jr6|jd}|jtjkr6|jr6|jd}t |t ƒr6|j dkr6t |||ƒt |ƒ|||fVq6WdS)NzNo class suite!rr)r r rr rÚlistrr rrrrr$r')rrrZ simple_noderZ left_noderrrÚ find_metasds       r)cCs‚|jddd…}x|r.|jƒ}|jtjkrPqWxL|r||jƒ}t|tƒrd|jtjkrd|jr`d|_dS|j |jddd…ƒq2WdS)NrÚr%r%) r Úpopr rÚINDENTrrÚDEDENTr#Úextend)r ZkidsrrrrÚ fixup_indent{s r/c@seZdZdZdZdd„ZdS)Ú FixMetaclassTz classdef cCs<t|ƒs dSt|ƒd}x"t|ƒD]\}}}|}|jƒq"W|jdj}t|jƒdkrž|jdjtjkrt|jd}n(|jdj ƒ} t tj| gƒ}|j d|ƒn‚t|jƒdkrÆt tjgƒ}|j d|ƒnZt|jƒdkrt tjgƒ}|j dt tjdƒƒ|j d|ƒ|j dt tjdƒƒntd ƒ‚|jdjd} d | _| j} |jr^|jt tjd ƒƒd | _nd | _|jd} d | jd_d | jd_|j|ƒt|ƒ|jsÖ|jƒt |dƒ} | | _|j| ƒ|jt tjdƒƒnbt|jƒdkr8|jdjtjkr8|jdjtjkr8t |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ÚCOMMAr/r&r,r-)ÚselfrZresultsZlast_metaclassr rZstmtZ text_typer>rZmeta_txtZorig_meta_prefixrZ pass_leafrrrÚ transform˜s^              zFixMetaclass.transformN)Ú__name__Ú __module__Ú __qualname__Z BM_compatibleZPATTERNrCrrrrr0‘sr0N)r*rZpygramrZ fixer_utilrrrr r r$r'r)r/ZBaseFixr0rrrrÚs