o !Qd @st ddlmZddlmZddlmZmZmZddZddZ dd Z d d Z d d Z ddZ GdddejZdS)) fixer_base)token)symsNodeLeafcCs| |jD]7}|jtjkrt|S|jtjkr;|jr;|jd}|jtjkr;|jr;|jd}t|tr;|j dkr;dSqdS)N __metaclass__TF) childrentypersuite has_metaclass simple_stmt expr_stmt isinstancervalue)parentnode expr_nodeZ left_siderB/opt/alt/python310/lib64/python3.10/lib2to3/fixes/fix_metaclass.pyr s       r cCs |jD] }|jtjkrdSqt|jD] \}}|jtjkr!nqtdttjg}|j|ddrP|j|d}| | | |j|dds5| ||}dS)NzNo class suite and no ':'!) r r rr enumeraterCOLON ValueErrorr append_childcloneremove)cls_noderir move_noderrrfixup_parse_tree-s$     r c Cs t|jD] \}}|jtjkrnqdS|ttjg}ttj |g}|j|drD|j|}| | ||j|ds-| |||jdjd}|jdjd} | j |_ dS)Nr)rr r rSEMIrrrrr rr insert_childprefix) rrZ stmt_nodeZsemi_indrZnew_exprZnew_stmtrZ new_leaf1Z old_leaf1rrrfixup_simple_stmtGs$     r$cCs2|jr|jdjtjkr|jddSdSdS)N)r r rNEWLINEr)rrrrremove_trailing_newline_sr'ccs|jD] }|jtjkrnqtdtt|jD]:\}}|jtjkrT|jrT|jd}|jtjkrT|jrT|jd}t |t rT|j dkrTt |||t ||||fVqdS)NzNo class suite!rr)r r rr rlistrr rrrrr$r')rrrZ simple_noderZ left_noderrr find_metasds$        r)cCs |jddd}|r|}|jtjkrn|s |r@|}t|tr1|jtjkr1|jr/d|_dS| |jddd|sdSdS)Nr%) r popr rINDENTrrDEDENTr#extend)r Zkidsrrrr fixup_indent{s  r/c@seZdZdZdZddZdS) FixMetaclassTz classdef cCs@t|sdSt|d}t|D] \}}}|}|q|jdj}t|jdkrM|jdjtjkr8|jd}nU|jd } t tj| g}| d|n@t|jdkrat tjg}| d|n,t|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 tjddSt|jdkr|jdjtjkr|jdjtjkrt |d} | d| | dt tjddSdSdSdS)Nrr)(zUnexpected class definition metaclass, r*rpass r%)r r r)rr r lenrarglistrrZ set_childr"rrRPARLPARrrr#rCOMMAr/r&r,r-)selfrZresultsZlast_metaclassr rZstmtZ text_typer>rZmeta_txtZorig_meta_prefixrZ pass_leafrrr transformsd              zFixMetaclass.transformN)__name__ __module__ __qualname__Z BM_compatibleZPATTERNrCrrrrr0s r0N)r*rZpygramrZ fixer_utilrrrr r r$r'r)r/ZBaseFixr0rrrrs