B 0c @srddlmZddlmZddlmZmZmZddZddZ dd Z d d Z d d Z ddZ GdddejZdS)) fixer_base)token)symsNodeLeafcCsxxr|jD]h}|jtjkr t|S|jtjkr|jr|jd}|jtjkr|jr|jd}t|tr|j dkrdSqWdS)N __metaclass__TF) childrentypersuite has_metaclass simple_stmt expr_stmt isinstancervalue)parentnode expr_nodeZ left_sider@/opt/alt/python37/lib64/python3.7/lib2to3/fixes/fix_metaclass.pyr s      r cCsx|jD]}|jtjkrdSqWx,t|jD]\}}|jtjkr,Pq,Wtdttjg}x:|j|ddr|j|d}| | | q\W| ||}dS)NzNo class suite and no ':'!) r r rr enumeraterCOLON ValueErrorr append_childcloneremove)cls_noderir move_noderrrfixup_parse_tree-s      r c Csx(t|jD]\}}|jtjkr Pq WdS|ttjg}ttj |g}x2|j|dr~|j|}| | |qNW| |||jdjd}|jdjd} | j |_ dS)Nr)rr r rSEMIrrrrr rr insert_childprefix) rrZ stmt_nodeZsemi_indrZnew_exprZnew_stmtrZ new_leaf1Z old_leaf1rrrfixup_simple_stmtGs     r$cCs*|jr&|jdjtjkr&|jddS)N)r r rNEWLINEr)rrrrremove_trailing_newline_sr'ccsx$|jD]}|jtjkrPqWtdxtt|jD]t\}}|jtjkr6|jr6|jd}|jtjkr6|jr6|jd}t |t r6|j dkr6t |||t ||||fVq6WdS)NzNo class suite!rr)r r rr rlistrr rrrrr$r')rrrZ simple_noderZ left_noderrr find_metasds       r)cCs|jddd}x|r.|}|jtjkrPqWxL|r||}t|trd|jtjkrd|jr`d|_dS| |jdddq2WdS)Nr%) r popr rINDENTrrDEDENTr#extend)r Zkidsrrrr fixup_indent{s r/c@seZdZdZdZddZdS) FixMetaclassTz classdef cCs<t|s dSt|d}x"t|D]\}}}|}|q"W|jdj}t|jdkr|jdjtjkrt|jd}n(|jd } t tj| g}| d|nt|jdkrt tjg}| d|nZt|jdkrt tjg}| dt tjd| d|| dt tjdntd |jdjd} d | _| j} |jr^|t tjd d | _nd | _|jd} d | jd_d | jd_||t||js|t |d} | | _|| |t tjdnbt|jdkr8|jdjtjkr8|jdjtjkr8t |d} | d| | dt tjddS)Nrr)(zUnexpected class definition metaclass, r*rpass r%)r r r)rr r lenrarglistrrZ set_childr"rrRPARLPARrrr#rCOMMAr/r&r,r-)selfrresultsZlast_metaclassr rZstmtZ text_typer>rZmeta_txtZorig_meta_prefixrZ pass_leafrrr transforms^              zFixMetaclass.transformN)__name__ __module__ __qualname__Z BM_compatibleZPATTERNrDrrrrr0sr0N)r*rZpygramrZ fixer_utilrrrr r r$r'r)r/ZBaseFixr0rrrrs