
c'oT                 @   s   d  Z  d d l m Z d d l m Z m Z m Z m Z m Z m	 Z	 d d l
 m Z d d l m Z m Z d d   Z Gd d	   d	 e j  Z d
 S)zn
Fixer for (metaclass=X) -> __metaclass__ = X
Some semantics (see PEP 3115) may be altered in the translation.    )
fixer_base)NamesymsNodeLeafNewline	find_root)token)indentationsuitifyc       
      C   su  d  } xh|  j  D]]} | j  } | j t j k r | d t t j d  k rm| d t t j d  k rm| d rm| g | } Pq | j t j k r x | j  D] } | r P| j t j	 k r | } q t |  t
 k r d  } } } x~ | j  D]s }	 |	 t t j d  k r|	 } q | r@|	 t t j d  k r@|	 } q | r | r |	 } | | | | f } Pq Wq Wq W| S)Nr   	metaclass   =   )childrentyper   Zargumentr   r	   NAMEEQUALZarglistCOMMAr   )
parentresultsnodeZkidsZchildZcommametaequalnamearg r   C/usr/lib/python3/dist-packages/libpasteurize/fixes/fix_metaclass.pyhas_metaclass   s6    	
 			r   c               @   s"   e  Z d  Z d Z d d   Z d S)FixMetaclassz
    classdef<any*>
    c             C   s>  t  |  } | s d  Sx | D] } | j   q Wt t j d  } t t j d d d } | } d | _ t t j	 | | | g  } t
 |  x | j D] }	 |	 j t j k r x |	 j D]w }
 |
 j t j k r |	 j j |
  d } t t j |
 j  } |	 j | |  |	 j | t    |	 j | |  Pq Wq Wd  S)NZ__metaclass__r   prefix r   )r   remover   r	   r   r   r    r   r   Zatomr   r   r   ZsuiteINDENTindexvalueZinsert_childr   )selfr   r   Zmeta_resultsr   targetr   r   Z	stmt_nodeitemZstmtlocZidentr   r   r   	transform5   s*     	
zFixMetaclass.transformN)__name__
__module____qualname__ZPATTERNr*   r   r   r   r   r   /   s   r   N)__doc__Zlib2to3r   Zlib2to3.fixer_utilr   r   r   r   r   r   Zlib2to3.pygramr	   Zlibfuturize.fixer_utilr
   r   r   ZBaseFixr   r   r   r   r   <module>   s   .$