B ¬.‰qø·ÝÞã@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ú>/opt/alt/python37/lib/python3.7/lib2to3/fixes/fix_metaclass.pyr s      r cCs¨x|jD]}|jtjkrdSqWx,t|jƒD]\}}|jtjkr,Pq,Wtdƒ‚ttjgƒ}x:|j|dd…r”|j|d}|  |  ¡¡|  ¡q\W|  |¡|}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| ¡ttjgƒ}ttj |gƒ}x2|j|d…r~|j|}|  |  ¡¡| ¡qNW|  ||¡|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&|jd ¡dS)Néÿÿÿÿ)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.| ¡}|jtjkrPqWxL|r|| ¡}t|tƒrd|jtjkrd|jr`d|_dS|  |jddd…¡q2WdS)Nr%Ú) 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]\}}}|}| ¡q"W|jdj}t|jƒdkrž|jdjtjkrt|jd}n(|jd  ¡} t tj| gƒ}|  d|¡n‚t|jƒdkrÆt tjgƒ}|  d|¡nZt|jƒdkrt tjgƒ}|  dt tjdƒ¡|  d|¡|  dt tjdƒ¡ntd ƒ‚|jdjd} d | _| j} |jr^| t tjd ƒ¡d | _nd | _|jd} d | jd_d | jd_| |¡t|ƒ|jsÖ| ¡t |dƒ} | | _| | ¡| t tjdƒ¡nbt|jƒdkr8|jdjtjkr8|jdjtjkr8t |dƒ} |  d| ¡|  dt tjdƒ¡dS)Nréééérú)ú(zUnexpected class definitionÚ metaclassú,ú r*rÚpassÚ éþÿÿÿr%)r r r)rr r ÚlenrÚarglistrrZ set_childr"rrÚRPARÚLPARrrr#rÚCOMMAr/r&r,r-)ÚselfrÚresultsZlast_metaclassr rZstmtZ text_typer>rZmeta_txtZorig_meta_prefixrZ pass_leafrrrÚ transform˜s^              zFixMetaclass.transformN)Ú__name__Ú __module__Ú __qualname__Z BM_compatibleZPATTERNrDrrrrr0‘sr0N)r*rZpygramrZ fixer_utilrrrr r r$r'r)r/ZBaseFixr0rrrrÚs