o ,] @sjdZddlmZddlmZmZmZmZmZm Z ddl m Z ddl m Z mZddZGdd d ejZd S) zn Fixer for (metaclass=X) -> __metaclass__ = X Some semantics (see PEP 3115) may be altered in the translation.) fixer_base)NamesymsNodeLeafNewline find_root)token) indentationsuitifyc Cs d}|jD]}}|j}|jtjkr1|dttjdkr0|dttjdkr0|dr0|g|}|Sq|jtjkr|jD]G}|r@nB|jtj krI|}q:t|t krd}}}|jD](} | ttjdkre| }qX|rr| ttjdkrr| }qX|r|r| }||||f}nqXq:q|S)Nr metaclass=) childrentyperargumentrr NAMEEQUALarglistCOMMAr) parentresultsnodekidschildcommametaequalnameargr!C/usr/lib/python3/dist-packages/libpasteurize/fixes/fix_metaclass.py has_metaclass s<         r#c@seZdZdZddZdS) FixMetaclassz classdef c Cst|}|sdS|D]}|q ttjd}ttjddd}|}d|_ttj |||g}t ||j D]8} | j tj krl| j D],} | j tjkrk| j | d} ttj| j} | | | | | t| | |nq?q4dS)N __metaclass__r )prefixr )r#removerr rrr'rratomr rrsuiteINDENTindexvalue insert_childr) selfrr meta_resultsrtargetrr stmt_nodeitemstmtlocidentr!r!r" transform5s.        zFixMetaclass.transformN)__name__ __module__ __qualname__PATTERNr7r!r!r!r"r$/s r$N)__doc__lib2to3rlib2to3.fixer_utilrrrrrrlib2to3.pygramr libfuturize.fixer_utilr r r#BaseFixr$r!r!r!r"s   $